public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: other/8335: problems with __builtin_frame_address when -fomit-frame-pointer used
@ 2002-11-06 2:36 Davin McCall
0 siblings, 0 replies; 5+ messages in thread
From: Davin McCall @ 2002-11-06 2:36 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR other/8335; it has been noted by GNATS.
From: Davin McCall <davmac@ozonline.com.au>
To: rth@gcc.gnu.org, davmac@ozonline.com.au, gcc-bugs@gcc.gnu.org,
gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org
Cc:
Subject: Re: other/8335: problems with __builtin_frame_address when -fomit-frame-pointer used
Date: Wed, 6 Nov 2002 21:38:35 +1100
Could you please change class to "bug" (instead of change request) and status to "open" since I have provided the requested feedback... Thanks
/Davin
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: other/8335: problems with __builtin_frame_address when -fomit-frame-pointer used
@ 2002-10-25 20:26 Davin McCall
0 siblings, 0 replies; 5+ messages in thread
From: Davin McCall @ 2002-10-25 20:26 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR other/8335; it has been noted by GNATS.
From: Davin McCall <davmac@ozonline.com.au>
To: rth@gcc.gnu.org, davmac@ozonline.com.au, gcc-bugs@gcc.gnu.org,
gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org
Cc:
Subject: Re: other/8335: problems with __builtin_frame_address when -fomit-frame-pointer used
Date: Sat, 26 Oct 2002 13:31:11 +0000
This is a multi-part message in MIME format.
--Multipart_Sat__26_Oct_2002_13:31:11_+0000_081cfda0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
(Resending with reduced attachments)
Hi,
> Describe "doesn't work correctly".
By "doesn't work correctly" I mean:
__builtin_frame_address seems to expect that the frame address is stored in the %ebp register. However, if -fomit-frame-pointer is used, this is clearly not true.
In the attached files, see function "pthread_initialize". In particular in the generated assembly at ".L8:", which corresponds to the line referencing CURRENT_STACK_FRAME in the C source. CURRENT_STACK_FRAME is defined as "__builtin_frame_address(0)". In the assembly, I see "leal constant(%ebp),%edi" which is clearly wrong because it is using %ebp.
Incidentally, in other source compiled with -fomit-frame-pointer I remember seeing that %ebp was being used more-or-less as a general purpose register - so using it as the frame address could be wildly inaccurate.
> The result should be the address of the stack frame, with or
> without a frame pointer. The frame is at a known offset from
> the stack pointer, after all.
Well in that case I guess that this really is a bug.
best regards,
Davin
--Multipart_Sat__26_Oct_2002_13:31:11_+0000_081cfda0
Content-Type: application/octet-stream;
name="pthread.s"
Content-Disposition: attachment;
filename="pthread.s"
Content-Transfer-Encoding: base64
CS5maWxlCSJwdGhyZWFkLmMiCi5nbG9ibCBfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQKCS5kYXRh
CgkuYWxpZ24gMzIKCS50eXBlCV9fcHRocmVhZF9pbml0aWFsX3RocmVhZCxAb2JqZWN0Cgkuc2l6
ZQlfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQsMTAyNApfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQ6
CgkubG9uZwlfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQKCS56ZXJvCTYwCgkubG9uZwlfX3B0aHJl
YWRfaW5pdGlhbF90aHJlYWQKCS5sb25nCV9fcHRocmVhZF9pbml0aWFsX3RocmVhZAoJLmxvbmcJ
MAoJLmxvbmcJMAoJLmxvbmcJMTAyNAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJX19wdGhyZWFk
X2hhbmRsZXMKCS5sb25nCTAKCS5sb25nCTAKCS5sb25nCTAKCS5ieXRlCTAKCS5ieXRlCTAKCS5i
eXRlCTAKCS56ZXJvCTEKCS5sb25nCTAKCS5sb25nCTAKCS5sb25nCTAKCS5sb25nCTAKCS5ieXRl
CTAKCS5ieXRlCTAKCS5ieXRlCTAKCS56ZXJvCTEKCS5sb25nCV9lcnJubwoJLmxvbmcJMAoJLmxv
bmcJX2hfZXJybm8KCS5sb25nCTAKCS5sb25nCTAKCS5ieXRlCTAKCS56ZXJvCTMKCS5sb25nCTAK
CS5sb25nCTAKCS5sb25nCTAKCS56ZXJvCTEyNAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJ
Lnplcm8JMTI0CgkubG9uZwkwCgkuemVybwk4CgkubG9uZwkxCgkubG9uZwkwCgkubG9uZwkwCgku
bG9uZwkwCgkubG9uZwkwCgkubG9uZwkwCgkuemVybwk0CgkubG9uZwkwCgkubG9uZwkwCgkubG9u
ZwkwCgkubG9uZwkwCgkuYnl0ZQkwCgkuYnl0ZQkwCgkuYnl0ZQkwCgkuemVybwkxCgkubG9uZwkw
CgkubG9uZwkwCgkubG9uZwkwCgkubG9uZwkwCgkuemVybwk1MjAKLmdsb2JsIF9fcHRocmVhZF9t
YW5hZ2VyX3RocmVhZAoJLmFsaWduIDMyCgkudHlwZQlfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQs
QG9iamVjdAoJLnNpemUJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkLDEwMjQKX19wdGhyZWFkX21h
bmFnZXJfdGhyZWFkOgoJLmxvbmcJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkCgkuemVybwk2MAoJ
LmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxv
bmcJMAoJLmxvbmcJX19wdGhyZWFkX2hhbmRsZXMrMTYKCS5sb25nCTAKCS5sb25nCTAKCS5sb25n
CTAKCS5ieXRlCTAKCS5ieXRlCTAKCS5ieXRlCTAKCS56ZXJvCTEKCS5sb25nCTAKCS5sb25nCTAK
CS5sb25nCTAKCS5sb25nCTAKCS5ieXRlCTAKCS5ieXRlCTAKCS5ieXRlCTAKCS56ZXJvCTEKCS5s
b25nCV9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCsxMzYKCS5sb25nCTAKCS5sb25nCTAKCS5sb25n
CTAKCS5sb25nCTAKCS5ieXRlCTAKCS56ZXJvCTMKCS5sb25nCV9fcHRocmVhZF9tYW5hZ2VyCgku
bG9uZwkwCgkubG9uZwkwCgkuemVybwkxMjQKCS5sb25nCTAKCS5sb25nCTAKCS5sb25nCTAKCS56
ZXJvCTEyNAoJLmxvbmcJMAoJLnplcm8JOAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxv
bmcJMQoJLmxvbmcJMAoJLmxvbmcJMAoJLnplcm8JNAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJ
MAoJLmxvbmcJMAoJLmJ5dGUJMAoJLmJ5dGUJMAoJLmJ5dGUJMAoJLnplcm8JMQoJLmxvbmcJMAoJ
LmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLnplcm8JNTIwCi5nbG9ibCBfX3B0aHJlYWRfbWFp
bl90aHJlYWQKCS5hbGlnbiA0CgkudHlwZQlfX3B0aHJlYWRfbWFpbl90aHJlYWQsQG9iamVjdAoJ
LnNpemUJX19wdGhyZWFkX21haW5fdGhyZWFkLDQKX19wdGhyZWFkX21haW5fdGhyZWFkOgoJLmxv
bmcJX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkCi5nbG9ibCBfX3B0aHJlYWRfbWFuYWdlcl9yZXF1
ZXN0CgkuYWxpZ24gNAoJLnR5cGUJX19wdGhyZWFkX21hbmFnZXJfcmVxdWVzdCxAb2JqZWN0Cgku
c2l6ZQlfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0LDQKX19wdGhyZWFkX21hbmFnZXJfcmVxdWVz
dDoKCS5sb25nCS0xCi5nbG9ibCBfX3B0aHJlYWRfdGhyZWFkc19tYXgKCS5zZWN0aW9uCS5yb2Rh
dGEKCS5hbGlnbiA0CgkudHlwZQlfX3B0aHJlYWRfdGhyZWFkc19tYXgsQG9iamVjdAoJLnNpemUJ
X19wdGhyZWFkX3RocmVhZHNfbWF4LDQKX19wdGhyZWFkX3RocmVhZHNfbWF4OgoJLmxvbmcJMTAy
NAouZ2xvYmwgX19wdGhyZWFkX3NpemVvZl9oYW5kbGUKCS5hbGlnbiA0CgkudHlwZQlfX3B0aHJl
YWRfc2l6ZW9mX2hhbmRsZSxAb2JqZWN0Cgkuc2l6ZQlfX3B0aHJlYWRfc2l6ZW9mX2hhbmRsZSw0
Cl9fcHRocmVhZF9zaXplb2ZfaGFuZGxlOgoJLmxvbmcJMTYKLmdsb2JsIF9fcHRocmVhZF9vZmZz
ZXRvZl9kZXNjcgoJLmFsaWduIDQKCS50eXBlCV9fcHRocmVhZF9vZmZzZXRvZl9kZXNjcixAb2Jq
ZWN0Cgkuc2l6ZQlfX3B0aHJlYWRfb2Zmc2V0b2ZfZGVzY3IsNApfX3B0aHJlYWRfb2Zmc2V0b2Zf
ZGVzY3I6CgkubG9uZwk4Ci5nbG9ibCBfX3B0aHJlYWRfb2Zmc2V0b2ZfcGlkCgkuYWxpZ24gNAoJ
LnR5cGUJX19wdGhyZWFkX29mZnNldG9mX3BpZCxAb2JqZWN0Cgkuc2l6ZQlfX3B0aHJlYWRfb2Zm
c2V0b2ZfcGlkLDQKX19wdGhyZWFkX29mZnNldG9mX3BpZDoKCS5sb25nCTg0Ci5nbG9ibCBfX2xp
bnV4dGhyZWFkc19wdGhyZWFkX3NpemVvZl9kZXNjcgoJLmFsaWduIDQKCS50eXBlCV9fbGludXh0
aHJlYWRzX3B0aHJlYWRfc2l6ZW9mX2Rlc2NyLEBvYmplY3QKCS5zaXplCV9fbGludXh0aHJlYWRz
X3B0aHJlYWRfc2l6ZW9mX2Rlc2NyLDQKX19saW51eHRocmVhZHNfcHRocmVhZF9zaXplb2ZfZGVz
Y3I6CgkubG9uZwkxMDI0Ci5nbG9ibCBfX3B0aHJlYWRfc2lnX3Jlc3RhcnQKCS5kYXRhCgkuYWxp
Z24gNAoJLnR5cGUJX19wdGhyZWFkX3NpZ19yZXN0YXJ0LEBvYmplY3QKCS5zaXplCV9fcHRocmVh
ZF9zaWdfcmVzdGFydCw0Cl9fcHRocmVhZF9zaWdfcmVzdGFydDoKCS5sb25nCTMyCi5nbG9ibCBf
X3B0aHJlYWRfc2lnX2NhbmNlbAoJLmFsaWduIDQKCS50eXBlCV9fcHRocmVhZF9zaWdfY2FuY2Vs
LEBvYmplY3QKCS5zaXplCV9fcHRocmVhZF9zaWdfY2FuY2VsLDQKX19wdGhyZWFkX3NpZ19jYW5j
ZWw6CgkubG9uZwkzMwouZ2xvYmwgX19wdGhyZWFkX3NpZ19kZWJ1ZwoJLmFsaWduIDQKCS50eXBl
CV9fcHRocmVhZF9zaWdfZGVidWcsQG9iamVjdAoJLnNpemUJX19wdGhyZWFkX3NpZ19kZWJ1Zyw0
Cl9fcHRocmVhZF9zaWdfZGVidWc6CgkubG9uZwkzNAoJLnNlY3Rpb24JLnJvZGF0YQoJLmFsaWdu
IDQKCS50eXBlCXN5c2N0bF9hcmdzLjAsQG9iamVjdAoJLnNpemUJc3lzY3RsX2FyZ3MuMCw4CnN5
c2N0bF9hcmdzLjA6CgkubG9uZwkxCgkubG9uZwk0Cgkuc2VjdGlvbgkuY3RvcnMsImF3IixAcHJv
Z2JpdHMKCS5hbGlnbiA0CgkubG9uZwlwdGhyZWFkX2luaXRpYWxpemUKCS50ZXh0CgkuYWxpZ24g
MgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIF9fcHRocmVhZF9pbml0aWFsaXplX21hbmFnZXIKCS50
eXBlCV9fcHRocmVhZF9pbml0aWFsaXplX21hbmFnZXIsQGZ1bmN0aW9uCl9fcHRocmVhZF9pbml0
aWFsaXplX21hbmFnZXI6CglwdXNobAklZWJwCglwdXNobAklZWJ4CglzdWJsCSQxODAsICVlc3AK
CW1vdmwJX19wdGhyZWFkX21heF9zdGFja3NpemUsICVlYXgKCXRlc3RsCSVlYXgsICVlYXgKCWpl
CS5MNTQKLkwyOToKCW1vdmwJX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2JvcywgJWVheAoJdGVz
dGwJJWVheCwgJWVheAoJamUJLkw1NQouTDMyOgoJc3VibAkkMTIsICVlc3AKCXB1c2hsCSQ4MTYw
CgljYWxsCW1hbGxvYwoJb3JsCSQtMSwgJWVkeAoJYWRkbAkkMTYsICVlc3AKCW1vdmwJJWVheCwg
X19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2JvcwoJdGVzdGwJJWVheCwgJWVheAoJamUJLkwyOAoJ
c3VibAkkMTIsICVlc3AKCWFkZGwJJDgxNjAsICVlYXgKCW1vdmwJJWVheCwgX19wdGhyZWFkX21h
bmFnZXJfdGhyZWFkX3RvcwoJbGVhbAkxMiglZXNwKSwgJWVieAoJcHVzaGwJJWVieAoJY2FsbAlw
aXBlCglhZGRsCSQxNiwgJWVzcAoJaW5jbAklZWF4CglqZQkuTDU2Cgltb3ZsCV9fcHRocmVhZF9p
bml0aWFsX3RocmVhZCs0NTYsICVlZHgKCXhvcmwJJWVicCwgJWVicAoJdGVzdGwJJWVkeCwgJWVk
eAoJam5lCS5MNTcKLkwzNToKCXRlc3RsCSVlYnAsICVlYnAKCWpuZQkuTDM4Cgltb3ZsCSglZXNw
KSwgJWVheAoJcHVzaGwJJWVheAoJbW92bAlfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfdG9zLCAl
ZWF4CglwdXNobAkkMzg0MAoJcHVzaGwJJWVheAoJcHVzaGwJJF9fcHRocmVhZF9tYW5hZ2VyCglj
YWxsCV9fY2xvbmUKCWFkZGwJJDE2LCAlZXNwCgltb3ZsCSVlYXgsICVlYnAKLkwzODoKCWNtcGwJ
JC0xLCAlZWJwCglqZQkuTDU4Cgltb3ZsCTQoJWVieCksICVlYXgKCW1vdmwJJWVicCwgX19wdGhy
ZWFkX21hbmFnZXJfdGhyZWFkKzg0Cgltb3ZsCSVlYXgsIF9fcHRocmVhZF9tYW5hZ2VyX3JlcXVl
c3QKCW1vdmwJKCVlc3ApLCAlZWF4Cgltb3ZsCSVlYXgsIF9fcHRocmVhZF9tYW5hZ2VyX3JlYWRl
cgoJbW92bAlfX3B0aHJlYWRfdGhyZWFkc19kZWJ1ZywgJWVheAoJbW92bAkkMjA0OSwgX19wdGhy
ZWFkX21hbmFnZXJfdGhyZWFkKzgwCgl0ZXN0bAklZWF4LCAlZWF4CglqbmUJLkw1OQouTDQwOgoJ
bW92bAkkNSwgMjAoJWVzcCkKCWxlYWwJMTYoJWVzcCksICVlYnAKCS5wMmFsaWduIDQsLDcKLkw0
ODoKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJfcmVxdWVzdCwgJWVheAoJcHVzaGwJJWVkeAoJcHVz
aGwJJDE0OAoJcHVzaGwJJWVicAoJcHVzaGwJJWVheAoJY2FsbAlfX2xpYmNfd3JpdGUKCWFkZGwJ
JDE2LCAlZXNwCglpbmNsCSVlYXgKCWpuZQkuTDQ5CgljYWxsCV9fZXJybm9fbG9jYXRpb24KCWNt
cGwJJDQsICglZWF4KQoJamUJLkw0OAouTDQ5OgoJeG9ybAklZWR4LCAlZWR4Ci5MMjg6CglhZGRs
CSQxODAsICVlc3AKCW1vdmwJJWVkeCwgJWVheAoJcG9wbAklZWJ4Cglwb3BsCSVlYnAKCXJldAou
TDU5OgoJbW92bAlfX3B0aHJlYWRfc2lnX2RlYnVnLCAlZWF4Cgl0ZXN0bAklZWF4LCAlZWF4Cglq
bGUJLkw0MAoJc3VibAkkMTIsICVlc3AKCXB1c2hsCSVlYXgKCWNhbGwJcmFpc2UKCW1vdmwJJWVi
cCwgJWVheAoJYWRkbAkkMTYsICVlc3AKCWNtcGwJX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2Jv
cywgJWVicAoJamIJLkw0MQoJbW92bAkkX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkLCAlZWF4Ci5M
NDI6CglzdWJsCSQxMiwgJWVzcAoJcHVzaGwJJWVheAoJY2FsbAlfX3B0aHJlYWRfd2FpdF9mb3Jf
cmVzdGFydF9zaWduYWwKCWFkZGwJJDE2LCAlZXNwCglqbXAJLkw0MAouTDQxOgoJY21wbAlfX3B0
aHJlYWRfbWFuYWdlcl90aHJlYWRfYm9zLCAlZWJwCglqYgkuTDQ0CgljbXBsCV9fcHRocmVhZF9t
YW5hZ2VyX3RocmVhZF90b3MsICVlYnAKCWphZQkuTDQ0Cgltb3ZsCSRfX3B0aHJlYWRfbWFuYWdl
cl90aHJlYWQsICVlYXgKCWptcAkuTDQyCi5MNDQ6Cgltb3ZsCV9fcHRocmVhZF9ub25zdGFuZGFy
ZF9zdGFja3MsICVlYngKCXRlc3RsCSVlYngsICVlYngKCWplCS5MNDYKCWNhbGwJX19wdGhyZWFk
X2ZpbmRfc2VsZgoJam1wCS5MNDIKLkw0NjoKCW9ybAkkMjA5NzE1MSwgJWVheAoJc3VibAkkMTAy
MywgJWVheAoJam1wCS5MNDIKLkw1ODoKCXN1YmwJJDEyLCAlZXNwCgltb3ZsCV9fcHRocmVhZF9t
YW5hZ2VyX3RocmVhZF9ib3MsICVlYXgKCXB1c2hsCSVlYXgKCWNhbGwJZnJlZQoJcG9wbAklZWF4
Cgltb3ZsCTEyKCVlc3ApLCAlZWF4CglwdXNobAklZWF4CgljYWxsCV9fbGliY19jbG9zZQoJbW92
bAk0KCVlYngpLCAlZWR4Cglwb3BsCSVlYnAKCXB1c2hsCSVlZHgKCWNhbGwJX19saWJjX2Nsb3Nl
Ci5MNTM6CglvcmwJJC0xLCAlZWR4CglhZGRsCSQxNiwgJWVzcAoJam1wCS5MMjgKLkw1NzoKCW1v
dmwJX19wdGhyZWFkX3RocmVhZHNfZXZlbnRzLCAlZWF4Cgltb3ZsCV9fcHRocmVhZF9pbml0aWFs
X3RocmVhZCs0NjAsICVlY3gKCW9ybAklZWN4LCAlZWF4Cgl0ZXN0bAkkMTI4LCAlZWF4CglqZQku
TDM1Cgl4b3JsCSVlZHgsICVlZHgKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkKzkyLCAl
ZWF4CgljYWxsCV9fcHRocmVhZF9sb2NrCgltb3ZsCV9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZF90
b3MsICVlYnAKCW1vdmwJKCVlc3ApLCAlZWF4CglwdXNobAklZWF4CglwdXNobAkkMzg0MAoJcHVz
aGwJJWVicAoJcHVzaGwJJF9fcHRocmVhZF9tYW5hZ2VyX2V2ZW50CgljYWxsCV9fY2xvbmUKCWFk
ZGwJJDE2LCAlZXNwCgltb3ZsCSVlYXgsICVlYnAKCWNtcGwJJC0xLCAlZWF4CglqZQkuTDM3Cglt
b3ZsCSRfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQsIF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCs0
NzIKCW1vdmwJJDgsIF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCs0NjgKCW1vdmwJJF9fcHRocmVh
ZF9tYW5hZ2VyX3RocmVhZCwgX19wdGhyZWFkX2xhc3RfZXZlbnQKCW1vdmwJJDIwNDksIF9fcHRo
cmVhZF9tYW5hZ2VyX3RocmVhZCs4MAoJbW92bAklZWF4LCBfX3B0aHJlYWRfbWFuYWdlcl90aHJl
YWQrODQKCWNhbGwJX19saW51eHRocmVhZHNfY3JlYXRlX2V2ZW50Ci5MMzc6CglzdWJsCSQxMiwg
JWVzcAoJbW92bAlfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQrOTIsICVlYXgKCXB1c2hsCSVlYXgK
CWNhbGwJX19wdGhyZWFkX3VubG9jawoJYWRkbAkkMTYsICVlc3AKCWptcAkuTDM1Ci5MNTY6Cglz
dWJsCSQxMiwgJWVzcAoJbW92bAlfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfYm9zLCAlZWF4Cglw
dXNobAklZWF4CgljYWxsCWZyZWUKCWptcAkuTDUzCi5MNTU6CgljYWxsCXB0aHJlYWRfaW5pdGlh
bGl6ZQoJam1wCS5MMzIKLkw1NDoKCW1vdmwJJDIwOTcxNTIsICVlYnAKCXB1c2hsCSVlYXgKCXB1
c2hsCSVlYXgKCWxlYWwJMTYoJWVzcCksICVlYngKCXB1c2hsCSVlYngKCXB1c2hsCSQzCgljYWxs
CWdldHJsaW1pdAoJYWRkbAkkMTYsICVlc3AKCWNhbGwJX19nZXRwYWdlc2l6ZQoJc3VibAklZWF4
LCAlZWJwCgljbXBsCSVlYnAsIDgoJWVzcCkKCWphCS5MNjAKLkwzMDoKCW1vdmwJJWVicCwgX19w
dGhyZWFkX21heF9zdGFja3NpemUKCWptcAkuTDI5Ci5MNjA6Cgltb3ZsCSVlYnAsIDgoJWVzcCkK
CXB1c2hsCSVlYXgKCXB1c2hsCSVlYXgKCXB1c2hsCSVlYngKCXB1c2hsCSQzCgljYWxsCXNldHJs
aW1pdAoJYWRkbAkkMTYsICVlc3AKCWptcAkuTDMwCi5MZmUxOgoJLnNpemUJX19wdGhyZWFkX2lu
aXRpYWxpemVfbWFuYWdlciwuTGZlMS1fX3B0aHJlYWRfaW5pdGlhbGl6ZV9tYW5hZ2VyCgkuYWxp
Z24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIF9fcHRocmVhZF9jcmVhdGVfMl8xCgkudHlwZQlf
X3B0aHJlYWRfY3JlYXRlXzJfMSxAZnVuY3Rpb24KX19wdGhyZWFkX2NyZWF0ZV8yXzE6CglwdXNo
bAklZWJwCgltb3ZsCSVlYnAsICVlYXgKCXB1c2hsCSVlYngKCXN1YmwJJDE2NCwgJWVzcAoJY21w
bAlfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWRfYm9zLCAlZWJwCglqYgkuTDYyCgltb3ZsCSRfX3B0
aHJlYWRfaW5pdGlhbF90aHJlYWQsICVlYngKLkw2MzoKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJf
cmVxdWVzdCwgJWVheAoJdGVzdGwJJWVheCwgJWVheAoJanMJLkw3OAouTDY5OgoJbW92bAkxODAo
JWVzcCksICVlYXgKCW1vdmwJJWVieCwgKCVlc3ApCgltb3ZsCSVlYXgsIDgoJWVzcCkKCW1vdmwJ
MTg0KCVlc3ApLCAlZWF4Cgltb3ZsCSVlYXgsIDEyKCVlc3ApCgltb3ZsCTE4OCglZXNwKSwgJWVh
eAoJbW92bAklZWF4LCAxNiglZXNwKQoJbW92bAkkMCwgNCglZXNwKQoJcHVzaGwJJWVheAoJbGVh
bAkyNCglZXNwKSwgJWVkeAoJcHVzaGwJJWVkeAoJcHVzaGwJJDAKCXB1c2hsCSQyCgljYWxsCXNp
Z3Byb2NtYXNrCglhZGRsCSQxNiwgJWVzcAoJbW92bAklZXNwLCAlZWJwCgkucDJhbGlnbiA0LCw3
Ci5MNzE6CglwdXNobAklZWF4Cgltb3ZsCV9fcHRocmVhZF9tYW5hZ2VyX3JlcXVlc3QsICVlYXgK
CXB1c2hsCSQxNDgKCXB1c2hsCSVlYnAKCXB1c2hsCSVlYXgKCWNhbGwJX19saWJjX3dyaXRlCglh
ZGRsCSQxNiwgJWVzcAoJaW5jbAklZWF4CglqbmUJLkw3MgoJY2FsbAlfX2Vycm5vX2xvY2F0aW9u
CgljbXBsCSQ0LCAoJWVheCkKCWplCS5MNzEKLkw3MjoKCXN1YmwJJDEyLCAlZXNwCglwdXNobAkl
ZWJ4CgljYWxsCV9fcHRocmVhZF93YWl0X2Zvcl9yZXN0YXJ0X3NpZ25hbAoJbW92bAkxMTYoJWVi
eCksICVlY3gKCWFkZGwJJDE2LCAlZXNwCgl0ZXN0bAklZWN4LCAlZWN4CglqbmUJLkw3NwoJbW92
bAkxNzYoJWVzcCksICVlYXgKCW1vdmwJMTEyKCVlYngpLCAlZWJwCgltb3ZsCSVlYnAsICglZWF4
KQouTDc3OgoJbW92bAklZWN4LCAlZWR4Ci5MNjE6CglhZGRsCSQxNjQsICVlc3AKCW1vdmwJJWVk
eCwgJWVheAoJcG9wbAklZWJ4Cglwb3BsCSVlYnAKCXJldAouTDc4OgoJY2FsbAlfX3B0aHJlYWRf
aW5pdGlhbGl6ZV9tYW5hZ2VyCgltb3ZsCSQxMSwgJWVkeAoJdGVzdGwJJWVheCwgJWVheAoJam5z
CS5MNjkKCWptcAkuTDYxCgkucDJhbGlnbiA0LCw3Ci5MNjI6CgljbXBsCV9fcHRocmVhZF9tYW5h
Z2VyX3RocmVhZF9ib3MsICVlYnAKCWpiCS5MNjUKCWNtcGwJX19wdGhyZWFkX21hbmFnZXJfdGhy
ZWFkX3RvcywgJWVicAoJamFlCS5MNjUKCW1vdmwJJF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCwg
JWVieAoJam1wCS5MNjMKLkw2NToKCW1vdmwJX19wdGhyZWFkX25vbnN0YW5kYXJkX3N0YWNrcywg
JWVkeAoJdGVzdGwJJWVkeCwgJWVkeAoJamUJLkw2NwoJY2FsbAlfX3B0aHJlYWRfZmluZF9zZWxm
Cgltb3ZsCSVlYXgsICVlYngKCWptcAkuTDYzCi5MNjc6CglvcmwJJDIwOTcxNTEsICVlYXgKCWxl
YWwJLTEwMjMoJWVheCksICVlYngKCWptcAkuTDYzCi5MZmUyOgoJLnNpemUJX19wdGhyZWFkX2Ny
ZWF0ZV8yXzEsLkxmZTItX19wdGhyZWFkX2NyZWF0ZV8yXzEKCS53ZWFrCXB0aHJlYWRfY3JlYXRl
Cgkuc2V0CXB0aHJlYWRfY3JlYXRlLF9fcHRocmVhZF9jcmVhdGVfMl8xCgkuYWxpZ24gMgoJLnAy
YWxpZ24gNCwsMTUKLmdsb2JsIF9fcHRocmVhZF9maW5kX3NlbGYKCS50eXBlCV9fcHRocmVhZF9m
aW5kX3NlbGYsQGZ1bmN0aW9uCl9fcHRocmVhZF9maW5kX3NlbGY6CglwdXNobAklZWJwCgltb3Zs
CSVlYnAsICVlY3gKCW1vdmwJJF9fcHRocmVhZF9oYW5kbGVzKzMyLCAlZWR4CgljbXBsCV9fcHRo
cmVhZF9oYW5kbGVzKzQwLCAlZWJwCglqYmUJLkw4NwoJLnAyYWxpZ24gNCwsNwouTDgzOgoJYWRk
bAkkMTYsICVlZHgKCW1vdmwJOCglZWR4KSwgJWVheAoJY21wbAklZWF4LCAlZWN4CglqYQkuTDgz
CgljbXBsCTEyKCVlZHgpLCAlZWN4CglqYgkuTDgzCi5MODU6Cglwb3BsCSVlYnAKCXJldAouTDg3
OgoJY21wbAlfX3B0aHJlYWRfaGFuZGxlcys0NCwgJWVicAoJamIJLkw4MwoJbW92bAlfX3B0aHJl
YWRfaGFuZGxlcys0MCwgJWVheAoJam1wCS5MODUKLkxmZTM6Cgkuc2l6ZQlfX3B0aHJlYWRfZmlu
ZF9zZWxmLC5MZmUzLV9fcHRocmVhZF9maW5kX3NlbGYKCS53ZWFrCXB0aHJlYWRfeWllbGQKCS5z
ZXQJcHRocmVhZF95aWVsZCxfX3B0aHJlYWRfeWllbGQKCS5hbGlnbiAyCgkucDJhbGlnbiA0LCwx
NQoJLnR5cGUJcHRocmVhZF9oYW5kbGVfc2lnY2FuY2VsLEBmdW5jdGlvbgpwdGhyZWFkX2hhbmRs
ZV9zaWdjYW5jZWw6CglwdXNobAklZWJwCglwdXNobAklZWN4CglwdXNobAklZWN4Cgltb3ZsCTE2
KCVlc3ApLCAlZWJwCgltb3ZsCSVlYnAsICVlYXgKCWNtcGwJX19wdGhyZWFkX2luaXRpYWxfdGhy
ZWFkX2JvcywgJWVicAoJamIJLkw4OQoJbW92bAkkX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkLCAl
ZWF4Ci5MOTA6CgljbXBsCSRfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQsICVlYXgKCWplCS5MMTAy
Cgltb3ZsCV9fcHRocmVhZF9leGl0X3JlcXVlc3RlZCwgJWVjeAoJdGVzdGwJJWVjeCwgJWVjeAoJ
am5lCS5MMTAzCgljbXBiCSQwLCAxMzAoJWVheCkKCWpuZQkuTDEwNAouTDg4OgoJcG9wbAklZWJw
Cglwb3BsCSVlYXgKCXBvcGwJJWVicAoJcmV0Ci5MMTA0OgoJY21wYgkkMCwgMTI4KCVlYXgpCglq
bmUJLkw4OAoJY21wYgkkMSwgMTI5KCVlYXgpCglqZQkuTDEwNQoJbW92bAkxMDQoJWVheCksICVl
ZHgKCXRlc3RsCSVlZHgsICVlZHgKCWplCS5MODgKCWptcAkuTDEwNgoJLnAyYWxpZ24gNCwsNwou
TDEwMzoKCWNtcGwJX19wdGhyZWFkX21haW5fdGhyZWFkLCAlZWF4CglqZQkuTDEwNwouTDk4OgoJ
c3VibAkkMTIsICVlc3AKCW1vdmwJX19wdGhyZWFkX2V4aXRfY29kZSwgJWVheAoJcHVzaGwJJWVh
eAoJY2FsbAlfZXhpdAouTDEwNzoKCXB1c2hsCSVlYXgKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJf
dGhyZWFkKzg0LCAlZWF4CglwdXNobAkkLTIxNDc0ODM2NDgKCXB1c2hsCSQwCglwdXNobAklZWF4
CgljYWxsCXdhaXRwaWQKCWFkZGwJJDE2LCAlZXNwCglqbXAJLkw5OAouTDEwMjoKCW1vdmwJJWVi
cCwgMTYoJWVzcCkKCXBvcGwJJWVjeAoJcG9wbAklZWJwCglwb3BsCSVlYnAKCWptcAlfX3B0aHJl
YWRfbWFuYWdlcl9zaWdoYW5kbGVyCgkucDJhbGlnbiA0LCw3Ci5MODk6CgljbXBsCV9fcHRocmVh
ZF9tYW5hZ2VyX3RocmVhZF9ib3MsICVlYnAKCWpiCS5MOTIKCWNtcGwJX19wdGhyZWFkX21hbmFn
ZXJfdGhyZWFkX3RvcywgJWVicAoJamFlCS5MOTIKCW1vdmwJJF9fcHRocmVhZF9tYW5hZ2VyX3Ro
cmVhZCwgJWVheAoJam1wCS5MOTAKCS5wMmFsaWduIDQsLDcKLkw5MjoKCW1vdmwJX19wdGhyZWFk
X25vbnN0YW5kYXJkX3N0YWNrcywgJWVjeAoJdGVzdGwJJWVjeCwgJWVjeAoJamUJLkw5NAoJY2Fs
bAlfX3B0aHJlYWRfZmluZF9zZWxmCglqbXAJLkw5MAoJLnAyYWxpZ24gNCwsNwouTDk0OgoJb3Js
CSQyMDk3MTUxLCAlZWF4CglzdWJsCSQxMDIzLCAlZWF4CglqbXAJLkw5MAouTDEwNToKCXB1c2hs
CSVlYXgKCXB1c2hsCSVlYXgKCXB1c2hsCSVlYnAKCXB1c2hsCSQtMQoJY2FsbAlfX3B0aHJlYWRf
ZG9fZXhpdAouTDEwNjoKCW1vdmwJJDAsIDEwNCglZWF4KQoJcHVzaGwJJWVheAoJcHVzaGwJJWVh
eAoJcHVzaGwJJDEKCXB1c2hsCSVlZHgKCWNhbGwJc2lnbG9uZ2ptcAouTGZlNDoKCS5zaXplCXB0
aHJlYWRfaGFuZGxlX3NpZ2NhbmNlbCwuTGZlNC1wdGhyZWFkX2hhbmRsZV9zaWdjYW5jZWwKCS53
ZWFrCXB0aHJlYWRfa2lsbF9vdGhlcl90aHJlYWRzX25wCgkuc2V0CXB0aHJlYWRfa2lsbF9vdGhl
cl90aHJlYWRzX25wLF9fcHRocmVhZF9raWxsX290aGVyX3RocmVhZHNfbnAKCS53ZWFrCXB0aHJl
YWRfc2V0Y29uY3VycmVuY3kKCS5zZXQJcHRocmVhZF9zZXRjb25jdXJyZW5jeSxfX3B0aHJlYWRf
c2V0Y29uY3VycmVuY3kKCS53ZWFrCXB0aHJlYWRfZ2V0Y29uY3VycmVuY3kKCS5zZXQJcHRocmVh
ZF9nZXRjb25jdXJyZW5jeSxfX3B0aHJlYWRfZ2V0Y29uY3VycmVuY3kKCS5hbGlnbiAyCgkucDJh
bGlnbiA0LCwxNQouZ2xvYmwgX19wdGhyZWFkX3dhaXRfZm9yX3Jlc3RhcnRfc2lnbmFsCgkudHlw
ZQlfX3B0aHJlYWRfd2FpdF9mb3JfcmVzdGFydF9zaWduYWwsQGZ1bmN0aW9uCl9fcHRocmVhZF93
YWl0X2Zvcl9yZXN0YXJ0X3NpZ25hbDoKCXB1c2hsCSVlc2kKCXB1c2hsCSVlYngKCXN1YmwJJDEz
NiwgJWVzcAoJbGVhbAk0KCVlc3ApLCAlZWJ4Cgltb3ZsCTE0OCglZXNwKSwgJWVzaQoJcHVzaGwJ
JWVieAoJcHVzaGwJJDAKCXB1c2hsCSQyCgljYWxsCXNpZ3Byb2NtYXNrCglwb3BsCSVlYXgKCXBv
cGwJJWVkeAoJbW92bAlfX3B0aHJlYWRfc2lnX3Jlc3RhcnQsICVlYXgKCXB1c2hsCSVlYXgKCXB1
c2hsCSVlYngKCWNhbGwJc2lnZGVsc2V0CglhZGRsCSQxNiwgJWVzcAoJbW92bAkkMCwgOTYoJWVz
aSkKCS5wMmFsaWduIDQsLDcKLkwxMDk6CglzdWJsCSQxMiwgJWVzcAoJcHVzaGwJJWVieAoJY2Fs
bAlzaWdzdXNwZW5kCgltb3ZsCV9fcHRocmVhZF9zaWdfcmVzdGFydCwgJWVheAoJYWRkbAkkMTYs
ICVlc3AKCWNtcGwJJWVheCwgOTYoJWVzaSkKCWpuZQkuTDEwOQoJYWRkbAkkMTMyLCAlZXNwCglw
b3BsCSVlYngKCXBvcGwJJWVzaQoJcmV0Ci5MZmU1OgoJLnNpemUJX19wdGhyZWFkX3dhaXRfZm9y
X3Jlc3RhcnRfc2lnbmFsLC5MZmU1LV9fcHRocmVhZF93YWl0X2Zvcl9yZXN0YXJ0X3NpZ25hbAoJ
LmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Ci5nbG9ibCBfX3B0aHJlYWRfdGltZWRzdXNwZW5kX25l
dwoJLnR5cGUJX19wdGhyZWFkX3RpbWVkc3VzcGVuZF9uZXcsQGZ1bmN0aW9uCl9fcHRocmVhZF90
aW1lZHN1c3BlbmRfbmV3OgoJcHVzaGwJJWVicAoJcHVzaGwJJWVkaQoJcHVzaGwJJWVzaQoJcHVz
aGwJJWVieAoJc3VibAkkNDUyLCAlZXNwCglwdXNobAkkMQoJbGVhbAkyOCglZXNwKSwgJWVkeAoJ
cHVzaGwJJWVkeAoJY2FsbAlfX3NpZ3NldGptcAoJYWRkbAkkMTYsICVlc3AKCXRlc3RsCSVlYXgs
ICVlYXgKCWplCS5MMTIzCgltb3ZsCSQxLCAlZWF4Ci5MMTIyOgoJbW92bAk0NjQoJWVzcCksICVl
YngKCW1vdmwJJDAsIDEwMCglZWJ4KQoJYWRkbAkkNDQ0LCAlZXNwCglwb3BsCSVlYngKCXBvcGwJ
JWVzaQoJcG9wbAklZWRpCglwb3BsCSVlYnAKCXJldAoJLnAyYWxpZ24gNCwsNwouTDEyMzoKCW1v
dmwJNDY0KCVlc3ApLCAlZWN4CglsZWFsCTE2KCVlc3ApLCAlZWJ4CglzdWJsCSQxMiwgJWVzcAoJ
bW92bAklZWJ4LCAxMDAoJWVjeCkKCWxlYWwJMzE2KCVlc3ApLCAlZXNpCgltb3ZsCSQwLCA5Nigl
ZWN4KQoJcHVzaGwJJWVzaQoJY2FsbAlzaWdlbXB0eXNldAoJcG9wbAklZWF4Cglwb3BsCSVlZHgK
CW1vdmwJX19wdGhyZWFkX3NpZ19yZXN0YXJ0LCAlZWF4CglwdXNobAklZWF4CglwdXNobAklZXNp
CgljYWxsCXNpZ2FkZHNldAoJYWRkbAkkMTIsICVlc3AKCWxlYWwJMTgwKCVlc3ApLCAlZWR4Cglw
dXNobAklZWR4CglwdXNobAklZXNpCglwdXNobAkkMQoJY2FsbAlzaWdwcm9jbWFzawoJYWRkbAkk
MTYsICVlc3AKCW1vdmwJJWVzcCwgJWVzaQoJbGVhbAk4KCVlc3ApLCAlZWJ4CgkucDJhbGlnbiA0
LCw3Ci5MMTIxOgoJcHVzaGwJJWVheAoJcHVzaGwJJWVheAoJcHVzaGwJJDAKCXB1c2hsCSVlYngK
CWNhbGwJX19nZXR0aW1lb2ZkYXkKCW1vdmwJNDg0KCVlc3ApLCAlZWJwCgltb3ZsCTI4KCVlc3Ap
LCAlZWF4CglsZWFsCSglZWF4LCVlYXgsNCksICVlZGkKCW1vdmwJMjQoJWVzcCksICVlYXgKCWxl
YWwJKCVlZGksJWVkaSw0KSwgJWVkeAoJbGVhbAkoJWVkeCwlZWR4LDQpLCAlZWN4Cgltb3ZsCTQo
JWVicCksICVlZHgKCXNhbGwJJDMsICVlY3gKCXN1YmwJJWVjeCwgJWVkeAoJbW92bAkoJWVicCks
ICVlY3gKCXN1YmwJJWVheCwgJWVjeAoJbW92bAklZWR4LCAyMCglZXNwKQoJbW92bAklZWN4LCAx
NiglZXNwKQoJYWRkbAkkMTYsICVlc3AKCXRlc3RsCSVlZHgsICVlZHgKCWpzCS5MMTI0Ci5MMTE4
OgoJbW92bAkoJWVzcCksICVlYXgKCXRlc3RsCSVlYXgsICVlYXgKCWpzCS5MMTE2CglwdXNobAkl
ZWRpCglwdXNobAklZWRpCglwdXNobAkkMAoJcHVzaGwJJWVzaQoJY2FsbAlfX2xpYmNfbmFub3Ns
ZWVwCglhZGRsCSQxNiwgJWVzcAoJdGVzdGwJJWVheCwgJWVheAoJam5lCS5MMTIxCi5MMTE2OgoJ
cHVzaGwJJWVjeAoJcHVzaGwJJDAKCWxlYWwJMTg0KCVlc3ApLCAlZXNpCglwdXNobAklZXNpCglw
dXNobAkkMgoJY2FsbAlzaWdwcm9jbWFzawoJYWRkbAkkMTYsICVlc3AKCXhvcmwJJWVheCwgJWVh
eAoJam1wCS5MMTIyCgkucDJhbGlnbiA0LCw3Ci5MMTI0OgoJbGVhbAkxMDAwMDAwMDAwKCVlZHgp
LCAlZWRpCglsZWFsCS0xKCVlY3gpLCAlZWJwCgltb3ZsCSVlZGksIDQoJWVzcCkKCW1vdmwJJWVi
cCwgKCVlc3ApCglqbXAJLkwxMTgKLkxmZTY6Cgkuc2l6ZQlfX3B0aHJlYWRfdGltZWRzdXNwZW5k
X25ldywuTGZlNi1fX3B0aHJlYWRfdGltZWRzdXNwZW5kX25ldwoJLnNlY3Rpb24JLnJvZGF0YQoJ
LmFsaWduIDQKCS50eXBlCV9fcHRocmVhZF9yZXF1aXJlX3dyYXBwZXJzLEBvYmplY3QKCS5zaXpl
CV9fcHRocmVhZF9yZXF1aXJlX3dyYXBwZXJzLDQKX19wdGhyZWFkX3JlcXVpcmVfd3JhcHBlcnM6
CgkubG9uZwlfX3B0aHJlYWRfcHJvdmlkZV93cmFwcGVycwoJLmFsaWduIDQKCS50eXBlCV9fcHRo
cmVhZF9yZXF1aXJlX2xvY2tmaWxlLEBvYmplY3QKCS5zaXplCV9fcHRocmVhZF9yZXF1aXJlX2xv
Y2tmaWxlLDQKX19wdGhyZWFkX3JlcXVpcmVfbG9ja2ZpbGU6CgkubG9uZwlfX3B0aHJlYWRfcHJv
dmlkZV9sb2NrZmlsZQoJLnRleHQKCS5hbGlnbiAyCgkucDJhbGlnbiA0LCwxNQouZ2xvYmwgX19s
aWJjX2N1cnJlbnRfc2lncnRtaW4KCS50eXBlCV9fbGliY19jdXJyZW50X3NpZ3J0bWluLEBmdW5j
dGlvbgpfX2xpYmNfY3VycmVudF9zaWdydG1pbjoKCW1vdmwJcnRzaWdzX2luaXRpYWxpemVkLCAl
ZWF4Cgl0ZXN0bAklZWF4LCAlZWF4CglqZQkuTDQ4NAouTDQ4MjoKCW1vdmwJY3VycmVudF9ydG1p
biwgJWVheAoJcmV0Ci5MNDg0OgoJbW92bAkkMzUsIGN1cnJlbnRfcnRtaW4KCW1vdmwJJDYzLCBj
dXJyZW50X3J0bWF4Cgltb3ZsCSQxLCBydHNpZ3NfaW5pdGlhbGl6ZWQKCWptcAkuTDQ4MgouTGZl
NzoKCS5zaXplCV9fbGliY19jdXJyZW50X3NpZ3J0bWluLC5MZmU3LV9fbGliY19jdXJyZW50X3Np
Z3J0bWluCgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIF9fbGliY19jdXJyZW50X3Np
Z3J0bWF4CgkudHlwZQlfX2xpYmNfY3VycmVudF9zaWdydG1heCxAZnVuY3Rpb24KX19saWJjX2N1
cnJlbnRfc2lncnRtYXg6Cgltb3ZsCXJ0c2lnc19pbml0aWFsaXplZCwgJWVheAoJdGVzdGwJJWVh
eCwgJWVheAoJamUJLkw0ODgKLkw0ODY6Cgltb3ZsCWN1cnJlbnRfcnRtYXgsICVlYXgKCXJldAou
TDQ4ODoKCW1vdmwJJDM1LCBjdXJyZW50X3J0bWluCgltb3ZsCSQ2MywgY3VycmVudF9ydG1heAoJ
bW92bAkkMSwgcnRzaWdzX2luaXRpYWxpemVkCglqbXAJLkw0ODYKLkxmZTg6Cgkuc2l6ZQlfX2xp
YmNfY3VycmVudF9zaWdydG1heCwuTGZlOC1fX2xpYmNfY3VycmVudF9zaWdydG1heAoJLmFsaWdu
IDIKCS5wMmFsaWduIDQsLDE1Ci5nbG9ibCBfX2xpYmNfYWxsb2NhdGVfcnRzaWcKCS50eXBlCV9f
bGliY19hbGxvY2F0ZV9ydHNpZyxAZnVuY3Rpb24KX19saWJjX2FsbG9jYXRlX3J0c2lnOgoJbW92
bAlydHNpZ3NfaW5pdGlhbGl6ZWQsICVlYXgKCXRlc3RsCSVlYXgsICVlYXgKCWplCS5MNDk2Ci5M
NDkwOgoJbW92bAljdXJyZW50X3J0bWluLCAlZWF4CgljbXBsCSQtMSwgJWVheAoJamUJLkw0OTMK
CW1vdmwJY3VycmVudF9ydG1heCwgJWVkeAoJY21wbAklZWR4LCAlZWF4CglqZwkuTDQ5MwoJbW92
bAk0KCVlc3ApLCAlZWN4Cgl0ZXN0bAklZWN4LCAlZWN4CglqZQkuTDQ5NAoJbGVhbAkxKCVlYXgp
LCAlZWN4Cgltb3ZsCSVlYXgsICVlZHgKCW1vdmwJJWVjeCwgY3VycmVudF9ydG1pbgouTDQ5NToK
CW1vdmwJJWVkeCwgJWVheAoJcmV0CgkucDJhbGlnbiA0LCw3Ci5MNDk0OgoJbGVhbAktMSglZWR4
KSwgJWVjeAoJbW92bAklZWN4LCBjdXJyZW50X3J0bWF4CglqbXAJLkw0OTUKCS5wMmFsaWduIDQs
LDcKLkw0OTM6CglvcmwJJC0xLCAlZWF4CglyZXQKLkw0OTY6Cgltb3ZsCSQzNSwgY3VycmVudF9y
dG1pbgoJbW92bAkkNjMsIGN1cnJlbnRfcnRtYXgKCW1vdmwJJDEsIHJ0c2lnc19pbml0aWFsaXpl
ZAoJam1wCS5MNDkwCi5MZmU5OgoJLnNpemUJX19saWJjX2FsbG9jYXRlX3J0c2lnLC5MZmU5LV9f
bGliY19hbGxvY2F0ZV9ydHNpZwoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Cgkud2VhawlfX3B0
aHJlYWRfaW5pdGlhbGl6ZV9taW5pbWFsCgkudHlwZQlfX3B0aHJlYWRfaW5pdGlhbGl6ZV9taW5p
bWFsLEBmdW5jdGlvbgpfX3B0aHJlYWRfaW5pdGlhbGl6ZV9taW5pbWFsOgoJcmV0Ci5MZmUxMDoK
CS5zaXplCV9fcHRocmVhZF9pbml0aWFsaXplX21pbmltYWwsLkxmZTEwLV9fcHRocmVhZF9pbml0
aWFsaXplX21pbmltYWwKCS5hbGlnbiAyCgkucDJhbGlnbiA0LCwxNQouZ2xvYmwgX19wdGhyZWFk
X2luaXRfbWF4X3N0YWNrc2l6ZQoJLnR5cGUJX19wdGhyZWFkX2luaXRfbWF4X3N0YWNrc2l6ZSxA
ZnVuY3Rpb24KX19wdGhyZWFkX2luaXRfbWF4X3N0YWNrc2l6ZToKCXB1c2hsCSVlc2kKCXB1c2hs
CSVlYngKCW1vdmwJJDIwOTcxNTIsICVlYngKCXN1YmwJJDI4LCAlZXNwCglsZWFsCTE2KCVlc3Ap
LCAlZXNpCglwdXNobAklZXNpCglwdXNobAkkMwoJY2FsbAlnZXRybGltaXQKCWNhbGwJX19nZXRw
YWdlc2l6ZQoJYWRkbAkkMTYsICVlc3AKCXN1YmwJJWVheCwgJWVieAoJY21wbAklZWJ4LCA4KCVl
c3ApCglqYQkuTDUxNgouTDUxNToKCW1vdmwJJWVieCwgX19wdGhyZWFkX21heF9zdGFja3NpemUK
CWFkZGwJJDIwLCAlZXNwCglwb3BsCSVlYngKCXBvcGwJJWVzaQoJcmV0CgkucDJhbGlnbiA0LCw3
Ci5MNTE2OgoJbW92bAklZWJ4LCA4KCVlc3ApCglwdXNobAklZWF4CglwdXNobAklZWF4CglwdXNo
bAklZXNpCglwdXNobAkkMwoJY2FsbAlzZXRybGltaXQKCWFkZGwJJDE2LCAlZXNwCglqbXAJLkw1
MTUKLkxmZTExOgoJLnNpemUJX19wdGhyZWFkX2luaXRfbWF4X3N0YWNrc2l6ZSwuTGZlMTEtX19w
dGhyZWFkX2luaXRfbWF4X3N0YWNrc2l6ZQoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Cgkud2Vh
awlfX3B0aHJlYWRfaW5pdGlhbGl6ZQoJLnR5cGUJX19wdGhyZWFkX2luaXRpYWxpemUsQGZ1bmN0
aW9uCl9fcHRocmVhZF9pbml0aWFsaXplOgoJam1wCXB0aHJlYWRfaW5pdGlhbGl6ZQouTGZlMTI6
Cgkuc2l6ZQlfX3B0aHJlYWRfaW5pdGlhbGl6ZSwuTGZlMTItX19wdGhyZWFkX2luaXRpYWxpemUK
CS5hbGlnbiAyCgkucDJhbGlnbiA0LCwxNQouZ2xvYmwgcHRocmVhZF9zZWxmCgkudHlwZQlwdGhy
ZWFkX3NlbGYsQGZ1bmN0aW9uCnB0aHJlYWRfc2VsZjoKCXB1c2hsCSVlYnAKCXB1c2hsCSVlYXgK
CXB1c2hsCSVlYXgKCW1vdmwJJWVicCwgJWVheAoJY21wbAlfX3B0aHJlYWRfaW5pdGlhbF90aHJl
YWRfYm9zLCAlZWJwCglqYgkuTDUxOQoJbW92bAkkX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkLCAl
ZWF4Ci5MNTIwOgoJbW92bAk4MCglZWF4KSwgJWVheAoJcG9wbAklZWR4Cglwb3BsCSVlY3gKCXBv
cGwJJWVicAoJcmV0CgkucDJhbGlnbiA0LCw3Ci5MNTE5OgoJY21wbAlfX3B0aHJlYWRfbWFuYWdl
cl90aHJlYWRfYm9zLCAlZWJwCglqYgkuTDUyMgoJY21wbAlfX3B0aHJlYWRfbWFuYWdlcl90aHJl
YWRfdG9zLCAlZWJwCglqYWUJLkw1MjIKCW1vdmwJJF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCwg
JWVheAoJam1wCS5MNTIwCgkucDJhbGlnbiA0LCw3Ci5MNTIyOgoJbW92bAlfX3B0aHJlYWRfbm9u
c3RhbmRhcmRfc3RhY2tzLCAlZWR4Cgl0ZXN0bAklZWR4LCAlZWR4CglqZQkuTDUyNAoJY2FsbAlf
X3B0aHJlYWRfZmluZF9zZWxmCglqbXAJLkw1MjAKCS5wMmFsaWduIDQsLDcKLkw1MjQ6CglvcmwJ
JDIwOTcxNTEsICVlYXgKCXN1YmwJJDEwMjMsICVlYXgKCWptcAkuTDUyMAouTGZlMTM6Cgkuc2l6
ZQlwdGhyZWFkX3NlbGYsLkxmZTEzLXB0aHJlYWRfc2VsZgoJLmFsaWduIDIKCS5wMmFsaWduIDQs
LDE1Ci5nbG9ibCBwdGhyZWFkX2VxdWFsCgkudHlwZQlwdGhyZWFkX2VxdWFsLEBmdW5jdGlvbgpw
dGhyZWFkX2VxdWFsOgoJbW92bAk4KCVlc3ApLCAlZWF4CgljbXBsCSVlYXgsIDQoJWVzcCkKCXNl
dGUJJWFsCglhbmRsCSQyNTUsICVlYXgKCXJldAouTGZlMTQ6Cgkuc2l6ZQlwdGhyZWFkX2VxdWFs
LC5MZmUxNC1wdGhyZWFkX2VxdWFsCgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIHB0
aHJlYWRfc2V0c2NoZWRwYXJhbQoJLnR5cGUJcHRocmVhZF9zZXRzY2hlZHBhcmFtLEBmdW5jdGlv
bgpwdGhyZWFkX3NldHNjaGVkcGFyYW06CglwdXNobAklZWJwCglwdXNobAklZWRpCglwdXNobAkl
ZXNpCglwdXNobAklZWJ4CglzdWJsCSQxMiwgJWVzcAoJbW92bAkzMiglZXNwKSwgJWVzaQoJbW92
bAkzNiglZXNwKSwgJWVkaQoJbW92bAklZXNpLCAlZWR4Cgltb3ZsCTQwKCVlc3ApLCAlZWJwCglh
bmRsCSQxMDIzLCAlZWR4CglzYWxsCSQ0LCAlZWR4CglsZWFsCV9fcHRocmVhZF9oYW5kbGVzKCVl
ZHgpLCAlZWJ4Cgl4b3JsCSVlZHgsICVlZHgKCW1vdmwJJWVieCwgJWVheAoJY2FsbAlfX3B0aHJl
YWRfbG9jawoJbW92bAk4KCVlYngpLCAlZWF4Cgl4b3JsCSVlZHgsICVlZHgKCXRlc3RsCSVlYXgs
ICVlYXgKCWplCS5MNTMxCgljbXBsCSVlc2ksIDgwKCVlYXgpCglqZQkuTDUzOAouTDUzMToKCW1v
dmwJJDEsICVlZHgKLkw1MzI6Cgl0ZXN0bAklZWR4LCAlZWR4CglqbmUJLkw1MzkKCW1vdmwJOCgl
ZWJ4KSwgJWVzaQoJcHVzaGwJJWVheAoJcHVzaGwJJWVicAoJcHVzaGwJJWVkaQoJbW92bAk4NCgl
ZXNpKSwgJWVheAoJcHVzaGwJJWVheAoJY2FsbAlfX3NjaGVkX3NldHNjaGVkdWxlcgoJYWRkbAkk
MTYsICVlc3AKCWluY2wJJWVheAoJamUJLkw1NDAKCXhvcmwJJWVheCwgJWVheAoJdGVzdGwJJWVk
aSwgJWVkaQoJamUJLkw1MzUKCW1vdmwJKCVlYnApLCAlZWF4Ci5MNTM1OgoJc3VibAkkMTIsICVl
c3AKCW1vdmwJJWVheCwgODgoJWVzaSkKCXB1c2hsCSVlYngKCWNhbGwJX19wdGhyZWFkX3VubG9j
awoJbW92bAlfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0LCAlZWF4CglhZGRsCSQxNiwgJWVzcAoJ
dGVzdGwJJWVheCwgJWVheAoJanMJLkw1MzYKCXN1YmwJJDEyLCAlZXNwCgltb3ZsCTg4KCVlc2kp
LCAlZWF4CglwdXNobAklZWF4CgljYWxsCV9fcHRocmVhZF9tYW5hZ2VyX2FkanVzdF9wcmlvCglh
ZGRsCSQxNiwgJWVzcAouTDUzNjoKCXhvcmwJJWVheCwgJWVheAouTDUyNzoKCWFkZGwJJDEyLCAl
ZXNwCglwb3BsCSVlYngKCXBvcGwJJWVzaQoJcG9wbAklZWRpCglwb3BsCSVlYnAKCXJldAouTDU0
MDoKCXN1YmwJJDEyLCAlZXNwCglwdXNobAklZWJ4CgljYWxsCV9fcHRocmVhZF91bmxvY2sKCWNh
bGwJX19lcnJub19sb2NhdGlvbgoJbW92bAkoJWVheCksICVlYXgKLkw1Mzc6CglhZGRsCSQxNiwg
JWVzcAoJam1wCS5MNTI3Ci5MNTM5OgoJc3VibAkkMTIsICVlc3AKCXB1c2hsCSVlYngKCWNhbGwJ
X19wdGhyZWFkX3VubG9jawoJbW92bAkkMywgJWVheAoJam1wCS5MNTM3CgkucDJhbGlnbiA0LCw3
Ci5MNTM4OgoJY21wYgkkMCwgMTA4KCVlYXgpCglqZQkuTDUzMgoJam1wCS5MNTMxCi5MZmUxNToK
CS5zaXplCXB0aHJlYWRfc2V0c2NoZWRwYXJhbSwuTGZlMTUtcHRocmVhZF9zZXRzY2hlZHBhcmFt
CgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIHB0aHJlYWRfZ2V0c2NoZWRwYXJhbQoJ
LnR5cGUJcHRocmVhZF9nZXRzY2hlZHBhcmFtLEBmdW5jdGlvbgpwdGhyZWFkX2dldHNjaGVkcGFy
YW06CglwdXNobAklZXNpCglwdXNobAklZWJ4CglwdXNobAklZWF4Cgltb3ZsCTE2KCVlc3ApLCAl
ZXNpCgltb3ZsCSVlc2ksICVlZHgKCWFuZGwJJDEwMjMsICVlZHgKCXNhbGwJJDQsICVlZHgKCWxl
YWwJX19wdGhyZWFkX2hhbmRsZXMoJWVkeCksICVlYngKCXhvcmwJJWVkeCwgJWVkeAoJbW92bAkl
ZWJ4LCAlZWF4CgljYWxsCV9fcHRocmVhZF9sb2NrCgltb3ZsCTgoJWVieCksICVlYXgKCXhvcmwJ
JWVkeCwgJWVkeAoJdGVzdGwJJWVheCwgJWVheAoJamUJLkw1NDUKCWNtcGwJJWVzaSwgODAoJWVh
eCkKCWplCS5MNTUwCi5MNTQ1OgoJbW92bAkkMSwgJWVkeAouTDU0NjoKCXRlc3RsCSVlZHgsICVl
ZHgKCWpuZQkuTDU1MQoJc3VibAkkMTIsICVlc3AKCW1vdmwJOCglZWJ4KSwgJWVheAoJbW92bAk4
NCglZWF4KSwgJWVzaQoJcHVzaGwJJWVieAoJY2FsbAlfX3B0aHJlYWRfdW5sb2NrCgltb3ZsCSVl
c2ksICglZXNwKQoJY2FsbAlfX3NjaGVkX2dldHNjaGVkdWxlcgoJYWRkbAkkMTYsICVlc3AKCW1v
dmwJJWVheCwgJWVieAoJY21wbAkkLTEsICVlYXgKCWplCS5MNTQ5CglwdXNobAklZWF4CglwdXNo
bAklZWF4Cgltb3ZsCTMyKCVlc3ApLCAlZWF4CglwdXNobAklZWF4CglwdXNobAklZXNpCgljYWxs
CV9fc2NoZWRfZ2V0cGFyYW0KCWFkZGwJJDE2LCAlZXNwCglpbmNsCSVlYXgKCWplCS5MNTQ5Cglt
b3ZsCTIwKCVlc3ApLCAlZWF4Cgltb3ZsCSVlYngsICglZWF4KQoJeG9ybAklZWF4LCAlZWF4Ci5M
NTQxOgoJcG9wbAklZWR4Cglwb3BsCSVlYngKCXBvcGwJJWVzaQoJcmV0CgkucDJhbGlnbiA0LCw3
Ci5MNTQ5OgoJY2FsbAlfX2Vycm5vX2xvY2F0aW9uCgltb3ZsCSglZWF4KSwgJWVheAoJam1wCS5M
NTQxCi5MNTUxOgoJc3VibAkkMTIsICVlc3AKCXB1c2hsCSVlYngKCWNhbGwJX19wdGhyZWFkX3Vu
bG9jawoJYWRkbAkkMTYsICVlc3AKCW1vdmwJJDMsICVlYXgKCWptcAkuTDU0MQoJLnAyYWxpZ24g
NCwsNwouTDU1MDoKCWNtcGIJJDAsIDEwOCglZWF4KQoJamUJLkw1NDYKCWptcAkuTDU0NQouTGZl
MTY6Cgkuc2l6ZQlwdGhyZWFkX2dldHNjaGVkcGFyYW0sLkxmZTE2LXB0aHJlYWRfZ2V0c2NoZWRw
YXJhbQoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Ci5nbG9ibCBfX3B0aHJlYWRfeWllbGQKCS50
eXBlCV9fcHRocmVhZF95aWVsZCxAZnVuY3Rpb24KX19wdGhyZWFkX3lpZWxkOgoJam1wCXNjaGVk
X3lpZWxkCi5MZmUxNzoKCS5zaXplCV9fcHRocmVhZF95aWVsZCwuTGZlMTctX19wdGhyZWFkX3lp
ZWxkCgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIF9fcHRocmVhZF9yZXNldF9tYWlu
X3RocmVhZAoJLnR5cGUJX19wdGhyZWFkX3Jlc2V0X21haW5fdGhyZWFkLEBmdW5jdGlvbgpfX3B0
aHJlYWRfcmVzZXRfbWFpbl90aHJlYWQ6CglwdXNobAklZWJwCgltb3ZsCSVlYnAsICVlYXgKCXB1
c2hsCSVlY3gKCXB1c2hsCSVlY3gKCWNtcGwJX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2Jvcywg
JWVicAoJamIJLkw1ODAKCW1vdmwJJF9fcHRocmVhZF9pbml0aWFsX3RocmVhZCwgJWVicAouTDU4
MToKCWNtcGwJJC0xLCBfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0CglqZQkuTDU4NwoJc3VibAkk
MTIsICVlc3AKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2JvcywgJWVheAoJcHVzaGwJ
JWVheAoJY2FsbAlmcmVlCglwb3BsCSVlYXgKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJfcmVxdWVz
dCwgJWVheAoJcHVzaGwJJWVheAoJbW92bAkkMCwgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3Rv
cwoJbW92bAkkMCwgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2JvcwoJY2FsbAlfX2xpYmNfY2xv
c2UKCXBvcGwJJWVheAoJbW92bAlfX3B0aHJlYWRfbWFuYWdlcl9yZWFkZXIsICVlYXgKCXB1c2hs
CSVlYXgKCWNhbGwJX19saWJjX2Nsb3NlCglhZGRsCSQxNiwgJWVzcAoJbW92bAkkLTEsIF9fcHRo
cmVhZF9tYW5hZ2VyX3JlYWRlcgoJbW92bAkkLTEsIF9fcHRocmVhZF9tYW5hZ2VyX3JlcXVlc3QK
Lkw1ODc6CgljYWxsCV9fZ2V0cGlkCgltb3ZsCSVlYnAsIF9fcHRocmVhZF9tYWluX3RocmVhZAoJ
bW92bAkkX2Vycm5vLCAxMzIoJWVicCkKCW1vdmwJJWVheCwgODQoJWVicCkKCW1vdmwJJWVicCwg
NjQoJWVicCkKCW1vdmwJJWVicCwgNjgoJWVicCkKCW1vdmwJJF9oX2Vycm5vLCAxNDAoJWVicCkK
CW1vdmwJJF9yZXMsIDUwNCglZWJwKQoJcHVzaGwJJWVicAoJcHVzaGwJJWVicAoJbGVhbAk4KCVl
c3ApLCAlZWJwCglwdXNobAklZWJwCglwdXNobAkkMwoJY2FsbAlnZXRybGltaXQKCWFkZGwJJDE2
LCAlZXNwCgl0ZXN0bAklZWF4LCAlZWF4CglqbmUJLkw1NzkKCW1vdmwJNCglZXNwKSwgJWVheAoJ
Y21wbAklZWF4LCAoJWVzcCkKCWplCS5MNTc5Cgltb3ZsCSVlYXgsICglZXNwKQoJcHVzaGwJJWVj
eAoJcHVzaGwJJWVjeAoJcHVzaGwJJWVicAoJcHVzaGwJJDMKCWNhbGwJc2V0cmxpbWl0CglhZGRs
CSQxNiwgJWVzcAouTDU3OToKCXBvcGwJJWVheAoJcG9wbAklZWR4Cglwb3BsCSVlYnAKCXJldAoJ
LnAyYWxpZ24gNCwsNwouTDU4MDoKCWNtcGwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2Jvcywg
JWVicAoJamIJLkw1ODMKCWNtcGwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3RvcywgJWVicAoJ
amFlCS5MNTgzCgltb3ZsCSRfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQsICVlYnAKCWptcAkuTDU4
MQoJLnAyYWxpZ24gNCwsNwouTDU4MzoKCW1vdmwJX19wdGhyZWFkX25vbnN0YW5kYXJkX3N0YWNr
cywgJWVjeAoJdGVzdGwJJWVjeCwgJWVjeAoJamUJLkw1ODUKCWNhbGwJX19wdGhyZWFkX2ZpbmRf
c2VsZgoJbW92bAklZWF4LCAlZWJwCglqbXAJLkw1ODEKCS5wMmFsaWduIDQsLDcKLkw1ODU6Cglv
cmwJJDIwOTcxNTEsICVlYXgKCWxlYWwJLTEwMjMoJWVheCksICVlYnAKCWptcAkuTDU4MQouTGZl
MTg6Cgkuc2l6ZQlfX3B0aHJlYWRfcmVzZXRfbWFpbl90aHJlYWQsLkxmZTE4LV9fcHRocmVhZF9y
ZXNldF9tYWluX3RocmVhZAoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Ci5nbG9ibCBfX3B0aHJl
YWRfa2lsbF9vdGhlcl90aHJlYWRzX25wCgkudHlwZQlfX3B0aHJlYWRfa2lsbF9vdGhlcl90aHJl
YWRzX25wLEBmdW5jdGlvbgpfX3B0aHJlYWRfa2lsbF9vdGhlcl90aHJlYWRzX25wOgoJcHVzaGwJ
JWVieAoJc3VibAkkMTYwLCAlZXNwCglwdXNobAkkMAoJcHVzaGwJJDAKCWNhbGwJcHRocmVhZF9v
bmV4aXRfcHJvY2VzcwoJY2FsbAlfX3B0aHJlYWRfcmVzZXRfbWFpbl90aHJlYWQKCXBvcGwJJWVh
eAoJbGVhbAkxNiglZXNwKSwgJWVkeAoJbGVhbAkxMiglZXNwKSwgJWVieAoJcHVzaGwJJWVkeAoJ
Y2FsbAlzaWdlbXB0eXNldAoJbW92bAlfX3B0aHJlYWRfc2lnX3Jlc3RhcnQsICVlYXgKCW1vdmwJ
JDAsIDE0OCglZXNwKQoJbW92bAkkMCwgMTYoJWVzcCkKCWFkZGwJJDEyLCAlZXNwCglwdXNobAkk
MAoJcHVzaGwJJWVieAoJcHVzaGwJJWVheAoJY2FsbAlfX2xpYmNfc2lnYWN0aW9uCgltb3ZsCV9f
cHRocmVhZF9zaWdfY2FuY2VsLCAlZWF4CglhZGRsCSQxMiwgJWVzcAoJcHVzaGwJJDAKCXB1c2hs
CSVlYngKCXB1c2hsCSVlYXgKCWNhbGwJX19saWJjX3NpZ2FjdGlvbgoJYWRkbAkkMTYsICVlc3AK
CW1vdmwJX19wdGhyZWFkX3NpZ19kZWJ1ZywgJWVheAoJdGVzdGwJJWVheCwgJWVheAoJamxlCS5M
NTg5CglwdXNobAklZWR4CglwdXNobAkkMAoJcHVzaGwJJWVieAoJcHVzaGwJJWVheAoJY2FsbAlf
X2xpYmNfc2lnYWN0aW9uCglhZGRsCSQxNiwgJWVzcAouTDU4OToKCWFkZGwJJDE1MiwgJWVzcAoJ
cG9wbAklZWJ4CglyZXQKLkxmZTE5OgoJLnNpemUJX19wdGhyZWFkX2tpbGxfb3RoZXJfdGhyZWFk
c19ucCwuTGZlMTktX19wdGhyZWFkX2tpbGxfb3RoZXJfdGhyZWFkc19ucAoJLmFsaWduIDIKCS5w
MmFsaWduIDQsLDE1Ci5nbG9ibCBfX3B0aHJlYWRfc2V0Y29uY3VycmVuY3kKCS50eXBlCV9fcHRo
cmVhZF9zZXRjb25jdXJyZW5jeSxAZnVuY3Rpb24KX19wdGhyZWFkX3NldGNvbmN1cnJlbmN5OgoJ
bW92bAk0KCVlc3ApLCAlZWF4Cgltb3ZsCSVlYXgsIGN1cnJlbnRfbGV2ZWwKCXhvcmwJJWVheCwg
JWVheAoJcmV0Ci5MZmUyMDoKCS5zaXplCV9fcHRocmVhZF9zZXRjb25jdXJyZW5jeSwuTGZlMjAt
X19wdGhyZWFkX3NldGNvbmN1cnJlbmN5CgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2Js
IF9fcHRocmVhZF9nZXRjb25jdXJyZW5jeQoJLnR5cGUJX19wdGhyZWFkX2dldGNvbmN1cnJlbmN5
LEBmdW5jdGlvbgpfX3B0aHJlYWRfZ2V0Y29uY3VycmVuY3k6Cgltb3ZsCWN1cnJlbnRfbGV2ZWws
ICVlYXgKCXJldAouTGZlMjE6Cgkuc2l6ZQlfX3B0aHJlYWRfZ2V0Y29uY3VycmVuY3ksLkxmZTIx
LV9fcHRocmVhZF9nZXRjb25jdXJyZW5jeQoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Ci5nbG9i
bCBfX3B0aHJlYWRfcmVzdGFydF9uZXcKCS50eXBlCV9fcHRocmVhZF9yZXN0YXJ0X25ldyxAZnVu
Y3Rpb24KX19wdGhyZWFkX3Jlc3RhcnRfbmV3OgoJc3VibAkkMjAsICVlc3AKCW1vdmwJX19wdGhy
ZWFkX3NpZ19yZXN0YXJ0LCAlZWF4CglwdXNobAklZWF4Cgltb3ZsCTI4KCVlc3ApLCAlZWF4Cglt
b3ZsCTg0KCVlYXgpLCAlZWF4CglwdXNobAklZWF4CgljYWxsCWtpbGwKCWFkZGwJJDI4LCAlZXNw
CglyZXQKLkxmZTIyOgoJLnNpemUJX19wdGhyZWFkX3Jlc3RhcnRfbmV3LC5MZmUyMi1fX3B0aHJl
YWRfcmVzdGFydF9uZXcKCS5jb21tCV9fcHRocmVhZF9pbml0aWFsX3RocmVhZF9ib3MsNCw0Cgku
Y29tbQlfX3B0aHJlYWRfbWFuYWdlcl9yZWFkZXIsNCw0CgkuY29tbQlfX3B0aHJlYWRfbWFuYWdl
cl90aHJlYWRfYm9zLDQsNAoJLmNvbW0JX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3Rvcyw0LDQK
CS5jb21tCV9fcHRocmVhZF9leGl0X3JlcXVlc3RlZCw0LDQKCS5jb21tCV9fcHRocmVhZF9leGl0
X2NvZGUsNCw0CgkuY29tbQlfX3B0aHJlYWRfc21wX2tlcm5lbCw0LDQKCS5jb21tCV9fcHRocmVh
ZF9tYXhfc3RhY2tzaXplLDQsNAoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1CgkudHlwZQlwdGhy
ZWFkX29uZXhpdF9wcm9jZXNzLEBmdW5jdGlvbgpwdGhyZWFkX29uZXhpdF9wcm9jZXNzOgoJcHVz
aGwJJWVicAoJcHVzaGwJJWVieAoJc3VibAkkMTY0LCAlZXNwCgltb3ZsCV9fcHRocmVhZF9tYW5h
Z2VyX3JlcXVlc3QsICVlYXgKCXRlc3RsCSVlYXgsICVlYXgKCWpzCS5MNTUzCgltb3ZsCSVlYnAs
ICVlYXgKCWNtcGwJX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2JvcywgJWVicAoJamIJLkw1NTUK
CW1vdmwJJF9fcHRocmVhZF9pbml0aWFsX3RocmVhZCwgJWVieAouTDU1NjoKCW1vdmwJMTc2KCVl
c3ApLCAlZWF4Cgltb3ZsCSVlYngsICglZXNwKQoJbW92bAkkMiwgNCglZXNwKQoJbW92bAklZWF4
LCA4KCVlc3ApCgltb3ZsCSVlc3AsICVlYnAKCS5wMmFsaWduIDQsLDcKLkw1NjI6Cgltb3ZsCV9f
cHRocmVhZF9tYW5hZ2VyX3JlcXVlc3QsICVlYXgKCXB1c2hsCSVlY3gKCXB1c2hsCSQxNDgKCXB1
c2hsCSVlYnAKCXB1c2hsCSVlYXgKCWNhbGwJX19saWJjX3dyaXRlCglhZGRsCSQxNiwgJWVzcAoJ
aW5jbAklZWF4CglqbmUJLkw1NjMKCWNhbGwJX19lcnJub19sb2NhdGlvbgoJY21wbAkkNCwgKCVl
YXgpCglqZQkuTDU2MgouTDU2MzoKCXN1YmwJJDEyLCAlZXNwCglwdXNobAklZWJ4CgljYWxsCV9f
cHRocmVhZF93YWl0X2Zvcl9yZXN0YXJ0X3NpZ25hbAoJYWRkbAkkMTYsICVlc3AKCWNtcGwJX19w
dGhyZWFkX21haW5fdGhyZWFkLCAlZWJ4CglqZQkuTDU5NAouTDU1MzoKCWFkZGwJJDE2NCwgJWVz
cAoJcG9wbAklZWJ4Cglwb3BsCSVlYnAKCXJldAouTDU5NDoKCXB1c2hsCSVlYXgKCW1vdmwJX19w
dGhyZWFkX21hbmFnZXJfdGhyZWFkKzg0LCAlZWF4CglwdXNobAkkLTIxNDc0ODM2NDgKCXB1c2hs
CSQwCglwdXNobAklZWF4CgljYWxsCXdhaXRwaWQKCWFkZGwJJDE2LCAlZXNwCgltb3ZsCSQwLCBf
X3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfdG9zCgltb3ZsCSQwLCBfX3B0aHJlYWRfbWFuYWdlcl90
aHJlYWRfYm9zCglqbXAJLkw1NTMKLkw1NTU6CgljbXBsCV9fcHRocmVhZF9tYW5hZ2VyX3RocmVh
ZF9ib3MsICVlYnAKCWpiCS5MNTU4CgljbXBsCV9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZF90b3Ms
ICVlYnAKCWphZQkuTDU1OAoJbW92bAkkX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkLCAlZWJ4Cglq
bXAJLkw1NTYKLkw1NTg6Cgltb3ZsCV9fcHRocmVhZF9ub25zdGFuZGFyZF9zdGFja3MsICVlZHgK
CXRlc3RsCSVlZHgsICVlZHgKCWplCS5MNTYwCgljYWxsCV9fcHRocmVhZF9maW5kX3NlbGYKCW1v
dmwJJWVheCwgJWVieAoJam1wCS5MNTU2Ci5MNTYwOgoJb3JsCSQyMDk3MTUxLCAlZWF4CglsZWFs
CS0xMDIzKCVlYXgpLCAlZWJ4CglqbXAJLkw1NTYKLkxmZTIzOgoJLnNpemUJcHRocmVhZF9vbmV4
aXRfcHJvY2VzcywuTGZlMjMtcHRocmVhZF9vbmV4aXRfcHJvY2VzcwoJLmxvY2FsCWN1cnJlbnRf
cnRtaW4KCS5jb21tCWN1cnJlbnRfcnRtaW4sNCw0CgkubG9jYWwJY3VycmVudF9ydG1heAoJLmNv
bW0JY3VycmVudF9ydG1heCw0LDQKCS5sb2NhbAlydHNpZ3NfaW5pdGlhbGl6ZWQKCS5jb21tCXJ0
c2lnc19pbml0aWFsaXplZCw0LDQKCS5zZWN0aW9uCS5yb2RhdGEuc3RyMS4xLCJhTVMiLEBwcm9n
Yml0cywxCi5MQzE6Cgkuc3RyaW5nCSJTTVAiCi5MQzA6Cgkuc3RyaW5nCSIvcHJvYy9zeXMva2Vy
bmVsL3ZlcnNpb24iCgkudGV4dAoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1CgkudHlwZQlwdGhy
ZWFkX2luaXRpYWxpemUsQGZ1bmN0aW9uCnB0aHJlYWRfaW5pdGlhbGl6ZToKCXB1c2hsCSVlYnAK
CXB1c2hsCSVlZGkKCXB1c2hsCSVlc2kKCXB1c2hsCSVlYngKCXN1YmwJJDgxMiwgJWVzcAoJbW92
bAlfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWRfYm9zLCAlZWF4Cgl0ZXN0bAklZWF4LCAlZWF4Cglq
ZQkuTDU5NQouTDE6CglhZGRsCSQ4MTIsICVlc3AKCXBvcGwJJWVieAoJcG9wbAklZXNpCglwb3Bs
CSVlZGkKCXBvcGwJJWVicAoJcmV0CgkucDJhbGlnbiA0LCw3Ci5MNTk1OgojQVBQCglwdXNoZmw7
IHBvcGwgJWVieAojTk9fQVBQCgltb3ZsCSVlYngsICVlc2kKCXhvcmwJJDI2MjE0NCwgJWVzaQoj
QVBQCglwdXNobCAlZXNpOyBwb3BmbAoJcHVzaGZsOyBwb3BsICVlY3gKI05PX0FQUAoJeG9ybAkl
ZWJ4LCAlZWN4CglhbmRsCSQyNjIxNDQsICVlY3gKI0FQUAoJcHVzaGwgJWVieDsgcG9wZmwKI05P
X0FQUAoJdGVzdGwJJWVjeCwgJWVjeAoJcHVzaGwJJWVheAoJbW92bAkkMjA5NzE1MiwgJWVieAoJ
cHVzaGwJJWVheAoJbGVhbAkxNiglZXNwKSwgJWVzaQoJc2V0bmUJJWRsCglwdXNobAklZXNpCglh
bmRsCSQyNTUsICVlZHgKCXB1c2hsCSQzCgltb3ZsCSVlZHgsIF9fcHRocmVhZF9oYXNfY2FzCglj
YWxsCWdldHJsaW1pdAoJYWRkbAkkMTYsICVlc3AKCWNhbGwJX19nZXRwYWdlc2l6ZQoJc3VibAkl
ZWF4LCAlZWJ4CgljbXBsCSVlYngsIDgoJWVzcCkKCWphCS5MNTk2Ci5MODoKCWxlYWwJLTQxOTQz
MDQoJWVicCksICVlZGkKCW1vdmwJJWVieCwgX19wdGhyZWFkX21heF9zdGFja3NpemUKCWFuZGwJ
JC0yMDk3MTUyLCAlZWRpCgltb3ZsCSVlZGksIF9fcHRocmVhZF9pbml0aWFsX3RocmVhZF9ib3MK
CWNhbGwJX19nZXRwaWQKCW1vdmwJJHB0aHJlYWRfaGFuZGxlX3NpZ3Jlc3RhcnQsIDY1NiglZXNw
KQoJc3VibAkkMTIsICVlc3AKCW1vdmwJJWVheCwgX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkKzg0
Cgltb3ZsCSRfcmVzLCBfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQrNTA0CglsZWFsCTY3MiglZXNw
KSwgJWVzaQoJbGVhbAk2NjgoJWVzcCksICVlYngKCXB1c2hsCSVlc2kKCW1vdmwJJDM1LCBjdXJy
ZW50X3J0bWluCgltb3ZsCSQ2MywgY3VycmVudF9ydG1heAoJbW92bAkkMSwgcnRzaWdzX2luaXRp
YWxpemVkCgljYWxsCXNpZ2VtcHR5c2V0Cgltb3ZsCV9fcHRocmVhZF9zaWdfcmVzdGFydCwgJWVh
eAoJbW92bAkkMCwgODA0KCVlc3ApCglhZGRsCSQxMiwgJWVzcAoJcHVzaGwJJDAKCXB1c2hsCSVl
YngKCXB1c2hsCSVlYXgKCWNhbGwJX19saWJjX3NpZ2FjdGlvbgoJbW92bAlfX3B0aHJlYWRfc2ln
X2NhbmNlbCwgJWVheAoJbW92bAkkcHRocmVhZF9oYW5kbGVfc2lnY2FuY2VsLCA2NzIoJWVzcCkK
CWFkZGwJJDEyLCAlZXNwCglwdXNobAkkMAoJcHVzaGwJJWVieAoJcHVzaGwJJWVheAoJY2FsbAlf
X2xpYmNfc2lnYWN0aW9uCgltb3ZsCV9fcHRocmVhZF9zaWdfZGVidWcsICVlYXgKCWFkZGwJJDE2
LCAlZXNwCgl0ZXN0bAklZWF4LCAlZWF4CglqbGUJLkwxMQoJbW92bAkkcHRocmVhZF9oYW5kbGVf
c2lnZGVidWcsIDY1NiglZXNwKQoJc3VibAkkMTIsICVlc3AKCXB1c2hsCSVlc2kKCWNhbGwJc2ln
ZW1wdHlzZXQKCW1vdmwJX19wdGhyZWFkX3NpZ19kZWJ1ZywgJWVheAoJYWRkbAkkMTIsICVlc3AK
CXB1c2hsCSQwCglwdXNobAklZWJ4CglwdXNobAklZWF4CgljYWxsCV9fbGliY19zaWdhY3Rpb24K
CWFkZGwJJDE2LCAlZXNwCi5MMTE6CglzdWJsCSQxMiwgJWVzcAoJbGVhbAk1NDAoJWVzcCksICVl
YngKCXB1c2hsCSVlYngKCWNhbGwJc2lnZW1wdHlzZXQKCW1vdmwJX19wdGhyZWFkX3NpZ19yZXN0
YXJ0LCAlZWF4Cglwb3BsCSVlZGkKCXBvcGwJJWVicAoJcHVzaGwJJWVheAoJcHVzaGwJJWVieAoJ
Y2FsbAlzaWdhZGRzZXQKCWFkZGwJJDEyLCAlZXNwCglwdXNobAkkMAoJcHVzaGwJJWVieAoJcHVz
aGwJJDAKCWNhbGwJc2lncHJvY21hc2sKCXBvcGwJJWVjeAoJcG9wbAklZWJ4CglwdXNobAkkMAoJ
cHVzaGwJJHB0aHJlYWRfb25leGl0X3Byb2Nlc3MKCWNhbGwJX19vbl9leGl0Cglwb3BsCSVlYXgK
CXBvcGwJJWVkeAoJbW92bAkkNTEyLCAxMiglZXNwKQoJcHVzaGwJJDAKCXB1c2hsCSQwCglsZWFs
CTIwKCVlc3ApLCAlZWJwCglwdXNobAklZWJwCglsZWFsCTM2KCVlc3ApLCAlZXNpCglwdXNobAkl
ZXNpCglwdXNobAkkMgoJcHVzaGwJJHN5c2N0bF9hcmdzLjAKCWNhbGwJX19zeXNjdGwKCWFkZGwJ
JDMyLCAlZXNwCgl0ZXN0bAklZWF4LCAlZWF4CglqcwkuTDU5NwouTDE3OgoJbW92bAkkLkxDMSwg
JWVkeAojQVBQCgljbGQKMToKCW1vdmwJJWVkeCwlZWRpCgltb3ZsCSVlc2ksJWVheAoJbW92bAkk
MywlZWN4CglyZXBlOyBjbXBzYgoJamUJMmYKCWNtcGIJJDAsLTEoJWVzaSkKCWxlYWwJMSglZWF4
KSwlZXNpCglqbmUJMWIKCXhvcmwJJWVheCwlZWF4CjI6CiNOT19BUFAKCXRlc3RsCSVlYXgsICVl
YXgKCXNldG5lCSVkbAoJYW5kbAkkMjU1LCAlZWR4Cgltb3ZsCSVlZHgsIF9fcHRocmVhZF9zbXBf
a2VybmVsCglqbXAJLkwxCi5MNTk3OgoJcHVzaGwJJWVheAoJcHVzaGwJJWVheAoJcHVzaGwJJDAK
CXB1c2hsCSQuTEMwCgljYWxsCV9fb3BlbgoJYWRkbAkkMTYsICVlc3AKCW1vdmwJJWVheCwgJWVi
eAoJY21wbAkkLTEsICVlYXgKCWplCS5MMTQKCXB1c2hsCSVlYXgKCXB1c2hsCSQ1MTIKCXB1c2hs
CSVlc2kKCXB1c2hsCSVlYngKCWNhbGwJX19yZWFkCglhZGRsCSQxNiwgJWVzcAoJdGVzdGwJJWVh
eCwgJWVheAoJbW92bAklZWF4LCA0KCVlc3ApCglqbmUJLkwxMwouTDE0OgoJbW92YgkkMCwgMTYo
JWVzcCkKLkwxMzoKCXN1YmwJJDEyLCAlZXNwCglwdXNobAklZWJ4CgljYWxsCV9fY2xvc2UKCWFk
ZGwJJDE2LCAlZXNwCglqbXAJLkwxNwouTDU5NjoKCW1vdmwJJWVieCwgOCglZXNwKQoJcHVzaGwJ
JWVheAoJcHVzaGwJJWVheAoJcHVzaGwJJWVzaQoJcHVzaGwJJDMKCWNhbGwJc2V0cmxpbWl0Cglh
ZGRsCSQxNiwgJWVzcAoJam1wCS5MOAouTGZlMjQ6Cgkuc2l6ZQlwdGhyZWFkX2luaXRpYWxpemUs
LkxmZTI0LXB0aHJlYWRfaW5pdGlhbGl6ZQoJLmxvY2FsCWN1cnJlbnRfbGV2ZWwKCS5jb21tCWN1
cnJlbnRfbGV2ZWwsNCw0CgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKCS50eXBlCXB0aHJlYWRf
aGFuZGxlX3NpZ3Jlc3RhcnQsQGZ1bmN0aW9uCnB0aHJlYWRfaGFuZGxlX3NpZ3Jlc3RhcnQ6Cglw
dXNobAklZWJwCgltb3ZsCSVlYnAsICVlYXgKCXB1c2hsCSVlY3gKCXB1c2hsCSVlY3gKCWNtcGwJ
X19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2JvcywgJWVicAoJamIJLkw1NzAKCW1vdmwJJF9fcHRo
cmVhZF9pbml0aWFsX3RocmVhZCwgJWVkeAouTDU3MToKCW1vdmwJMTYoJWVzcCksICVlYXgKCW1v
dmwJJWVheCwgOTYoJWVkeCkKCW1vdmwJMTAwKCVlZHgpLCAlZWF4Cgl0ZXN0bAklZWF4LCAlZWF4
CglqbmUJLkw1OTgKCXBvcGwJJWVjeAoJcG9wbAklZWJwCglwb3BsCSVlYnAKCXJldAoJLnAyYWxp
Z24gNCwsNwouTDU3MDoKCWNtcGwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2JvcywgJWVicAoJ
amIJLkw1NzMKCWNtcGwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3RvcywgJWVicAoJamFlCS5M
NTczCgltb3ZsCSRfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQsICVlZHgKCWptcAkuTDU3MQoJLnAy
YWxpZ24gNCwsNwouTDU3MzoKCW1vdmwJX19wdGhyZWFkX25vbnN0YW5kYXJkX3N0YWNrcywgJWVj
eAoJdGVzdGwJJWVjeCwgJWVjeAoJamUJLkw1NzUKCWNhbGwJX19wdGhyZWFkX2ZpbmRfc2VsZgoJ
bW92bAklZWF4LCAlZWR4CglqbXAJLkw1NzEKCS5wMmFsaWduIDQsLDcKLkw1NzU6CglvcmwJJDIw
OTcxNTEsICVlYXgKCWxlYWwJLTEwMjMoJWVheCksICVlZHgKCWptcAkuTDU3MQouTDU5ODoKCXB1
c2hsCSVlYXgKCXB1c2hsCSVlYXgKCXB1c2hsCSQxCgltb3ZsCTEwMCglZWR4KSwgJWVheAoJcHVz
aGwJJWVheAoJY2FsbAlzaWdsb25nam1wCi5MZmUyNToKCS5zaXplCXB0aHJlYWRfaGFuZGxlX3Np
Z3Jlc3RhcnQsLkxmZTI1LXB0aHJlYWRfaGFuZGxlX3NpZ3Jlc3RhcnQKCS5hbGlnbiAyCgkucDJh
bGlnbiA0LCwxNQoJLnR5cGUJcHRocmVhZF9oYW5kbGVfc2lnZGVidWcsQGZ1bmN0aW9uCnB0aHJl
YWRfaGFuZGxlX3NpZ2RlYnVnOgoJcmV0Ci5MZmUyNjoKCS5zaXplCXB0aHJlYWRfaGFuZGxlX3Np
Z2RlYnVnLC5MZmUyNi1wdGhyZWFkX2hhbmRsZV9zaWdkZWJ1ZwoJLmlkZW50CSJHQ0M6IChHTlUp
IDMuMiIK
--Multipart_Sat__26_Oct_2002_13:31:11_+0000_081cfda0--
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: other/8335: problems with __builtin_frame_address when -fomit-frame-pointer used
@ 2002-10-25 20:16 Davin McCall
0 siblings, 0 replies; 5+ messages in thread
From: Davin McCall @ 2002-10-25 20:16 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR other/8335; it has been noted by GNATS.
From: Davin McCall <davmac@ozonline.com.au>
To: rth@gcc.gnu.org, davmac@ozonline.com.au, gcc-bugs@gcc.gnu.org,
gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org
Cc:
Subject: Re: other/8335: problems with __builtin_frame_address when -fomit-frame-pointer used
Date: Sat, 26 Oct 2002 13:24:27 +0000
This is a multi-part message in MIME format.
--Multipart_Sat__26_Oct_2002_13:24:27_+0000_081c8688
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Hi,
> Describe "doesn't work correctly".
By "doesn't work correctly" I mean:
__builtin_frame_address seems to expect that the frame address is stored in the %ebp register. However, if -fomit-frame-pointer is used, this is clearly not true.
In the attached files, see function "pthread_initialize". In particular in the generated assembly at ".L8:", which corresponds to the line referencing CURRENT_STACK_FRAME in the C source. CURRENT_STACK_FRAME is defined as "__builtin_frame_address(0)". In the assembly, I see "leal constant(%ebp),%edi" which is clearly wrong because it is using %ebp.
Incidentally, in other source compiled with -fomit-frame-pointer I remember seeing that %ebp was being used more-or-less as a general purpose register - so using it as the frame address could be wildly inaccurate.
> The result should be the address of the stack frame, with or
> without a frame pointer. The frame is at a known offset from
> the stack pointer, after all.
Well in that case I guess that this really is a bug.
best regards,
Davin
--Multipart_Sat__26_Oct_2002_13:24:27_+0000_081c8688
Content-Type: application/octet-stream;
name="pthread.c"
Content-Disposition: attachment;
filename="pthread.c"
Content-Transfer-Encoding: base64
Ci8qIExpbnV4dGhyZWFkcyAtIGEgc2ltcGxlIGNsb25lKCktYmFzZWQgaW1wbGVtZW50YXRpb24g
b2YgUG9zaXggICAgICAgICovCi8qIHRocmVhZHMgZm9yIExpbnV4LiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIENvcHlyaWdodCAoQykgMTk5
NiBYYXZpZXIgTGVyb3kgKFhhdmllci5MZXJveUBpbnJpYS5mcikgICAgICAgICAgICAgICovCi8q
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCi8qIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgICAgICovCi8qIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgICovCi8qIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv
biAyICAgICAgICovCi8qIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLiAgICAgICAgICAgICAgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIFRoaXMg
cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LCAgICAgICovCi8qIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICovCi8qIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgICAgICAgICovCi8qIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAg
ICAgICovCgovKiBUaHJlYWQgY3JlYXRpb24sIGluaXRpYWxpemF0aW9uLCBhbmQgYmFzaWMgbG93
LWxldmVsIHJvdXRpbmVzICovCgojaW5jbHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPHN0ZGRlZi5o
PgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5n
Lmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxzeXMv
d2FpdC5oPgojaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CiNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+
CiNpbmNsdWRlIDxzaGxpYi1jb21wYXQuaD4KI2luY2x1ZGUgInB0aHJlYWQuaCIKI2luY2x1ZGUg
ImludGVybmFscy5oIgojaW5jbHVkZSAic3BpbmxvY2suaCIKI2luY2x1ZGUgInJlc3RhcnQuaCIK
Ci8qIFdlIG5lZWQgdGhlIGdsb2JhbC9zdGF0aWMgcmVzb2x2ZXIgc3RhdGUgaGVyZS4gICovCiNp
bmNsdWRlIDxyZXNvbHYuaD4KI3VuZGVmIF9yZXMKCmV4dGVybiBzdHJ1Y3QgX19yZXNfc3RhdGUg
X3JlczsKCi8qIFNhbml0eSBjaGVjay4gICovCiNpZiBfX0FTU1VNRV9SRUFMVElNRV9TSUdOQUxT
ICYmICFkZWZpbmVkIF9fU0lHUlRNSU4KIyBlcnJvciAiVGhpcyBtdXN0IG5vdCBoYXBwZW47IG5l
dyBrZXJuZWwgYXNzdW1lZCBidXQgb2xkIGhlYWRlcnMiCiNlbmRpZgoKLyogVGhlc2UgdmFyaWFi
bGVzIGFyZSB1c2VkIGJ5IHRoZSBzZXR1cCBjb2RlLiAgKi8KZXh0ZXJuIGludCBfZXJybm87CmV4
dGVybiBpbnQgX2hfZXJybm87CgovKiBEZXNjcmlwdG9yIG9mIHRoZSBpbml0aWFsIHRocmVhZCAq
LwoKc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCBfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQg
PSB7CiAgewogICAgewogICAgICAmX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkIC8qIHB0aHJlYWRf
ZGVzY3Igc2VsZiAqLwogICAgfQogIH0sCiAgJl9fcHRocmVhZF9pbml0aWFsX3RocmVhZCwgIC8q
IHB0aHJlYWRfZGVzY3IgcF9uZXh0bGl2ZSAqLwogICZfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQs
ICAvKiBwdGhyZWFkX2Rlc2NyIHBfcHJldmxpdmUgKi8KICBOVUxMLCAgICAgICAgICAgICAgICAg
ICAgICAgLyogcHRocmVhZF9kZXNjciBwX25leHR3YWl0aW5nICovCiAgTlVMTCwJCQkgICAgICAv
KiBwdGhyZWFkX2Rlc2NyIHBfbmV4dGxvY2sgKi8KICBQVEhSRUFEX1RIUkVBRFNfTUFYLCAgICAg
ICAgLyogcHRocmVhZF90IHBfdGlkICovCiAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IGludCBwX3BpZCAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnQgcF9wcmlv
cml0eSAqLwogICZfX3B0aHJlYWRfaGFuZGxlc1swXS5oX2xvY2ssIC8qIHN0cnVjdCBfcHRocmVh
ZF9mYXN0bG9jayAqIHBfbG9jayAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBp
bnQgcF9zaWduYWwgKi8KICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogc2lnam1wX2J1
ZiAqIHBfc2lnbmFsX2J1ZiAqLwogIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBzaWdq
bXBfYnVmICogcF9jYW5jZWxfYnVmICovCiAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IGNoYXIgcF90ZXJtaW5hdGVkICovCiAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNo
YXIgcF9kZXRhY2hlZCAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGFyIHBf
ZXhpdGVkICovCiAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHZvaWQgKiBwX3JldHZh
bCAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnQgcF9yZXR2YWwgKi8KICBO
VUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogcHRocmVhZF9kZXNjciBwX2pvaW5pbmcgKi8K
ICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IF9wdGhyZWFkX2NsZWFudXBf
YnVmZmVyICogcF9jbGVhbnVwICovCiAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNo
YXIgcF9jYW5jZWxzdGF0ZSAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGFy
IHBfY2FuY2VsdHlwZSAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGFyIHBf
Y2FuY2VsZWQgKi8KICAmX2Vycm5vLCAgICAgICAgICAgICAgICAgICAgLyogaW50ICpwX2Vycm5v
cCAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnQgcF9lcnJubyAqLwogICZf
aF9lcnJubywgICAgICAgICAgICAgICAgICAvKiBpbnQgKnBfaF9lcnJub3AgKi8KICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogaW50IHBfaF9lcnJubyAqLwogIE5VTEwsICAgICAgICAg
ICAgICAgICAgICAgICAvKiBjaGFyICogcF9pbl9zaWdoYW5kbGVyICovCiAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIGNoYXIgcF9zaWd3YWl0aW5nICovCiAgUFRIUkVBRF9TVEFSVF9B
UkdTX0lOSVRJQUxJWkVSKE5VTEwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBz
dHJ1Y3QgcHRocmVhZF9zdGFydF9hcmdzIHBfc3RhcnRfYXJncyAqLwogIHtOVUxMfSwgICAgICAg
ICAgICAgICAgICAgICAvKiB2b2lkICoqIHBfc3BlY2lmaWNbUFRIUkVBRF9LRVlfMVNUTEVWRUxf
U0laRV0gKi8KICB7TlVMTH0sICAgICAgICAgICAgICAgICAgICAgLyogdm9pZCAqIHBfbGliY19z
cGVjaWZpY1tfTElCQ19UU0RfS0VZX05dICovCiAgMSwgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIGludCBwX3VzZXJzdGFjayAqLwogIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiB2
b2lkICogcF9ndWFyZGFkZHIgKi8KICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2l6
ZV90IHBfZ3VhcmRzaXplICovCiAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFsd2F5
cyBpbmRleCAwICovCiAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGludCBwX3JlcG9y
dF9ldmVudHMgKi8KICB7e3swLCB9fSwgMCwgTlVMTH0sICAgICAgICAgLyogdGRfZXZlbnRidWZf
dCBwX2V2ZW50YnVmICovCiAgX19BVE9NSUNfSU5JVElBTElaRVIsICAgICAgIC8qIHN0cnVjdCBw
dGhyZWFkX2F0b21pYyBwX3Jlc3VtZV9jb3VudCAqLwogIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBjaGFyIHBfd29rZW5fYnlfY2FuY2VsICovCiAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIGNoYXIgcF9jb25kdmFyX2F2YWlsICovCiAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIGNoYXIgcF9zZW1fYXZhaWwgKi8KICBOVUxMLCAgICAgICAgICAgICAgICAgICAg
ICAgLyogc3RydWN0IHB0aHJlYWRfZXh0cmljYXRlX2lmICpwX2V4dHJpY2F0ZSAqLwogIE5VTEws
CSAgICAgICAgICAgICAgICAgICAgICAvKiBwdGhyZWFkX3JlYWRsb2NrX2luZm8gKnBfcmVhZGxv
Y2tfbGlzdDsgKi8KICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogcHRocmVhZF9yZWFk
bG9ja19pbmZvICpwX3JlYWRsb2NrX2ZyZWU7ICovCiAgMCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIGludCBwX3VudHJhY2tlZF9yZWFkbG9ja19jb3VudDsgKi8KfTsKCi8qIERlc2NyaXB0
b3Igb2YgdGhlIG1hbmFnZXIgdGhyZWFkOyBub25lIG9mIHRoaXMgaXMgdXNlZCBidXQgdGhlIGVy
cm9yCiAgIHZhcmlhYmxlcywgdGhlIHBfcGlkIGFuZCBwX3ByaW9yaXR5IGZpZWxkcywKICAgYW5k
IHRoZSBhZGRyZXNzIGZvciBpZGVudGlmaWNhdGlvbi4gICovCgpzdHJ1Y3QgX3B0aHJlYWRfZGVz
Y3Jfc3RydWN0IF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCA9IHsKICB7CiAgICB7CiAgICAgICZf
X3B0aHJlYWRfbWFuYWdlcl90aHJlYWQgLyogcHRocmVhZF9kZXNjciBzZWxmICovCiAgICB9CiAg
fSwKICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogcHRocmVhZF9kZXNjciBwX25leHRs
aXZlICovCiAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHB0aHJlYWRfZGVzY3IgcF9w
cmV2bGl2ZSAqLwogIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBwdGhyZWFkX2Rlc2Ny
IHBfbmV4dHdhaXRpbmcgKi8KICBOVUxMLAkJCSAgICAgIC8qIHB0aHJlYWRfZGVzY3IgcF9uZXh0
bG9jayAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnQgcF90aWQgKi8KICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW50IHBfcGlkICovCiAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIGludCBwX3ByaW9yaXR5ICovCiAgJl9fcHRocmVhZF9oYW5kbGVz
WzFdLmhfbG9jaywgLyogc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrICogcF9sb2NrICovCiAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGludCBwX3NpZ25hbCAqLwogIE5VTEwsICAgICAg
ICAgICAgICAgICAgICAgICAvKiBzaWdqbXBfYnVmICogcF9zaWduYWxfYnVmICovCiAgTlVMTCwg
ICAgICAgICAgICAgICAgICAgICAgIC8qIHNpZ2ptcF9idWYgKiBwX2NhbmNlbF9idWYgKi8KICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hhciBwX3Rlcm1pbmF0ZWQgKi8KICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hhciBwX2RldGFjaGVkICovCiAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIGNoYXIgcF9leGl0ZWQgKi8KICBOVUxMLCAgICAgICAgICAg
ICAgICAgICAgICAgLyogdm9pZCAqIHBfcmV0dmFsICovCiAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIGludCBwX3JldHZhbCAqLwogIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAv
KiBwdGhyZWFkX2Rlc2NyIHBfam9pbmluZyAqLwogIE5VTEwsICAgICAgICAgICAgICAgICAgICAg
ICAvKiBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKiBwX2NsZWFudXAgKi8KICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hhciBwX2NhbmNlbHN0YXRlICovCiAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIGNoYXIgcF9jYW5jZWx0eXBlICovCiAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIGNoYXIgcF9jYW5jZWxlZCAqLwogICZfX3B0aHJlYWRfbWFu
YWdlcl90aHJlYWQucF9lcnJubywgLyogaW50ICpwX2Vycm5vcCAqLwogIDAsICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBpbnQgcF9lcnJubyAqLwogIE5VTEwsICAgICAgICAgICAgICAgICAg
ICAgICAvKiBpbnQgKnBfaF9lcnJub3AgKi8KICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogaW50IHBfaF9lcnJubyAqLwogIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGFy
ICogcF9pbl9zaWdoYW5kbGVyICovCiAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNo
YXIgcF9zaWd3YWl0aW5nICovCiAgUFRIUkVBRF9TVEFSVF9BUkdTX0lOSVRJQUxJWkVSKF9fcHRo
cmVhZF9tYW5hZ2VyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IHB0
aHJlYWRfc3RhcnRfYXJncyBwX3N0YXJ0X2FyZ3MgKi8KICB7TlVMTH0sICAgICAgICAgICAgICAg
ICAgICAgLyogdm9pZCAqKiBwX3NwZWNpZmljW1BUSFJFQURfS0VZXzFTVExFVkVMX1NJWkVdICov
CiAge05VTEx9LCAgICAgICAgICAgICAgICAgICAgIC8qIHZvaWQgKiBwX2xpYmNfc3BlY2lmaWNb
X0xJQkNfVFNEX0tFWV9OXSAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnQg
cF91c2Vyc3RhY2sgKi8KICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogdm9pZCAqIHBf
Z3VhcmRhZGRyICovCiAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNpemVfdCBwX2d1
YXJkc2l6ZSAqLwogIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBbHdheXMgaW5kZXgg
MSAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnQgcF9yZXBvcnRfZXZlbnRz
ICovCiAge3t7MCwgfX0sIDAsIE5VTEx9LCAgICAgICAgIC8qIHRkX2V2ZW50YnVmX3QgcF9ldmVu
dGJ1ZiAqLwogIF9fQVRPTUlDX0lOSVRJQUxJWkVSLCAgICAgICAvKiBzdHJ1Y3QgcHRocmVhZF9h
dG9taWMgcF9yZXN1bWVfY291bnQgKi8KICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Y2hhciBwX3dva2VuX2J5X2NhbmNlbCAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBjaGFyIHBfY29uZHZhcl9hdmFpbCAqLwogIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBjaGFyIHBfc2VtX2F2YWlsICovCiAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0
cnVjdCBwdGhyZWFkX2V4dHJpY2F0ZV9pZiAqcF9leHRyaWNhdGUgKi8KICBOVUxMLAkgICAgICAg
ICAgICAgICAgICAgICAgLyogcHRocmVhZF9yZWFkbG9ja19pbmZvICpwX3JlYWRsb2NrX2xpc3Q7
ICovCiAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHB0aHJlYWRfcmVhZGxvY2tfaW5m
byAqcF9yZWFkbG9ja19mcmVlOyAqLwogIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBp
bnQgcF91bnRyYWNrZWRfcmVhZGxvY2tfY291bnQ7ICovCn07CgovKiBQb2ludGVyIHRvIHRoZSBt
YWluIHRocmVhZCAodGhlIGZhdGhlciBvZiB0aGUgdGhyZWFkIG1hbmFnZXIgdGhyZWFkKSAqLwov
KiBPcmlnaW5hbGx5LCB0aGlzIGlzIHRoZSBpbml0aWFsIHRocmVhZCwgYnV0IHRoaXMgY2hhbmdl
cyBhZnRlciBmb3JrKCkgKi8KCnB0aHJlYWRfZGVzY3IgX19wdGhyZWFkX21haW5fdGhyZWFkID0g
Jl9fcHRocmVhZF9pbml0aWFsX3RocmVhZDsKCi8qIExpbWl0IGJldHdlZW4gdGhlIHN0YWNrIG9m
IHRoZSBpbml0aWFsIHRocmVhZCAoYWJvdmUpIGFuZCB0aGUKICAgc3RhY2tzIG9mIG90aGVyIHRo
cmVhZHMgKGJlbG93KS4gQWxpZ25lZCBvbiBhIFNUQUNLX1NJWkUgYm91bmRhcnkuICovCgpjaGFy
ICpfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWRfYm9zOwoKLyogRmlsZSBkZXNjcmlwdG9yIGZvciBz
ZW5kaW5nIHJlcXVlc3RzIHRvIHRoZSB0aHJlYWQgbWFuYWdlci4gKi8KLyogSW5pdGlhbGx5IC0x
LCBtZWFuaW5nIHRoYXQgdGhlIHRocmVhZCBtYW5hZ2VyIGlzIG5vdCBydW5uaW5nLiAqLwoKaW50
IF9fcHRocmVhZF9tYW5hZ2VyX3JlcXVlc3QgPSAtMTsKCi8qIE90aGVyIGVuZCBvZiB0aGUgcGlw
ZSBmb3Igc2VuZGluZyByZXF1ZXN0cyB0byB0aGUgdGhyZWFkIG1hbmFnZXIuICovCgppbnQgX19w
dGhyZWFkX21hbmFnZXJfcmVhZGVyOwoKLyogTGltaXRzIG9mIHRoZSB0aHJlYWQgbWFuYWdlciBz
dGFjayAqLwoKY2hhciAqX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2JvczsKY2hhciAqX19wdGhy
ZWFkX21hbmFnZXJfdGhyZWFkX3RvczsKCi8qIEZvciBwcm9jZXNzLXdpZGUgZXhpdCgpICovCgpp
bnQgX19wdGhyZWFkX2V4aXRfcmVxdWVzdGVkOwppbnQgX19wdGhyZWFkX2V4aXRfY29kZTsKCi8q
IE1heGltdW0gc3RhY2sgc2l6ZS4gICovCnNpemVfdCBfX3B0aHJlYWRfbWF4X3N0YWNrc2l6ZTsK
Ci8qIE5vemVybyBpZiB0aGUgbWFjaGluZSBoYXMgbW9yZSB0aGFuIG9uZSBwcm9jZXNzb3IuICAq
LwppbnQgX19wdGhyZWFkX3NtcF9rZXJuZWw7CgoKI2lmICFfX0FTU1VNRV9SRUFMVElNRV9TSUdO
QUxTCi8qIFBvaW50ZXJzIHRoYXQgc2VsZWN0IG5ldyBvciBvbGQgc3VzcGVuZC9yZXN1bWUgZnVu
Y3Rpb25zCiAgIGJhc2VkIG9uIGF2YWlsYWJpbGl0eSBvZiBydCBzaWduYWxzLiAqLwoKdm9pZCAo
Kl9fcHRocmVhZF9yZXN0YXJ0KShwdGhyZWFkX2Rlc2NyKSA9IF9fcHRocmVhZF9yZXN0YXJ0X29s
ZDsKdm9pZCAoKl9fcHRocmVhZF9zdXNwZW5kKShwdGhyZWFkX2Rlc2NyKSA9IF9fcHRocmVhZF9z
dXNwZW5kX29sZDsKaW50ICgqX19wdGhyZWFkX3RpbWVkc3VzcGVuZCkocHRocmVhZF9kZXNjciwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICopID0gX19wdGhyZWFkX3RpbWVkc3VzcGVuZF9vbGQ7CiNl
bmRpZgkvKiBfX0FTU1VNRV9SRUFMVElNRV9TSUdOQUxTICovCgovKiBDb21tdW5pY2F0ZSByZWxl
dmFudCBMaW51eFRocmVhZHMgY29uc3RhbnRzIHRvIGdkYiAqLwoKY29uc3QgaW50IF9fcHRocmVh
ZF90aHJlYWRzX21heCA9IFBUSFJFQURfVEhSRUFEU19NQVg7CmNvbnN0IGludCBfX3B0aHJlYWRf
c2l6ZW9mX2hhbmRsZSA9IHNpemVvZihzdHJ1Y3QgcHRocmVhZF9oYW5kbGVfc3RydWN0KTsKY29u
c3QgaW50IF9fcHRocmVhZF9vZmZzZXRvZl9kZXNjciA9IG9mZnNldG9mKHN0cnVjdCBwdGhyZWFk
X2hhbmRsZV9zdHJ1Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoX2Rlc2NyKTsKY29uc3QgaW50IF9fcHRocmVhZF9vZmZzZXRvZl9waWQgPSBvZmZzZXRv
ZihzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBfcGlkKTsKY29uc3QgaW50IF9fbGludXh0aHJlYWRzX3B0aHJl
YWRfc2l6ZW9mX2Rlc2NyCiAgPSBzaXplb2Yoc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCk7
CgovKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwoKc3RhdGljIHZvaWQgcHRocmVhZF9vbmV4aXRf
cHJvY2VzcyhpbnQgcmV0Y29kZSwgdm9pZCAqYXJnKTsKI2lmbmRlZiBIQVZFX1pfTk9ERUxFVEUK
c3RhdGljIHZvaWQgcHRocmVhZF9hdGV4aXRfcHJvY2Vzcyh2b2lkICphcmcsIGludCByZXRjb2Rl
KTsKc3RhdGljIHZvaWQgcHRocmVhZF9hdGV4aXRfcmV0Y29kZSh2b2lkICphcmcsIGludCByZXRj
b2RlKTsKI2VuZGlmCnN0YXRpYyB2b2lkIHB0aHJlYWRfaGFuZGxlX3NpZ2NhbmNlbChpbnQgc2ln
KTsKc3RhdGljIHZvaWQgcHRocmVhZF9oYW5kbGVfc2lncmVzdGFydChpbnQgc2lnKTsKc3RhdGlj
IHZvaWQgcHRocmVhZF9oYW5kbGVfc2lnZGVidWcoaW50IHNpZyk7CgovKiBDUFUgY2xvY2sgaGFu
ZGxpbmcuICAqLwojaWYgSFBfVElNSU5HX0FWQUlMCmV4dGVybiBocF90aW1pbmdfdCBfZGxfY3B1
Y2xvY2tfb2Zmc2V0OwojZW5kaWYKCi8qIFNpZ25hbCBudW1iZXJzIHVzZWQgZm9yIHRoZSBjb21t
dW5pY2F0aW9uLgogICBJbiB0aGVzZSB2YXJpYWJsZXMgd2Uga2VlcCB0cmFjayBvZiB0aGUgdXNl
ZCB2YXJpYWJsZXMuICBJZiB0aGUKICAgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCBhbnkgcmVh
bC10aW1lIHNpZ25hbHMgd2Ugd2lsbCBkZWZpbmUgdGhlCiAgIHZhbHVlcyB0byBzb21lIHVucmVh
c29uYWJsZSB2YWx1ZSB3aGljaCB3aWxsIHNpZ25hbCBmYWlsaW5nIG9mIGFsbAogICB0aGUgZnVu
Y3Rpb25zIGJlbG93LiAgKi8KI2lmbmRlZiBfX1NJR1JUTUlOCnN0YXRpYyBpbnQgY3VycmVudF9y
dG1pbiA9IC0xOwpzdGF0aWMgaW50IGN1cnJlbnRfcnRtYXggPSAtMTsKaW50IF9fcHRocmVhZF9z
aWdfcmVzdGFydCA9IFNJR1VTUjE7CmludCBfX3B0aHJlYWRfc2lnX2NhbmNlbCA9IFNJR1VTUjI7
CmludCBfX3B0aHJlYWRfc2lnX2RlYnVnOwojZWxzZQpzdGF0aWMgaW50IGN1cnJlbnRfcnRtaW47
CnN0YXRpYyBpbnQgY3VycmVudF9ydG1heDsKCiNpZiBfX1NJR1JUTUFYIC0gX19TSUdSVE1JTiA+
PSAzCmludCBfX3B0aHJlYWRfc2lnX3Jlc3RhcnQgPSBfX1NJR1JUTUlOOwppbnQgX19wdGhyZWFk
X3NpZ19jYW5jZWwgPSBfX1NJR1JUTUlOICsgMTsKaW50IF9fcHRocmVhZF9zaWdfZGVidWcgPSBf
X1NJR1JUTUlOICsgMjsKI2Vsc2UKaW50IF9fcHRocmVhZF9zaWdfcmVzdGFydCA9IFNJR1VTUjE7
CmludCBfX3B0aHJlYWRfc2lnX2NhbmNlbCA9IFNJR1VTUjI7CmludCBfX3B0aHJlYWRfc2lnX2Rl
YnVnOwojZW5kaWYKCnN0YXRpYyBpbnQgcnRzaWdzX2luaXRpYWxpemVkOwoKI2lmICFfX0FTU1VN
RV9SRUFMVElNRV9TSUdOQUxTCiMgaW5jbHVkZSAidGVzdHJ0c2lnLmgiCiNlbmRpZgoKc3RhdGlj
IHZvaWQKaW5pdF9ydHNpZ3MgKHZvaWQpCnsKI2lmICFfX0FTU1VNRV9SRUFMVElNRV9TSUdOQUxT
CiAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCFrZXJuZWxfaGFzX3J0c2lnICgpLCAwKSkKICAgIHsK
ICAgICAgY3VycmVudF9ydG1pbiA9IC0xOwogICAgICBjdXJyZW50X3J0bWF4ID0gLTE7CiMgaWYg
X19TSUdSVE1BWCAtIF9fU0lHUlRNSU4gPj0gMwogICAgICBfX3B0aHJlYWRfc2lnX3Jlc3RhcnQg
PSBTSUdVU1IxOwogICAgICBfX3B0aHJlYWRfc2lnX2NhbmNlbCA9IFNJR1VTUjI7CiAgICAgIF9f
cHRocmVhZF9zaWdfZGVidWcgPSAwOwojIGVuZGlmCiAgICB9CiAgZWxzZQojZW5kaWYJLyogX19B
U1NVTUVfUkVBTFRJTUVfU0lHTkFMUyAqLwogICAgewojaWYgX19TSUdSVE1BWCAtIF9fU0lHUlRN
SU4gPj0gMwogICAgICBjdXJyZW50X3J0bWluID0gX19TSUdSVE1JTiArIDM7CiMgaWYgIV9fQVNT
VU1FX1JFQUxUSU1FX1NJR05BTFMKICAgICAgX19wdGhyZWFkX3Jlc3RhcnQgPSBfX3B0aHJlYWRf
cmVzdGFydF9uZXc7CiAgICAgIF9fcHRocmVhZF9zdXNwZW5kID0gX19wdGhyZWFkX3dhaXRfZm9y
X3Jlc3RhcnRfc2lnbmFsOwogICAgICBfX3B0aHJlYWRfdGltZWRzdXNwZW5kID0gX19wdGhyZWFk
X3RpbWVkc3VzcGVuZF9uZXc7CiMgZW5kaWYgLyogX19BU1NVTUVfUkVBTFRJTUVfU0lHTkFMUyAq
LwojZWxzZQogICAgICBjdXJyZW50X3J0bWluID0gX19TSUdSVE1JTjsKI2VuZGlmCgogICAgICBj
dXJyZW50X3J0bWF4ID0gX19TSUdSVE1BWDsKICAgIH0KCiAgcnRzaWdzX2luaXRpYWxpemVkID0g
MTsKfQojZW5kaWYKCi8qIFJldHVybiBudW1iZXIgb2YgYXZhaWxhYmxlIHJlYWwtdGltZSBzaWdu
YWwgd2l0aCBoaWdoZXN0IHByaW9yaXR5LiAgKi8KaW50Cl9fbGliY19jdXJyZW50X3NpZ3J0bWlu
ICh2b2lkKQp7CiNpZmRlZiBfX1NJR1JUTUlOCiAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCFydHNp
Z3NfaW5pdGlhbGl6ZWQsIDApKQogICAgaW5pdF9ydHNpZ3MgKCk7CiNlbmRpZgogIHJldHVybiBj
dXJyZW50X3J0bWluOwp9CgovKiBSZXR1cm4gbnVtYmVyIG9mIGF2YWlsYWJsZSByZWFsLXRpbWUg
c2lnbmFsIHdpdGggbG93ZXN0IHByaW9yaXR5LiAgKi8KaW50Cl9fbGliY19jdXJyZW50X3NpZ3J0
bWF4ICh2b2lkKQp7CiNpZmRlZiBfX1NJR1JUTUlOCiAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCFy
dHNpZ3NfaW5pdGlhbGl6ZWQsIDApKQogICAgaW5pdF9ydHNpZ3MgKCk7CiNlbmRpZgogIHJldHVy
biBjdXJyZW50X3J0bWF4Owp9CgovKiBBbGxvY2F0ZSByZWFsLXRpbWUgc2lnbmFsIHdpdGggaGln
aGVzdC9sb3dlc3QgYXZhaWxhYmxlCiAgIHByaW9yaXR5LiAgUGxlYXNlIG5vdGUgdGhhdCB3ZSBk
b24ndCB1c2UgYSBsb2NrIHNpbmNlIHdlIGFzc3VtZQogICB0aGlzIGZ1bmN0aW9uIHRvIGJlIGNh
bGxlZCBhdCBwcm9ncmFtIHN0YXJ0LiAgKi8KaW50Cl9fbGliY19hbGxvY2F0ZV9ydHNpZyAoaW50
IGhpZ2gpCnsKI2lmbmRlZiBfX1NJR1JUTUlOCiAgcmV0dXJuIC0xOwojZWxzZQogIGlmIChfX2J1
aWx0aW5fZXhwZWN0ICghcnRzaWdzX2luaXRpYWxpemVkLCAwKSkKICAgIGluaXRfcnRzaWdzICgp
OwogIGlmIChfX2J1aWx0aW5fZXhwZWN0IChjdXJyZW50X3J0bWluID09IC0xLCAwKQogICAgICB8
fCBfX2J1aWx0aW5fZXhwZWN0IChjdXJyZW50X3J0bWluID4gY3VycmVudF9ydG1heCwgMCkpCiAg
ICAvKiBXZSBkb24ndCBoYXZlIGFueW1vcmUgc2lnbmFsIGF2YWlsYWJsZS4gICovCiAgICByZXR1
cm4gLTE7CgogIHJldHVybiBoaWdoID8gY3VycmVudF9ydG1pbisrIDogY3VycmVudF9ydG1heC0t
OwojZW5kaWYKfQoKLyogVGhlIGZ1bmN0aW9uIHdlIHVzZSB0byBnZXQgdGhlIGtlcm5lbCByZXZp
c2lvbi4gICovCmV4dGVybiBpbnQgX19zeXNjdGwgKGludCAqbmFtZSwgaW50IG5sZW4sIHZvaWQg
Km9sZHZhbCwgc2l6ZV90ICpvbGRsZW5wLAoJCSAgICAgdm9pZCAqbmV3dmFsLCBzaXplX3QgbmV3
bGVuKTsKCi8qIFRlc3Qgd2hldGhlciB0aGUgbWFjaGluZSBoYXMgbW9yZSB0aGFuIG9uZSBwcm9j
ZXNzb3IuICBUaGlzIGlzIG5vdCB0aGUKICAgYmVzdCB0ZXN0IGJ1dCBnb29kIGVub3VnaC4gIE1v
cmUgY29tcGxpY2F0ZWQgdGVzdHMgd291bGQgcmVxdWlyZSBgbWFsbG9jJwogICB3aGljaCBpcyBu
b3QgYXZhaWxhYmxlIGF0IHRoYXQgdGltZS4gICovCnN0YXRpYyBpbnQKaXNfc21wX3N5c3RlbSAo
dm9pZCkKewogIHN0YXRpYyBjb25zdCBpbnQgc3lzY3RsX2FyZ3NbXSA9IHsgQ1RMX0tFUk4sIEtF
Uk5fVkVSU0lPTiB9OwogIGNoYXIgYnVmWzUxMl07CiAgc2l6ZV90IHJlc2xlbiA9IHNpemVvZiAo
YnVmKTsKCiAgLyogVHJ5IHJlYWRpbmcgdGhlIG51bWJlciB1c2luZyBgc3lzY3RsJyBmaXJzdC4g
ICovCiAgaWYgKF9fc3lzY3RsICgoaW50ICopIHN5c2N0bF9hcmdzLAoJCXNpemVvZiAoc3lzY3Rs
X2FyZ3MpIC8gc2l6ZW9mIChzeXNjdGxfYXJnc1swXSksCgkJYnVmLCAmcmVzbGVuLCBOVUxMLCAw
KSA8IDApCiAgICB7CiAgICAgIC8qIFRoaXMgd2FzIG5vdCBzdWNjZXNzZnVsLiAgTm93IHRyeSBy
ZWFkaW5nIHRoZSAvcHJvYyBmaWxlc3lzdGVtLiAgKi8KICAgICAgaW50IGZkID0gX19vcGVuICgi
L3Byb2Mvc3lzL2tlcm5lbC92ZXJzaW9uIiwgT19SRE9OTFkpOwogICAgICBpZiAoX19idWlsdGlu
X2V4cGVjdCAoZmQsIDApID09IC0xCgkgIHx8IChyZXNsZW4gPSBfX3JlYWQgKGZkLCBidWYsIHNp
emVvZiAoYnVmKSkpIDw9IDApCgkvKiBUaGlzIGFsc28gZGlkbid0IHdvcmsuICBXZSBnaXZlIHVw
IGFuZCBzYXkgaXQncyBhIFVQIG1hY2hpbmUuICAqLwoJYnVmWzBdID0gJ1wwJzsKCiAgICAgIF9f
Y2xvc2UgKGZkKTsKICAgIH0KCiAgcmV0dXJuIHN0cnN0ciAoYnVmLCAiU01QIikgIT0gTlVMTDsK
fQoKCi8qIEluaXRpYWxpemUgdGhlIHB0aHJlYWQgbGlicmFyeS4KICAgSW5pdGlhbGl6YXRpb24g
aXMgc3BsaXQgaW4gdHdvIGZ1bmN0aW9uczoKICAgLSBhIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIHRo
YXQgYmxvY2tzIHRoZSBfX3B0aHJlYWRfc2lnX3Jlc3RhcnQgc2lnbmFsCiAgICAgKG11c3QgZG8g
dGhpcyB2ZXJ5IGVhcmx5LCBzaW5jZSB0aGUgcHJvZ3JhbSBjb3VsZCBjYXB0dXJlIHRoZSBzaWdu
YWwKICAgICAgbWFzayB3aXRoIGUuZy4gc2lnc2V0am1wIGJlZm9yZSBjcmVhdGluZyB0aGUgZmly
c3QgdGhyZWFkKTsKICAgLSBhIHJlZ3VsYXIgZnVuY3Rpb24gY2FsbGVkIGZyb20gcHRocmVhZF9j
cmVhdGUgd2hlbiBuZWVkZWQuICovCgpzdGF0aWMgdm9pZCBwdGhyZWFkX2luaXRpYWxpemUodm9p
ZCkgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKTsKCiNpZm5kZWYgSEFWRV9aX05PREVMRVRF
CmV4dGVybiB2b2lkICpfX2Rzb19oYW5kbGUgX19hdHRyaWJ1dGVfXyAoKHdlYWspKTsKI2VuZGlm
CgoKLyogRG8gc29tZSBtaW5pbWFsIGluaXRpYWxpemF0aW9uIHdoaWNoIGhhcyB0byBiZSBkb25l
IGR1cmluZyB0aGUKICAgc3RhcnR1cCBvZiB0aGUgQyBsaWJyYXJ5LiAgKi8Kdm9pZApfX3B0aHJl
YWRfaW5pdGlhbGl6ZV9taW5pbWFsKHZvaWQpCnsKICAvKiBJZiB3ZSBoYXZlIHNwZWNpYWwgdGhy
ZWFkX3NlbGYgcHJvY2Vzc2luZywgaW5pdGlhbGl6ZSB0aGF0IGZvciB0aGUKICAgICBtYWluIHRo
cmVhZCBub3cuICAqLwojaWZkZWYgSU5JVF9USFJFQURfU0VMRgogIElOSVRfVEhSRUFEX1NFTEYo
Jl9fcHRocmVhZF9pbml0aWFsX3RocmVhZCwgMCk7CiNlbmRpZgojaWYgSFBfVElNSU5HX0FWQUlM
CiAgX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkLnBfY3B1Y2xvY2tfb2Zmc2V0ID0gX2RsX2NwdWNs
b2NrX29mZnNldDsKI2VuZGlmCn0KCgp2b2lkCl9fcHRocmVhZF9pbml0X21heF9zdGFja3NpemUo
dm9pZCkKewogIHN0cnVjdCBybGltaXQgbGltaXQ7CiAgc2l6ZV90IG1heF9zdGFjazsKCiAgZ2V0
cmxpbWl0KFJMSU1JVF9TVEFDSywgJmxpbWl0KTsKI2lmZGVmIEZMT0FUSU5HX1NUQUNLUwogIGlm
IChsaW1pdC5ybGltX2N1ciA9PSBSTElNX0lORklOSVRZKQogICAgbGltaXQucmxpbV9jdXIgPSBB
UkNIX1NUQUNLX01BWF9TSVpFOwojIGlmZGVmIE5FRURfU0VQQVJBVEVfUkVHSVNURVJfU1RBQ0sK
ICBtYXhfc3RhY2sgPSBsaW1pdC5ybGltX2N1ciAvIDI7CiMgZWxzZQogIG1heF9zdGFjayA9IGxp
bWl0LnJsaW1fY3VyOwojIGVuZGlmCiNlbHNlCiAgLyogUGxheSB3aXRoIHRoZSBzdGFjayBzaXpl
IGxpbWl0IHRvIG1ha2Ugc3VyZSB0aGF0IG5vIHN0YWNrIGV2ZXIgZ3Jvd3MKICAgICBiZXlvbmQg
U1RBQ0tfU0laRSBtaW51cyBvbmUgcGFnZSAodG8gYWN0IGFzIGEgZ3VhcmQgcGFnZSkuICovCiMg
aWZkZWYgTkVFRF9TRVBBUkFURV9SRUdJU1RFUl9TVEFDSwogIC8qIFNUQUNLX1NJWkUgYnl0ZXMg
aG9sZCBib3RoIHRoZSBtYWluIHN0YWNrIGFuZCByZWdpc3RlciBiYWNraW5nCiAgICAgc3RvcmUu
IFRoZSBybGltaXQgdmFsdWUgYXBwbGllcyB0byBlYWNoIGluZGl2aWR1YWxseS4gICovCiAgbWF4
X3N0YWNrID0gU1RBQ0tfU0laRS8yIC0gX19nZXRwYWdlc2l6ZSAoKTsKIyBlbHNlCiAgbWF4X3N0
YWNrID0gU1RBQ0tfU0laRSAtIF9fZ2V0cGFnZXNpemUoKTsKIyBlbmRpZgogIGlmIChsaW1pdC5y
bGltX2N1ciA+IG1heF9zdGFjaykgewogICAgbGltaXQucmxpbV9jdXIgPSBtYXhfc3RhY2s7CiAg
ICBzZXRybGltaXQoUkxJTUlUX1NUQUNLLCAmbGltaXQpOwogIH0KI2VuZGlmCiAgX19wdGhyZWFk
X21heF9zdGFja3NpemUgPSBtYXhfc3RhY2s7Cn0KCgpzdGF0aWMgdm9pZCBwdGhyZWFkX2luaXRp
YWxpemUodm9pZCkKewogIHN0cnVjdCBzaWdhY3Rpb24gc2E7CiAgc2lnc2V0X3QgbWFzazsKCiAg
LyogSWYgYWxyZWFkeSBkb25lIChlLmcuIGJ5IGEgY29uc3RydWN0b3IgY2FsbGVkIGVhcmxpZXIh
KSwgYmFpbCBvdXQgKi8KICBpZiAoX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2JvcyAhPSBOVUxM
KSByZXR1cm47CiNpZmRlZiBURVNUX0ZPUl9DT01QQVJFX0FORF9TV0FQCiAgLyogVGVzdCBpZiBj
b21wYXJlLWFuZC1zd2FwIGlzIGF2YWlsYWJsZSAqLwogIF9fcHRocmVhZF9oYXNfY2FzID0gY29t
cGFyZV9hbmRfc3dhcF9pc19hdmFpbGFibGUoKTsKI2VuZGlmCiNpZmRlZiBGTE9BVElOR19TVEFD
S1MKICAvKiBXZSBkb24ndCBuZWVkIHRvIGtub3cgdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2suICBH
aXZlIHRoZSBwb2ludGVyIHNvbWUKICAgICB2YWx1ZSB0byBzaWduYWwgdGhhdCBpbml0aWFsaXph
dGlvbiBoYXBwZW5lZC4gICovCiAgX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2JvcyA9ICh2b2lk
ICopIC0xbDsKI2Vsc2UKICAvKiBEZXRlcm1pbmUgc3RhY2sgc2l6ZSBsaW1pdHMgLiAgKi8KICBf
X3B0aHJlYWRfaW5pdF9tYXhfc3RhY2tzaXplICgpOwojIGlmZGVmIF9TVEFDS19HUk9XU19VUAog
IC8qIFRoZSBpbml0aWFsIHRocmVhZCBhbHJlYWR5IGhhcyBhbGwgdGhlIHN0YWNrIGl0IG5lZWRz
ICovCiAgX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2JvcyA9IChjaGFyICopCiAgICAoKGxvbmcp
Q1VSUkVOVF9TVEFDS19GUkFNRSAmfiAoU1RBQ0tfU0laRSAtIDEpKTsKIyBlbHNlCiAgLyogRm9y
IHRoZSBpbml0aWFsIHN0YWNrLCByZXNlcnZlIGF0IGxlYXN0IFNUQUNLX1NJWkUgYnl0ZXMgb2Yg
c3RhY2sKICAgICBiZWxvdyB0aGUgY3VycmVudCBzdGFjayBhZGRyZXNzLCBhbmQgYWxpZ24gdGhh
dCBvbiBhCiAgICAgU1RBQ0tfU0laRSBib3VuZGFyeS4gKi8KICBfX3B0aHJlYWRfaW5pdGlhbF90
aHJlYWRfYm9zID0KICAgIChjaGFyICopKCgobG9uZylDVVJSRU5UX1NUQUNLX0ZSQU1FIC0gMiAq
IFNUQUNLX1NJWkUpICYgfihTVEFDS19TSVpFIC0gMSkpOwojIGVuZGlmCiNlbmRpZgogIC8qIFVw
ZGF0ZSB0aGUgZGVzY3JpcHRvciBmb3IgdGhlIGluaXRpYWwgdGhyZWFkLiAqLwogIF9fcHRocmVh
ZF9pbml0aWFsX3RocmVhZC5wX3BpZCA9IF9fZ2V0cGlkKCk7CiAgLyogTGlrZXdpc2UgZm9yIHRo
ZSByZXNvbHZlciBzdGF0ZSBfcmVzLiAgKi8KICBfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQucF9y
ZXNwID0gJl9yZXM7CiNpZmRlZiBfX1NJR1JUTUlOCiAgLyogSW5pdGlhbGl6ZSByZWFsLXRpbWUg
c2lnbmFscy4gKi8KICBpbml0X3J0c2lncyAoKTsKI2VuZGlmCiAgLyogU2V0dXAgc2lnbmFsIGhh
bmRsZXJzIGZvciB0aGUgaW5pdGlhbCB0aHJlYWQuCiAgICAgU2luY2Ugc2lnbmFsIGhhbmRsZXJz
IGFyZSBzaGFyZWQgYmV0d2VlbiB0aHJlYWRzLCB0aGVzZSBzZXR0aW5ncwogICAgIHdpbGwgYmUg
aW5oZXJpdGVkIGJ5IGFsbCBvdGhlciB0aHJlYWRzLiAqLwogIHNhLnNhX2hhbmRsZXIgPSBwdGhy
ZWFkX2hhbmRsZV9zaWdyZXN0YXJ0OwogIHNpZ2VtcHR5c2V0KCZzYS5zYV9tYXNrKTsKICBzYS5z
YV9mbGFncyA9IDA7CiAgX19saWJjX3NpZ2FjdGlvbihfX3B0aHJlYWRfc2lnX3Jlc3RhcnQsICZz
YSwgTlVMTCk7CiAgc2Euc2FfaGFuZGxlciA9IHB0aHJlYWRfaGFuZGxlX3NpZ2NhbmNlbDsKICAv
LyBzYS5zYV9mbGFncyA9IDA7CiAgX19saWJjX3NpZ2FjdGlvbihfX3B0aHJlYWRfc2lnX2NhbmNl
bCwgJnNhLCBOVUxMKTsKICBpZiAoX19wdGhyZWFkX3NpZ19kZWJ1ZyA+IDApIHsKICAgIHNhLnNh
X2hhbmRsZXIgPSBwdGhyZWFkX2hhbmRsZV9zaWdkZWJ1ZzsKICAgIHNpZ2VtcHR5c2V0KCZzYS5z
YV9tYXNrKTsKICAgIC8vIHNhLnNhX2ZsYWdzID0gMDsKICAgIF9fbGliY19zaWdhY3Rpb24oX19w
dGhyZWFkX3NpZ19kZWJ1ZywgJnNhLCBOVUxMKTsKICB9CiAgLyogSW5pdGlhbGx5LCBibG9jayBf
X3B0aHJlYWRfc2lnX3Jlc3RhcnQuIFdpbGwgYmUgdW5ibG9ja2VkIG9uIGRlbWFuZC4gKi8KICBz
aWdlbXB0eXNldCgmbWFzayk7CiAgc2lnYWRkc2V0KCZtYXNrLCBfX3B0aHJlYWRfc2lnX3Jlc3Rh
cnQpOwogIHNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJm1hc2ssIE5VTEwpOwogIC8qIFJlZ2lzdGVy
IGFuIGV4aXQgZnVuY3Rpb24gdG8ga2lsbCBhbGwgb3RoZXIgdGhyZWFkcy4gKi8KICAvKiBEbyBp
dCBlYXJseSBzbyB0aGF0IHVzZXItcmVnaXN0ZXJlZCBhdGV4aXQgZnVuY3Rpb25zIGFyZSBjYWxs
ZWQKICAgICBiZWZvcmUgcHRocmVhZF8qZXhpdF9wcm9jZXNzLiAqLwojaWZuZGVmIEhBVkVfWl9O
T0RFTEVURQogIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgmX19kc29faGFuZGxlICE9IE5VTEwsIDEp
KQogICAgX19jeGFfYXRleGl0ICgodm9pZCAoKikgKHZvaWQgKikpIHB0aHJlYWRfYXRleGl0X3By
b2Nlc3MsIE5VTEwsCgkJICBfX2Rzb19oYW5kbGUpOwogIGVsc2UKI2VuZGlmCiAgICBfX29uX2V4
aXQgKHB0aHJlYWRfb25leGl0X3Byb2Nlc3MsIE5VTEwpOwogIC8qIEhvdyBtYW55IHByb2Nlc3Nv
cnMuICAqLwogIF9fcHRocmVhZF9zbXBfa2VybmVsID0gaXNfc21wX3N5c3RlbSAoKTsKfQoKdm9p
ZCBfX3B0aHJlYWRfaW5pdGlhbGl6ZSh2b2lkKQp7CiAgcHRocmVhZF9pbml0aWFsaXplKCk7Cn0K
CmludCBfX3B0aHJlYWRfaW5pdGlhbGl6ZV9tYW5hZ2VyKHZvaWQpCnsKICBpbnQgbWFuYWdlcl9w
aXBlWzJdOwogIGludCBwaWQ7CiAgc3RydWN0IHB0aHJlYWRfcmVxdWVzdCByZXF1ZXN0OwoKI2lm
bmRlZiBIQVZFX1pfTk9ERUxFVEUKICBpZiAoX19idWlsdGluX2V4cGVjdCAoJl9fZHNvX2hhbmRs
ZSAhPSBOVUxMLCAxKSkKICAgIF9fY3hhX2F0ZXhpdCAoKHZvaWQgKCopICh2b2lkICopKSBwdGhy
ZWFkX2F0ZXhpdF9yZXRjb2RlLCBOVUxMLAoJCSAgX19kc29faGFuZGxlKTsKI2VuZGlmCgogIGlm
IChfX3B0aHJlYWRfbWF4X3N0YWNrc2l6ZSA9PSAwKQogICAgX19wdGhyZWFkX2luaXRfbWF4X3N0
YWNrc2l6ZSAoKTsKICAvKiBJZiBiYXNpYyBpbml0aWFsaXphdGlvbiBub3QgZG9uZSB5ZXQgKGUu
Zy4gd2UncmUgY2FsbGVkIGZyb20gYQogICAgIGNvbnN0cnVjdG9yIHJ1biBiZWZvcmUgb3VyIGNv
bnN0cnVjdG9yKSwgZG8gaXQgbm93ICovCiAgaWYgKF9fcHRocmVhZF9pbml0aWFsX3RocmVhZF9i
b3MgPT0gTlVMTCkgcHRocmVhZF9pbml0aWFsaXplKCk7CiAgLyogU2V0dXAgc3RhY2sgZm9yIHRo
cmVhZCBtYW5hZ2VyICovCiAgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2JvcyA9IG1hbGxvYyhU
SFJFQURfTUFOQUdFUl9TVEFDS19TSVpFKTsKICBpZiAoX19wdGhyZWFkX21hbmFnZXJfdGhyZWFk
X2JvcyA9PSBOVUxMKSByZXR1cm4gLTE7CiAgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3RvcyA9
CiAgICBfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfYm9zICsgVEhSRUFEX01BTkFHRVJfU1RBQ0tf
U0laRTsKICAvKiBTZXR1cCBwaXBlIHRvIGNvbW11bmljYXRlIHdpdGggdGhyZWFkIG1hbmFnZXIg
Ki8KICBpZiAocGlwZShtYW5hZ2VyX3BpcGUpID09IC0xKSB7CiAgICBmcmVlKF9fcHRocmVhZF9t
YW5hZ2VyX3RocmVhZF9ib3MpOwogICAgcmV0dXJuIC0xOwogIH0KICAvKiBTdGFydCB0aGUgdGhy
ZWFkIG1hbmFnZXIgKi8KICBwaWQgPSAwOwogIGlmIChfX2J1aWx0aW5fZXhwZWN0IChfX3B0aHJl
YWRfaW5pdGlhbF90aHJlYWQucF9yZXBvcnRfZXZlbnRzLCAwKSkKICAgIHsKICAgICAgLyogSXQn
cyBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkLiAgV2UgaGF2ZSB0byByZXBvcnQgdGhlIGNyZWF0aW9u
IG9mCgkgdGhlIG1hbmFnZXIgdGhyZWFkLiAgKi8KICAgICAgaW50IGlkeCA9IF9fdGRfZXZlbnR3
b3JkIChURF9DUkVBVEUpOwogICAgICB1aW50MzJfdCBtYXNrID0gX190ZF9ldmVudG1hc2sgKFRE
X0NSRUFURSk7CgogICAgICBpZiAoKG1hc2sgJiAoX19wdGhyZWFkX3RocmVhZHNfZXZlbnRzLmV2
ZW50X2JpdHNbaWR4XQoJCSAgIHwgX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkLnBfZXZlbnRidWYu
ZXZlbnRtYXNrLmV2ZW50X2JpdHNbaWR4XSkpCgkgICE9IDApCgl7CgkgIF9fcHRocmVhZF9sb2Nr
KF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZC5wX2xvY2ssIE5VTEwpOwoKI2lmZGVmIE5FRURfU0VQ
QVJBVEVfUkVHSVNURVJfU1RBQ0sKCSAgcGlkID0gX19jbG9uZTIoX19wdGhyZWFkX21hbmFnZXJf
ZXZlbnQsCgkJCSAodm9pZCAqKikgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2JvcywKCQkJIFRI
UkVBRF9NQU5BR0VSX1NUQUNLX1NJWkUsCgkJCSBDTE9ORV9WTSB8IENMT05FX0ZTIHwgQ0xPTkVf
RklMRVMgfCBDTE9ORV9TSUdIQU5ELAoJCQkgKHZvaWQgKikobG9uZyltYW5hZ2VyX3BpcGVbMF0p
OwojZWxpZiBfU1RBQ0tfR1JPV1NfVVAKCSAgcGlkID0gX19jbG9uZShfX3B0aHJlYWRfbWFuYWdl
cl9ldmVudCwKCQkJKHZvaWQgKiopIF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZF9ib3MsCgkJCUNM
T05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8IENMT05FX1NJR0hBTkQsCgkJCSh2b2lk
ICopKGxvbmcpbWFuYWdlcl9waXBlWzBdKTsKI2Vsc2UKCSAgcGlkID0gX19jbG9uZShfX3B0aHJl
YWRfbWFuYWdlcl9ldmVudCwKCQkJKHZvaWQgKiopIF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZF90
b3MsCgkJCUNMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8IENMT05FX1NJR0hBTkQs
CgkJCSh2b2lkICopKGxvbmcpbWFuYWdlcl9waXBlWzBdKTsKI2VuZGlmCgoJICBpZiAocGlkICE9
IC0xKQoJICAgIHsKCSAgICAgIC8qIE5vdyBmaWxsIGluIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgbmV3IHRocmVhZCBpbgoJICAgICAgICAgdGhlIG5ld2x5IGNyZWF0ZWQgdGhyZWFkJ3MgZGF0
YSBzdHJ1Y3R1cmUuICBXZSBjYW5ub3QgbGV0CgkgICAgICAgICB0aGUgbmV3IHRocmVhZCBkbyB0
aGlzIHNpbmNlIHdlIGRvbid0IGtub3cgd2hldGhlciBpdCB3YXMKCSAgICAgICAgIGFscmVhZHkg
c2NoZWR1bGVkIHdoZW4gd2Ugc2VuZCB0aGUgZXZlbnQuICAqLwoJICAgICAgX19wdGhyZWFkX21h
bmFnZXJfdGhyZWFkLnBfZXZlbnRidWYuZXZlbnRkYXRhID0KCQkmX19wdGhyZWFkX21hbmFnZXJf
dGhyZWFkOwoJICAgICAgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkLnBfZXZlbnRidWYuZXZlbnRu
dW0gPSBURF9DUkVBVEU7CgkgICAgICBfX3B0aHJlYWRfbGFzdF9ldmVudCA9ICZfX3B0aHJlYWRf
bWFuYWdlcl90aHJlYWQ7CgkgICAgICBfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQucF90aWQgPSAy
KiBQVEhSRUFEX1RIUkVBRFNfTUFYICsgMTsKCSAgICAgIF9fcHRocmVhZF9tYW5hZ2VyX3RocmVh
ZC5wX3BpZCA9IHBpZDsKCgkgICAgICAvKiBOb3cgY2FsbCB0aGUgZnVuY3Rpb24gd2hpY2ggc2ln
bmFscyB0aGUgZXZlbnQuICAqLwoJICAgICAgX19saW51eHRocmVhZHNfY3JlYXRlX2V2ZW50ICgp
OwoJICAgIH0KCgkgIC8qIE5vdyByZXN0YXJ0IHRoZSB0aHJlYWQuICAqLwoJICBfX3B0aHJlYWRf
dW5sb2NrKF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZC5wX2xvY2spOwoJfQogICAgfQoKICBpZiAo
X19idWlsdGluX2V4cGVjdCAocGlkLCAwKSA9PSAwKQogICAgewojaWZkZWYgTkVFRF9TRVBBUkFU
RV9SRUdJU1RFUl9TVEFDSwogICAgICBwaWQgPSBfX2Nsb25lMihfX3B0aHJlYWRfbWFuYWdlciwg
KHZvaWQgKiopIF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZF9ib3MsCgkJICAgICBUSFJFQURfTUFO
QUdFUl9TVEFDS19TSVpFLAoJCSAgICAgQ0xPTkVfVk0gfCBDTE9ORV9GUyB8IENMT05FX0ZJTEVT
IHwgQ0xPTkVfU0lHSEFORCwKCQkgICAgICh2b2lkICopKGxvbmcpbWFuYWdlcl9waXBlWzBdKTsK
I2VsaWYgX1NUQUNLX0dST1dTX1VQCiAgICAgIHBpZCA9IF9fY2xvbmUoX19wdGhyZWFkX21hbmFn
ZXIsICh2b2lkICoqKSBfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfYm9zLAoJCSAgICBDTE9ORV9W
TSB8IENMT05FX0ZTIHwgQ0xPTkVfRklMRVMgfCBDTE9ORV9TSUdIQU5ELAoJCSAgICAodm9pZCAq
KShsb25nKW1hbmFnZXJfcGlwZVswXSk7CiNlbHNlCiAgICAgIHBpZCA9IF9fY2xvbmUoX19wdGhy
ZWFkX21hbmFnZXIsICh2b2lkICoqKSBfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfdG9zLAoJCSAg
ICBDTE9ORV9WTSB8IENMT05FX0ZTIHwgQ0xPTkVfRklMRVMgfCBDTE9ORV9TSUdIQU5ELAoJCSAg
ICAodm9pZCAqKShsb25nKW1hbmFnZXJfcGlwZVswXSk7CiNlbmRpZgogICAgfQogIGlmIChfX2J1
aWx0aW5fZXhwZWN0IChwaWQsIDApID09IC0xKSB7CiAgICBmcmVlKF9fcHRocmVhZF9tYW5hZ2Vy
X3RocmVhZF9ib3MpOwogICAgX19saWJjX2Nsb3NlKG1hbmFnZXJfcGlwZVswXSk7CiAgICBfX2xp
YmNfY2xvc2UobWFuYWdlcl9waXBlWzFdKTsKICAgIHJldHVybiAtMTsKICB9CiAgX19wdGhyZWFk
X21hbmFnZXJfcmVxdWVzdCA9IG1hbmFnZXJfcGlwZVsxXTsgLyogd3JpdGluZyBlbmQgKi8KICBf
X3B0aHJlYWRfbWFuYWdlcl9yZWFkZXIgPSBtYW5hZ2VyX3BpcGVbMF07IC8qIHJlYWRpbmcgZW5k
ICovCiAgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkLnBfdGlkID0gMiogUFRIUkVBRF9USFJFQURT
X01BWCArIDE7CiAgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkLnBfcGlkID0gcGlkOwogIC8qIE1h
a2UgZ2RiIGF3YXJlIG9mIG5ldyB0aHJlYWQgbWFuYWdlciAqLwogIGlmIChfX2J1aWx0aW5fZXhw
ZWN0IChfX3B0aHJlYWRfdGhyZWFkc19kZWJ1ZywgMCkgJiYgX19wdGhyZWFkX3NpZ19kZWJ1ZyA+
IDApCiAgICB7CiAgICAgIHJhaXNlKF9fcHRocmVhZF9zaWdfZGVidWcpOwogICAgICAvKiBXZSBz
dXNwZW5kIG91cnNlbGYgYW5kIGdkYiB3aWxsIHdha2UgdXMgdXAgd2hlbiBpdCBpcwoJIHJlYWR5
IHRvIGhhbmRsZSB1cy4gKi8KICAgICAgX19wdGhyZWFkX3dhaXRfZm9yX3Jlc3RhcnRfc2lnbmFs
KHRocmVhZF9zZWxmKCkpOwogICAgfQogIC8qIFN5bmNocm9uaXplIGRlYnVnZ2luZyBvZiB0aGUg
dGhyZWFkIG1hbmFnZXIgKi8KICByZXF1ZXN0LnJlcV9raW5kID0gUkVRX0RFQlVHOwogIFRFTVBf
RkFJTFVSRV9SRVRSWShfX2xpYmNfd3JpdGUoX19wdGhyZWFkX21hbmFnZXJfcmVxdWVzdCwKCQkJ
CSAgKGNoYXIgKikgJnJlcXVlc3QsIHNpemVvZihyZXF1ZXN0KSkpOwogIHJldHVybiAwOwp9Cgov
KiBUaHJlYWQgY3JlYXRpb24gKi8KCmludCBfX3B0aHJlYWRfY3JlYXRlXzJfMShwdGhyZWFkX3Qg
KnRocmVhZCwgY29uc3QgcHRocmVhZF9hdHRyX3QgKmF0dHIsCgkJCSB2b2lkICogKCpzdGFydF9y
b3V0aW5lKSh2b2lkICopLCB2b2lkICphcmcpCnsKICBwdGhyZWFkX2Rlc2NyIHNlbGYgPSB0aHJl
YWRfc2VsZigpOwogIHN0cnVjdCBwdGhyZWFkX3JlcXVlc3QgcmVxdWVzdDsKICBpbnQgcmV0dmFs
OwogIGlmIChfX2J1aWx0aW5fZXhwZWN0IChfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0LCAwKSA8
IDApIHsKICAgIGlmIChfX3B0aHJlYWRfaW5pdGlhbGl6ZV9tYW5hZ2VyKCkgPCAwKSByZXR1cm4g
RUFHQUlOOwogIH0KICByZXF1ZXN0LnJlcV90aHJlYWQgPSBzZWxmOwogIHJlcXVlc3QucmVxX2tp
bmQgPSBSRVFfQ1JFQVRFOwogIHJlcXVlc3QucmVxX2FyZ3MuY3JlYXRlLmF0dHIgPSBhdHRyOwog
IHJlcXVlc3QucmVxX2FyZ3MuY3JlYXRlLmZuID0gc3RhcnRfcm91dGluZTsKICByZXF1ZXN0LnJl
cV9hcmdzLmNyZWF0ZS5hcmcgPSBhcmc7CiAgc2lncHJvY21hc2soU0lHX1NFVE1BU0ssIChjb25z
dCBzaWdzZXRfdCAqKSBOVUxMLAogICAgICAgICAgICAgICZyZXF1ZXN0LnJlcV9hcmdzLmNyZWF0
ZS5tYXNrKTsKICBURU1QX0ZBSUxVUkVfUkVUUlkoX19saWJjX3dyaXRlKF9fcHRocmVhZF9tYW5h
Z2VyX3JlcXVlc3QsCgkJCQkgIChjaGFyICopICZyZXF1ZXN0LCBzaXplb2YocmVxdWVzdCkpKTsK
ICBzdXNwZW5kKHNlbGYpOwogIHJldHZhbCA9IFRIUkVBRF9HRVRNRU0oc2VsZiwgcF9yZXRjb2Rl
KTsKICBpZiAoX19idWlsdGluX2V4cGVjdCAocmV0dmFsLCAwKSA9PSAwKQogICAgKnRocmVhZCA9
IChwdGhyZWFkX3QpIFRIUkVBRF9HRVRNRU0oc2VsZiwgcF9yZXR2YWwpOwogIHJldHVybiByZXR2
YWw7Cn0KCnZlcnNpb25lZF9zeW1ib2wgKGxpYnB0aHJlYWQsIF9fcHRocmVhZF9jcmVhdGVfMl8x
LCBwdGhyZWFkX2NyZWF0ZSwgR0xJQkNfMl8xKTsKCiNpZiBTSExJQl9DT01QQVQgKGxpYnB0aHJl
YWQsIEdMSUJDXzJfMCwgR0xJQkNfMl8xKQoKaW50IF9fcHRocmVhZF9jcmVhdGVfMl8wKHB0aHJl
YWRfdCAqdGhyZWFkLCBjb25zdCBwdGhyZWFkX2F0dHJfdCAqYXR0ciwKCQkJIHZvaWQgKiAoKnN0
YXJ0X3JvdXRpbmUpKHZvaWQgKiksIHZvaWQgKmFyZykKewogIC8qIFRoZSBBVFRSIGF0dHJpYnV0
ZSBpcyBub3QgcmVhbGx5IG9mIHR5cGUgYHB0aHJlYWRfYXR0cl90IConLiAgSXQgaGFzCiAgICAg
dGhlIG9sZCBzaXplIGFuZCBhY2Nlc3MgdG8gdGhlIG5ldyBtZW1iZXJzIG1pZ2h0IGNyYXNoIHRo
ZSBwcm9ncmFtLgogICAgIFdlIGNvbnZlcnQgdGhlIHN0cnVjdCBub3cuICAqLwogIHB0aHJlYWRf
YXR0cl90IG5ld19hdHRyOwoKICBpZiAoYXR0ciAhPSBOVUxMKQogICAgewogICAgICBzaXplX3Qg
cHMgPSBfX2dldHBhZ2VzaXplICgpOwoKICAgICAgbWVtY3B5ICgmbmV3X2F0dHIsIGF0dHIsCgkg
ICAgICAoc2l6ZV90KSAmKCgocHRocmVhZF9hdHRyX3QqKU5VTEwpLT5fX2d1YXJkc2l6ZSkpOwog
ICAgICBuZXdfYXR0ci5fX2d1YXJkc2l6ZSA9IHBzOwogICAgICBuZXdfYXR0ci5fX3N0YWNrYWRk
cl9zZXQgPSAwOwogICAgICBuZXdfYXR0ci5fX3N0YWNrYWRkciA9IE5VTEw7CiAgICAgIG5ld19h
dHRyLl9fc3RhY2tzaXplID0gU1RBQ0tfU0laRSAtIHBzOwogICAgICBhdHRyID0gJm5ld19hdHRy
OwogICAgfQogIHJldHVybiBfX3B0aHJlYWRfY3JlYXRlXzJfMSAodGhyZWFkLCBhdHRyLCBzdGFy
dF9yb3V0aW5lLCBhcmcpOwp9CmNvbXBhdF9zeW1ib2wgKGxpYnB0aHJlYWQsIF9fcHRocmVhZF9j
cmVhdGVfMl8wLCBwdGhyZWFkX2NyZWF0ZSwgR0xJQkNfMl8wKTsKI2VuZGlmCgovKiBTaW1wbGUg
b3BlcmF0aW9ucyBvbiB0aHJlYWQgaWRlbnRpZmllcnMgKi8KCnB0aHJlYWRfdCBwdGhyZWFkX3Nl
bGYodm9pZCkKewogIHB0aHJlYWRfZGVzY3Igc2VsZiA9IHRocmVhZF9zZWxmKCk7CiAgcmV0dXJu
IFRIUkVBRF9HRVRNRU0oc2VsZiwgcF90aWQpOwp9CgppbnQgcHRocmVhZF9lcXVhbChwdGhyZWFk
X3QgdGhyZWFkMSwgcHRocmVhZF90IHRocmVhZDIpCnsKICByZXR1cm4gdGhyZWFkMSA9PSB0aHJl
YWQyOwp9CgovKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHRocmVhZF9zZWxmIGluIHRoZSBjYXNlIG9m
IHVzZXItcHJvdmlkZWQgc3RhY2tzICovCgojaWZuZGVmIFRIUkVBRF9TRUxGCgpwdGhyZWFkX2Rl
c2NyIF9fcHRocmVhZF9maW5kX3NlbGYodm9pZCkKewogIGNoYXIgKiBzcCA9IENVUlJFTlRfU1RB
Q0tfRlJBTUU7CiAgcHRocmVhZF9oYW5kbGUgaDsKCiAgLyogX19wdGhyZWFkX2hhbmRsZXNbMF0g
aXMgdGhlIGluaXRpYWwgdGhyZWFkLCBfX3B0aHJlYWRfaGFuZGxlc1sxXSBpcwogICAgIHRoZSBt
YW5hZ2VyIHRocmVhZHMgaGFuZGxlZCBzcGVjaWFsbHkgaW4gdGhyZWFkX3NlbGYoKSwgc28gc3Rh
cnQgYXQgMiAqLwogIGggPSBfX3B0aHJlYWRfaGFuZGxlcyArIDI7CiAgd2hpbGUgKCEgKHNwIDw9
IChjaGFyICopIGgtPmhfZGVzY3IgJiYgc3AgPj0gaC0+aF9ib3R0b20pKSBoKys7CiAgcmV0dXJu
IGgtPmhfZGVzY3I7Cn0KCiNlbHNlCgpzdGF0aWMgcHRocmVhZF9kZXNjciB0aHJlYWRfc2VsZl9z
dGFjayh2b2lkKQp7CiAgY2hhciAqc3AgPSBDVVJSRU5UX1NUQUNLX0ZSQU1FOwogIHB0aHJlYWRf
aGFuZGxlIGg7CgogIGlmIChzcCA+PSBfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfYm9zICYmIHNw
IDwgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3RvcykKICAgIHJldHVybiAmX19wdGhyZWFkX21h
bmFnZXJfdGhyZWFkOwogIGggPSBfX3B0aHJlYWRfaGFuZGxlcyArIDI7CiAgd2hpbGUgKCEgKHNw
IDw9IChjaGFyICopIGgtPmhfZGVzY3IgJiYgc3AgPj0gaC0+aF9ib3R0b20pKQogICAgaCsrOwog
IHJldHVybiBoLT5oX2Rlc2NyOwp9CgojZW5kaWYKCi8qIFRocmVhZCBzY2hlZHVsaW5nICovCgpp
bnQgcHRocmVhZF9zZXRzY2hlZHBhcmFtKHB0aHJlYWRfdCB0aHJlYWQsIGludCBwb2xpY3ksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSkK
ewogIHB0aHJlYWRfaGFuZGxlIGhhbmRsZSA9IHRocmVhZF9oYW5kbGUodGhyZWFkKTsKICBwdGhy
ZWFkX2Rlc2NyIHRoOwoKICBfX3B0aHJlYWRfbG9jaygmaGFuZGxlLT5oX2xvY2ssIE5VTEwpOwog
IGlmIChfX2J1aWx0aW5fZXhwZWN0IChpbnZhbGlkX2hhbmRsZShoYW5kbGUsIHRocmVhZCksIDAp
KSB7CiAgICBfX3B0aHJlYWRfdW5sb2NrKCZoYW5kbGUtPmhfbG9jayk7CiAgICByZXR1cm4gRVNS
Q0g7CiAgfQogIHRoID0gaGFuZGxlLT5oX2Rlc2NyOwogIGlmIChfX2J1aWx0aW5fZXhwZWN0IChf
X3NjaGVkX3NldHNjaGVkdWxlcih0aC0+cF9waWQsIHBvbGljeSwgcGFyYW0pID09IC0xLAoJCQkw
KSkgewogICAgX19wdGhyZWFkX3VubG9jaygmaGFuZGxlLT5oX2xvY2spOwogICAgcmV0dXJuIGVy
cm5vOwogIH0KICB0aC0+cF9wcmlvcml0eSA9IHBvbGljeSA9PSBTQ0hFRF9PVEhFUiA/IDAgOiBw
YXJhbS0+c2NoZWRfcHJpb3JpdHk7CiAgX19wdGhyZWFkX3VubG9jaygmaGFuZGxlLT5oX2xvY2sp
OwogIGlmIChfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0ID49IDApCiAgICBfX3B0aHJlYWRfbWFu
YWdlcl9hZGp1c3RfcHJpbyh0aC0+cF9wcmlvcml0eSk7CiAgcmV0dXJuIDA7Cn0KCmludCBwdGhy
ZWFkX2dldHNjaGVkcGFyYW0ocHRocmVhZF90IHRocmVhZCwgaW50ICpwb2xpY3ksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSkKewogIHB0aHJlYWRf
aGFuZGxlIGhhbmRsZSA9IHRocmVhZF9oYW5kbGUodGhyZWFkKTsKICBpbnQgcGlkLCBwb2w7Cgog
IF9fcHRocmVhZF9sb2NrKCZoYW5kbGUtPmhfbG9jaywgTlVMTCk7CiAgaWYgKF9fYnVpbHRpbl9l
eHBlY3QgKGludmFsaWRfaGFuZGxlKGhhbmRsZSwgdGhyZWFkKSwgMCkpIHsKICAgIF9fcHRocmVh
ZF91bmxvY2soJmhhbmRsZS0+aF9sb2NrKTsKICAgIHJldHVybiBFU1JDSDsKICB9CiAgcGlkID0g
aGFuZGxlLT5oX2Rlc2NyLT5wX3BpZDsKICBfX3B0aHJlYWRfdW5sb2NrKCZoYW5kbGUtPmhfbG9j
ayk7CiAgcG9sID0gX19zY2hlZF9nZXRzY2hlZHVsZXIocGlkKTsKICBpZiAoX19idWlsdGluX2V4
cGVjdCAocG9sLCAwKSA9PSAtMSkgcmV0dXJuIGVycm5vOwogIGlmIChfX3NjaGVkX2dldHBhcmFt
KHBpZCwgcGFyYW0pID09IC0xKSByZXR1cm4gZXJybm87CiAgKnBvbGljeSA9IHBvbDsKICByZXR1
cm4gMDsKfQoKaW50IF9fcHRocmVhZF95aWVsZCAodm9pZCkKewogIC8qIEZvciBub3cgdGhpcyBp
cyBlcXVpdmFsZW50IHdpdGggdGhlIFBPU0lYIGNhbGwuICAqLwogIHJldHVybiBzY2hlZF95aWVs
ZCAoKTsKfQp3ZWFrX2FsaWFzIChfX3B0aHJlYWRfeWllbGQsIHB0aHJlYWRfeWllbGQpCgovKiBQ
cm9jZXNzLXdpZGUgZXhpdCgpIHJlcXVlc3QgKi8KCnN0YXRpYyB2b2lkIHB0aHJlYWRfb25leGl0
X3Byb2Nlc3MoaW50IHJldGNvZGUsIHZvaWQgKmFyZykKewogIGlmIChfX2J1aWx0aW5fZXhwZWN0
IChfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0LCAwKSA+PSAwKSB7CiAgICBzdHJ1Y3QgcHRocmVh
ZF9yZXF1ZXN0IHJlcXVlc3Q7CiAgICBwdGhyZWFkX2Rlc2NyIHNlbGYgPSB0aHJlYWRfc2VsZigp
OwoKICAgIHJlcXVlc3QucmVxX3RocmVhZCA9IHNlbGY7CiAgICByZXF1ZXN0LnJlcV9raW5kID0g
UkVRX1BST0NFU1NfRVhJVDsKICAgIHJlcXVlc3QucmVxX2FyZ3MuZXhpdC5jb2RlID0gcmV0Y29k
ZTsKICAgIFRFTVBfRkFJTFVSRV9SRVRSWShfX2xpYmNfd3JpdGUoX19wdGhyZWFkX21hbmFnZXJf
cmVxdWVzdCwKCQkJCSAgICAoY2hhciAqKSAmcmVxdWVzdCwgc2l6ZW9mKHJlcXVlc3QpKSk7CiAg
ICBzdXNwZW5kKHNlbGYpOwogICAgLyogTWFpbiB0aHJlYWQgc2hvdWxkIGFjY3VtdWxhdGUgdGlt
ZXMgZm9yIHRocmVhZCBtYW5hZ2VyIGFuZCBpdHMKICAgICAgIGNoaWxkcmVuLCBzbyB0aGF0IHRp
bWluZ3MgZm9yIG1haW4gdGhyZWFkIGFjY291bnQgZm9yIGFsbCB0aHJlYWRzLiAqLwogICAgaWYg
KHNlbGYgPT0gX19wdGhyZWFkX21haW5fdGhyZWFkKQogICAgICB7Cgl3YWl0cGlkKF9fcHRocmVh
ZF9tYW5hZ2VyX3RocmVhZC5wX3BpZCwgTlVMTCwgX19XQ0xPTkUpOwoJLyogU2luY2UgYWxsIHRo
cmVhZHMgaGF2ZSBiZWVuIGFzeW5jaHJvbm91c2x5IHRlcm1pbmF0ZWQKICAgICAgICAgICAocG9z
c2libHkgaG9sZGluZyBsb2NrcyksIGZyZWUgY2Fubm90IGJlIHVzZWQgYW55IG1vcmUuICAqLwoJ
LypmcmVlIChfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfYm9zKTsqLwoJX19wdGhyZWFkX21hbmFn
ZXJfdGhyZWFkX2JvcyA9IF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZF90b3MgPSBOVUxMOwogICAg
ICB9CiAgfQp9CgojaWZuZGVmIEhBVkVfWl9OT0RFTEVURQpzdGF0aWMgaW50IF9fcHRocmVhZF9h
dGV4aXRfcmV0Y29kZTsKCnN0YXRpYyB2b2lkIHB0aHJlYWRfYXRleGl0X3Byb2Nlc3Modm9pZCAq
YXJnLCBpbnQgcmV0Y29kZSkKewogIHB0aHJlYWRfb25leGl0X3Byb2Nlc3MgKHJldGNvZGUgPzog
X19wdGhyZWFkX2F0ZXhpdF9yZXRjb2RlLCBhcmcpOwp9CgpzdGF0aWMgdm9pZCBwdGhyZWFkX2F0
ZXhpdF9yZXRjb2RlKHZvaWQgKmFyZywgaW50IHJldGNvZGUpCnsKICBfX3B0aHJlYWRfYXRleGl0
X3JldGNvZGUgPSByZXRjb2RlOwp9CiNlbmRpZgoKLyogVGhlIGhhbmRsZXIgZm9yIHRoZSBSRVNU
QVJUIHNpZ25hbCBqdXN0IHJlY29yZHMgdGhlIHNpZ25hbCByZWNlaXZlZAogICBpbiB0aGUgdGhy
ZWFkIGRlc2NyaXB0b3IsIGFuZCBvcHRpb25hbGx5IHBlcmZvcm1zIGEgc2lnbG9uZ2ptcAogICAo
Zm9yIHB0aHJlYWRfY29uZF90aW1lZHdhaXQpLiAqLwoKc3RhdGljIHZvaWQgcHRocmVhZF9oYW5k
bGVfc2lncmVzdGFydChpbnQgc2lnKQp7CiAgcHRocmVhZF9kZXNjciBzZWxmID0gdGhyZWFkX3Nl
bGYoKTsKICBUSFJFQURfU0VUTUVNKHNlbGYsIHBfc2lnbmFsLCBzaWcpOwogIGlmIChUSFJFQURf
R0VUTUVNKHNlbGYsIHBfc2lnbmFsX2ptcCkgIT0gTlVMTCkKICAgIHNpZ2xvbmdqbXAoKlRIUkVB
RF9HRVRNRU0oc2VsZiwgcF9zaWduYWxfam1wKSwgMSk7Cn0KCi8qIFRoZSBoYW5kbGVyIGZvciB0
aGUgQ0FOQ0VMIHNpZ25hbCBjaGVja3MgZm9yIGNhbmNlbGxhdGlvbgogICAoaW4gYXN5bmNocm9u
b3VzIG1vZGUpLCBmb3IgcHJvY2Vzcy13aWRlIGV4aXQgYW5kIGV4ZWMgcmVxdWVzdHMuCiAgIEZv
ciB0aGUgdGhyZWFkIG1hbmFnZXIgdGhyZWFkLCByZWRpcmVjdCB0aGUgc2lnbmFsIHRvCiAgIF9f
cHRocmVhZF9tYW5hZ2VyX3NpZ2hhbmRsZXIuICovCgpzdGF0aWMgdm9pZCBwdGhyZWFkX2hhbmRs
ZV9zaWdjYW5jZWwoaW50IHNpZykKewogIHB0aHJlYWRfZGVzY3Igc2VsZiA9IHRocmVhZF9zZWxm
KCk7CiAgc2lnam1wX2J1ZiAqIGptcGJ1ZjsKCiAgaWYgKHNlbGYgPT0gJl9fcHRocmVhZF9tYW5h
Z2VyX3RocmVhZCkKICAgIHsKI2lmZGVmIFRIUkVBRF9TRUxGCiAgICAgIC8qIEEgbmV3IHRocmVh
ZCBtaWdodCBnZXQgYSBjYW5jZWwgc2lnbmFsIGJlZm9yZSBpdCBpcyBmdWxseQoJIGluaXRpYWxp
emVkLCBzbyB0aGF0IHRoZSB0aHJlYWQgcmVnaXN0ZXIgbWlnaHQgc3RpbGwgcG9pbnQgdG8gdGhl
CgkgbWFuYWdlciB0aHJlYWQuICBEb3VibGUgY2hlY2sgdGhhdCB0aGlzIGlzIHJlYWxseSB0aGUg
bWFuYWdlcgoJIHRocmVhZC4gICovCiAgICAgIHB0aHJlYWRfZGVzY3IgcmVhbF9zZWxmID0gdGhy
ZWFkX3NlbGZfc3RhY2soKTsKICAgICAgaWYgKHJlYWxfc2VsZiA9PSAmX19wdGhyZWFkX21hbmFn
ZXJfdGhyZWFkKQoJewoJICBfX3B0aHJlYWRfbWFuYWdlcl9zaWdoYW5kbGVyKHNpZyk7CgkgIHJl
dHVybjsKCX0KICAgICAgLyogT29wcywgdGhyZWFkX3NlbGYoKSBpc24ndCB3b3JraW5nIHlldC4u
ICAqLwogICAgICBzZWxmID0gcmVhbF9zZWxmOwojIGlmZGVmIElOSVRfVEhSRUFEX1NFTEYKICAg
ICAgSU5JVF9USFJFQURfU0VMRihzZWxmLCBzZWxmLT5wX25yKTsKIyBlbmRpZgojZWxzZQogICAg
ICBfX3B0aHJlYWRfbWFuYWdlcl9zaWdoYW5kbGVyKHNpZyk7CiAgICAgIHJldHVybjsKI2VuZGlm
CiAgICB9CiAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKF9fcHRocmVhZF9leGl0X3JlcXVlc3RlZCwg
MCkpIHsKICAgIC8qIE1haW4gdGhyZWFkIHNob3VsZCBhY2N1bXVsYXRlIHRpbWVzIGZvciB0aHJl
YWQgbWFuYWdlciBhbmQgaXRzCiAgICAgICBjaGlsZHJlbiwgc28gdGhhdCB0aW1pbmdzIGZvciBt
YWluIHRocmVhZCBhY2NvdW50IGZvciBhbGwgdGhyZWFkcy4gKi8KICAgIGlmIChzZWxmID09IF9f
cHRocmVhZF9tYWluX3RocmVhZCkKICAgICAgd2FpdHBpZChfX3B0aHJlYWRfbWFuYWdlcl90aHJl
YWQucF9waWQsIE5VTEwsIF9fV0NMT05FKTsKICAgIF9leGl0KF9fcHRocmVhZF9leGl0X2NvZGUp
OwogIH0KICBpZiAoX19idWlsdGluX2V4cGVjdCAoVEhSRUFEX0dFVE1FTShzZWxmLCBwX2NhbmNl
bGVkKSwgMCkKICAgICAgJiYgVEhSRUFEX0dFVE1FTShzZWxmLCBwX2NhbmNlbHN0YXRlKSA9PSBQ
VEhSRUFEX0NBTkNFTF9FTkFCTEUpIHsKICAgIGlmIChUSFJFQURfR0VUTUVNKHNlbGYsIHBfY2Fu
Y2VsdHlwZSkgPT0gUFRIUkVBRF9DQU5DRUxfQVNZTkNIUk9OT1VTKQogICAgICBfX3B0aHJlYWRf
ZG9fZXhpdChQVEhSRUFEX0NBTkNFTEVELCBDVVJSRU5UX1NUQUNLX0ZSQU1FKTsKICAgIGptcGJ1
ZiA9IFRIUkVBRF9HRVRNRU0oc2VsZiwgcF9jYW5jZWxfam1wKTsKICAgIGlmIChqbXBidWYgIT0g
TlVMTCkgewogICAgICBUSFJFQURfU0VUTUVNKHNlbGYsIHBfY2FuY2VsX2ptcCwgTlVMTCk7CiAg
ICAgIHNpZ2xvbmdqbXAoKmptcGJ1ZiwgMSk7CiAgICB9CiAgfQp9CgovKiBIYW5kbGVyIGZvciB0
aGUgREVCVUcgc2lnbmFsLgogICBUaGUgZGVidWdnaW5nIHN0cmF0ZWd5IGlzIGFzIGZvbGxvd3M6
CiAgIE9uIHJlY2VwdGlvbiBvZiBhIFJFUV9ERUJVRyByZXF1ZXN0IChzZW50IGJ5IG5ldyB0aHJl
YWRzIGNyZWF0ZWQgdG8KICAgdGhlIHRocmVhZCBtYW5hZ2VyIHVuZGVyIGRlYnVnZ2luZyBtb2Rl
KSwgdGhlIHRocmVhZCBtYW5hZ2VyIHRocm93cwogICBfX3B0aHJlYWRfc2lnX2RlYnVnIHRvIGl0
c2VsZi4gVGhlIGRlYnVnZ2VyIChpZiBhY3RpdmUpIGludGVyY2VwdHMKICAgdGhpcyBzaWduYWws
IHRha2VzIGludG8gYWNjb3VudCBuZXcgdGhyZWFkcyBhbmQgY29udGludWUgZXhlY3V0aW9uCiAg
IG9mIHRoZSB0aHJlYWQgbWFuYWdlciBieSBwcm9wYWdhdGluZyB0aGUgc2lnbmFsIGJlY2F1c2Ug
aXQgZG9lc24ndAogICBrbm93IHdoYXQgaXQgaXMgc3BlY2lmaWNhbGx5IGRvbmUgZm9yLiBJbiB0
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwKICAgdGhlIHRocmVhZCBtYW5hZ2VyIHNpbXBseSBk
aXNjYXJkcyBpdC4gKi8KCnN0YXRpYyB2b2lkIHB0aHJlYWRfaGFuZGxlX3NpZ2RlYnVnKGludCBz
aWcpCnsKICAvKiBOb3RoaW5nICovCn0KCi8qIFJlc2V0IHRoZSBzdGF0ZSBvZiB0aGUgdGhyZWFk
IG1hY2hpbmVyeSBhZnRlciBhIGZvcmsoKS4KICAgQ2xvc2UgdGhlIHBpcGUgdXNlZCBmb3IgcmVx
dWVzdHMgYW5kIHNldCB0aGUgbWFpbiB0aHJlYWQgdG8gdGhlIGZvcmtlZAogICB0aHJlYWQuCiAg
IE5vdGljZSB0aGF0IHdlIGNhbid0IGZyZWUgdGhlIHN0YWNrIHNlZ21lbnRzLCBhcyB0aGUgZm9y
a2VkIHRocmVhZAogICBtYXkgaG9sZCBwb2ludGVycyBpbnRvIHRoZW0uICovCgp2b2lkIF9fcHRo
cmVhZF9yZXNldF9tYWluX3RocmVhZCh2b2lkKQp7CiAgcHRocmVhZF9kZXNjciBzZWxmID0gdGhy
ZWFkX3NlbGYoKTsKICBzdHJ1Y3QgcmxpbWl0IGxpbWl0OwoKICBpZiAoX19wdGhyZWFkX21hbmFn
ZXJfcmVxdWVzdCAhPSAtMSkgewogICAgLyogRnJlZSB0aGUgdGhyZWFkIG1hbmFnZXIgc3RhY2sg
Ki8KICAgIGZyZWUoX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2Jvcyk7CiAgICBfX3B0aHJlYWRf
bWFuYWdlcl90aHJlYWRfYm9zID0gX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3RvcyA9IE5VTEw7
CiAgICAvKiBDbG9zZSB0aGUgdHdvIGVuZHMgb2YgdGhlIHBpcGUgKi8KICAgIF9fbGliY19jbG9z
ZShfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0KTsKICAgIF9fbGliY19jbG9zZShfX3B0aHJlYWRf
bWFuYWdlcl9yZWFkZXIpOwogICAgX19wdGhyZWFkX21hbmFnZXJfcmVxdWVzdCA9IF9fcHRocmVh
ZF9tYW5hZ2VyX3JlYWRlciA9IC0xOwogIH0KCiAgLyogVXBkYXRlIHRoZSBwaWQgb2YgdGhlIG1h
aW4gdGhyZWFkICovCiAgVEhSRUFEX1NFVE1FTShzZWxmLCBwX3BpZCwgX19nZXRwaWQoKSk7CiAg
LyogTWFrZSB0aGUgZm9ya2VkIHRocmVhZCB0aGUgbWFpbiB0aHJlYWQgKi8KICBfX3B0aHJlYWRf
bWFpbl90aHJlYWQgPSBzZWxmOwogIFRIUkVBRF9TRVRNRU0oc2VsZiwgcF9uZXh0bGl2ZSwgc2Vs
Zik7CiAgVEhSRUFEX1NFVE1FTShzZWxmLCBwX3ByZXZsaXZlLCBzZWxmKTsKICAvKiBOb3cgdGhp
cyB0aHJlYWQgbW9kaWZpZXMgdGhlIGdsb2JhbCB2YXJpYWJsZXMuICAqLwogIFRIUkVBRF9TRVRN
RU0oc2VsZiwgcF9lcnJub3AsICZfZXJybm8pOwogIFRIUkVBRF9TRVRNRU0oc2VsZiwgcF9oX2Vy
cm5vcCwgJl9oX2Vycm5vKTsKICBUSFJFQURfU0VUTUVNKHNlbGYsIHBfcmVzcCwgJl9yZXMpOwoK
ICBpZiAoZ2V0cmxpbWl0IChSTElNSVRfU1RBQ0ssICZsaW1pdCkgPT0gMAogICAgICAmJiBsaW1p
dC5ybGltX2N1ciAhPSBsaW1pdC5ybGltX21heCkgewogICAgbGltaXQucmxpbV9jdXIgPSBsaW1p
dC5ybGltX21heDsKICAgIHNldHJsaW1pdChSTElNSVRfU1RBQ0ssICZsaW1pdCk7CiAgfQp9Cgov
KiBQcm9jZXNzLXdpZGUgZXhlYygpIHJlcXVlc3QgKi8KCnZvaWQgX19wdGhyZWFkX2tpbGxfb3Ro
ZXJfdGhyZWFkc19ucCh2b2lkKQp7CiAgc3RydWN0IHNpZ2FjdGlvbiBzYTsKICAvKiBUZXJtaW5h
dGUgYWxsIG90aGVyIHRocmVhZHMgYW5kIHRocmVhZCBtYW5hZ2VyICovCiAgcHRocmVhZF9vbmV4
aXRfcHJvY2VzcygwLCBOVUxMKTsKICAvKiBNYWtlIGN1cnJlbnQgdGhyZWFkIHRoZSBtYWluIHRo
cmVhZCBpbiBjYXNlIHRoZSBjYWxsaW5nIHRocmVhZAogICAgIGNoYW5nZXMgaXRzIG1pbmQsIGRv
ZXMgbm90IGV4ZWMoKSwgYW5kIGNyZWF0ZXMgbmV3IHRocmVhZHMgaW5zdGVhZC4gKi8KICBfX3B0
aHJlYWRfcmVzZXRfbWFpbl90aHJlYWQoKTsKCiAgLyogUmVzZXQgdGhlIHNpZ25hbCBoYW5kbGVy
cyBiZWhhdmlvdXIgZm9yIHRoZSBzaWduYWxzIHRoZQogICAgIGltcGxlbWVudGF0aW9uIHVzZXMg
c2luY2UgdGhpcyB3b3VsZCBiZSBwYXNzZWQgdG8gdGhlIG5ldwogICAgIHByb2Nlc3MuICAqLwog
IHNpZ2VtcHR5c2V0KCZzYS5zYV9tYXNrKTsKICBzYS5zYV9mbGFncyA9IDA7CiAgc2Euc2FfaGFu
ZGxlciA9IFNJR19ERkw7CiAgX19saWJjX3NpZ2FjdGlvbihfX3B0aHJlYWRfc2lnX3Jlc3RhcnQs
ICZzYSwgTlVMTCk7CiAgX19saWJjX3NpZ2FjdGlvbihfX3B0aHJlYWRfc2lnX2NhbmNlbCwgJnNh
LCBOVUxMKTsKICBpZiAoX19wdGhyZWFkX3NpZ19kZWJ1ZyA+IDApCiAgICBfX2xpYmNfc2lnYWN0
aW9uKF9fcHRocmVhZF9zaWdfZGVidWcsICZzYSwgTlVMTCk7Cn0Kd2Vha19hbGlhcyAoX19wdGhy
ZWFkX2tpbGxfb3RoZXJfdGhyZWFkc19ucCwgcHRocmVhZF9raWxsX290aGVyX3RocmVhZHNfbnAp
CgovKiBDb25jdXJyZW5jeSBzeW1ib2wgbGV2ZWwuICAqLwpzdGF0aWMgaW50IGN1cnJlbnRfbGV2
ZWw7CgppbnQgX19wdGhyZWFkX3NldGNvbmN1cnJlbmN5KGludCBsZXZlbCkKewogIC8qIFdlIGRv
bid0IGRvIGFueXRoaW5nIHVubGVzcyB3ZSBoYXZlIGZvdW5kIGEgdXNlZnVsIGludGVycHJldGF0
aW9uLiAgKi8KICBjdXJyZW50X2xldmVsID0gbGV2ZWw7CiAgcmV0dXJuIDA7Cn0Kd2Vha19hbGlh
cyAoX19wdGhyZWFkX3NldGNvbmN1cnJlbmN5LCBwdGhyZWFkX3NldGNvbmN1cnJlbmN5KQoKaW50
IF9fcHRocmVhZF9nZXRjb25jdXJyZW5jeSh2b2lkKQp7CiAgcmV0dXJuIGN1cnJlbnRfbGV2ZWw7
Cn0Kd2Vha19hbGlhcyAoX19wdGhyZWFkX2dldGNvbmN1cnJlbmN5LCBwdGhyZWFkX2dldGNvbmN1
cnJlbmN5KQoKLyogUHJpbWl0aXZlcyBmb3IgY29udHJvbGxpbmcgdGhyZWFkIGV4ZWN1dGlvbiAq
LwoKdm9pZCBfX3B0aHJlYWRfd2FpdF9mb3JfcmVzdGFydF9zaWduYWwocHRocmVhZF9kZXNjciBz
ZWxmKQp7CiAgc2lnc2V0X3QgbWFzazsKCiAgc2lncHJvY21hc2soU0lHX1NFVE1BU0ssIE5VTEws
ICZtYXNrKTsgLyogR2V0IGN1cnJlbnQgc2lnbmFsIG1hc2sgKi8KICBzaWdkZWxzZXQoJm1hc2ss
IF9fcHRocmVhZF9zaWdfcmVzdGFydCk7IC8qIFVuYmxvY2sgdGhlIHJlc3RhcnQgc2lnbmFsICov
CiAgVEhSRUFEX1NFVE1FTShzZWxmLCBwX3NpZ25hbCwgMCk7CiAgZG8gewogICAgc2lnc3VzcGVu
ZCgmbWFzayk7ICAgICAgICAgICAgICAgICAgIC8qIFdhaXQgZm9yIHNpZ25hbCAqLwogIH0gd2hp
bGUgKFRIUkVBRF9HRVRNRU0oc2VsZiwgcF9zaWduYWwpICE9X19wdGhyZWFkX3NpZ19yZXN0YXJ0
KTsKCiAgUkVBRF9NRU1PUllfQkFSUklFUigpOyAvKiBTZWUgY29tbWVudCBpbiBfX3B0aHJlYWRf
cmVzdGFydF9uZXcgKi8KfQoKI2lmICFfX0FTU1VNRV9SRUFMVElNRV9TSUdOQUxTCi8qIFRoZSBf
b2xkIHZhcmlhbnRzIGFyZSBmb3IgMi4wIGFuZCBlYXJseSAyLjEga2VybmVscyB3aGljaCBkb24n
dCBoYXZlIFJUCiAgIHNpZ25hbHMuCiAgIE9uIHRoZXNlIGtlcm5lbHMsIHdlIHVzZSBTSUdVU1Ix
IGFuZCBTSUdVU1IyIGZvciByZXN0YXJ0IGFuZCBjYW5jZWxsYXRpb24uCiAgIFNpbmNlIHRoZSBy
ZXN0YXJ0IHNpZ25hbCBkb2VzIG5vdCBxdWV1ZSwgd2UgdXNlIGFuIGF0b21pYyBjb3VudGVyIHRv
IGNyZWF0ZQogICBxdWV1aW5nIHNlbWFudGljcy4gVGhpcyBpcyBuZWVkZWQgdG8gcmVzb2x2ZSBh
IHJhcmUgcmFjZSBjb25kaXRpb24gaW4KICAgcHRocmVhZF9jb25kX3RpbWVkd2FpdF9yZWxhdGl2
ZS4gKi8KCnZvaWQgX19wdGhyZWFkX3Jlc3RhcnRfb2xkKHB0aHJlYWRfZGVzY3IgdGgpCnsKICBp
ZiAoYXRvbWljX2luY3JlbWVudCgmdGgtPnBfcmVzdW1lX2NvdW50KSA9PSAtMSkKICAgIGtpbGwo
dGgtPnBfcGlkLCBfX3B0aHJlYWRfc2lnX3Jlc3RhcnQpOwp9Cgp2b2lkIF9fcHRocmVhZF9zdXNw
ZW5kX29sZChwdGhyZWFkX2Rlc2NyIHNlbGYpCnsKICBpZiAoYXRvbWljX2RlY3JlbWVudCgmc2Vs
Zi0+cF9yZXN1bWVfY291bnQpIDw9IDApCiAgICBfX3B0aHJlYWRfd2FpdF9mb3JfcmVzdGFydF9z
aWduYWwoc2VsZik7Cn0KCmludApfX3B0aHJlYWRfdGltZWRzdXNwZW5kX29sZChwdGhyZWFkX2Rl
c2NyIHNlbGYsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqYWJzdGltZSkKewogIHNpZ3NldF90IHVu
YmxvY2ssIGluaXRpYWxfbWFzazsKICBpbnQgd2FzX3NpZ25hbGxlZCA9IDA7CiAgc2lnam1wX2J1
ZiBqbXBidWY7CgogIGlmIChhdG9taWNfZGVjcmVtZW50KCZzZWxmLT5wX3Jlc3VtZV9jb3VudCkg
PT0gMCkgewogICAgLyogU2V0IHVwIGEgbG9uZ2ptcCBoYW5kbGVyIGZvciB0aGUgcmVzdGFydCBz
aWduYWwsIHVuYmxvY2sKICAgICAgIHRoZSBzaWduYWwgYW5kIHNsZWVwLiAqLwoKICAgIGlmIChz
aWdzZXRqbXAoam1wYnVmLCAxKSA9PSAwKSB7CiAgICAgIFRIUkVBRF9TRVRNRU0oc2VsZiwgcF9z
aWduYWxfam1wLCAmam1wYnVmKTsKICAgICAgVEhSRUFEX1NFVE1FTShzZWxmLCBwX3NpZ25hbCwg
MCk7CiAgICAgIC8qIFVuYmxvY2sgdGhlIHJlc3RhcnQgc2lnbmFsICovCiAgICAgIHNpZ2VtcHR5
c2V0KCZ1bmJsb2NrKTsKICAgICAgc2lnYWRkc2V0KCZ1bmJsb2NrLCBfX3B0aHJlYWRfc2lnX3Jl
c3RhcnQpOwogICAgICBzaWdwcm9jbWFzayhTSUdfVU5CTE9DSywgJnVuYmxvY2ssICZpbml0aWFs
X21hc2spOwoKICAgICAgd2hpbGUgKDEpIHsKCXN0cnVjdCB0aW1ldmFsIG5vdzsKCXN0cnVjdCB0
aW1lc3BlYyByZWx0aW1lOwoKCS8qIENvbXB1dGUgYSB0aW1lIG9mZnNldCByZWxhdGl2ZSB0byBu
b3cuICAqLwoJX19nZXR0aW1lb2ZkYXkgKCZub3csIE5VTEwpOwoJcmVsdGltZS50dl9uc2VjID0g
YWJzdGltZS0+dHZfbnNlYyAtIG5vdy50dl91c2VjICogMTAwMDsKCXJlbHRpbWUudHZfc2VjID0g
YWJzdGltZS0+dHZfc2VjIC0gbm93LnR2X3NlYzsKCWlmIChyZWx0aW1lLnR2X25zZWMgPCAwKSB7
CgkgIHJlbHRpbWUudHZfbnNlYyArPSAxMDAwMDAwMDAwOwoJICByZWx0aW1lLnR2X3NlYyAtPSAx
OwoJfQoKCS8qIFNsZWVwIGZvciB0aGUgcmVxdWlyZWQgZHVyYXRpb24uIElmIHdva2VuIGJ5IGEg
c2lnbmFsLAoJICAgcmVzdW1lIHdhaXRpbmcgYXMgcmVxdWlyZWQgYnkgU2luZ2xlIFVuaXggU3Bl
Y2lmaWNhdGlvbi4gICovCglpZiAocmVsdGltZS50dl9zZWMgPCAwIHx8IF9fbGliY19uYW5vc2xl
ZXAoJnJlbHRpbWUsIE5VTEwpID09IDApCgkgIGJyZWFrOwogICAgICB9CgogICAgICAvKiBCbG9j
ayB0aGUgcmVzdGFydCBzaWduYWwgYWdhaW4gKi8KICAgICAgc2lncHJvY21hc2soU0lHX1NFVE1B
U0ssICZpbml0aWFsX21hc2ssIE5VTEwpOwogICAgICB3YXNfc2lnbmFsbGVkID0gMDsKICAgIH0g
ZWxzZSB7CiAgICAgIHdhc19zaWduYWxsZWQgPSAxOwogICAgfQogICAgVEhSRUFEX1NFVE1FTShz
ZWxmLCBwX3NpZ25hbF9qbXAsIE5VTEwpOwogIH0KCiAgLyogTm93IHdhc19zaWduYWxsZWQgaXMg
dHJ1ZSBpZiB3ZSBleGl0ZWQgdGhlIGFib3ZlIGNvZGUKICAgICBkdWUgdG8gdGhlIGRlbGl2ZXJ5
IG9mIGEgcmVzdGFydCBzaWduYWwuICBJbiB0aGF0IGNhc2UsCiAgICAgd2Uga25vdyB3ZSBoYXZl
IGJlZW4gZGVxdWV1ZWQgYW5kIHJlc3VtZWQgYW5kIHRoYXQgdGhlCiAgICAgcmVzdW1lIGNvdW50
IGlzIGJhbGFuY2VkLiAgT3RoZXJ3aXNlLCB0aGVyZSBhcmUgc29tZQogICAgIGNhc2VzIHRvIGNv
bnNpZGVyLiBGaXJzdCwgdHJ5IHRvIGJ1bXAgdXAgdGhlIHJlc3VtZSBjb3VudAogICAgIGJhY2sg
dG8gemVyby4gSWYgaXQgZ29lcyB0byAxLCBpdCBtZWFucyByZXN0YXJ0KCkgd2FzCiAgICAgaW52
b2tlZCBvbiB0aGlzIHRocmVhZC4gVGhlIHNpZ25hbCBtdXN0IGJlIGNvbnN1bWVkCiAgICAgYW5k
IHRoZSBjb3VudCBidW1wZWQgZG93biBhbmQgZXZlcnl0aGluZyBpcyBjb29sLiBXZQogICAgIGNh
biByZXR1cm4gYSAxIHRvIHRoZSBjYWxsZXIuCiAgICAgT3RoZXJ3aXNlLCBubyByZXN0YXJ0IHdh
cyBkZWxpdmVyZWQgeWV0LCBzbyBhIHBvdGVudGlhbAogICAgIHJhY2UgZXhpc3RzOyB3ZSByZXR1
cm4gYSAwIHRvIHRoZSBjYWxsZXIgd2hpY2ggbXVzdCBkZWFsCiAgICAgd2l0aCB0aGlzIHJhY2Ug
aW4gYW4gYXBwcm9wcmlhdGUgd2F5OyBmb3IgZXhhbXBsZSBieQogICAgIGF0b21pY2FsbHkgcmVt
b3ZpbmcgdGhlIHRocmVhZCBmcm9tIGNvbnNpZGVyYXRpb24gZm9yIGEKICAgICB3YWtldXAtLS1p
ZiBzdWNoIGEgdGhpbmcgZmFpbHMsIGl0IG1lYW5zIGEgcmVzdGFydCBpcwogICAgIGJlaW5nIGRl
bGl2ZXJlZC4gKi8KCiAgaWYgKCF3YXNfc2lnbmFsbGVkKSB7CiAgICBpZiAoYXRvbWljX2luY3Jl
bWVudCgmc2VsZi0+cF9yZXN1bWVfY291bnQpICE9IC0xKSB7CiAgICAgIF9fcHRocmVhZF93YWl0
X2Zvcl9yZXN0YXJ0X3NpZ25hbChzZWxmKTsKICAgICAgYXRvbWljX2RlY3JlbWVudCgmc2VsZi0+
cF9yZXN1bWVfY291bnQpOyAvKiBzaG91bGQgYmUgemVybyBub3chICovCiAgICAgIC8qIHdva2Ug
c3BvbnRhbmVvdXNseSBhbmQgY29uc3VtZWQgcmVzdGFydCBzaWduYWwgKi8KICAgICAgcmV0dXJu
IDE7CiAgICB9CiAgICAvKiB3b2tlIHNwb250YW5lb3VzbHkgYnV0IGRpZCBub3QgY29uc3VtZSBy
ZXN0YXJ0LS0tY2FsbGVyIG11c3QgcmVzb2x2ZSAqLwogICAgcmV0dXJuIDA7CiAgfQogIC8qIHdv
a2VuIGR1ZSB0byByZXN0YXJ0IHNpZ25hbCAqLwogIHJldHVybiAxOwp9CiNlbmRpZiAvKiBfX0FT
U1VNRV9SRUFMVElNRV9TSUdOQUxTICovCgp2b2lkIF9fcHRocmVhZF9yZXN0YXJ0X25ldyhwdGhy
ZWFkX2Rlc2NyIHRoKQp7CiAgLyogVGhlIGJhcnJpZXIgaXMgcHJvYWJhYmx5IG5vdCBuZWVkZWQs
IGluIHdoaWNoIGNhc2UgaXQgc3RpbGwgZG9jdW1lbnRzCiAgICAgb3VyIGFzc3VtcHRpb25zLiBU
aGUgaW50ZW50IGlzIHRvIGNvbW1pdCBwcmV2aW91cyB3cml0ZXMgdG8gc2hhcmVkCiAgICAgbWVt
b3J5IHNvIHRoZSB3b2tlbiB0aHJlYWQgd2lsbCBoYXZlIGEgY29uc2lzdGVudCB2aWV3LiAgQ29t
cGxlbWVudGFyeQogICAgIHJlYWQgYmFycmllcnMgYXJlIHByZXNlbnQgdG8gdGhlIHN1c3BlbmQg
ZnVuY3Rpb25zLiAqLwogIFdSSVRFX01FTU9SWV9CQVJSSUVSKCk7CiAga2lsbCh0aC0+cF9waWQs
IF9fcHRocmVhZF9zaWdfcmVzdGFydCk7Cn0KCi8qIFRoZXJlIGlzIG5vIF9fcHRocmVhZF9zdXNw
ZW5kX25ldyBiZWNhdXNlIGl0IHdvdWxkIGp1c3QKICAgYmUgYSB3YXN0ZWZ1bCB3cmFwcGVyIGZv
ciBfX3B0aHJlYWRfd2FpdF9mb3JfcmVzdGFydF9zaWduYWwgKi8KCmludApfX3B0aHJlYWRfdGlt
ZWRzdXNwZW5kX25ldyhwdGhyZWFkX2Rlc2NyIHNlbGYsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAq
YWJzdGltZSkKewogIHNpZ3NldF90IHVuYmxvY2ssIGluaXRpYWxfbWFzazsKICBpbnQgd2FzX3Np
Z25hbGxlZCA9IDA7CiAgc2lnam1wX2J1ZiBqbXBidWY7CgogIGlmIChzaWdzZXRqbXAoam1wYnVm
LCAxKSA9PSAwKSB7CiAgICBUSFJFQURfU0VUTUVNKHNlbGYsIHBfc2lnbmFsX2ptcCwgJmptcGJ1
Zik7CiAgICBUSFJFQURfU0VUTUVNKHNlbGYsIHBfc2lnbmFsLCAwKTsKICAgIC8qIFVuYmxvY2sg
dGhlIHJlc3RhcnQgc2lnbmFsICovCiAgICBzaWdlbXB0eXNldCgmdW5ibG9jayk7CiAgICBzaWdh
ZGRzZXQoJnVuYmxvY2ssIF9fcHRocmVhZF9zaWdfcmVzdGFydCk7CiAgICBzaWdwcm9jbWFzayhT
SUdfVU5CTE9DSywgJnVuYmxvY2ssICZpbml0aWFsX21hc2spOwoKICAgIHdoaWxlICgxKSB7CiAg
ICAgIHN0cnVjdCB0aW1ldmFsIG5vdzsKICAgICAgc3RydWN0IHRpbWVzcGVjIHJlbHRpbWU7Cgog
ICAgICAvKiBDb21wdXRlIGEgdGltZSBvZmZzZXQgcmVsYXRpdmUgdG8gbm93LiAgKi8KICAgICAg
X19nZXR0aW1lb2ZkYXkgKCZub3csIE5VTEwpOwogICAgICByZWx0aW1lLnR2X25zZWMgPSBhYnN0
aW1lLT50dl9uc2VjIC0gbm93LnR2X3VzZWMgKiAxMDAwOwogICAgICByZWx0aW1lLnR2X3NlYyA9
IGFic3RpbWUtPnR2X3NlYyAtIG5vdy50dl9zZWM7CiAgICAgIGlmIChyZWx0aW1lLnR2X25zZWMg
PCAwKSB7CglyZWx0aW1lLnR2X25zZWMgKz0gMTAwMDAwMDAwMDsKCXJlbHRpbWUudHZfc2VjIC09
IDE7CiAgICAgIH0KCiAgICAgIC8qIFNsZWVwIGZvciB0aGUgcmVxdWlyZWQgZHVyYXRpb24uIElm
IHdva2VuIGJ5IGEgc2lnbmFsLAoJIHJlc3VtZSB3YWl0aW5nIGFzIHJlcXVpcmVkIGJ5IFNpbmds
ZSBVbml4IFNwZWNpZmljYXRpb24uICAqLwogICAgICBpZiAocmVsdGltZS50dl9zZWMgPCAwIHx8
IF9fbGliY19uYW5vc2xlZXAoJnJlbHRpbWUsIE5VTEwpID09IDApCglicmVhazsKICAgIH0KCiAg
ICAvKiBCbG9jayB0aGUgcmVzdGFydCBzaWduYWwgYWdhaW4gKi8KICAgIHNpZ3Byb2NtYXNrKFNJ
R19TRVRNQVNLLCAmaW5pdGlhbF9tYXNrLCBOVUxMKTsKICAgIHdhc19zaWduYWxsZWQgPSAwOwog
IH0gZWxzZSB7CiAgICB3YXNfc2lnbmFsbGVkID0gMTsKICB9CiAgVEhSRUFEX1NFVE1FTShzZWxm
LCBwX3NpZ25hbF9qbXAsIE5VTEwpOwoKICAvKiBOb3cgd2FzX3NpZ25hbGxlZCBpcyB0cnVlIGlm
IHdlIGV4aXRlZCB0aGUgYWJvdmUgY29kZQogICAgIGR1ZSB0byB0aGUgZGVsaXZlcnkgb2YgYSBy
ZXN0YXJ0IHNpZ25hbC4gIEluIHRoYXQgY2FzZSwKICAgICBldmVyeXRoaW5nIGlzIGNvb2wuIFdl
IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gd2hhdGV2ZXIKICAgICB3ZSB3ZXJlIHdhaXRpbmcgb24g
YnkgdGhlIG90aGVyIHRocmVhZCwgYW5kIGNvbnN1bWVkIGl0cyBzaWduYWwuCgogICAgIE90aGVy
d2lzZSB3ZSB0aGlzIHRocmVhZCB3b2tlIHVwIHNwb250YW5lb3VzbHksIG9yIGR1ZSB0byBhIHNp
Z25hbCBvdGhlcgogICAgIHRoYW4gcmVzdGFydC4gVGhpcyBpcyBhbiBhbWJpZ3VvdXMgY2FzZSAg
dGhhdCBtdXN0IGJlIHJlc29sdmVkIGJ5CiAgICAgdGhlIGNhbGxlcjsgdGhlIHRocmVhZCBpcyBz
dGlsbCBlbGlnaWJsZSBmb3IgYSByZXN0YXJ0IHdha2V1cAogICAgIHNvIHRoZXJlIGlzIGEgcmFj
ZS4gKi8KCiAgUkVBRF9NRU1PUllfQkFSUklFUigpOyAvKiBTZWUgY29tbWVudCBpbiBfX3B0aHJl
YWRfcmVzdGFydF9uZXcgKi8KICByZXR1cm4gd2FzX3NpZ25hbGxlZDsKfQoKCi8qIERlYnVnZ2lu
ZyBhaWQgKi8KCiNpZmRlZiBERUJVRwojaW5jbHVkZSA8c3RkYXJnLmg+Cgp2b2lkIF9fcHRocmVh
ZF9tZXNzYWdlKGNoYXIgKiBmbXQsIC4uLikKewogIGNoYXIgYnVmZmVyWzEwMjRdOwogIHZhX2xp
c3QgYXJnczsKICBzcHJpbnRmKGJ1ZmZlciwgIiUwNWQgOiAiLCBfX2dldHBpZCgpKTsKICB2YV9z
dGFydChhcmdzLCBmbXQpOwogIHZzbnByaW50ZihidWZmZXIgKyA4LCBzaXplb2YoYnVmZmVyKSAt
IDgsIGZtdCwgYXJncyk7CiAgdmFfZW5kKGFyZ3MpOwogIFRFTVBfRkFJTFVSRV9SRVRSWShfX2xp
YmNfd3JpdGUoMiwgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSkpOwp9CgojZW5kaWYKCgojaWZuZGVm
IFNIQVJFRAovKiBXZSBuZWVkIGEgaG9vayB0byBmb3JjZSB0aGUgY2FuY2VsYXRpb24gd3JhcHBl
cnMgYW5kIGZpbGUgbG9ja2luZwogICB0byBiZSBsaW5rZWQgaW4gd2hlbiBzdGF0aWMgbGlicHRo
cmVhZCBpcyB1c2VkLiAgKi8KZXh0ZXJuIGNvbnN0IGludCBfX3B0aHJlYWRfcHJvdmlkZV93cmFw
cGVyczsKc3RhdGljIGNvbnN0IGludCAqY29uc3QgX19wdGhyZWFkX3JlcXVpcmVfd3JhcHBlcnMg
PQogICZfX3B0aHJlYWRfcHJvdmlkZV93cmFwcGVyczsKZXh0ZXJuIGNvbnN0IGludCBfX3B0aHJl
YWRfcHJvdmlkZV9sb2NrZmlsZTsKc3RhdGljIGNvbnN0IGludCAqY29uc3QgX19wdGhyZWFkX3Jl
cXVpcmVfbG9ja2ZpbGUgPQogICZfX3B0aHJlYWRfcHJvdmlkZV9sb2NrZmlsZTsKI2VuZGlmCg==
--Multipart_Sat__26_Oct_2002_13:24:27_+0000_081c8688
Content-Type: application/octet-stream;
name="pthread.i"
Content-Disposition: attachment;
filename="pthread.i"
Content-Transfer-Encoding: base64
IyAxICJwdGhyZWFkLmMiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZCBsaW5lPiIKIyAx
ICIuLi9pbmNsdWRlL2xpYmMtc3ltYm9scy5oIiAxCiMgNTQgIi4uL2luY2x1ZGUvbGliYy1zeW1i
b2xzLmgiCiMgMSAiL3Vzci9zcmMvZ2xpYmMtMi4yLjUtYnVpbGQvY29uZmlnLmgiIDEKIyA1NSAi
Li4vaW5jbHVkZS9saWJjLXN5bWJvbHMuaCIgMgojIDIgIjxjb21tYW5kIGxpbmU+IiAyCiMgMSAi
cHRocmVhZC5jIgojIDE4ICJwdGhyZWFkLmMiCiMgMSAiLi4vaW5jbHVkZS9lcnJuby5oIiAxCiMg
MjkgIi4uL2luY2x1ZGUvZXJybm8uaCIKIyAxICIuLi9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEKIyAy
ODMgIi4uL2luY2x1ZGUvZmVhdHVyZXMuaCIKIyAxICIuLi9pbmNsdWRlL3N5cy9jZGVmcy5oIiAx
CiMgMSAiLi4vbWlzYy9zeXMvY2RlZnMuaCIgMQojIDIgIi4uL2luY2x1ZGUvc3lzL2NkZWZzLmgi
IDIKIyAyODQgIi4uL2luY2x1ZGUvZmVhdHVyZXMuaCIgMgojIDMwICIuLi9pbmNsdWRlL2Vycm5v
LmgiIDIKCgoKCgoKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL2Vycm5vLmgi
IDEKIyAyNSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9lcnJuby5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMKCgoKIyAxICIvdXNy
L3NyYy9saW51eC10aGlzL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEgMwojIDUgIi91c3Ivc3JjL2xp
bnV4LXRoaXMvaW5jbHVkZS9saW51eC9lcnJuby5oIiAyIDMKIyAyNiAiLi4vc3lzZGVwcy91bml4
L3N5c3YvbGludXgvYml0cy9lcnJuby5oIiAyCiMgMzYgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xp
bnV4L2JpdHMvZXJybm8uaCIKZXh0ZXJuIGludCBlcnJubzsKCgpleHRlcm4gaW50ICpfX2Vycm5v
X2xvY2F0aW9uICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMzcgIi4uL2lu
Y2x1ZGUvZXJybm8uaCIgMgojIDU1ICIuLi9pbmNsdWRlL2Vycm5vLmgiCmV4dGVybiBjaGFyICpw
cm9ncmFtX2ludm9jYXRpb25fbmFtZSwgKnByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lOwoK
CgoKIyA2OSAiLi4vaW5jbHVkZS9lcnJuby5oIgp0eXBlZGVmIGludCBlcnJvcl90OwojIDE5ICJw
dGhyZWFkLmMiIDIKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwojIDIw
MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYu
aCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CiMgMjk0ICIvdXNyL2xpYi9nY2MtbGli
L2k1ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgbG9uZyBp
bnQgd2NoYXJfdDsKIyAyMCAicHRocmVhZC5jIiAyCiMgMSAiLi4vaW5jbHVkZS9zdGRpby5oIiAx
CiMgMTAgIi4uL2luY2x1ZGUvc3RkaW8uaCIKIyAxICIuLi9saWJpby9zdGRpby5oIiAxCiMgMzAg
Ii4uL2xpYmlvL3N0ZGlvLmgiCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51
eC1nbnUvMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM1ICIuLi9saWJpby9zdGRpby5oIiAy
CgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvdHlwZXMuaCIgMQojIDI5ICIu
Li9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3R5cGVzLmgiCiMgMSAiL3Vzci9saWIvZ2Nj
LWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi4u
L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvdHlwZXMuaCIgMgoKCnR5cGVkZWYgdW5zaWdu
ZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsK
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIuLi9z
eXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3R5cGVzLmgiCnR5cGVkZWYgc2lnbmVkIGNoYXIg
X19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVk
IHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2
X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9f
dWludDMyX3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19p
bnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3Vp
bnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90
IF9fZGV2X3Q7CnR5cGVkZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRf
dDsKdHlwZWRlZiBfX3VfbG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5
cGVkZWYgX191X2ludCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRl
ZiBfX3F1YWRfdCBfX2xvZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19z
c2l6ZV90Owp0eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19y
bGltNjRfdDsKdHlwZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAg
aW50IF9fdmFsWzJdOwogIH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBl
ZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7
CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7
CgoKdHlwZWRlZiBpbnQgX19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgoK
Cgp0eXBlZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBj
X3BpZF90OwoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25n
IGludCBfX2Jsa2NudF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVm
IF9fdV9sb25nIF9fZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90
OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19m
c2ZpbGNudDY0X3Q7CgoKdHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9f
bG9mZl90IF9fb2ZmNjRfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRy
X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgojIDEgIi4uL2xpbnV4
dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvYml0cy9wdGhyZWFkdHlwZXMuaCIgMQojIDIzICIuLi9s
aW51eHRocmVhZHMvc3lzZGVwcy9wdGhyZWFkL2JpdHMvcHRocmVhZHR5cGVzLmgiCiMgMSAiLi4v
c3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zY2hlZC5oIiAxCiMgNjggIi4uL3N5c2RlcHMv
dW5peC9zeXN2L2xpbnV4L2JpdHMvc2NoZWQuaCIKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAg
ICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9OwojIDI0ICIuLi9saW51eHRocmVhZHMvc3lzZGVw
cy9wdGhyZWFkL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIKCgpzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxv
Y2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBfX3NwaW5sb2NrOwoKfTsKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsKCgoKCgp0eXBl
ZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsKICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQg
X19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50
IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBp
bnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNr
c2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRo
cmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBw
dGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJl
YWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoK
CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291bnQ7CiAg
X3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJl
YWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVj
dAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYg
aW50IHB0aHJlYWRfb25jZV90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfcndsb2NrX3QK
ewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX3J3X2xvY2s7CiAgaW50IF9fcndfcmVhZGVy
czsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlcjsKICBfcHRocmVhZF9kZXNjciBfX3J3X3Jl
YWRfd2FpdGluZzsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlX3dhaXRpbmc7CiAgaW50IF9f
cndfa2luZDsKICBpbnQgX19yd19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKCnR5cGVk
ZWYgc3RydWN0CnsKICBpbnQgX19sb2Nra2luZDsKICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRf
cndsb2NrYXR0cl90OwoKCgoKdHlwZWRlZiB2b2xhdGlsZSBpbnQgcHRocmVhZF9zcGlubG9ja190
OwoKCnR5cGVkZWYgc3RydWN0IHsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19iYV9sb2Nr
OwogIGludCBfX2JhX3JlcXVpcmVkOwogIGludCBfX2JhX3ByZXNlbnQ7CiAgX3B0aHJlYWRfZGVz
Y3IgX19iYV93YWl0aW5nOwp9IHB0aHJlYWRfYmFycmllcl90OwoKCnR5cGVkZWYgc3RydWN0IHsK
ICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfYmFycmllcmF0dHJfdDsKCgoKCgp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKIyAxNDQgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xp
bnV4L2JpdHMvdHlwZXMuaCIgMgojIDM3ICIuLi9saWJpby9zdGRpby5oIiAyCiMgNDUgIi4uL2xp
YmlvL3N0ZGlvLmgiCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNTUgIi4uL2xpYmlv
L3N0ZGlvLmgiCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9fRklMRTsKIyA2NSAiLi4vbGliaW8v
c3RkaW8uaCIKIyAxICIuLi9saWJpby9saWJpby5oIiAxCiMgMzIgIi4uL2xpYmlvL2xpYmlvLmgi
CiMgMSAiLi4vc3lzZGVwcy9nbnUvX0dfY29uZmlnLmgiIDEKIyAxNCAiLi4vc3lzZGVwcy9nbnUv
X0dfY29uZmlnLmgiCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzIxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGlu
dXgtZ251LzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHdpbnRf
dDsKIyAxNSAiLi4vc3lzZGVwcy9nbnUvX0dfY29uZmlnLmgiIDIKIyAyNCAiLi4vc3lzZGVwcy9n
bnUvX0dfY29uZmlnLmgiCiMgMSAiLi4vaW5jbHVkZS93Y2hhci5oIiAxCgojIDEgIi4uL3djc21i
cy93Y2hhci5oIiAxCiMgNDggIi4uL3djc21icy93Y2hhci5oIgojIDEgIi91c3IvbGliL2djYy1s
aWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ5ICIuLi93
Y3NtYnMvd2NoYXIuaCIgMgoKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2Jp
dHMvd2NoYXIuaCIgMQojIDUxICIuLi93Y3NtYnMvd2NoYXIuaCIgMgojIDY3ICIuLi93Y3NtYnMv
d2NoYXIuaCIKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAgewogICAg
d2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAgfSBfX3ZhbHVlOwp9IF9fbWJzdGF0
ZV90OwojIDMgIi4uL2luY2x1ZGUvd2NoYXIuaCIgMgojIDI1ICIuLi9zeXNkZXBzL2dudS9fR19j
b25maWcuaCIgMgoKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0YXRl
X3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19w
b3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NCAiLi4vc3lzZGVw
cy9nbnUvX0dfY29uZmlnLmgiCiMgMSAiLi4vaW5jbHVkZS9nY29udi5oIiAxCiMgMSAiLi4vaWNv
bnYvZ2NvbnYuaCIgMQojIDI4ICIuLi9pY29udi9nY29udi5oIgojIDEgIi4uL2luY2x1ZGUvd2No
YXIuaCIgMQoKIyAxICIuLi93Y3NtYnMvd2NoYXIuaCIgMQojIDQ4ICIuLi93Y3NtYnMvd2NoYXIu
aCIKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKIyA0OSAiLi4vd2NzbWJzL3djaGFyLmgiIDIKIyAzICIuLi9pbmNsdWRlL3dj
aGFyLmgiIDIKIyAyOSAiLi4vaWNvbnYvZ2NvbnYuaCIgMgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNTg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzIgIi4uL2lj
b252L2djb252LmgiIDIKCgoKCgplbnVtCnsKICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05P
Q09OViwKICBfX0dDT05WX05PREIsCiAgX19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9J
TlBVVCwKICBfX0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBf
X0dDT05WX0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAog
IF9fR0NPTlZfSU5URVJOQUxfRVJST1IKfTsKCgoKZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0g
MHgwMDAxLAogIF9fR0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19n
Y29udl9zdGVwOwpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7CnN0cnVjdCBfX2djb252X2xvYWRl
ZF9vYmplY3Q7CnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGE7CgoKCnR5cGVkZWYgaW50ICgqX19n
Y29udl9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0
YSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoq
LCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7CgoKdHlwZWRlZiBpbnQgKCpfX2dj
b252X2luaXRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19n
Y29udl9lbmRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpf
X2djb252X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqLCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19jb250ZXh0X2ZjdCkgKHZv
aWQgKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIg
Kik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3QgY2hh
ciAqLCBfX2NvbnN0IGNoYXIgKioqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkg
KHZvaWQgKiosIGNvbnN0IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5k
X2ZjdCkgKHZvaWQgKik7CgpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhCnsKCiAgX19nY29udl90
cmFuc19mY3QgX190cmFuc19mY3Q7CiAgX19nY29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5z
X2NvbnRleHRfZmN0OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAg
dm9pZCAqX19kYXRhOwogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsKCgoK
c3RydWN0IF9fZ2NvbnZfc3RlcAp7CiAgc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19z
aGxpYl9oYW5kbGU7CiAgX19jb25zdCBjaGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7
CgogIGNoYXIgKl9fZnJvbV9uYW1lOwogIGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3Qg
X19mY3Q7CiAgX19nY29udl9pbml0X2ZjdCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBf
X2VuZF9mY3Q7CgoKCiAgaW50IF9fbWluX25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRf
ZnJvbTsKICBpbnQgX19taW5fbmVlZGVkX3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBp
bnQgX19zdGF0ZWZ1bDsKCiAgdm9pZCAqX19kYXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVw
X2RhdGEKewogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0
YnVmZW5kOwoKCgogIGludCBfX2ZsYWdzOwoKCgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsK
CgoKICBpbnQgX19pbnRlcm5hbF91c2U7CgogIF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21i
c3RhdGVfdCBfX3N0YXRlOwoKCgogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7
Cn07CgoKCnR5cGVkZWYgc3RydWN0IF9fZ2NvbnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwog
IHN0cnVjdCBfX2djb252X3N0ZXAgKl9fc3RlcHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19n
Y29udl9zdGVwX2RhdGEgX19kYXRhIFtdOwp9ICpfX2djb252X3Q7CiMgMiAiLi4vaW5jbHVkZS9n
Y29udi5oIiAyCiMgNDUgIi4uL3N5c2RlcHMvZ251L19HX2NvbmZpZy5oIiAyCnR5cGVkZWYgdW5p
b24KewogIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICBzdHJ1Y3QKICB7CiAgICBzdHJ1Y3Qg
X19nY29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhOwog
IH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlwZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0
dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgX0dfaW50MzJfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
X0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYg
dW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9f
KSkpOwojIDMzICIuLi9saWJpby9saWJpby5oIiAyCiMgNTMgIi4uL2xpYmlvL2xpYmlvLmgiCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRhcmcu
aCIgMSAzCiMgNDMgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1
ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsK
IyA1NCAiLi4vbGliaW8vbGliaW8uaCIgMgojIDE2MCAiLi4vbGliaW8vbGliaW8uaCIKc3RydWN0
IF9JT19qdW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsKIyAxNzAgIi4uL2xpYmlvL2xpYmlvLmgiCnR5
cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3Qg
X0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3Bv
czsKIyAxOTMgIi4uL2xpYmlvL2xpYmlvLmgiCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsK
ICBfX2NvZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAog
IF9fY29kZWN2dF9ub2NvbnYKfTsKCgoKCnN0cnVjdCBfSU9fY29kZWN2dAp7CiAgdm9pZCAoKl9f
Y29kZWN2dF9kZXN0cikgKHN0cnVjdCBfSU9fY29kZWN2dCAqKTsKICBlbnVtIF9fY29kZWN2dF9y
ZXN1bHQgKCpfX2NvZGVjdnRfZG9fb3V0KSAoc3RydWN0IF9JT19jb2RlY3Z0ICosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbWJzdGF0ZV90ICosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJf
dCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3
Y2hhcl90ICoqLCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKiwgY2hhciAqKik7CiAgZW51bSBfX2NvZGVjdnRfcmVzdWx0ICgqX19jb2Rl
Y3Z0X2RvX3Vuc2hpZnQpIChzdHJ1Y3QgX0lPX2NvZGVjdnQgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbWJzdGF0ZV90ICosIGNoYXIgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgY2hh
ciAqKik7CiAgZW51bSBfX2NvZGVjdnRfcmVzdWx0ICgqX19jb2RlY3Z0X2RvX2luKSAoc3RydWN0
IF9JT19jb2RlY3Z0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19tYnN0YXRlX3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqLCB3Y2hhcl90ICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqLCB3Y2hhcl90ICoqKTsK
ICBpbnQgKCpfX2NvZGVjdnRfZG9fZW5jb2RpbmcpIChzdHJ1Y3QgX0lPX2NvZGVjdnQgKik7CiAg
aW50ICgqX19jb2RlY3Z0X2RvX2Fsd2F5c19ub2NvbnYpIChzdHJ1Y3QgX0lPX2NvZGVjdnQgKik7
CiAgaW50ICgqX19jb2RlY3Z0X2RvX2xlbmd0aCkgKHN0cnVjdCBfSU9fY29kZWN2dCAqLCBfX21i
c3RhdGVfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKiwgc2l6ZV90KTsKICBpbnQgKCpfX2NvZGVjdnRfZG9fbWF4X2xlbmd0aCkgKHN0
cnVjdCBfSU9fY29kZWN2dCAqKTsKCiAgX0dfaWNvbnZfdCBfX2NkX2luOwogIF9HX2ljb252X3Qg
X19jZF9vdXQ7Cn07CgoKc3RydWN0IF9JT193aWRlX2RhdGEKewogIHdjaGFyX3QgKl9JT19yZWFk
X3B0cjsKICB3Y2hhcl90ICpfSU9fcmVhZF9lbmQ7CiAgd2NoYXJfdCAqX0lPX3JlYWRfYmFzZTsK
ICB3Y2hhcl90ICpfSU9fd3JpdGVfYmFzZTsKICB3Y2hhcl90ICpfSU9fd3JpdGVfcHRyOwogIHdj
aGFyX3QgKl9JT193cml0ZV9lbmQ7CiAgd2NoYXJfdCAqX0lPX2J1Zl9iYXNlOwogIHdjaGFyX3Qg
Kl9JT19idWZfZW5kOwoKICB3Y2hhcl90ICpfSU9fc2F2ZV9iYXNlOwogIHdjaGFyX3QgKl9JT19i
YWNrdXBfYmFzZTsKCiAgd2NoYXJfdCAqX0lPX3NhdmVfZW5kOwoKICBfX21ic3RhdGVfdCBfSU9f
c3RhdGU7CiAgX19tYnN0YXRlX3QgX0lPX2xhc3Rfc3RhdGU7CiAgc3RydWN0IF9JT19jb2RlY3Z0
IF9jb2RlY3Z0OwoKICB3Y2hhcl90IF9zaG9ydGJ1ZlsxXTsKCiAgc3RydWN0IF9JT19qdW1wX3Qg
Kl93aWRlX3Z0YWJsZTsKfTsKCgpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgog
IGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3Jl
YWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwog
IGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19i
dWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsK
ICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAg
c3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsK
ICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwog
IHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9J
T19sb2NrX3QgKl9sb2NrOwojIDMwNSAiLi4vbGliaW8vbGliaW8uaCIKICBfX29mZjY0X3QgX29m
ZnNldDsKCgogIHN0cnVjdCBfSU9fY29kZWN2dCAqX2NvZGVjdnQ7CiAgc3RydWN0IF9JT193aWRl
X2RhdGEgKl93aWRlX2RhdGE7CgoKCgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAq
IHNpemVvZiAoaW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0cnVj
dCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1
Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w
bHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFf
c3RkZXJyXzsKCgoKCgpleHRlcm4gX0lPX0ZJTEUgKl9JT19zdGRpbjsKZXh0ZXJuIF9JT19GSUxF
ICpfSU9fc3Rkb3V0OwpleHRlcm4gX0lPX0ZJTEUgKl9JT19zdGRlcnI7CgoKCgoKCgp0eXBlZGVm
IF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZv
aWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAo
dm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwoKCnR5cGVkZWYgaW50
IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsKCgoKCnR5cGVkZWYgX19pb19yZWFkX2Zu
IGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb193cml0ZV9mbiBjb29raWVfd3Jp
dGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3NlZWtfZm4gY29va2llX3NlZWtfZnVuY3Rpb25f
dDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5jdGlvbl90OwoKCnR5cGVk
ZWYgc3RydWN0CnsKICBfX2lvX3JlYWRfZm4gKnJlYWQ7CiAgX19pb193cml0ZV9mbiAqd3JpdGU7
CiAgX19pb19zZWVrX2ZuICpzZWVrOwogIF9faW9fY2xvc2VfZm4gKmNsb3NlOwp9IF9JT19jb29r
aWVfaW9fZnVuY3Rpb25zX3Q7CnR5cGVkZWYgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBjb29r
aWVfaW9fZnVuY3Rpb25zX3Q7CgpzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlOwoKCmV4dGVybiB2b2lk
IF9JT19jb29raWVfaW5pdCAoc3RydWN0IF9JT19jb29raWVfZmlsZSAqX19jZmlsZSwgaW50IF9f
cmVhZF93cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2Nvb2tpZSwg
X0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2Zucyk7CgoKCgoKCgpleHRlcm4gaW50IF9fdW5k
ZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgOwpl
eHRlcm4gaW50IF9fb3ZlcmZsb3cgKF9JT19GSUxFICosIGludCkgOwpleHRlcm4gd2ludF90IF9f
d3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklM
RSAqKSA7CmV4dGVybiB3aW50X3QgX193b3ZlcmZsb3cgKF9JT19GSUxFICosIHdpbnRfdCkgOwoj
IDQyNiAiLi4vbGliaW8vbGliaW8uaCIKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9f
ZnApIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIDsKZXh0
ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVycm9y
IChfSU9fRklMRSAqX19mcCkgOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklM
RSAqX19mcCkgOwoKCgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgKF9JT19GSUxFICopIDsK
ZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lP
X2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwojIDQ1NiAiLi4vbGliaW8vbGliaW8uaCIKZXh0
ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICog
X19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QsIGludCAq
X19yZXN0cmljdCkgOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJp
Y3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2du
dWNfdmFfbGlzdCkgOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQs
IF9fc3NpemVfdCkgOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAq
LCBzaXplX3QpIDsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9f
b2ZmNjRfdCwgaW50LCBpbnQpIDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJ
TEUgKiwgX19vZmY2NF90LCBpbnQpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVh
IChfSU9fRklMRSAqKSA7CgoKZXh0ZXJuIHdpbnRfdCBfSU9fZ2V0d2MgKF9JT19GSUxFICpfX2Zw
KSA7CmV4dGVybiB3aW50X3QgX0lPX3B1dHdjICh3Y2hhcl90IF9fd2MsIF9JT19GSUxFICpfX2Zw
KSA7CmV4dGVybiBpbnQgX0lPX2Z3aWRlIChfSU9fRklMRSAqX19mcCwgaW50IF9fbW9kZSkgOwoj
IDUwNSAiLi4vbGliaW8vbGliaW8uaCIKZXh0ZXJuIGludCBfSU9fdmZ3c2NhbmYgKF9JT19GSUxF
ICogX19yZXN0cmljdCwgY29uc3Qgd2NoYXJfdCAqIF9fcmVzdHJpY3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7CmV4dGVybiBpbnQg
X0lPX3Zmd3ByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IHdjaGFyX3QgKl9fcmVz
dHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QpIDsKZXh0ZXJu
IF9fc3NpemVfdCBfSU9fd3BhZG4gKF9JT19GSUxFICosIHdpbnRfdCwgX19zc2l6ZV90KSA7CmV4
dGVybiB2b2lkIF9JT19mcmVlX3diYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgOwojIDY2ICIuLi9s
aWJpby9zdGRpby5oIiAyCgoKCgp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgODAg
Ii4uL2xpYmlvL3N0ZGlvLmgiCnR5cGVkZWYgX0dfZnBvc190IGZwb3NfdDsKCgoKCnR5cGVkZWYg
X0dfZnBvczY0X3QgZnBvczY0X3Q7CiMgMTI5ICIuLi9saWJpby9zdGRpby5oIgojIDEgIi91c3Iv
c3JjL2dsaWJjLTIuMi41LWJ1aWxkL2JpdHMvc3RkaW9fbGltLmgiIDEKIyAxMzAgIi4uL2xpYmlv
L3N0ZGlvLmgiIDIKCgoKZXh0ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAqc3Rkb3V0Owpl
eHRlcm4gRklMRSAqc3RkZXJyOwoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoX19jb25zdCBjaGFy
ICpfX2ZpbGVuYW1lKSA7CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpfX29sZCwg
X19jb25zdCBjaGFyICpfX25ldykgOwoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQpIDsK
IyAxNTggIi4uL2xpYmlvL3N0ZGlvLmgiCmV4dGVybiBGSUxFICp0bXBmaWxlNjQgKHZvaWQpIDsK
CgpleHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3MpIDsKCgoKCmV4dGVybiBjaGFyICp0bXBu
YW1fciAoY2hhciAqX19zKSA7CiMgMTc4ICIuLi9saWJpby9zdGRpby5oIgpleHRlcm4gY2hhciAq
dGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUg
Kl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZmbHVzaCAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0
ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50
IGZjbG9zZWFsbCAodm9pZCkgOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSkgOwojIDIyMiAiLi4vbGliaW8vc3RkaW8uaCIKZXh0ZXJuIEZJTEUg
KmZvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKZXh0ZXJuIEZJ
TEUgKmZyZW9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAg
ICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRl
cm4gRklMRSAqZmRvcGVuIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoKCgoK
ZXh0ZXJuIEZJTEUgKmZvcGVuY29va2llICh2b2lkICpfX3Jlc3RyaWN0IF9fbWFnaWNfY29va2ll
LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21v
ZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Qg
X19pb19mdW5jcykgOwoKCmV4dGVybiBGSUxFICpmbWVtb3BlbiAodm9pZCAqX19zLCBzaXplX3Qg
X19sZW4sIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwoKCgoKZXh0ZXJuIEZJTEUgKm9wZW5fbWVt
c3RyZWFtIChjaGFyICoqX19yZXN0cmljdCBfX2J1ZmxvYywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19zaXplbG9jKSA7CgoKCgoKZXh0ZXJuIHZvaWQg
c2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVm
KSA7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hh
ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6
ZV90IF9fbikgOwoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBfX3NpemUpIDsKCgpleHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkg
OwoKCgoKZXh0ZXJuIGludCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7
CgpleHRlcm4gaW50IHByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIDsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgpl
eHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBf
X2FyZykgOwoKZXh0ZXJuIGludCB2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
b3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIDsKCmV4dGVybiBpbnQgdnNwcmludGYg
KGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgoKCmV4dGVybiBp
bnQgc25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQog
ICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0
ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4s
CiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
IF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3ByaW50Zl9fLCAzLCAwKSkpOwoKCgoKCmV4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFyICoqX19y
ZXN0cmljdCBfX3B0ciwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwKICAgICAgICAgICAg
ICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IF9fYXNwcmludGYgKGNoYXIg
KipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3ByaW50Zl9fLCAyLCAzKSkpOwpleHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqX19yZXN0cmlj
dCBfX3B0ciwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIs
IDMpKSk7CgoKZXh0ZXJuIGludCB2ZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2ZtdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4
dGVybiBpbnQgZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zt
dCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAz
KSkpOwoKCgoKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
OwoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIDsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAog
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
IDsKCgoKZXh0ZXJuIGludCB2ZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9s
aXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIs
IDApKSk7CgoKZXh0ZXJuIGludCB2c2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0
X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKCgpleHRlcm4gaW50IHZzc2NhbmYgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCgoKZXh0ZXJuIGludCBmZ2V0YyAo
RklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4
dGVybiBpbnQgZ2V0Y2hhciAodm9pZCkgOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2Vk
IChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpIDsK
CgoKCmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRl
cm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGMg
KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19j
KSA7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0
cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0
cmVhbSkgOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIDsKCgoKCgpleHRl
cm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193
LCBGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgaW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7CgoKCmV4
dGVybiBjaGFyICpmZ2V0c191bmxvY2tlZCAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkg
OwoKCgoKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgOwojIDQyNiAiLi4vbGliaW8vc3Rk
aW8uaCIKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xp
bmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3Qg
X19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBfX3NzaXplX3QgZ2V0ZGVsaW0gKGNoYXIg
KipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCmV4dGVybiBfX3NzaXplX3Qg
Z2V0bGluZSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAg
ICAgOwoKCgpleHRlcm4gaW50IGZwdXRzX3VubG9ja2VkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKSA7CgoKCmV4dGVybiBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpIDsKCgoKZXh0ZXJu
IGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBzaXplX3Qg
ZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCmV4dGVy
biBzaXplX3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBf
X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0
IF9fcykgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jlc3RyaWN0
IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBzaXplX3QgZndyaXRl
X3VubG9ja2VkIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9u
ZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxF
ICpfX3N0cmVhbSkgOwoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVhbSkgOwojIDQ4
OSAiLi4vbGliaW8vc3RkaW8uaCIKZXh0ZXJuIGludCBmc2Vla28gKEZJTEUgKl9fc3RyZWFtLCBf
X29mZl90IF9fb2ZmLCBpbnQgX193aGVuY2UpIDsKCmV4dGVybiBfX29mZl90IGZ0ZWxsbyAoRklM
RSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgOwoKZXh0ZXJuIGludCBmc2V0
cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSA7CiMgNTIzICIuLi9s
aWJpby9zdGRpby5oIgpleHRlcm4gaW50IGZzZWVrbzY0IChGSUxFICpfX3N0cmVhbSwgX19vZmY2
NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpIDsKZXh0ZXJuIF9fb2ZmNjRfdCBmdGVsbG82NCAoRklM
RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZ2V0cG9zNjQgKEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0sIGZwb3M2NF90ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgIDsKZXh0ZXJuIGludCBmc2V0
cG9zNjQgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3M2NF90ICpfX3BvcykgOwoKCgpleHRl
cm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmVvZiAoRklM
RSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgOwoKCgpl
eHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGlu
dCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZlcnJvcl91bmxv
Y2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoX19jb25zdCBj
aGFyICpfX3MpIDsKCgoKCmV4dGVybiBpbnQgc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIg
Kl9fY29uc3Qgc3lzX2Vycmxpc3RbXTsKCgpleHRlcm4gaW50IF9zeXNfbmVycjsKZXh0ZXJuIF9f
Y29uc3QgY2hhciAqX19jb25zdCBfc3lzX2Vycmxpc3RbXTsKCgoKCgpleHRlcm4gaW50IGZpbGVu
byAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxF
ICpfX3N0cmVhbSkgOwoKCgoKCgpleHRlcm4gRklMRSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19j
b21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklM
RSAqX19zdHJlYW0pIDsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CgoK
CgoKZXh0ZXJuIGNoYXIgKmN1c2VyaWQgKGNoYXIgKl9fcykgOwoKCgoKc3RydWN0IG9ic3RhY2s7
CgoKZXh0ZXJuIGludCBvYnN0YWNrX3ByaW50ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3Qg
X19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIC4uLikgOwpleHRlcm4gaW50IG9ic3RhY2tfdnByaW50ZiAoc3RydWN0
IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmdzKSA7CgoKCgoKCgpleHRlcm4gdm9pZCBmbG9j
a2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlIChGSUxF
ICpfX3N0cmVhbSkgOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkg
OwojIDYzMCAiLi4vbGliaW8vc3RkaW8uaCIKIyAxICIuLi9saWJpby9iaXRzL3N0ZGlvLmgiIDEK
IyAzMyAiLi4vbGliaW8vYml0cy9zdGRpby5oIgpleHRlcm4gX19pbmxpbmUgaW50CnZwcmludGYg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCnsK
ICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJnKTsKfQoKCmV4dGVybiBfX2lu
bGluZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4pOwp9CgoK
CgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsKICByZXR1
cm4gKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8gX191Zmxv
dyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIrKyk7Cn0K
CgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICByZXR1cm4g
KChzdGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93
IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRyKyspOwp9
CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1cm4gX0lP
X3B1dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmcHV0Y191bmxv
Y2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5f
SU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAo
X19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19z
dHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5l
IGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAo
KChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkg
PyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25l
ZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgpleHRl
cm4gX19pbmxpbmUgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1cm4gKCgo
c3Rkb3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292
ZXJmbG93IChzdGRvdXQsICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikg
KCooc3Rkb3V0KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoKCmV4dGVybiBfX2lu
bGluZSBfX3NzaXplX3QKZ2V0bGluZSAoY2hhciAqKl9fbGluZXB0ciwgc2l6ZV90ICpfX24sIEZJ
TEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuIF9fZ2V0ZGVsaW0gKF9fbGluZXB0ciwgX19uLCAnXG4n
LCBfX3N0cmVhbSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZlb2ZfdW5sb2NrZWQgKEZJ
TEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgxMCkgIT0g
MCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJl
YW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsKfQojIDYz
MSAiLi4vbGliaW8vc3RkaW8uaCIgMgoKCgojIDExICIuLi9pbmNsdWRlL3N0ZGlvLmgiIDIKCgpl
eHRlcm4gaW50IF9fZmNsb3NlYWxsICh2b2lkKTsKZXh0ZXJuIGludCBfX3NucHJpbnRmIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIF9fYXR0cmlidXRl
X18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwpleHRlcm4gaW50IF9fdnNucHJp
bnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9s
aXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAz
LCAwKSkpOwpleHRlcm4gaW50IF9fdmZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3MsCiAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IF9fdnNjYW5mIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9f
Z251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3Nj
YW5mX18sIDEsIDApKSk7CmV4dGVybiBfX3NzaXplX3QgX19nZXRsaW5lIChjaGFyICoqX19saW5l
cHRyLCBzaXplX3QgKl9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19z
dHJlYW0pOwpleHRlcm4gaW50IF9fdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKZXh0ZXJuIEZJTEUg
Kl9fbmV3X3RtcGZpbGUgKHZvaWQpOwpleHRlcm4gRklMRSAqX19vbGRfdG1wZmlsZSAodm9pZCk7
CgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwojIDQ1ICIuLi9pbmNsdWRlL3N0ZGlvLmgiIDIKCmV4dGVybiBpbnQg
X19wYXRoX3NlYXJjaCAoY2hhciAqX190bXBsLCBzaXplX3QgX190bXBsX2xlbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3RyeV90ZW1wZGlyKTsKCmV4dGVybiBp
bnQgX19nZW5fdGVtcG5hbWUgKGNoYXIgKl9fdG1wbCwgaW50IF9fa2luZCk7CgoKCgoKCgpleHRl
cm4gdm9pZCBfX2xpYmNfZmF0YWwgKF9fY29uc3QgY2hhciAqX19tZXNzYWdlKQogICAgIF9fYXR0
cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gdm9pZCBfX2Zsb2NrZmlsZSAoRklM
RSAqX19zdHJlYW0pOwoKCmV4dGVybiB2b2lkIF9fZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFt
KTsKCgoKZXh0ZXJuIGludCBfX2Z0cnlsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pOwoKZXh0ZXJu
IGludCBfX2dldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApOwoKZXh0ZXJuIHdpbnRfdCBfX2dldHdj
X3VubG9ja2VkIChGSUxFICpfX2ZwKTsKIyAyMSAicHRocmVhZC5jIiAyCiMgMSAiLi4vaW5jbHVk
ZS9zdGRsaWIuaCIgMQoKCgoKCgojIDEgIi4uL3N0ZGxpYi9zdGRsaWIuaCIgMQojIDMzICIuLi9z
dGRsaWIvc3RkbGliLmgiCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8z
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi4uL3N0ZGxpYi9zdGRsaWIuaCIgMgoKCgoK
CgoKCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy93YWl0ZmxhZ3MuaCIgMQoj
IDQzICIuLi9zdGRsaWIvc3RkbGliLmgiIDIKIyAxICIuLi9zeXNkZXBzL2dlbmVyaWMvYml0cy93
YWl0c3RhdHVzLmgiIDEKIyA2MyAiLi4vc3lzZGVwcy9nZW5lcmljL2JpdHMvd2FpdHN0YXR1cy5o
IgojIDEgIi4uL2luY2x1ZGUvZW5kaWFuLmgiIDEKIyAxICIuLi9zdHJpbmcvZW5kaWFuLmgiIDEK
IyAzNyAiLi4vc3RyaW5nL2VuZGlhbi5oIgojIDEgIi4uL3N5c2RlcHMvaTM4Ni9iaXRzL2VuZGlh
bi5oIiAxCiMgMzggIi4uL3N0cmluZy9lbmRpYW4uaCIgMgojIDIgIi4uL2luY2x1ZGUvZW5kaWFu
LmgiIDIKIyA2NCAiLi4vc3lzZGVwcy9nZW5lcmljL2JpdHMvd2FpdHN0YXR1cy5oIiAyCgp1bmlv
biB3YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAgICAg
dW5zaWduZWQgaW50IF9fd190ZXJtc2lnOjc7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19jb3Jl
ZHVtcDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfcmV0Y29kZTo4OwogICAgICAgIHVuc2ln
bmVkIGludDoxNjsKCgoKCgoKCiAgICAgIH0gX193YWl0X3Rlcm1pbmF0ZWQ7CiAgICBzdHJ1Y3QK
ICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3B2YWw6ODsKICAgICAgICB1bnNp
Z25lZCBpbnQgX193X3N0b3BzaWc6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCiAg
ICAgIH0gX193YWl0X3N0b3BwZWQ7CiAgfTsKIyA0NCAiLi4vc3RkbGliL3N0ZGxpYi5oIiAyCiMg
NjggIi4uL3N0ZGxpYi9zdGRsaWIuaCIKdHlwZWRlZiB1bmlvbgogIHsKICAgIHVuaW9uIHdhaXQg
Kl9fdXB0cjsKICAgIGludCAqX19pcHRyOwogIH0gX19XQUlUX1NUQVRVUyBfX2F0dHJpYnV0ZV9f
ICgoX190cmFuc3BhcmVudF91bmlvbl9fKSk7CiMgOTQgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKdHlw
ZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGludCByZW07CiAgfSBkaXZfdDsKCgoK
dHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90OwogICAgbG9uZyBpbnQgcmVtOwog
IH0gbGRpdl90OwoKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25n
IGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGxvbmcgaW50IHJlbTsKICB9IGxsZGl2X3Q7CiMgMTMz
ICIuLi9zdGRsaWIvc3RkbGliLmgiCmV4dGVybiBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21h
eCAodm9pZCkgOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgYXRvaSAoX19jb25zdCBjaGFy
ICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcgaW50IGF0
b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoK
X19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpf
X25wdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUg
c3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsKCgoKZXh0ZXJuIGZsb2F0IHN0cnRv
ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xk
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsKCgoKZXh0ZXJuIGxvbmcgaW50IHN0
cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCmV4dGVybiB1
bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIGludCBfX2Jhc2UpCiAgICAgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFz
ZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3Vx
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkK
ICAgICA7CgoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5z
aW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CiMgMjEx
ICIuLi9zdGRsaWIvc3RkbGliLmgiCiMgMSAiLi4vaW5jbHVkZS94bG9jYWxlLmgiIDEKIyAxICIu
Li9sb2NhbGUveGxvY2FsZS5oIiAxCiMgMjggIi4uL2xvY2FsZS94bG9jYWxlLmgiCnR5cGVkZWYg
c3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CgogIHN0cnVjdCBsb2NhbGVfZGF0YSAqX19sb2NhbGVz
WzEzXTsKCgogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0IGlu
dCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVyOwp9ICpfX2xv
Y2FsZV90OwojIDIgIi4uL2luY2x1ZGUveGxvY2FsZS5oIiAyCiMgMjEyICIuLi9zdGRsaWIvc3Rk
bGliLmgiIDIKCgoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9sX2wgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bG9jYWxlX3QgX19sb2MpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSA7Cgpf
X2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9sIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVy
biB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfbCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIDsKCmV4
dGVybiBkb3VibGUgX19zdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19s
b2NhbGVfdCBfX2xvYykKICAgICA7CgpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2FsZV90IF9fbG9jKSA7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgX19zdHJ0b2xkX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgOwoKCgoKCgpleHRl
cm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJu
YWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAg
IDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBfX2dyb3VwKSA7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJu
YWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCgpfX2V4dGVu
c2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgpfX2V4dGVu
c2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwg
KF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwg
aW50IF9fZ3JvdXApCiAgICAgOwoKCgoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0b2Qg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyKQp7CiAgcmV0dXJuIF9fc3RydG9kX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsK
fQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNl
KQp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAg
ICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fbnB0ciwg
X19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgZmxvYXQKc3RydG9mIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
cikKewogIHJldHVybiBfX3N0cnRvZl9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0K
ZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlCnN0cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3Ry
dG9sZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBl
eHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jh
c2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jh
c2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQKc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0
b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCgpfX2V4dGVu
c2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAg
ICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2Vu
ZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25l
ZCBsb25nIGxvbmcgaW50CnN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0
ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICBpbnQgX19iYXNlKQp7CiAg
cmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7
Cn0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCmF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7
CiAgcmV0dXJuIHN0cnRvZCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkpOwp9CmV4dGVy
biBfX2lubGluZSBpbnQKYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gKGlu
dCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CmV4dGVybiBf
X2lubGluZSBsb25nIGludAphdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBz
dHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KCgpfX2V4dGVuc2lv
bl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CmF0b2xsIChfX2NvbnN0IGNoYXIgKl9f
bnB0cikKewogIHJldHVybiBzdHJ0b2xsIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwg
MTApOwp9CiMgMzg0ICIuLi9zdGRsaWIvc3RkbGliLmgiCmV4dGVybiBjaGFyICpsNjRhIChsb25n
IGludCBfX24pIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoX19jb25zdCBjaGFyICpfX3MpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCiMgMSAiLi4vaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MQojIDEgIi4uL3Bvc2l4L3N5cy90eXBlcy5oIiAxCiMgMjggIi4uL3Bvc2l4L3N5cy90eXBlcy5o
IgoKCgoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9y
dDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRl
ZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBf
X2ZzaWRfdCBmc2lkX3Q7CgoKCgp0eXBlZGVmIF9fbG9mZl90IGxvZmZfdDsKCgoKdHlwZWRlZiBf
X2lub190IGlub190OwoKCgoKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm82NF90OwoKCgoKdHlwZWRl
ZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoKCgoKdHlwZWRlZiBf
X21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190OwoKCgoKdHlwZWRl
ZiBfX3VpZF90IHVpZF90OwoKCgoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKCgoKdHlwZWRl
ZiBfX29mZjY0X3Qgb2ZmNjRfdDsKCgoKCnR5cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCnR5cGVk
ZWYgX19pZF90IGlkX3Q7CgoKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90OwoKCgoKCnR5cGVk
ZWYgX19kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19jYWRkcl90IGNhZGRyX3Q7CgoKCgoKdHlw
ZWRlZiBfX2tleV90IGtleV90OwojIDEzMiAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiCiMgMSAiLi4v
aW5jbHVkZS90aW1lLmgiIDEKCgojIDEgIi4uL3RpbWUvdGltZS5oIiAxCiMgNTkgIi4uL3RpbWUv
dGltZS5oIgp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190OwojIDcwICIuLi90aW1lL3RpbWUuaCIK
dHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7CiMgODIgIi4uL3RpbWUvdGltZS5oIgp0eXBlZGVmIF9f
Y2xvY2tpZF90IGNsb2NraWRfdDsKIyA5NCAiLi4vdGltZS90aW1lLmgiCnR5cGVkZWYgX190aW1l
cl90IHRpbWVyX3Q7CiMgNCAiLi4vaW5jbHVkZS90aW1lLmgiIDIKIyAxMzMgIi4uL3Bvc2l4L3N5
cy90eXBlcy5oIiAyCgoKCnR5cGVkZWYgX191c2Vjb25kc190IHVzZWNvbmRzX3Q7CgoKCnR5cGVk
ZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIv
aTU4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0NyAiLi4vcG9z
aXgvc3lzL3R5cGVzLmgiIDIKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50
OwojIDE5MCAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2lu
dDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBl
ZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJ
X18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAo
KF9fbW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMTIgIi4uL3Bvc2l4L3N5cy90eXBlcy5oIgojIDEg
Ii4uL2luY2x1ZGUvZW5kaWFuLmgiIDEKIyAyMTMgIi4uL3Bvc2l4L3N5cy90eXBlcy5oIiAyCgoK
IyAxICIuLi9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMQoKIyAxICIuLi9taXNjL3N5cy9zZWxlY3Qu
aCIgMQojIDMxICIuLi9taXNjL3N5cy9zZWxlY3QuaCIKIyAxICIuLi9zeXNkZXBzL2kzODYvYml0
cy9zZWxlY3QuaCIgMQojIDMyICIuLi9taXNjL3N5cy9zZWxlY3QuaCIgMgoKCiMgMSAiLi4vc3lz
ZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zaWdzZXQuaCIgMQojIDIzICIuLi9zeXNkZXBzL3Vu
aXgvc3lzdi9saW51eC9iaXRzL3NpZ3NldC5oIgp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsK
CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgX192YWxbKDEwMjQg
LyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSldOwogIH0gX19zaWdzZXRfdDsKIyAz
NSAiLi4vbWlzYy9zeXMvc2VsZWN0LmgiIDIKCgoKdHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90
OwoKCgoKCiMgMSAiLi4vaW5jbHVkZS90aW1lLmgiIDEKCgojIDEgIi4uL3RpbWUvdGltZS5oIiAx
CiMgMTA2ICIuLi90aW1lL3RpbWUuaCIKc3RydWN0IHRpbWVzcGVjCiAgewogICAgX190aW1lX3Qg
dHZfc2VjOwogICAgbG9uZyBpbnQgdHZfbnNlYzsKICB9OwojIDQgIi4uL2luY2x1ZGUvdGltZS5o
IiAyCiMgNDUgIi4uL21pc2Mvc3lzL3NlbGVjdC5oIiAyCgojIDEgIi4uL3N5c2RlcHMvdW5peC9z
eXN2L2xpbnV4L2kzODYvYml0cy90aW1lLmgiIDEKIyA2NyAiLi4vc3lzZGVwcy91bml4L3N5c3Yv
bGludXgvaTM4Ni9iaXRzL3RpbWUuaCIKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0
dl9zZWM7CiAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyA0NyAiLi4vbWlzYy9zeXMv
c2VsZWN0LmgiIDIKIyA1NSAiLi4vbWlzYy9zeXMvc2VsZWN0LmgiCnR5cGVkZWYgbG9uZyBpbnQg
X19mZF9tYXNrOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CgoKCiAgICBfX2ZkX21hc2sgZmRz
X2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKV07CgoKCgoKICB9IGZkX3NldDsK
CgoKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKIyA5NSAiLi4vbWlzYy9zeXMvc2VsZWN0
LmgiCgoKCgoKCgpleHRlcm4gaW50IHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3Ry
aWN0IF9fcmVhZGZkcywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dy
aXRlZmRzLAogICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRz
LAogICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0
KSA7CgoKCgoKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJp
Y3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dy
aXRlZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZk
cywKICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3Qg
X190aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJp
Y3QgX19zaWdtYXNrKSA7CgoKCiMgMyAiLi4vaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIKCgpleHRl
cm4gaW50IF9fcHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3JlYWRmZHMsCiAgICAgICAg
ICAgICAgICAgICAgICBmZF9zZXQgKl9fd3JpdGVmZHMsIGZkX3NldCAqX19leGNlcHRmZHMsCiAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fdGltZW91dCwKICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fc2lnbWFzayk7CgpleHRlcm4g
aW50IF9fc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAog
ICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAg
ICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpOwojIDIxNiAi
Li4vcG9zaXgvc3lzL3R5cGVzLmgiIDIKCgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L3N5cy9zeXNtYWNyb3MuaCIgMQojIDIxOSAiLi4vcG9zaXgvc3lzL3R5cGVzLmgiIDIKCgoKCnR5
cGVkZWYgX19ibGtzaXplX3QgYmxrc2l6ZV90OwoKCgoKCgp0eXBlZGVmIF9fYmxrY250X3QgYmxr
Y250X3Q7CgoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7CgoKCnR5cGVkZWYgX19m
c2ZpbGNudF90IGZzZmlsY250X3Q7CiMgMjU3ICIuLi9wb3NpeC9zeXMvdHlwZXMuaCIKdHlwZWRl
ZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2Nu
dDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90OwoKCgojIDIgIi4uL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDIKIyAzOTEgIi4uL3N0ZGxpYi9zdGRsaWIuaCIgMgoKCgoKCgpl
eHRlcm4gbG9uZyBpbnQgcmFuZG9tICh2b2lkKSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmRvbSAodW5z
aWduZWQgaW50IF9fc2VlZCkgOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2lnbmVk
IGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBfX3N0YXRlbGVuKSA7CgoKCmV4dGVybiBjaGFyICpzZXRzdGF0ZSAoY2hhciAqX19zdGF0
ZWJ1ZikgOwoKCgoKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsK
ICAgIGludDMyX3QgKnJwdHI7CiAgICBpbnQzMl90ICpzdGF0ZTsKICAgIGludCByYW5kX3R5cGU7
CiAgICBpbnQgcmFuZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7CiAgICBpbnQzMl90ICplbmRfcHRy
OwogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJp
Y3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1
bHQpIDsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3Qg
cmFuZG9tX2RhdGEgKl9fYnVmKSA7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1bnNpZ25lZCBp
bnQgX19zZWVkLCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX3N0YXRlbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
cmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIDsKCmV4dGVybiBpbnQgc2V0c3RhdGVfciAo
Y2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKCmV4dGVybiBpbnQgcmFuZCAo
dm9pZCkgOwoKZXh0ZXJuIHZvaWQgc3JhbmQgKHVuc2lnbmVkIGludCBfX3NlZWQpIDsKCgoKZXh0
ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGludCAqX19zZWVkKSA7CgoKCgoKCgpleHRlcm4gZG91
YmxlIGRyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9y
dCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSA7CmV4
dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoK
CmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBsb25nIGludCBqcmFuZDQ4
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiB2b2lkIHNyYW5kNDgg
KGxvbmcgaW50IF9fc2VlZHZhbCkgOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDgg
KHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10pIDsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAo
dW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10pIDsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRh
CiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGlu
dCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNo
b3J0IGludCBfX2luaXQ7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoKCmV4
dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7
CmV4dGVybiBpbnQgZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsK
CgpleHRlcm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBf
X2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVz
dWx0KSA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz
XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl
c3VsdCkgOwoKCmV4dGVybiBpbnQgbXJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJp
Y3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBf
X3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y
ZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3Ry
aWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZh
bCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCiAgICAgOwoKZXh0ZXJuIGludCBzZWVk
NDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSwKICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsKCmV4dGVybiBpbnQgbGNvbmc0OF9y
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CiMgNTI3ICIuLi9zdGRsaWIvc3RkbGliLmgi
CmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21h
bGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9f
c2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKCmV4dGVybiB2b2lk
ICpyZWFsbG9jICh2b2lkICpfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9f
bWFsbG9jX18pKTsKCmV4dGVybiB2b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSA7CgoKCmV4dGVybiB2
b2lkIGNmcmVlICh2b2lkICpfX3B0cikgOwoKCgojIDEgIi4uL2luY2x1ZGUvYWxsb2NhLmgiIDEK
CgojIDEgIi4uL3N0ZGxpYi9hbGxvY2EuaCIgMQojIDI1ICIuLi9zdGRsaWIvYWxsb2NhLmgiCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzCiMgMjYgIi4uL3N0ZGxpYi9hbGxvY2EuaCIgMgoKCgoKCgoKZXh0ZXJuIHZvaWQgKmFs
bG9jYSAoc2l6ZV90IF9fc2l6ZSkgOwoKCgoKCgojIDQgIi4uL2luY2x1ZGUvYWxsb2NhLmgiIDIK
CgoKCmV4dGVybiB2b2lkICpfX2FsbG9jYSAoc2l6ZV90IF9fc2l6ZSk7CiMgNTQ3ICIuLi9zdGRs
aWIvc3RkbGliLmgiIDIKCgoKCmV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBfX3NpemUpIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IHBvc2l4X21lbWFsaWdu
ICh2b2lkICoqX19tZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCBhYm9ydCAodm9p
ZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgpleHRlcm4gaW50IGF0ZXhpdCAo
dm9pZCAoKl9fZnVuYykgKHZvaWQpKSA7CgoKCgpleHRlcm4gaW50IG9uX2V4aXQgKHZvaWQgKCpf
X2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCiAgICAgOwoK
CgoKCmV4dGVybiB2b2lkIGV4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1
dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25zdCBj
aGFyICpfX25hbWUpIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBj
aGFyICpfX25hbWUpIDsKCgoKCgpleHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIDsK
CgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hh
ciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAgICA7CgoKZXh0ZXJuIGludCB1bnNldGVudiAo
X19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkg
OwojIDYyMyAiLi4vc3RkbGliL3N0ZGxpYi5oIgpleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFyICpf
X3RlbXBsYXRlKSA7CgoKCgoKCgpleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUp
IDsKIyA2NDAgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIg
Kl9fdGVtcGxhdGUpIDsKIyA2NTAgIi4uL3N0ZGxpYi9zdGRsaWIuaCIKZXh0ZXJuIGNoYXIgKm1r
ZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0
IGNoYXIgKl9fY29tbWFuZCkgOwoKCgoKCgpleHRlcm4gY2hhciAqY2Fub25pY2FsaXplX2ZpbGVf
bmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKIyA2NzIgIi4uL3N0ZGxpYi9zdGRsaWIuaCIK
ZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkgOwoKCgoK
Cgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQgKiwgX19jb25zdCB2
b2lkICopOwoKCnR5cGVkZWYgX19jb21wYXJfZm5fdCBjb21wYXJpc29uX2ZuX3Q7CgoKCgoKZXh0
ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXksIF9fY29uc3Qgdm9pZCAqX19i
YXNlLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUs
IF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19i
YXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgIF9f
Y29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gaW50IGFicyAoaW50IF9feCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQgX194
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25n
IGxvbmcgaW50IGxsYWJzIChsb25nIGxvbmcgaW50IF9feCkKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKCgoKCmV4dGVybiBkaXZfdCBkaXYgKGludCBfX251bWVyLCBpbnQgX19k
ZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsZGl2X3QgbGRp
diAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90IGxsZGl2IChsb25n
IGxvbmcgaW50IF9fbnVtZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
bmcgbG9uZyBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMg
NzI4ICIuLi9zdGRsaWIvc3RkbGliLmgiCmV4dGVybiBjaGFyICplY3Z0IChkb3VibGUgX192YWx1
ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAg
ICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAg
ICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKCgoKCmV4dGVybiBjaGFyICpn
Y3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoKZXh0
ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAg
ICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBf
X3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAq
X19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFnY3Z0IChsb25nIGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSA7CgoKCgpleHRlcm4gaW50IGVjdnRfciAo
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAg
ICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0
IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQgZmN2
dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNw
dCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4pIDsKCmV4dGVybiBp
bnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAg
ICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWdu
LAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xl
bikgOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdp
dCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jl
c3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVm
LCBzaXplX3QgX19sZW4pIDsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25zdCBjaGFyICpf
X3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1idG93YyAod2NoYXJfdCAqX19yZXN0cmlj
dCBfX3B3YywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
IHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9f
d2NoYXIpIDsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBf
X3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3MsIHNpemVfdCBfX24pIDsKCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJp
Y3QgX19wd2NzLCBzaXplX3QgX19uKQogICAgIDsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAo
X19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMgODA4ICIuLi9zdGRsaWIvc3RkbGliLmgiCmV4
dGVybiBpbnQgZ2V0c3Vib3B0IChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsCiAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICpfX2NvbnN0ICpfX3Jlc3RyaWN0IF9fdG9rZW5zLAogICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX192YWx1ZXApIDsKCgoKCgpleHRlcm4g
dm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIDsKCgoKCgoKCmV4dGVybiBpbnQgcG9z
aXhfb3BlbnB0IChpbnQgX19vZmxhZykgOwoKCgoKCgoKZXh0ZXJuIGludCBncmFudHB0IChpbnQg
X19mZCkgOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQgX19mZCkgOwoKCgoKZXh0ZXJuIGNo
YXIgKnB0c25hbWUgKGludCBfX2ZkKSA7CgoKCgoKCmV4dGVybiBpbnQgcHRzbmFtZV9yIChpbnQg
X19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCmV4dGVybiBpbnQgZ2V0cHQg
KHZvaWQpIDsKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUgX19sb2FkYXZnW10s
IGludCBfX25lbGVtKSA7CgoKCgoKCiMgOCAiLi4vaW5jbHVkZS9zdGRsaWIuaCIgMgoKCgpleHRl
cm4gbG9uZyBpbnQgX19yYW5kb20gKHZvaWQpOwpleHRlcm4gdm9pZCBfX3NyYW5kb20gKHVuc2ln
bmVkIGludCBfX3NlZWQpOwpleHRlcm4gY2hhciAqX19pbml0c3RhdGUgKHVuc2lnbmVkIGludCBf
X3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fc3RhdGVsZW4pOwpleHRlcm4gY2hhciAqX19zZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1Zik7
CmV4dGVybiBpbnQgX19yYW5kb21fciAoc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZiwgaW50MzJf
dCAqX19yZXN1bHQpOwpleHRlcm4gaW50IF9fc3JhbmRvbV9yICh1bnNpZ25lZCBpbnQgX19zZWVk
LCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKTsKZXh0ZXJuIGludCBfX2luaXRzdGF0ZV9yICh1
bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX3N0YXRlbGVuLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKTsKZXh0
ZXJuIGludCBfX3NldHN0YXRlX3IgKGNoYXIgKl9fc3RhdGVidWYsIHN0cnVjdCByYW5kb21fZGF0
YSAqX19idWYpOwpleHRlcm4gaW50IF9fcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCk7CmV4
dGVybiBpbnQgX19lcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlciwgZG91Ymxl
ICpfX3Jlc3VsdCk7CmV4dGVybiBpbnQgX19ucmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBf
X3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf
X2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdWx0KTsKZXh0
ZXJuIGludCBfX2pyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN1bHQpOwpleHRlcm4gaW50IF9fc3JhbmQ0
OF9yIChsb25nIGludCBfX3NlZWR2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk
cmFuZDQ4X2RhdGEgKl9fYnVmZmVyKTsKZXh0ZXJuIGludCBfX3NlZWQ0OF9yICh1bnNpZ25lZCBz
aG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fYnVmZmVyKTsKZXh0ZXJuIGludCBfX2xjb25nNDhfciAodW5zaWduZWQgc2hv
cnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fYnVmZmVyKTsKCgpleHRlcm4gaW50IF9fZHJhbmQ0OF9pdGVyYXRlICh1bnNpZ25l
ZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpOwoKZXh0ZXJuIGludCBfX3NldGVudiAoX19jb25z
dCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgaW50IF9fcmVwbGFjZSk7CmV4dGVybiBpbnQgX191bnNldGVudiAoX19jb25zdCBjaGFyICpf
X25hbWUpOwpleHRlcm4gaW50IF9fY2xlYXJlbnYgKHZvaWQpOwpleHRlcm4gY2hhciAqX19jYW5v
bmljYWxpemVfZmlsZV9uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSk7CmV4dGVybiBjaGFyICpf
X3JlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgY2hhciAqX19yZXNvbHZlZCk7CmV4dGVy
biBpbnQgX19wdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu
KTsKZXh0ZXJuIGludCBfX2dldHB0ICh2b2lkKTsKZXh0ZXJuIGludCBfX3Bvc2l4X29wZW5wdCAo
aW50IF9fb2ZsYWcpOwoKZXh0ZXJuIGludCBfX2FkZF90b19lbnZpcm9uIChjb25zdCBjaGFyICpu
YW1lLCBjb25zdCBjaGFyICp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpjb21iaW5lcywgaW50IHJlcGxhY2UpOwoKZXh0ZXJuIHZvaWQgX3F1aWNrc29ydCAo
dm9pZCAqY29uc3QgcGJhc2UsIHNpemVfdCB0b3RhbF9lbGVtcywKICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHNpemUsIF9fY29tcGFyX2ZuX3QgY21wKTsKCmV4dGVybiBpbnQgX19vbl9l
eGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9f
YXJnKTsKCmV4dGVybiBpbnQgX19jeGFfYXRleGl0ICh2b2lkICgqZnVuYykgKHZvaWQgKiksIHZv
aWQgKmFyZywgdm9pZCAqZCk7CgpleHRlcm4gdm9pZCBfX2N4YV9maW5hbGl6ZSAodm9pZCAqZCk7
CgpleHRlcm4gaW50IF9fcG9zaXhfbWVtYWxpZ24gKHZvaWQgKiptZW1wdHIsIHNpemVfdCBhbGln
bm1lbnQsIHNpemVfdCBzaXplKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7Cgpl
eHRlcm4gaW50IF9fbGliY19zeXN0ZW0gKGNvbnN0IGNoYXIgKmxpbmUpOwojIDIyICJwdGhyZWFk
LmMiIDIKIyAxICIuLi9pbmNsdWRlL3N0cmluZy5oIiAxCgoKIyAxICIuLi9pbmNsdWRlL3N5cy90
eXBlcy5oIiAxCiMgNCAiLi4vaW5jbHVkZS9zdHJpbmcuaCIgMgoKZXh0ZXJuIHZvaWQgKl9fbWVt
Y2NweSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pOwoKZXh0ZXJuIHNpemVfdCBfX3N0cm5sZW4g
KF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxlbikKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpfX3N0cnNlcCAoY2hhciAqKl9fc3RyaW5n
cCwgX19jb25zdCBjaGFyICpfX2RlbGltKTsKCmV4dGVybiBpbnQgX19zdHJ2ZXJzY21wIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9f
bikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJjYXNl
Y21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpfX3N0cmNhc2VzdHIgKF9fY29uc3Qg
Y2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25zdCBjaGFyICpf
X3N0cmluZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwpleHRlcm4gY2hhciAq
X19zdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgIF9fYXR0
cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqX19yYXdtZW1jaHIgKF9fY29u
c3Qgdm9pZCAqX19zLCBpbnQgX19jKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
ZXh0ZXJuIGNoYXIgKl9fc3RyY2hybnVsIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiB2b2lkICpfX21lbXJjaHIgKF9f
Y29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIHZvaWQgKl9fbWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywg
aW50IF9fYywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4
dGVybiBpbnQgX19mZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKZXh0ZXJu
IGNoYXIgKl9fc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9f
YnVmbGVuKTsKCgoKIyAxICIuLi9zdHJpbmcvc3RyaW5nLmgiIDEKIyAyOCAiLi4vc3RyaW5nL3N0
cmluZy5oIgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi4uL3N0cmluZy9zdHJpbmcuaCIgMgoKCgpleHRl
cm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0
ZXJuIHZvaWQgKm1lbW1vdmUgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywgc2l6
ZV90IF9fbikKICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQgKl9fcmVzdHJp
Y3QgX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgIDsKCgoKCmV4dGVybiB2b2lkICptZW1z
ZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWVtY21w
IChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtY2hyIChfX2Nv
bnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gdm9pZCAqcmF3bWVtY2hyIChfX2NvbnN0IHZvaWQgKl9f
cywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1l
bXJjaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIgKl9f
cmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgOwoK
ZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7
CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNhdCAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywKICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHN0cmNtcCAoX19j
b25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19j
b25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90
IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoKCiMgMSAi
Li4vaW5jbHVkZS94bG9jYWxlLmgiIDEKIyAxMDkgIi4uL3N0cmluZy9zdHJpbmcuaCIgMgoKCmV4
dGVybiBpbnQgX19zdHJjb2xsX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyLCBfX2xvY2FsZV90IF9fbCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4
dGVybiBzaXplX3QgX19zdHJ4ZnJtX2wgKGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Ny
Yywgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2wp
IDsKCgoKCmV4dGVybiBjaGFyICpzdHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKCgpleHRlcm4gY2hhciAqc3RybmR1cCAoX19jb25zdCBj
aGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2Nf
XykpOwojIDE1NSAiLi4vc3RyaW5nL3N0cmluZy5oIgpleHRlcm4gY2hhciAqc3RyY2hyIChfX2Nv
bnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRl
cm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNocm51bCAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHNp
emVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAo
X19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19jb25zdCBjaGFyICpf
X3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgpleHRlcm4gY2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29u
c3QgY2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4
dGVybiBjaGFyICpzdHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3Qg
Y2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVy
biBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19kZWxpbSkKICAgICA7CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19zYXZlX3B0cikgOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoKCgoKCgpleHRlcm4gdm9pZCAq
bWVtbWVtIChfX2NvbnN0IHZvaWQgKl9faGF5c3RhY2ssIHNpemVfdCBfX2hheXN0YWNrbGVuLAog
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fbmVlZGxlLCBzaXplX3QgX19uZWVk
bGVsZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiB2b2lkICpf
X21lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKZXh0ZXJuIHZv
aWQgKm1lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKCgpleHRl
cm4gc2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJubGVuIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5n
LCBzaXplX3QgX19tYXhsZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpl
eHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgOwoKCgpleHRlcm4gY2hhciAqc3Ry
ZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CgoK
CgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgoKZXh0ZXJu
IHZvaWQgYmNvcHkgKF9fY29uc3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9f
bikgOwoKCmV4dGVybiB2b2lkIGJ6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgpleHRl
cm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXpl
X3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpp
bmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCmV4dGVybiBjaGFyICpyaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgZmZzbCAobG9uZyBpbnQg
X19sKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBp
bnQgZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19j
b25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVy
biBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3My
LCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVy
biBpbnQgX19zdHJjYXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJuY2FzZWNtcF9sIChfX2NvbnN0
IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAqKl9fcmVzdHJpY3QgX19z
dHJpbmdwLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19k
ZWxpbSkgOwoKCgoKZXh0ZXJuIGludCBzdHJ2ZXJzY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRl
cm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIDsKCgpleHRlcm4gY2hhciAqX19zdHBjcHkg
KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMp
CiAgICAgOwpleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3Rw
bmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwpleHRlcm4gY2hhciAq
c3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hh
ciAqc3RyZnJ5IChjaGFyICpfX3N0cmluZykgOwoKCmV4dGVybiB2b2lkICptZW1mcm9iICh2b2lk
ICpfX3MsIHNpemVfdCBfX24pIDsKCgoKCgoKZXh0ZXJuIGNoYXIgKmJhc2VuYW1lIChfX2NvbnN0
IGNoYXIgKl9fZmlsZW5hbWUpIDsKIyAzNTcgIi4uL3N0cmluZy9zdHJpbmcuaCIKIyAxICIuLi9z
eXNkZXBzL2kzODYvaTQ4Ni9iaXRzL3N0cmluZy5oIiAxCiMgNjQgIi4uL3N5c2RlcHMvaTM4Ni9p
NDg2L2JpdHMvc3RyaW5nLmgiCmV4dGVybiBfX2lubGluZSB2b2lkICpfX21lbWNweV9ieTQgKHZv
aWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbik7CgpleHRlcm4gX19pbmxpbmUgdm9pZCAqCl9fbWVtY3B5
X2J5NCAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3QgX19uKQp7CiAg
cmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBpbnQgX19kMCwgX19kMTsKICByZWdpc3RlciB2b2lkICpf
X3RtcCA9IF9fZGVzdDsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCIxOlxuXHQiCiAgICAg
Im1vdmwJKCUyKSwlMFxuXHQiCiAgICAgImxlYWwJNCglMiksJTJcblx0IgogICAgICJtb3ZsCSUw
LCglMSlcblx0IgogICAgICJsZWFsCTQoJTEpLCUxXG5cdCIKICAgICAiZGVjbAklM1xuXHQiCiAg
ICAgImpuegkxYiIKICAgICA6ICI9JnIiIChfX2QwKSwgIj0mciIgKF9fdG1wKSwgIj0mciIgKF9f
c3JjKSwgIj0mciIgKF9fZDEpCiAgICAgOiAiMSIgKF9fdG1wKSwgIjIiIChfX3NyYyksICIzIiAo
X19uIC8gNCkKICAgICA6ICJtZW1vcnkiLCAiY2MiKTsKICByZXR1cm4gX19kZXN0Owp9CgpleHRl
cm4gX19pbmxpbmUgdm9pZCAqX19tZW1jcHlfYnkyICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9p
ZCAqX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24p
OwoKZXh0ZXJuIF9faW5saW5lIHZvaWQgKgpfX21lbWNweV9ieTIgKHZvaWQgKl9fZGVzdCwgX19j
b25zdCB2b2lkICpfX3NyYywgc2l6ZV90IF9fbikKewogIHJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcg
aW50IF9fZDAsIF9fZDE7CiAgcmVnaXN0ZXIgdm9pZCAqX190bXAgPSBfX2Rlc3Q7CiAgX19hc21f
XyBfX3ZvbGF0aWxlX18KICAgICgic2hybAkkMSwlM1xuXHQiCiAgICAgImp6CTJmXG4iCiAgICAg
IjE6XG5cdCIKICAgICAibW92bAkoJTIpLCUwXG5cdCIKICAgICAibGVhbAk0KCUyKSwlMlxuXHQi
CiAgICAgIm1vdmwJJTAsKCUxKVxuXHQiCiAgICAgImxlYWwJNCglMSksJTFcblx0IgogICAgICJk
ZWNsCSUzXG5cdCIKICAgICAiam56CTFiXG4iCiAgICAgIjI6XG5cdCIKICAgICAibW92dwkoJTIp
LCV3MFxuXHQiCiAgICAgIm1vdncJJXcwLCglMSkiCiAgICAgOiAiPSZxIiAoX19kMCksICI9JnIi
IChfX3RtcCksICI9JnIiIChfX3NyYyksICI9JnIiIChfX2QxKQogICAgIDogIjEiIChfX3RtcCks
ICIyIiAoX19zcmMpLCAiMyIgKF9fbiAvIDIpCiAgICAgOiAibWVtb3J5IiwgImNjIik7CiAgcmV0
dXJuIF9fZGVzdDsKfQoKZXh0ZXJuIF9faW5saW5lIHZvaWQgKl9fbWVtY3B5X2cgKHZvaWQgKl9f
ZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX24pOwoKZXh0ZXJuIF9faW5saW5lIHZvaWQgKgpfX21lbWNweV9nICh2b2lk
ICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCnsKICByZWdpc3RlciB1
bnNpZ25lZCBsb25nIGludCBfX2QwLCBfX2QxLCBfX2QyOwogIHJlZ2lzdGVyIHZvaWQgKl9fdG1w
ID0gX19kZXN0OwogIF9fYXNtX18gX192b2xhdGlsZV9fCiAgICAoImNsZFxuXHQiCiAgICAgInNo
cmwJJDEsJSVlY3hcblx0IgogICAgICJqbmMJMWZcblx0IgogICAgICJtb3ZzYlxuIgogICAgICIx
OlxuXHQiCiAgICAgInNocmwJJDEsJSVlY3hcblx0IgogICAgICJqbmMJMmZcblx0IgogICAgICJt
b3Zzd1xuIgogICAgICIyOlxuXHQiCiAgICAgInJlcDsgbW92c2wiCiAgICAgOiAiPSZjIiAoX19k
MCksICI9JkQiIChfX2QxKSwgIj0mUyIgKF9fZDIpCiAgICAgOiAiMCIgKF9fbiksICIxIiAoX190
bXApLCAiMiIgKF9fc3JjKQogICAgIDogIm1lbW9yeSIsICJjYyIpOwogIHJldHVybiBfX2Rlc3Q7
Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgdm9pZCAqCm1lbW1vdmUgKHZvaWQgKl9fZGVzdCwgX19j
b25zdCB2b2lkICpfX3NyYywgc2l6ZV90IF9fbikKewogIHJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcg
aW50IF9fZDAsIF9fZDEsIF9fZDI7CiAgcmVnaXN0ZXIgdm9pZCAqX190bXAgPSBfX2Rlc3Q7CiAg
aWYgKF9fZGVzdCA8IF9fc3JjKQogICAgX19hc21fXyBfX3ZvbGF0aWxlX18KICAgICAgKCJjbGRc
blx0IgogICAgICAgInJlcDsgbW92c2IiCiAgICAgICA6ICI9JmMiIChfX2QwKSwgIj0mUyIgKF9f
ZDEpLCAiPSZEIiAoX19kMikKICAgICAgIDogIjAiIChfX24pLCAiMSIgKF9fc3JjKSwgIjIiIChf
X3RtcCkKICAgICAgIDogIm1lbW9yeSIpOwogIGVsc2UKICAgIF9fYXNtX18gX192b2xhdGlsZV9f
CiAgICAgICgic3RkXG5cdCIKICAgICAgICJyZXA7IG1vdnNiXG5cdCIKICAgICAgICJjbGQiCiAg
ICAgICA6ICI9JmMiIChfX2QwKSwgIj0mUyIgKF9fZDEpLCAiPSZEIiAoX19kMikKICAgICAgIDog
IjAiIChfX24pLCAiMSIgKF9fbiAtIDEgKyAoX19jb25zdCBjaGFyICopIF9fc3JjKSwKICAgICAg
ICAgIjIiIChfX24gLSAxICsgKGNoYXIgKikgX190bXApCiAgICAgICA6ICJtZW1vcnkiKTsKICBy
ZXR1cm4gX19kZXN0Owp9CgoKCgoKCgpleHRlcm4gX19pbmxpbmUgaW50Cm1lbWNtcCAoX19jb25z
dCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCnsKICByZWdpc3Rl
ciB1bnNpZ25lZCBsb25nIGludCBfX2QwLCBfX2QxLCBfX2QyOwogIHJlZ2lzdGVyIGludCBfX3Jl
czsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCJjbGRcblx0IgogICAgICJ0ZXN0bCAlMywl
M1xuXHQiCiAgICAgInJlcGU7IGNtcHNiXG5cdCIKICAgICAiamUJMWZcblx0IgogICAgICJzYmJs
CSUwLCUwXG5cdCIKICAgICAib3JsCSQxLCUwXG4iCiAgICAgIjE6IgogICAgIDogIj1hIiAoX19y
ZXMpLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSwgIj0mYyIgKF9fZDIpCiAgICAgOiAiMCIg
KDApLCAiMSIgKF9fczEpLCAiMiIgKF9fczIpLCAiMyIgKF9fbikKICAgICA6ICJjYyIpOwogIHJl
dHVybiBfX3JlczsKfQojIDMwMCAiLi4vc3lzZGVwcy9pMzg2L2k0ODYvYml0cy9zdHJpbmcuaCIK
ZXh0ZXJuIF9faW5saW5lIHZvaWQgKl9fbWVtc2V0X2Njbl9ieTQgKHZvaWQgKl9fcywgdW5zaWdu
ZWQgaW50IF9fYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX24pOwoKZXh0ZXJuIF9faW5saW5lIHZvaWQgKgpfX21lbXNldF9jY25fYnk0ICh2b2lkICpf
X3MsIHVuc2lnbmVkIGludCBfX2MsIHNpemVfdCBfX24pCnsKICByZWdpc3RlciB2b2lkICpfX3Rt
cCA9IF9fczsKICByZWdpc3RlciB1bnNpZ25lZCBsb25nIGludCBfX2QwOwojIDMxNiAiLi4vc3lz
ZGVwcy9pMzg2L2k0ODYvYml0cy9zdHJpbmcuaCIKICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAg
KCIxOlxuXHQiCiAgICAgIm1vdmwJJTAsKCUxKVxuXHQiCiAgICAgImFkZGwJJDQsJTFcblx0Igog
ICAgICJkZWNsCSUyXG5cdCIKICAgICAiam56CTFiXG4iCiAgICAgOiAiPSZyIiAoX19jKSwgIj0m
ciIgKF9fdG1wKSwgIj0mciIgKF9fZDApCiAgICAgOiAiMCIgKCh1bnNpZ25lZCBpbnQpIF9fYyks
ICIxIiAoX190bXApLCAiMiIgKF9fbiAvIDQpCiAgICAgOiAibWVtb3J5IiwgImNjIik7CgogIHJl
dHVybiBfX3M7Cn0KCmV4dGVybiBfX2lubGluZSB2b2lkICpfX21lbXNldF9jY25fYnkyICh2b2lk
ICpfX3MsIHVuc2lnbmVkIGludCBfX2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgX19uKTsKCmV4dGVybiBfX2lubGluZSB2b2lkICoKX19tZW1zZXRfY2Nu
X2J5MiAodm9pZCAqX19zLCB1bnNpZ25lZCBpbnQgX19jLCBzaXplX3QgX19uKQp7CiAgcmVnaXN0
ZXIgdW5zaWduZWQgbG9uZyBpbnQgX19kMCwgX19kMTsKICByZWdpc3RlciB2b2lkICpfX3RtcCA9
IF9fczsKIyAzNDYgIi4uL3N5c2RlcHMvaTM4Ni9pNDg2L2JpdHMvc3RyaW5nLmgiCiAgX19hc21f
XyBfX3ZvbGF0aWxlX18KICAgICgiMTpcdG1vdmwJJTAsKCUxKVxuXHQiCiAgICAgImxlYWwJNCgl
MSksJTFcblx0IgogICAgICJkZWNsCSUyXG5cdCIKICAgICAiam56CTFiXG4iCiAgICAgIm1vdncJ
JXcwLCglMSkiCiAgICAgOiAiPSZxIiAoX19kMCksICI9JnIiIChfX3RtcCksICI9JnIiIChfX2Qx
KQogICAgIDogIjAiICgodW5zaWduZWQgaW50KSBfX2MpLCAiMSIgKF9fdG1wKSwgIjIiIChfX24g
LyA0KQogICAgIDogIm1lbW9yeSIsICJjYyIpOwoKICByZXR1cm4gX19zOwp9CiMgMzY2ICIuLi9z
eXNkZXBzL2kzODYvaTQ4Ni9iaXRzL3N0cmluZy5oIgpleHRlcm4gX19pbmxpbmUgdm9pZCAqX19t
ZW1zZXRfZ2NuX2J5NCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKTsKCmV4dGVybiBf
X2lubGluZSB2b2lkICoKX19tZW1zZXRfZ2NuX2J5NCAodm9pZCAqX19zLCBpbnQgX19jLCBzaXpl
X3QgX19uKQp7CiAgcmVnaXN0ZXIgdm9pZCAqX190bXAgPSBfX3M7CiAgcmVnaXN0ZXIgdW5zaWdu
ZWQgbG9uZyBpbnQgX19kMDsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCJtb3ZiCSViMCwl
aDBcbiIKICAgICAicHVzaHcJJXcwXG5cdCIKICAgICAic2hsbAkkMTYsJTBcblx0IgogICAgICJw
b3B3CSV3MFxuIgogICAgICIxOlxuXHQiCiAgICAgIm1vdmwJJTAsKCUxKVxuXHQiCiAgICAgImFk
ZGwJJDQsJTFcblx0IgogICAgICJkZWNsCSUyXG5cdCIKICAgICAiam56CTFiXG4iCiAgICAgOiAi
PSZxIiAoX19jKSwgIj0mciIgKF9fdG1wKSwgIj0mciIgKF9fZDApCiAgICAgOiAiMCIgKCh1bnNp
Z25lZCBpbnQpIF9fYyksICIxIiAoX190bXApLCAiMiIgKF9fbiAvIDQpCiAgICAgOiAibWVtb3J5
IiwgImNjIik7CiAgcmV0dXJuIF9fczsKfQoKZXh0ZXJuIF9faW5saW5lIHZvaWQgKl9fbWVtc2V0
X2djbl9ieTIgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbik7CgpleHRlcm4gX19pbmxp
bmUgdm9pZCAqCl9fbWVtc2V0X2djbl9ieTIgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9f
bikKewogIHJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgaW50IF9fZDAsIF9fZDE7CiAgcmVnaXN0ZXIg
dm9pZCAqX190bXAgPSBfX3M7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18KICAgICgibW92YgklYjAs
JWgwXG5cdCIKICAgICAicHVzaHcJJXcwXG5cdCIKICAgICAic2hsbAkkMTYsJTBcblx0IgogICAg
ICJwb3B3CSV3MFxuIgogICAgICIxOlxuXHQiCiAgICAgIm1vdmwJJTAsKCUxKVxuXHQiCiAgICAg
ImxlYWwJNCglMSksJTFcblx0IgogICAgICJkZWNsCSUyXG5cdCIKICAgICAiam56CTFiXG4iCiAg
ICAgIm1vdncJJXcwLCglMSkiCiAgICAgOiAiPSZxIiAoX19kMCksICI9JnIiIChfX3RtcCksICI9
JnIiIChfX2QxKQogICAgIDogIjAiICgodW5zaWduZWQgaW50KSBfX2MpLCAiMSIgKF9fdG1wKSwg
IjIiIChfX24gLyA0KQogICAgIDogIm1lbW9yeSIsICJjYyIpOwogIHJldHVybiBfX3M7Cn0KCgoK
CgpleHRlcm4gX19pbmxpbmUgdm9pZCAqCm1lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBf
X2MsIHNpemVfdCBfX24pCnsKICByZWdpc3RlciB1bnNpZ25lZCBsb25nIGludCBfX2QwOwoKCgog
IHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKl9fcmVzOwogIGlmIChfX24gPT0gMCkKICAgIHJldHVy
biAoKHZvaWQgKikwKTsKIyA0MzYgIi4uL3N5c2RlcHMvaTM4Ni9pNDg2L2JpdHMvc3RyaW5nLmgi
CiAgX19hc21fXyBfX3ZvbGF0aWxlX18KICAgICgiY2xkXG5cdCIKICAgICAicmVwbmU7IHNjYXNi
XG5cdCIKICAgICAiamUJMWZcblx0IgogICAgICJtb3ZsCSQxLCUwXG4iCiAgICAgIjE6IgogICAg
IDogIj1EIiAoX19yZXMpLCAiPSZjIiAoX19kMCkKICAgICA6ICJhIiAoX19jKSwgIjAiIChfX3Mp
LCAiMSIgKF9fbikKICAgICA6ICJjYyIpOwoKICByZXR1cm4gX19yZXMgLSAxOwp9CgoKCgpleHRl
cm4gX19pbmxpbmUgdm9pZCAqCl9fbWVtcmNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2Ms
IHNpemVfdCBfX24pCnsKICByZWdpc3RlciB1bnNpZ25lZCBsb25nIGludCBfX2QwOwoKCgogIHJl
Z2lzdGVyIHZvaWQgKl9fcmVzOwogIGlmIChfX24gPT0gMCkKICAgIHJldHVybiAoKHZvaWQgKikw
KTsKIyA0NzIgIi4uL3N5c2RlcHMvaTM4Ni9pNDg2L2JpdHMvc3RyaW5nLmgiCiAgX19hc21fXyBf
X3ZvbGF0aWxlX18KICAgICgic3RkXG5cdCIKICAgICAicmVwbmU7IHNjYXNiXG5cdCIKICAgICAi
amUgMWZcblx0IgogICAgICJvcmwgJC0xLCUwXG4iCiAgICAgIjE6XHRjbGQiCiAgICAgOiAiPUQi
IChfX3JlcyksICI9JmMiIChfX2QwKQogICAgIDogImEiIChfX2MpLCAiMCIgKF9fcyArIF9fbiAt
IDEpLCAiMSIgKF9fbikKICAgICA6ICJjYyIpOwoKICByZXR1cm4gX19yZXMgKyAxOwp9CgoKCgoK
CgpleHRlcm4gX19pbmxpbmUgdm9pZCAqX19yYXdtZW1jaHIgKGNvbnN0IHZvaWQgKl9fcywgaW50
IF9fYyk7CgoKZXh0ZXJuIF9faW5saW5lIHZvaWQgKgpfX3Jhd21lbWNociAoY29uc3Qgdm9pZCAq
X19zLCBpbnQgX19jKQp7CiAgcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBpbnQgX19kMDsKICByZWdp
c3RlciB1bnNpZ25lZCBjaGFyICpfX3JlczsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCJj
bGRcblx0IgogICAgICJyZXBuZTsgc2Nhc2Jcblx0IgogICAgIDogIj1EIiAoX19yZXMpLCAiPSZj
IiAoX19kMCkKICAgICA6ICJhIiAoX19jKSwgIjAiIChfX3MpLCAiMSIgKDB4ZmZmZmZmZmYpCiAg
ICAgOiAiY2MiKTsKICByZXR1cm4gX19yZXMgLSAxOwp9CgpleHRlcm4gX19pbmxpbmUgdm9pZCAq
CnJhd21lbWNociAoY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKQp7CiAgcmV0dXJuIF9fcmF3bWVt
Y2hyIChfX3MsIF9fYyk7Cn0KIyA1MjMgIi4uL3N5c2RlcHMvaTM4Ni9pNDg2L2JpdHMvc3RyaW5n
LmgiCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJsZW5fZyAoX19jb25zdCBjaGFyICpfX3N0
cik7CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RybGVuX2cgKF9fY29uc3QgY2hhciAqX19z
dHIpCnsKICByZWdpc3RlciBjaGFyIF9fZHVtbXk7CiAgcmVnaXN0ZXIgX19jb25zdCBjaGFyICpf
X3RtcCA9IF9fc3RyOwogIF9fYXNtX18gX192b2xhdGlsZV9fCiAgICAoIjE6XG5cdCIKICAgICAi
bW92YgkoJTApLCViMVxuXHQiCiAgICAgImxlYWwJMSglMCksJTBcblx0IgogICAgICJ0ZXN0Ygkl
YjEsJWIxXG5cdCIKICAgICAiam5lCTFiIgogICAgIDogIj1yIiAoX190bXApLCAiPSZxIiAoX19k
dW1teSkKICAgICA6ICIwIiAoX19zdHIpCiAgICAgOiAibWVtb3J5IiwgImNjIiApOwogIHJldHVy
biBfX3RtcCAtIF9fc3RyIC0gMTsKfQojIDYwMyAiLi4vc3lzZGVwcy9pMzg2L2k0ODYvYml0cy9z
dHJpbmcuaCIKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RyY3B5X2cgKGNoYXIgKl9fZGVzdCwg
X19jb25zdCBjaGFyICpfX3NyYyk7CgpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RyY3B5X2cg
KGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyICpfX3NyYykKewogIHJlZ2lzdGVyIGNoYXIgKl9f
dG1wID0gX19kZXN0OwogIHJlZ2lzdGVyIGNoYXIgX19kdW1teTsKICBfX2FzbV9fIF9fdm9sYXRp
bGVfXwogICAgKAogICAgICIxOlxuXHQiCiAgICAgIm1vdmIJKCUwKSwlYjJcblx0IgogICAgICJs
ZWFsCTEoJTApLCUwXG5cdCIKICAgICAibW92YgklYjIsKCUxKVxuXHQiCiAgICAgImxlYWwJMSgl
MSksJTFcblx0IgogICAgICJ0ZXN0YgklYjIsJWIyXG5cdCIKICAgICAiam5lCTFiIgogICAgIDog
Ij0mciIgKF9fc3JjKSwgIj0mciIgKF9fdG1wKSwgIj0mcSIgKF9fZHVtbXkpCiAgICAgOiAiMCIg
KF9fc3JjKSwgIjEiIChfX3RtcCkKICAgICA6ICJtZW1vcnkiLCAiY2MiKTsKICByZXR1cm4gX19k
ZXN0Owp9CiMgNjk3ICIuLi9zeXNkZXBzL2kzODYvaTQ4Ni9iaXRzL3N0cmluZy5oIgpleHRlcm4g
X19pbmxpbmUgY2hhciAqX19tZW1wY3B5X2J5NCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIg
Kl9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3Jj
bGVuKTsKCmV4dGVybiBfX2lubGluZSBjaGFyICoKX19tZW1wY3B5X2J5NCAoY2hhciAqX19kZXN0
LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19zcmNsZW4pCnsKICByZWdpc3RlciBjaGFy
ICpfX3RtcCA9IF9fZGVzdDsKICByZWdpc3RlciB1bnNpZ25lZCBsb25nIGludCBfX2QwLCBfX2Qx
OwogIF9fYXNtX18gX192b2xhdGlsZV9fCiAgICAoIjE6XG5cdCIKICAgICAibW92bAkoJTIpLCUw
XG5cdCIKICAgICAibGVhbAk0KCUyKSwlMlxuXHQiCiAgICAgIm1vdmwJJTAsKCUxKVxuXHQiCiAg
ICAgImxlYWwJNCglMSksJTFcblx0IgogICAgICJkZWNsCSUzXG5cdCIKICAgICAiam56CTFiIgog
ICAgIDogIj0mciIgKF9fZDApLCAiPXIiIChfX3RtcCksICI9JnIiIChfX3NyYyksICI9JnIiIChf
X2QxKQogICAgIDogIjEiIChfX3RtcCksICIyIiAoX19zcmMpLCAiMyIgKF9fc3JjbGVuIC8gNCkK
ICAgICA6ICJtZW1vcnkiLCAiY2MiKTsKICByZXR1cm4gX190bXA7Cn0KCmV4dGVybiBfX2lubGlu
ZSBjaGFyICpfX21lbXBjcHlfYnkyIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19zcmMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zcmNsZW4pOwoK
ZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX21lbXBjcHlfYnkyIChjaGFyICpfX2Rlc3QsIF9fY29u
c3QgY2hhciAqX19zcmMsIHNpemVfdCBfX3NyY2xlbikKewogIHJlZ2lzdGVyIGNoYXIgKl9fdG1w
ID0gX19kZXN0OwogIHJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgaW50IF9fZDAsIF9fZDE7CiAgX19h
c21fXyBfX3ZvbGF0aWxlX18KICAgICgic2hybAkkMSwlM1xuXHQiCiAgICAgImp6CTJmXG4iCiAg
ICAgIjE6XG5cdCIKICAgICAibW92bAkoJTIpLCUwXG5cdCIKICAgICAibGVhbAk0KCUyKSwlMlxu
XHQiCiAgICAgIm1vdmwJJTAsKCUxKVxuXHQiCiAgICAgImxlYWwJNCglMSksJTFcblx0IgogICAg
ICJkZWNsCSUzXG5cdCIKICAgICAiam56CTFiXG4iCiAgICAgIjI6XG5cdCIKICAgICAibW92dwko
JTIpLCV3MFxuXHQiCiAgICAgIm1vdncJJXcwLCglMSkiCiAgICAgOiAiPSZxIiAoX19kMCksICI9
ciIgKF9fdG1wKSwgIj0mciIgKF9fc3JjKSwgIj0mciIgKF9fZDEpCiAgICAgOiAiMSIgKF9fdG1w
KSwgIjIiIChfX3NyYyksICIzIiAoX19zcmNsZW4gLyAyKQogICAgIDogIm1lbW9yeSIsICJjYyIp
OwogIHJldHVybiBfX3RtcCArIDI7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX21lbXBjcHlf
YnluIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19zcmMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zcmNsZW4pOwoKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKgpfX21lbXBjcHlfYnluIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19zcmMsIHNp
emVfdCBfX3NyY2xlbikKewogIHJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgX19kMCwgX19kMTsKICBy
ZWdpc3RlciBjaGFyICpfX3RtcCA9IF9fZGVzdDsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAg
KCJjbGRcblx0IgogICAgICJzaHJsCSQxLCUlZWN4XG5cdCIKICAgICAiam5jCTFmXG5cdCIKICAg
ICAibW92c2JcbiIKICAgICAiMTpcblx0IgogICAgICJzaHJsCSQxLCUlZWN4XG5cdCIKICAgICAi
am5jCTJmXG5cdCIKICAgICAibW92c3dcbiIKICAgICAiMjpcblx0IgogICAgICJyZXA7IG1vdnNs
IgogICAgIDogIj1EIiAoX190bXApLCAiPSZjIiAoX19kMCksICI9JlMiIChfX2QxKQogICAgIDog
IjAiIChfX3RtcCksICIxIiAoX19zcmNsZW4pLCAiMiIgKF9fc3JjKQogICAgIDogIm1lbW9yeSIs
ICJjYyIpOwogIHJldHVybiBfX3RtcDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RwY3B5
X2cgKGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyICpfX3NyYyk7CgpleHRlcm4gX19pbmxpbmUg
Y2hhciAqCl9fc3RwY3B5X2cgKGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyICpfX3NyYykKewog
IHJlZ2lzdGVyIGNoYXIgKl9fdG1wID0gX19kZXN0OwogIHJlZ2lzdGVyIGNoYXIgX19kdW1teTsK
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKAogICAgICIxOlxuXHQiCiAgICAgIm1vdmIJKCUw
KSwlYjJcblx0IgogICAgICJsZWFsCTEoJTApLCUwXG5cdCIKICAgICAibW92YgklYjIsKCUxKVxu
XHQiCiAgICAgImxlYWwJMSglMSksJTFcblx0IgogICAgICJ0ZXN0YgklYjIsJWIyXG5cdCIKICAg
ICAiam5lCTFiIgogICAgIDogIj0mciIgKF9fc3JjKSwgIj1yIiAoX190bXApLCAiPSZxIiAoX19k
dW1teSkKICAgICA6ICIwIiAoX19zcmMpLCAiMSIgKF9fdG1wKQogICAgIDogIm1lbW9yeSIsICJj
YyIpOwogIHJldHVybiBfX3RtcCAtIDE7Cn0KIyA4MTEgIi4uL3N5c2RlcHMvaTM4Ni9pNDg2L2Jp
dHMvc3RyaW5nLmgiCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cm5jcHlfYnk0IChjaGFyICpf
X2Rlc3QsIF9fY29uc3QgY2hhciBfX3NyY1tdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IF9fc3JjbGVuLCBzaXplX3QgX19uKTsKCmV4dGVybiBfX2lubGluZSBj
aGFyICoKX19zdHJuY3B5X2J5NCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgX19zcmNbXSwg
c2l6ZV90IF9fc3JjbGVuLCBzaXplX3QgX19uKQp7CiAgcmVnaXN0ZXIgY2hhciAqX190bXAgPSBf
X2Rlc3Q7CiAgcmVnaXN0ZXIgaW50IF9fZHVtbXkxLCBfX2R1bW15MjsKICBfX2FzbV9fIF9fdm9s
YXRpbGVfXwogICAgKCIxOlxuXHQiCiAgICAgIm1vdmwJKCUyKSwlMFxuXHQiCiAgICAgImxlYWwJ
NCglMiksJTJcblx0IgogICAgICJtb3ZsCSUwLCglMSlcblx0IgogICAgICJsZWFsCTQoJTEpLCUx
XG5cdCIKICAgICAiZGVjbAklM1xuXHQiCiAgICAgImpuegkxYiIKICAgICA6ICI9JnIiIChfX2R1
bW15MSksICI9ciIgKF9fdG1wKSwgIj0mciIgKF9fc3JjKSwgIj0mciIgKF9fZHVtbXkyKQogICAg
IDogIjEiIChfX3RtcCksICIyIiAoX19zcmMpLCAiMyIgKF9fc3JjbGVuIC8gNCkKICAgICA6ICJt
ZW1vcnkiLCAiY2MiKTsKICAodm9pZCkgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFu
dF9wIChfX24gLSBfX3NyY2xlbikgJiYgKF9fbiAtIF9fc3JjbGVuKSA8PSAxNiA/ICgoX19uIC0g
X19zcmNsZW4pID09IDEgPyAoeyB2b2lkICpfX3MgPSAoX190bXApOyAqKCh1bnNpZ25lZCBjaGFy
ICopIF9fcykgPSAodW5zaWduZWQgY2hhcikgKCdcMCcpOyBfX3M7IH0pIDogKHsgdm9pZCAqX19z
ID0gKF9fdG1wKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsgdW5zaWduZWQgc2hvcnQgaW50
IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9fczsgdW5zaWduZWQgaW50IF9f
YyA9ICgodW5zaWduZWQgaW50KSAoKHVuc2lnbmVkIGNoYXIpICgnXDAnKSkpICogMHgwMTAxMDEw
MTsgaWYgKF9fbiAtIF9fc3JjbGVuID09IDMgfHwgX19uIC0gX19zcmNsZW4gPj0gNSkgX19hc21f
XyBfX3ZvbGF0aWxlX18gKCIiIDogIj1yIiAoX19jKSA6ICIwIiAoX19jKSk7IHN3aXRjaCAoX19u
IC0gX19zcmNsZW4pIHsgY2FzZSAxNTogX191LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMTogX191LT5fX3VpID0gX19jOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA3OiBfX3UtPl9fdWkgPSBfX2M7
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDM6IF9fdS0+X191
c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2M7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDIpOyBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2Fz
ZSAxNDogX191LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBfX2M7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hv
cnQgaW50KSBfX2M7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9fdWkgPSBfX2M7IF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDk6IF9fdS0+X191aSA9IF9fYzsgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNTogX191LT5fX3VpID0g
X19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxOiBfX3Ut
Pl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNjogX191LT5fX3VpID0g
X19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMjogX191
LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2Fz
ZSA4OiBfX3UtPl9fdWkgPSBfX2M7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSAr
IDQpOyBjYXNlIDQ6IF9fdS0+X191aSA9IF9fYzsgY2FzZSAwOiBicmVhazsgfSBfX3M7IH0pKSA6
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoJ1wwJykgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9f
biAtIF9fc3JjbGVuKSA/ICgoKF9fbiAtIF9fc3JjbGVuKSAlIDQgPT0gMCkgPyBfX21lbXNldF9j
Y25fYnk0IChfX3RtcCwgKCh1bnNpZ25lZCBpbnQpICgodW5zaWduZWQgY2hhcikgKCdcMCcpKSkg
KiAweDAxMDEwMTAxLCBfX24gLSBfX3NyY2xlbikgOiAoKChfX24gLSBfX3NyY2xlbikgJSAyID09
IDApID8gX19tZW1zZXRfY2NuX2J5MiAoX190bXAsICgodW5zaWduZWQgaW50KSAoKHVuc2lnbmVk
IGNoYXIpICgnXDAnKSkpICogMHgwMTAxMDEwMSwgX19uIC0gX19zcmNsZW4pIDogbWVtc2V0IChf
X3RtcCwgJ1wwJywgX19uIC0gX19zcmNsZW4pKSkgOiBtZW1zZXQgKF9fdG1wLCAnXDAnLCBfX24g
LSBfX3NyY2xlbikpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChfX24gLSBfX3NyY2xlbikgPyAo
KChfX24gLSBfX3NyY2xlbikgJSA0ID09IDApID8gX19tZW1zZXRfZ2NuX2J5NCAoX190bXAsICdc
MCcsIF9fbiAtIF9fc3JjbGVuKSA6ICgoKF9fbiAtIF9fc3JjbGVuKSAlIDIgPT0gMCkgPyBfX21l
bXNldF9nY25fYnkyIChfX3RtcCwgJ1wwJywgX19uIC0gX19zcmNsZW4pIDogbWVtc2V0IChfX3Rt
cCwgJ1wwJywgX19uIC0gX19zcmNsZW4pKSkgOiBtZW1zZXQgKF9fdG1wLCAnXDAnLCBfX24gLSBf
X3NyY2xlbikpKSkpOwogIHJldHVybiBfX2Rlc3Q7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpf
X3N0cm5jcHlfYnkyIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciBfX3NyY1tdLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVuLCBzaXplX3QgX19u
KTsKCmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJuY3B5X2J5MiAoY2hhciAqX19kZXN0LCBf
X2NvbnN0IGNoYXIgX19zcmNbXSwgc2l6ZV90IF9fc3JjbGVuLCBzaXplX3QgX19uKQp7CiAgcmVn
aXN0ZXIgY2hhciAqX190bXAgPSBfX2Rlc3Q7CiAgcmVnaXN0ZXIgaW50IF9fZHVtbXkxLCBfX2R1
bW15MjsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCJzaHJsCSQxLCUzXG5cdCIKICAgICAi
anoJMmZcbiIKICAgICAiMTpcblx0IgogICAgICJtb3ZsCSglMiksJTBcblx0IgogICAgICJsZWFs
CTQoJTIpLCUyXG5cdCIKICAgICAibW92bAklMCwoJTEpXG5cdCIKICAgICAibGVhbAk0KCUxKSwl
MVxuXHQiCiAgICAgImRlY2wJJTNcblx0IgogICAgICJqbnoJMWJcbiIKICAgICAiMjpcblx0Igog
ICAgICJtb3Z3CSglMiksJXcwXG5cdCIKICAgICAibW92dwkldzAsKCUxKVxuXHQiCiAgICAgOiAi
PSZxIiAoX19kdW1teTEpLCAiPXIiIChfX3RtcCksICI9JnIiIChfX3NyYyksICI9JnIiIChfX2R1
bW15MikKICAgICA6ICIxIiAoX190bXApLCAiMiIgKF9fc3JjKSwgIjMiIChfX3NyY2xlbiAvIDIp
CiAgICAgOiAibWVtb3J5IiwgImNjIik7CiAgKHZvaWQpIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0
aW5fY29uc3RhbnRfcCAoX19uIC0gX19zcmNsZW4pICYmIChfX24gLSBfX3NyY2xlbikgPD0gMTYg
PyAoKF9fbiAtIF9fc3JjbGVuKSA9PSAxID8gKHsgdm9pZCAqX19zID0gKF9fdG1wICsgMik7ICoo
KHVuc2lnbmVkIGNoYXIgKikgX19zKSA9ICh1bnNpZ25lZCBjaGFyKSAoJ1wwJyk7IF9fczsgfSkg
OiAoeyB2b2lkICpfX3MgPSAoX190bXAgKyAyKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsg
dW5zaWduZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9f
czsgdW5zaWduZWQgaW50IF9fYyA9ICgodW5zaWduZWQgaW50KSAoKHVuc2lnbmVkIGNoYXIpICgn
XDAnKSkpICogMHgwMTAxMDEwMTsgaWYgKF9fbiAtIF9fc3JjbGVuID09IDMgfHwgX19uIC0gX19z
cmNsZW4gPj0gNSkgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIiIDogIj1yIiAoX19jKSA6ICIwIiAo
X19jKSk7IHN3aXRjaCAoX19uIC0gX19zcmNsZW4pIHsgY2FzZSAxNTogX191LT5fX3VpID0gX19j
OyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMTogX191LT5f
X3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA3
OiBfX3UtPl9fdWkgPSBfX2M7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OyBjYXNlIDM6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2M7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOyBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hh
cikgX19jOyBicmVhazsgY2FzZSAxNDogX191LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19jOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBfX2M7
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191
c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2M7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9fdWkg
PSBfX2M7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDk6IF9f
dS0+X191aSA9IF9fYzsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNh
c2UgNTogX191LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsgY2FzZSAxOiBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2Fz
ZSAxNjogX191LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsgY2FzZSA4OiBfX3UtPl9fdWkgPSBfX2M7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDQ6IF9fdS0+X191aSA9IF9fYzsgY2FzZSAwOiBi
cmVhazsgfSBfX3M7IH0pKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoJ1wwJykgPyAoX19idWls
dGluX2NvbnN0YW50X3AgKF9fbiAtIF9fc3JjbGVuKSA/ICgoKF9fbiAtIF9fc3JjbGVuKSAlIDQg
PT0gMCkgPyBfX21lbXNldF9jY25fYnk0IChfX3RtcCArIDIsICgodW5zaWduZWQgaW50KSAoKHVu
c2lnbmVkIGNoYXIpICgnXDAnKSkpICogMHgwMTAxMDEwMSwgX19uIC0gX19zcmNsZW4pIDogKCgo
X19uIC0gX19zcmNsZW4pICUgMiA9PSAwKSA/IF9fbWVtc2V0X2Njbl9ieTIgKF9fdG1wICsgMiwg
KCh1bnNpZ25lZCBpbnQpICgodW5zaWduZWQgY2hhcikgKCdcMCcpKSkgKiAweDAxMDEwMTAxLCBf
X24gLSBfX3NyY2xlbikgOiBtZW1zZXQgKF9fdG1wICsgMiwgJ1wwJywgX19uIC0gX19zcmNsZW4p
KSkgOiBtZW1zZXQgKF9fdG1wICsgMiwgJ1wwJywgX19uIC0gX19zcmNsZW4pKSA6IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAoX19uIC0gX19zcmNsZW4pID8gKCgoX19uIC0gX19zcmNsZW4pICUgNCA9
PSAwKSA/IF9fbWVtc2V0X2djbl9ieTQgKF9fdG1wICsgMiwgJ1wwJywgX19uIC0gX19zcmNsZW4p
IDogKCgoX19uIC0gX19zcmNsZW4pICUgMiA9PSAwKSA/IF9fbWVtc2V0X2djbl9ieTIgKF9fdG1w
ICsgMiwgJ1wwJywgX19uIC0gX19zcmNsZW4pIDogbWVtc2V0IChfX3RtcCArIDIsICdcMCcsIF9f
biAtIF9fc3JjbGVuKSkpIDogbWVtc2V0IChfX3RtcCArIDIsICdcMCcsIF9fbiAtIF9fc3JjbGVu
KSkpKSk7CiAgcmV0dXJuIF9fZGVzdDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RybmNw
eV9ieW4gKGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyIF9fc3JjW10sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zcmNsZW4sIHNpemVfdCBfX24pOwoKZXh0
ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cm5jcHlfYnluIChjaGFyICpfX2Rlc3QsIF9fY29uc3Qg
Y2hhciBfX3NyY1tdLCBzaXplX3QgX19zcmNsZW4sIHNpemVfdCBfX24pCnsKICByZWdpc3RlciB1
bnNpZ25lZCBsb25nIGludCBfX2QwLCBfX2QxOwogIHJlZ2lzdGVyIGNoYXIgKl9fdG1wID0gX19k
ZXN0OwogIF9fYXNtX18gX192b2xhdGlsZV9fCiAgICAoImNsZFxuXHQiCiAgICAgInNocmwJJDEs
JTFcblx0IgogICAgICJqbmMJMWZcblx0IgogICAgICJtb3ZzYlxuIgogICAgICIxOlxuXHQiCiAg
ICAgInNocmwJJDEsJTFcblx0IgogICAgICJqbmMJMmZcblx0IgogICAgICJtb3Zzd1xuIgogICAg
ICIyOlxuXHQiCiAgICAgInJlcDsgbW92c2wiCiAgICAgOiAiPUQiIChfX3RtcCksICI9JmMiIChf
X2QwKSwgIj0mUyIgKF9fZDEpCiAgICAgOiAiMSIgKF9fc3JjbGVuKSwgIjAiIChfX3RtcCksIjIi
IChfX3NyYykKICAgICA6ICJtZW1vcnkiLCAiY2MiKTsKICAodm9pZCkgKF9fZXh0ZW5zaW9uX18g
KF9fYnVpbHRpbl9jb25zdGFudF9wIChfX24gLSBfX3NyY2xlbikgJiYgKF9fbiAtIF9fc3JjbGVu
KSA8PSAxNiA/ICgoX19uIC0gX19zcmNsZW4pID09IDEgPyAoeyB2b2lkICpfX3MgPSAoX190bXAp
OyAqKCh1bnNpZ25lZCBjaGFyICopIF9fcykgPSAodW5zaWduZWQgY2hhcikgKCdcMCcpOyBfX3M7
IH0pIDogKHsgdm9pZCAqX19zID0gKF9fdG1wKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsg
dW5zaWduZWQgc2hvcnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9f
czsgdW5zaWduZWQgaW50IF9fYyA9ICgodW5zaWduZWQgaW50KSAoKHVuc2lnbmVkIGNoYXIpICgn
XDAnKSkpICogMHgwMTAxMDEwMTsgaWYgKF9fbiAtIF9fc3JjbGVuID09IDMgfHwgX19uIC0gX19z
cmNsZW4gPj0gNSkgX19hc21fXyBfX3ZvbGF0aWxlX18gKCIiIDogIj1yIiAoX19jKSA6ICIwIiAo
X19jKSk7IHN3aXRjaCAoX19uIC0gX19zcmNsZW4pIHsgY2FzZSAxNTogX191LT5fX3VpID0gX19j
OyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMTogX191LT5f
X3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA3
OiBfX3UtPl9fdWkgPSBfX2M7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OyBjYXNlIDM6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2M7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOyBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hh
cikgX19jOyBicmVhazsgY2FzZSAxNDogX191LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19jOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBfX2M7
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191
c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2M7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9fdWkg
PSBfX2M7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDk6IF9f
dS0+X191aSA9IF9fYzsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNh
c2UgNTogX191LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsgY2FzZSAxOiBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2Fz
ZSAxNjogX191LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0gX19jOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsgY2FzZSA4OiBfX3UtPl9fdWkgPSBfX2M7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDQ6IF9fdS0+X191aSA9IF9fYzsgY2FzZSAwOiBi
cmVhazsgfSBfX3M7IH0pKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoJ1wwJykgPyAoX19idWls
dGluX2NvbnN0YW50X3AgKF9fbiAtIF9fc3JjbGVuKSA/ICgoKF9fbiAtIF9fc3JjbGVuKSAlIDQg
PT0gMCkgPyBfX21lbXNldF9jY25fYnk0IChfX3RtcCwgKCh1bnNpZ25lZCBpbnQpICgodW5zaWdu
ZWQgY2hhcikgKCdcMCcpKSkgKiAweDAxMDEwMTAxLCBfX24gLSBfX3NyY2xlbikgOiAoKChfX24g
LSBfX3NyY2xlbikgJSAyID09IDApID8gX19tZW1zZXRfY2NuX2J5MiAoX190bXAsICgodW5zaWdu
ZWQgaW50KSAoKHVuc2lnbmVkIGNoYXIpICgnXDAnKSkpICogMHgwMTAxMDEwMSwgX19uIC0gX19z
cmNsZW4pIDogbWVtc2V0IChfX3RtcCwgJ1wwJywgX19uIC0gX19zcmNsZW4pKSkgOiBtZW1zZXQg
KF9fdG1wLCAnXDAnLCBfX24gLSBfX3NyY2xlbikpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChf
X24gLSBfX3NyY2xlbikgPyAoKChfX24gLSBfX3NyY2xlbikgJSA0ID09IDApID8gX19tZW1zZXRf
Z2NuX2J5NCAoX190bXAsICdcMCcsIF9fbiAtIF9fc3JjbGVuKSA6ICgoKF9fbiAtIF9fc3JjbGVu
KSAlIDIgPT0gMCkgPyBfX21lbXNldF9nY25fYnkyIChfX3RtcCwgJ1wwJywgX19uIC0gX19zcmNs
ZW4pIDogbWVtc2V0IChfX3RtcCwgJ1wwJywgX19uIC0gX19zcmNsZW4pKSkgOiBtZW1zZXQgKF9f
dG1wLCAnXDAnLCBfX24gLSBfX3NyY2xlbikpKSkpOwogIHJldHVybiBfX2Rlc3Q7Cn0KCmV4dGVy
biBfX2lubGluZSBjaGFyICpfX3N0cm5jcHlfZ2cgKGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFy
ICpfX3NyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7
CgpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RybmNweV9nZyAoY2hhciAqX19kZXN0LCBfX2Nv
bnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uKQp7CiAgcmVnaXN0ZXIgY2hhciAqX190bXAgPSBf
X2Rlc3Q7CiAgcmVnaXN0ZXIgY2hhciBfX2R1bW15OwogIGlmIChfX24gPiAwKQogICAgX19hc21f
XyBfX3ZvbGF0aWxlX18KICAgICAgKCIxOlxuXHQiCiAgICAgICAibW92YgkoJTApLCUyXG5cdCIK
ICAgICAgICJpbmNsCSUwXG5cdCIKICAgICAgICJtb3ZiCSUyLCglMSlcblx0IgogICAgICAgImlu
Y2wJJTFcblx0IgogICAgICAgImRlY2wJJTNcblx0IgogICAgICAgImplCTNmXG5cdCIKICAgICAg
ICJ0ZXN0YgklMiwlMlxuXHQiCiAgICAgICAiam5lCTFiXG5cdCIKICAgICAgICIyOlxuXHQiCiAg
ICAgICAibW92YgklMiwoJTEpXG5cdCIKICAgICAgICJpbmNsCSUxXG5cdCIKICAgICAgICJkZWNs
CSUzXG5cdCIKICAgICAgICJqbmUJMmJcblx0IgogICAgICAgIjM6IgogICAgICAgOiAiPSZyIiAo
X19zcmMpLCAiPSZyIiAoX190bXApLCAiPSZxIiAoX19kdW1teSksICI9JnIiIChfX24pCiAgICAg
ICA6ICIwIiAoX19zcmMpLCAiMSIgKF9fdG1wKSwgIjMiIChfX24pCiAgICAgICA6ICJtZW1vcnki
LCAiY2MiKTsKCiAgcmV0dXJuIF9fZGVzdDsKfQojIDkyOCAiLi4vc3lzZGVwcy9pMzg2L2k0ODYv
Yml0cy9zdHJpbmcuaCIKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RyY2F0X2MgKGNoYXIgKl9f
ZGVzdCwgX19jb25zdCBjaGFyIF9fc3JjW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgX19zcmNsZW4pOwoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cmNhdF9j
IChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciBfX3NyY1tdLCBzaXplX3QgX19zcmNsZW4pCnsK
IyA5NDQgIi4uL3N5c2RlcHMvaTM4Ni9pNDg2L2JpdHMvc3RyaW5nLmgiCiAgcmVnaXN0ZXIgY2hh
ciAqX190bXAgPSBfX2Rlc3QgLSAxOwogIF9fYXNtX18gX192b2xhdGlsZV9fCiAgICAoIjE6XG5c
dCIKICAgICAiaW5jbAklMFxuXHQiCiAgICAgImNtcGIJJDAsKCUwKVxuXHQiCiAgICAgImpuZQkx
YlxuIgogICAgIDogIj1yIiAoX190bXApCiAgICAgOiAiMCIgKF9fdG1wKQogICAgIDogImNjIik7
CgogICh2b2lkKSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fc3JjbGVu
KSA/ICgoX19zcmNsZW4pID09IDAgPyAoX190bXApIDogKCgoX19zcmNsZW4pICUgNCA9PSAwKSA/
IF9fbWVtY3B5X2J5NCAoX190bXAsIF9fc3JjLCBfX3NyY2xlbikgOiAoKChfX3NyY2xlbikgJSAy
ID09IDApID8gX19tZW1jcHlfYnkyIChfX3RtcCwgX19zcmMsIF9fc3JjbGVuKSA6IF9fbWVtY3B5
X2cgKF9fdG1wLCBfX3NyYywgX19zcmNsZW4pKSkpIDogX19tZW1jcHlfZyAoX190bXAsIF9fc3Jj
LCBfX3NyY2xlbikpKTsKICByZXR1cm4gX19kZXN0Owp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAq
X19zdHJjYXRfZyAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjKTsKCmV4dGVybiBf
X2lubGluZSBjaGFyICoKX19zdHJjYXRfZyAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9f
c3JjKQp7CiAgcmVnaXN0ZXIgY2hhciAqX190bXAgPSBfX2Rlc3QgLSAxOwogIHJlZ2lzdGVyIGNo
YXIgX19kdW1teTsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCIxOlxuXHQiCiAgICAgImlu
Y2wJJTFcblx0IgogICAgICJjbXBiCSQwLCglMSlcblx0IgogICAgICJqbmUJMWJcbiIKICAgICAi
Mjpcblx0IgogICAgICJtb3ZiCSglMiksJWIwXG5cdCIKICAgICAiaW5jbAklMlxuXHQiCiAgICAg
Im1vdmIJJWIwLCglMSlcblx0IgogICAgICJpbmNsCSUxXG5cdCIKICAgICAidGVzdGIJJWIwLCVi
MFxuXHQiCiAgICAgImpuZQkyYlxuIgogICAgIDogIj0mcSIgKF9fZHVtbXkpLCAiPSZyIiAoX190
bXApLCAiPSZyIiAoX19zcmMpCiAgICAgOiAiMSIgKF9fdG1wKSwgIjIiIChfX3NyYykKICAgICA6
ICJtZW1vcnkiLCAiY2MiKTsKICByZXR1cm4gX19kZXN0Owp9CiMgOTk2ICIuLi9zeXNkZXBzL2kz
ODYvaTQ4Ni9iaXRzL3N0cmluZy5oIgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJuY2F0X2cg
KGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyIF9fc3JjW10sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ry
bmNhdF9nIChjaGFyICpfX2Rlc3QsIF9fY29uc3QgY2hhciBfX3NyY1tdLCBzaXplX3QgX19uKQp7
CiAgcmVnaXN0ZXIgY2hhciAqX190bXAgPSBfX2Rlc3Q7CiAgcmVnaXN0ZXIgY2hhciBfX2R1bW15
OwojIDEwMjIgIi4uL3N5c2RlcHMvaTM4Ni9pNDg2L2JpdHMvc3RyaW5nLmgiCiAgLS1fX3RtcDsK
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCIxOlxuXHQiCiAgICAgImNtcGIJJDAsMSglMSlc
blx0IgogICAgICJsZWFsCTEoJTEpLCUxXG5cdCIKICAgICAiam5lCTFiXG4iCiAgICAgIjI6XG5c
dCIKICAgICAiZGVjbAklM1xuXHQiCiAgICAgImpzCTNmXG5cdCIKICAgICAibW92YgkoJTIpLCVi
MFxuXHQiCiAgICAgImxlYWwJMSglMiksJTJcblx0IgogICAgICJtb3ZiCSViMCwoJTEpXG5cdCIK
ICAgICAibGVhbAkxKCUxKSwlMVxuXHQiCiAgICAgInRlc3RiCSViMCwlYjBcblx0IgogICAgICJq
bmUJMmJcblx0IgogICAgICJkZWNsCSUxXG4iCiAgICAgIjM6XG5cdCIKICAgICAibW92YgkkMCwo
JTEpIgogICAgIDogIj0mcSIgKF9fZHVtbXkpLCAiPSZyIiAoX190bXApLCAiPSZyIiAoX19zcmMp
LCAiPSZyIiAoX19uKQogICAgIDogIjEiIChfX3RtcCksICIyIiAoX19zcmMpLCAiMyIgKF9fbikK
ICAgICA6ICJtZW1vcnkiLCAiY2MiKTsKCiAgcmV0dXJuIF9fZGVzdDsKfQojIDExMjEgIi4uL3N5
c2RlcHMvaTM4Ni9pNDg2L2JpdHMvc3RyaW5nLmgiCmV4dGVybiBfX2lubGluZSBpbnQgX19zdHJj
bXBfZ2cgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKTsKCmV4dGVybiBf
X2lubGluZSBpbnQKX19zdHJjbXBfZ2cgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFy
ICpfX3MyKQp7CiAgcmVnaXN0ZXIgaW50IF9fcmVzOwogIF9fYXNtX18gX192b2xhdGlsZV9fCiAg
ICAoIjE6XG5cdCIKICAgICAibW92YgkoJTEpLCViMFxuXHQiCiAgICAgImxlYWwJMSglMSksJTFc
blx0IgogICAgICJjbXBiCSViMCwoJTIpXG5cdCIKICAgICAiam5lCTJmXG5cdCIKICAgICAibGVh
bAkxKCUyKSwlMlxuXHQiCiAgICAgInRlc3RiCSViMCwlYjBcblx0IgogICAgICJqbmUJMWJcblx0
IgogICAgICJ4b3JsCSUwLCUwXG5cdCIKICAgICAiam1wCTNmXG4iCiAgICAgIjI6XG5cdCIKICAg
ICAibW92bAkkMSwlMFxuXHQiCiAgICAgImpiCTNmXG5cdCIKICAgICAibmVnbAklMFxuIgogICAg
ICIzOiIKICAgICA6ICI9cSIgKF9fcmVzKSwgIj0mciIgKF9fczEpLCAiPSZyIiAoX19zMikKICAg
ICA6ICIxIiAoX19zMSksICIyIiAoX19zMikKICAgICA6ICJjYyIpOwogIHJldHVybiBfX3JlczsK
fQojIDExNTkgIi4uL3N5c2RlcHMvaTM4Ni9pNDg2L2JpdHMvc3RyaW5nLmgiCmV4dGVybiBfX2lu
bGluZSBpbnQgX19zdHJuY21wX2cgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKTsKCmV4dGVy
biBfX2lubGluZSBpbnQKX19zdHJuY21wX2cgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyLCBzaXplX3QgX19uKQp7CiAgcmVnaXN0ZXIgaW50IF9fcmVzOwogIF9fYXNtX18g
X192b2xhdGlsZV9fCiAgICAoIjE6XG5cdCIKICAgICAiZGVjbAklM1xuXHQiCiAgICAgImpzCTJm
XG5cdCIKICAgICAibW92YgkoJTEpLCViMFxuXHQiCiAgICAgImluY2wJJTFcblx0IgogICAgICJj
bXBiCSViMCwoJTIpXG5cdCIKICAgICAiam5lCTNmXG5cdCIKICAgICAiaW5jbAklMlxuXHQiCiAg
ICAgInRlc3RiCSViMCwlYjBcblx0IgogICAgICJqbmUJMWJcbiIKICAgICAiMjpcblx0IgogICAg
ICJ4b3JsCSUwLCUwXG5cdCIKICAgICAiam1wCTRmXG4iCiAgICAgIjM6XG5cdCIKICAgICAibW92
bAkkMSwlMFxuXHQiCiAgICAgImpiCTRmXG5cdCIKICAgICAibmVnbAklMFxuIgogICAgICI0OiIK
ICAgICA6ICI9cSIgKF9fcmVzKSwgIj0mciIgKF9fczEpLCAiPSZyIiAoX19zMiksICI9JnIiIChf
X24pCiAgICAgOiAiMSIgKF9fczEpLCAiMiIgKF9fczIpLCAiMyIgKF9fbikKICAgICA6ICJjYyIp
OwogIHJldHVybiBfX3JlczsKfQojIDEyMDIgIi4uL3N5c2RlcHMvaTM4Ni9pNDg2L2JpdHMvc3Ry
aW5nLmgiCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cmNocl9jIChfX2NvbnN0IGNoYXIgKl9f
cywgaW50IF9fYyk7CgpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RyY2hyX2MgKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19jKQp7CiAgcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBpbnQgX19kMDsK
ICByZWdpc3RlciBjaGFyICpfX3JlczsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCIxOlxu
XHQiCiAgICAgIm1vdmIJKCUwKSwlJWFsXG5cdCIKICAgICAiY21wYgklJWFoLCUlYWxcblx0Igog
ICAgICJqZQkyZlxuXHQiCiAgICAgImxlYWwJMSglMCksJTBcblx0IgogICAgICJ0ZXN0YgklJWFs
LCUlYWxcblx0IgogICAgICJqbmUJMWJcblx0IgogICAgICJ4b3JsCSUwLCUwXG4iCiAgICAgIjI6
IgogICAgIDogIj1yIiAoX19yZXMpLCAiPSZhIiAoX19kMCkKICAgICA6ICIwIiAoX19zKSwgIjEi
IChfX2MpCiAgICAgOiAiY2MiKTsKICByZXR1cm4gX19yZXM7Cn0KCmV4dGVybiBfX2lubGluZSBj
aGFyICpfX3N0cmNocl9nIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYyk7CgpleHRlcm4gX19p
bmxpbmUgY2hhciAqCl9fc3RyY2hyX2cgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKQp7CiAg
cmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBpbnQgX19kMDsKICByZWdpc3RlciBjaGFyICpfX3JlczsK
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCJtb3ZiCSUlYWwsJSVhaFxuIgogICAgICIxOlxu
XHQiCiAgICAgIm1vdmIJKCUwKSwlJWFsXG5cdCIKICAgICAiY21wYgklJWFoLCUlYWxcblx0Igog
ICAgICJqZQkyZlxuXHQiCiAgICAgImxlYWwJMSglMCksJTBcblx0IgogICAgICJ0ZXN0YgklJWFs
LCUlYWxcblx0IgogICAgICJqbmUJMWJcblx0IgogICAgICJ4b3JsCSUwLCUwXG4iCiAgICAgIjI6
IgogICAgIDogIj1yIiAoX19yZXMpLCAiPSZhIiAoX19kMCkKICAgICA6ICIwIiAoX19zKSwgIjEi
IChfX2MpCiAgICAgOiAiY2MiKTsKICByZXR1cm4gX19yZXM7Cn0KIyAxMjU5ICIuLi9zeXNkZXBz
L2kzODYvaTQ4Ni9iaXRzL3N0cmluZy5oIgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjaHJu
dWxfYyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpOwoKZXh0ZXJuIF9faW5saW5lIGNoYXIg
KgpfX3N0cmNocm51bF9jIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKewogIHJlZ2lzdGVy
IHVuc2lnbmVkIGxvbmcgaW50IF9fZDA7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXM7CiAgX19hc21f
XyBfX3ZvbGF0aWxlX18KICAgICgiMTpcblx0IgogICAgICJtb3ZiCSglMCksJSVhbFxuXHQiCiAg
ICAgImNtcGIJJSVhaCwlJWFsXG5cdCIKICAgICAiamUJMmZcblx0IgogICAgICJsZWFsCTEoJTAp
LCUwXG5cdCIKICAgICAidGVzdGIJJSVhbCwlJWFsXG5cdCIKICAgICAiam5lCTFiXG5cdCIKICAg
ICAiZGVjbAklMFxuIgogICAgICIyOiIKICAgICA6ICI9ciIgKF9fcmVzKSwgIj0mYSIgKF9fZDAp
CiAgICAgOiAiMCIgKF9fcyksICIxIiAoX19jKQogICAgIDogImNjIik7CiAgcmV0dXJuIF9fcmVz
Owp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjaHJudWxfZyAoX19jb25zdCBjaGFyICpf
X3MsIGludCBfX2MpOwoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cmNocm51bF9nIChfX2Nv
bnN0IGNoYXIgKl9fcywgaW50IF9fYykKewogIHJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgaW50IF9f
ZDA7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXM7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18KICAgICgi
bW92YgklJWFsLCUlYWhcbiIKICAgICAiMTpcblx0IgogICAgICJtb3ZiCSglMCksJSVhbFxuXHQi
CiAgICAgImNtcGIJJSVhaCwlJWFsXG5cdCIKICAgICAiamUJMmZcblx0IgogICAgICJsZWFsCTEo
JTApLCUwXG5cdCIKICAgICAidGVzdGIJJSVhbCwlJWFsXG5cdCIKICAgICAiam5lCTFiXG5cdCIK
ICAgICAiZGVjbAklMFxuIgogICAgICIyOiIKICAgICA6ICI9ciIgKF9fcmVzKSwgIj0mYSIgKF9f
ZDApCiAgICAgOiAiMCIgKF9fcyksICIxIiAoX19jKQogICAgIDogImNjIik7CiAgcmV0dXJuIF9f
cmVzOwp9CiMgMTM3MSAiLi4vc3lzZGVwcy9pMzg2L2k0ODYvYml0cy9zdHJpbmcuaCIKZXh0ZXJu
IF9faW5saW5lIGNoYXIgKl9fc3RycmNocl9jIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYyk7
CgpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RycmNocl9jIChfX2NvbnN0IGNoYXIgKl9fcywg
aW50IF9fYykKewogIHJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgaW50IF9fZDAsIF9fZDE7CiAgcmVn
aXN0ZXIgY2hhciAqX19yZXM7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18KICAgICgiY2xkXG4iCiAg
ICAgIjE6XG5cdCIKICAgICAibG9kc2Jcblx0IgogICAgICJjbXBiCSUlYWgsJSVhbFxuXHQiCiAg
ICAgImpuZQkyZlxuXHQiCiAgICAgImxlYWwJLTEoJSVlc2kpLCUwXG4iCiAgICAgIjI6XG5cdCIK
ICAgICAidGVzdGIJJSVhbCwlJWFsXG5cdCIKICAgICAiam5lIDFiIgogICAgIDogIj1kIiAoX19y
ZXMpLCAiPSZTIiAoX19kMCksICI9JmEiIChfX2QxKQogICAgIDogIjAiICgwKSwgIjEiIChfX3Mp
LCAiMiIgKF9fYykKICAgICA6ICJjYyIpOwogIHJldHVybiBfX3JlczsKfQoKZXh0ZXJuIF9faW5s
aW5lIGNoYXIgKl9fc3RycmNocl9nIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYyk7CgpleHRl
cm4gX19pbmxpbmUgY2hhciAqCl9fc3RycmNocl9nIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f
YykKewogIHJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgaW50IF9fZDAsIF9fZDE7CiAgcmVnaXN0ZXIg
Y2hhciAqX19yZXM7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18KICAgICgibW92YgklJWFsLCUlYWhc
biIKICAgICAiY2xkXG5cdCIKICAgICAiMTpcblx0IgogICAgICJsb2RzYlxuXHQiCiAgICAgImNt
cGIJJSVhaCwlJWFsXG5cdCIKICAgICAiam5lCTJmXG5cdCIKICAgICAibGVhbAktMSglJWVzaSks
JTBcbiIKICAgICAiMjpcblx0IgogICAgICJ0ZXN0YgklJWFsLCUlYWxcblx0IgogICAgICJqbmUg
MWIiCiAgICAgOiAiPXIiIChfX3JlcyksICI9JlMiIChfX2QwKSwgIj0mYSIgKF9fZDEpCiAgICAg
OiAiMCIgKDApLCAiMSIgKF9fcyksICIyIiAoX19jKQogICAgIDogImNjIik7CiAgcmV0dXJuIF9f
cmVzOwp9CiMgMTQ0MiAiLi4vc3lzZGVwcy9pMzg2L2k0ODYvYml0cy9zdHJpbmcuaCIKZXh0ZXJu
IF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19y
ZWplY3QpOwoKCmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MxIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBpbnQgX19k
MDsKICByZWdpc3RlciBjaGFyICpfX3JlczsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCIx
OlxuXHQiCiAgICAgIm1vdmIJKCUwKSwlJWFsXG5cdCIKICAgICAibGVhbAkxKCUwKSwlMFxuXHQi
CiAgICAgImNtcGIJJSVhaCwlJWFsXG5cdCIKICAgICAiamUJMmZcblx0IgogICAgICJ0ZXN0Ygkl
JWFsLCUlYWxcblx0IgogICAgICJqbmUJMWJcbiIKICAgICAiMjoiCiAgICAgOiAiPXIiIChfX3Jl
cyksICI9JmEiIChfX2QwKQogICAgIDogIjAiIChfX3MpLCAiMSIgKF9fcmVqZWN0KQogICAgIDog
ImNjIik7CiAgcmV0dXJuIChfX3JlcyAtIDEpIC0gX19zOwp9CgoKZXh0ZXJuIF9faW5saW5lIHNp
emVfdCBfX3N0cmNzcG5fY2cgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgX19yZWpl
Y3RbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fcmVqZWN0
X2xlbik7CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jZyAoX19jb25zdCBjaGFy
ICpfX3MsIF9fY29uc3QgY2hhciBfX3JlamVjdFtdLCBzaXplX3QgX19yZWplY3RfbGVuKQp7CiAg
cmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBpbnQgX19kMCwgX19kMSwgX19kMjsKICByZWdpc3RlciBf
X2NvbnN0IGNoYXIgKl9fcmVzOwogIF9fYXNtX18gX192b2xhdGlsZV9fCiAgICAoImNsZFxuIgog
ICAgICIxOlxuXHQiCiAgICAgImxvZHNiXG5cdCIKICAgICAidGVzdGIJJSVhbCwlJWFsXG5cdCIK
ICAgICAiamUJMmZcblx0IgogICAgICJtb3ZsCSU1LCUlZWRpXG5cdCIKICAgICAibW92bAklNiwl
JWVjeFxuXHQiCiAgICAgInJlcG5lOyBzY2FzYlxuXHQiCiAgICAgImpuZQkxYlxuIgogICAgICIy
OiIKICAgICA6ICI9UyIgKF9fcmVzKSwgIj0mYSIgKF9fZDApLCAiPSZjIiAoX19kMSksICI9JkQi
IChfX2QyKQogICAgIDogIjAiIChfX3MpLCAiZCIgKF9fcmVqZWN0KSwgImciIChfX3JlamVjdF9s
ZW4pCiAgICAgOiAiY2MiKTsKICByZXR1cm4gKF9fcmVzIC0gMSkgLSBfX3M7Cn0KCmV4dGVybiBf
X2lubGluZSBzaXplX3QgX19zdHJjc3BuX2cgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNo
YXIgKl9fcmVqZWN0KTsKIyAxNTIyICIuLi9zeXNkZXBzL2kzODYvaTQ4Ni9iaXRzL3N0cmluZy5o
IgpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9nIChfX2NvbnN0IGNoYXIgKl9fcywg
X19jb25zdCBjaGFyICpfX3JlamVjdCkKewogIHJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgaW50IF9f
ZDAsIF9fZDEsIF9fZDIsIF9fZDM7CiAgcmVnaXN0ZXIgX19jb25zdCBjaGFyICpfX3JlczsKICBf
X2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCJjbGRcblx0IgogICAgICJyZXBuZTsgc2Nhc2Jcblx0
IgogICAgICJub3RsCSUlZWN4XG5cdCIKICAgICAibGVhbAktMSglJWVjeCksJSVlZHhcbiIKICAg
ICAiMTpcblx0IgogICAgICJsb2RzYlxuXHQiCiAgICAgInRlc3RiCSUlYWwsJSVhbFxuXHQiCiAg
ICAgImplCTJmXG5cdCIKICAgICAibW92bAklJWVieCwlJWVkaVxuXHQiCiAgICAgIm1vdmwJJSVl
ZHgsJSVlY3hcblx0IgogICAgICJyZXBuZTsgc2Nhc2Jcblx0IgogICAgICJqbmUJMWJcbiIKICAg
ICAiMjoiCiAgICAgOiAiPVMiIChfX3JlcyksICI9JmEiIChfX2QwKSwgIj0mYyIgKF9fZDEpLCAi
PSZEIiAoX19kMiksICI9JmQiIChfX2QzKQogICAgIDogIjAiIChfX3MpLCAiMSIgKDApLCAiMiIg
KDB4ZmZmZmZmZmYpLCAiMyIgKF9fcmVqZWN0KSwgImIiIChfX3JlamVjdCkKICAgICA6ICJjYyIp
OwogIHJldHVybiAoX19yZXMgLSAxKSAtIF9fczsKfQojIDE1NjIgIi4uL3N5c2RlcHMvaTM4Ni9p
NDg2L2JpdHMvc3RyaW5nLmgiCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEgKF9f
Y29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQpOwoKZXh0ZXJuIF9faW5saW5lIHNpemVfdApf
X3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdCkKewogIHJlZ2lzdGVy
IHVuc2lnbmVkIGxvbmcgaW50IF9fZDA7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXM7CgogIF9fYXNt
X18gX192b2xhdGlsZV9fCiAgICAoIjE6XG5cdCIKICAgICAibW92YgkoJTApLCViMVxuXHQiCiAg
ICAgImxlYWwJMSglMCksJTBcblx0IgogICAgICJjbXBiCSVoMSwlYjFcblx0IgogICAgICJqZQkx
YiIKICAgICA6ICI9ciIgKF9fcmVzKSwgIj0mcSIgKF9fZDApCiAgICAgOiAiMCIgKF9fcyksICIx
IiAoX19hY2NlcHQpCiAgICAgOiAiY2MiKTsKICByZXR1cm4gKF9fcmVzIC0gMSkgLSBfX3M7Cn0K
CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2NnIChfX2NvbnN0IGNoYXIgKl9fcywg
X19jb25zdCBjaGFyIF9fYWNjZXB0W10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX2FjY2VwdF9sZW4pOwoKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNw
bl9jZyAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciBfX2FjY2VwdFtdLCBzaXplX3Qg
X19hY2NlcHRfbGVuKQp7CiAgcmVnaXN0ZXIgdW5zaWduZWQgbG9uZyBpbnQgX19kMCwgX19kMSwg
X19kMjsKICByZWdpc3RlciBfX2NvbnN0IGNoYXIgKl9fcmVzOwogIF9fYXNtX18gX192b2xhdGls
ZV9fCiAgICAoImNsZFxuIgogICAgICIxOlxuXHQiCiAgICAgImxvZHNiXG5cdCIKICAgICAidGVz
dGIJJSVhbCwlJWFsXG5cdCIKICAgICAiamUJMmZcblx0IgogICAgICJtb3ZsCSUxLCUlZWRpXG5c
dCIKICAgICAibW92bAklNiwlJWVjeFxuXHQiCiAgICAgInJlcG5lOyBzY2FzYlxuXHQiCiAgICAg
ImplCTFiXG4iCiAgICAgIjI6IgogICAgIDogIj1TIiAoX19yZXMpLCAiPSZkIiAoX19kMCksICI9
JmMiIChfX2QxKSwgIj0mRCIgKF9fZDIpCiAgICAgOiAiMCIgKF9fcyksICIxIiAoX19hY2NlcHQp
LCAiZyIgKF9fYWNjZXB0X2xlbikKICAgICA6ICJjYyIpOwogIHJldHVybiAoX19yZXMgLSAxKSAt
IF9fczsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9nIChfX2NvbnN0IGNoYXIg
Kl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCk7CiMgMTYzOCAiLi4vc3lzZGVwcy9pMzg2L2k0
ODYvYml0cy9zdHJpbmcuaCIKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9nIChfX2Nv
bnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKewogIHJlZ2lzdGVyIHVuc2ln
bmVkIGxvbmcgaW50IF9fZDAsIF9fZDEsIF9fZDIsIF9fZDM7CiAgcmVnaXN0ZXIgX19jb25zdCBj
aGFyICpfX3JlczsKICBfX2FzbV9fIF9fdm9sYXRpbGVfXwogICAgKCJjbGRcblx0IgogICAgICJy
ZXBuZTsgc2Nhc2Jcblx0IgogICAgICJub3RsCSUlZWN4XG5cdCIKICAgICAibGVhbAktMSglJWVj
eCksJSVlZHhcbiIKICAgICAiMTpcblx0IgogICAgICJsb2RzYlxuXHQiCiAgICAgInRlc3RiCSUl
YWwsJSVhbFxuXHQiCiAgICAgImplCTJmXG5cdCIKICAgICAibW92bAklJWVieCwlJWVkaVxuXHQi
CiAgICAgIm1vdmwJJSVlZHgsJSVlY3hcblx0IgogICAgICJyZXBuZTsgc2Nhc2Jcblx0IgogICAg
ICJqZQkxYlxuIgogICAgICIyOiIKICAgICA6ICI9UyIgKF9fcmVzKSwgIj0mYSIgKF9fZDApLCAi
PSZjIiAoX19kMSksICI9JkQiIChfX2QyKSwgIj0mZCIgKF9fZDMpCiAgICAgOiAiMCIgKF9fcyks
ICIxIiAoMCksICIyIiAoMHhmZmZmZmZmZiksICIzIiAoX19hY2NlcHQpLCAiYiIgKF9fYWNjZXB0
KQogICAgIDogImNjIik7CiAgcmV0dXJuIChfX3JlcyAtIDEpIC0gX19zOwp9CiMgMTY3NiAiLi4v
c3lzZGVwcy9pMzg2L2k0ODYvYml0cy9zdHJpbmcuaCIKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9f
c3RycGJya19jZyAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciBfX2FjY2VwdFtdLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19hY2NlcHRfbGVuKTsK
CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2NnIChfX2NvbnN0IGNoYXIgKl9fcywg
X19jb25zdCBjaGFyIF9fYWNjZXB0W10sIHNpemVfdCBfX2FjY2VwdF9sZW4pCnsKICByZWdpc3Rl
ciB1bnNpZ25lZCBsb25nIGludCBfX2QwLCBfX2QxLCBfX2QyOwogIHJlZ2lzdGVyIGNoYXIgKl9f
cmVzOwogIF9fYXNtX18gX192b2xhdGlsZV9fCiAgICAoImNsZFxuIgogICAgICIxOlxuXHQiCiAg
ICAgImxvZHNiXG5cdCIKICAgICAidGVzdGIJJSVhbCwlJWFsXG5cdCIKICAgICAiamUJMmZcblx0
IgogICAgICJtb3ZsCSU1LCUlZWRpXG5cdCIKICAgICAibW92bAklNiwlJWVjeFxuXHQiCiAgICAg
InJlcG5lOyBzY2FzYlxuXHQiCiAgICAgImpuZQkxYlxuXHQiCiAgICAgImRlY2wJJTBcblx0Igog
ICAgICJqbXAJM2ZcbiIKICAgICAiMjpcblx0IgogICAgICJ4b3JsCSUwLCUwXG4iCiAgICAgIjM6
IgogICAgIDogIj1TIiAoX19yZXMpLCAiPSZhIiAoX19kMCksICI9JmMiIChfX2QxKSwgIj0mRCIg
KF9fZDIpCiAgICAgOiAiMCIgKF9fcyksICJkIiAoX19hY2NlcHQpLCAiZyIgKF9fYWNjZXB0X2xl
bikKICAgICA6ICJjYyIpOwogIHJldHVybiBfX3JlczsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIg
Kl9fc3RycGJya19nIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCk7
CiMgMTc0MCAiLi4vc3lzZGVwcy9pMzg2L2k0ODYvYml0cy9zdHJpbmcuaCIKZXh0ZXJuIF9faW5s
aW5lIGNoYXIgKgpfX3N0cnBicmtfZyAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAq
X19hY2NlcHQpCnsKICByZWdpc3RlciB1bnNpZ25lZCBsb25nIGludCBfX2QwLCBfX2QxLCBfX2Qy
LCBfX2QzOwogIHJlZ2lzdGVyIGNoYXIgKl9fcmVzOwogIF9fYXNtX18gX192b2xhdGlsZV9fCiAg
ICAoIm1vdmwJJSVlYngsJSVlZGlcblx0IgogICAgICJjbGRcblx0IgogICAgICJyZXBuZTsgc2Nh
c2Jcblx0IgogICAgICJub3RsCSUlZWN4XG5cdCIKICAgICAibGVhbAktMSglJWVjeCksJSVlZHhc
biIKICAgICAiMTpcblx0IgogICAgICJsb2RzYlxuXHQiCiAgICAgInRlc3RiCSUlYWwsJSVhbFxu
XHQiCiAgICAgImplCTJmXG5cdCIKICAgICAibW92bAklJWVieCwlJWVkaVxuXHQiCiAgICAgIm1v
dmwJJSVlZHgsJSVlY3hcblx0IgogICAgICJyZXBuZTsgc2Nhc2Jcblx0IgogICAgICJqbmUJMWJc
blx0IgogICAgICJkZWNsCSUwXG5cdCIKICAgICAiam1wCTNmXG4iCiAgICAgIjI6XG5cdCIKICAg
ICAieG9ybAklMCwlMFxuIgogICAgICIzOiIKICAgICA6ICI9UyIgKF9fcmVzKSwgIj0mYSIgKF9f
ZDApLCAiPSZjIiAoX19kMSksICI9JmQiIChfX2QyKSwgIj0mRCIgKF9fZDMpCiAgICAgOiAiMCIg
KF9fcyksICIxIiAoMCksICIyIiAoMHhmZmZmZmZmZiksICJiIiAoX19hY2NlcHQpCiAgICAgOiAi
Y2MiKTsKICByZXR1cm4gX19yZXM7Cn0KIyAxNzg1ICIuLi9zeXNkZXBzL2kzODYvaTQ4Ni9iaXRz
L3N0cmluZy5oIgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzdHJfY2cgKF9fY29uc3QgY2hh
ciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyIF9fbmVlZGxlW10sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbmVlZGxlX2xlbik7CgpleHRlcm4gX19pbmxpbmUg
Y2hhciAqCl9fc3Ryc3RyX2NnIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hh
ciBfX25lZWRsZVtdLAogICAgICAgICAgICAgc2l6ZV90IF9fbmVlZGxlX2xlbikKewogIHJlZ2lz
dGVyIHVuc2lnbmVkIGxvbmcgaW50IF9fZDAsIF9fZDEsIF9fZDI7CiAgcmVnaXN0ZXIgY2hhciAq
X19yZXM7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18KICAgICgiY2xkXG4iICIxOlxuXHQiCgogICAg
ICJtb3ZsCSU2LCUlZWRpXG5cdCIKICAgICAibW92bAklNSwlJWVheFxuXHQiCiAgICAgIm1vdmwJ
JTQsJSVlY3hcblx0IgogICAgICJyZXBlOyBjbXBzYlxuXHQiCiAgICAgImplCTJmXG5cdCIKICAg
ICAiY21wYgkkMCwtMSglJWVzaSlcblx0IgogICAgICJsZWFsCTEoJSVlYXgpLCU1XG5cdCIKICAg
ICAiam5lCTFiXG5cdCIKICAgICAieG9ybAklJWVheCwlJWVheFxuIgogICAgICIyOiIKICAgICA6
ICI9YSIgKF9fcmVzKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSksICI9JmMiIChfX2QyKQog
ICAgIDogImciIChfX25lZWRsZV9sZW4pLCAiMSIgKF9faGF5c3RhY2spLCAiZCIgKF9fbmVlZGxl
KQogICAgIDogImNjIik7CiAgcmV0dXJuIF9fcmVzOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAq
X19zdHJzdHJfZyAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVl
ZGxlKTsKIyAxODQ3ICIuLi9zeXNkZXBzL2kzODYvaTQ4Ni9iaXRzL3N0cmluZy5oIgpleHRlcm4g
X19pbmxpbmUgY2hhciAqCl9fc3Ryc3RyX2cgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19j
b25zdCBjaGFyICpfX25lZWRsZSkKewogIHJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgaW50IF9fZDAs
IF9fZDEsIF9fZDIsIF9fZDM7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXM7CiAgX19hc21fXyBfX3Zv
bGF0aWxlX18KICAgICgiY2xkXG5cdCIKICAgICAicmVwbmU7IHNjYXNiXG5cdCIKICAgICAibm90
bAklJWVjeFxuXHQiCiAgICAgImRlY2wJJSVlY3hcblx0IgogICAgICJtb3ZsCSUlZWN4LCUlZWR4
XG4iCiAgICAgIjE6XG5cdCIKICAgICAibW92bAklJWVieCwlJWVkaVxuXHQiCiAgICAgIm1vdmwJ
JSVlc2ksJSVlYXhcblx0IgogICAgICJtb3ZsCSUlZWR4LCUlZWN4XG5cdCIKICAgICAicmVwZTsg
Y21wc2Jcblx0IgogICAgICJqZQkyZlxuXHQiCiAgICAgImNtcGIJJDAsLTEoJSVlc2kpXG5cdCIK
ICAgICAibGVhbAkxKCUlZWF4KSwlJWVzaVxuXHQiCiAgICAgImpuZQkxYlxuXHQiCiAgICAgInhv
cmwJJSVlYXgsJSVlYXhcbiIKICAgICAiMjoiCiAgICAgOiAiPWEiIChfX3JlcyksICI9JmMiIChf
X2QwKSwgIj0mUyIgKF9fZDEpLCAiPSZEIiAoX19kMiksICI9JmQiIChfX2QzKQogICAgIDogIjAi
ICgwKSwgIjEiICgweGZmZmZmZmZmKSwgIjIiIChfX2hheXN0YWNrKSwgIjMiIChfX25lZWRsZSks
CiAgICAgICAiYiIgKF9fbmVlZGxlKQogICAgIDogImNjIik7CiAgcmV0dXJuIF9fcmVzOwp9CiMg
MzU4ICIuLi9zdHJpbmcvc3RyaW5nLmgiIDIKCgojIDEgIi4uL2luY2x1ZGUvYml0cy9zdHJpbmcy
LmgiIDEKIyAxICIuLi9zdHJpbmcvYml0cy9zdHJpbmcyLmgiIDEKIyA1MiAiLi4vc3RyaW5nL2Jp
dHMvc3RyaW5nMi5oIgojIDEgIi4uL2luY2x1ZGUvZW5kaWFuLmgiIDEKIyA1MyAiLi4vc3RyaW5n
L2JpdHMvc3RyaW5nMi5oIiAyCiMgMjIxICIuLi9zdHJpbmcvYml0cy9zdHJpbmcyLmgiCmV4dGVy
biBfX2lubGluZSB2b2lkICpfX21lbXBjcHlfc21hbGwgKHZvaWQgKiwgY2hhciwgY2hhciwgY2hh
ciwgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX191aW50MTZf
dCwgX191aW50MTZfdCwgX191aW50MzJfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX191aW50MzJfdCwgc2l6ZV90KTsKZXh0ZXJuIF9faW5saW5lIHZvaWQgKgpfX21l
bXBjcHlfc21hbGwgKHZvaWQgKl9fZGVzdDEsCiAgICAgICAgICAgICAgICAgY2hhciBfX3NyYzBf
MSwgY2hhciBfX3NyYzJfMSwgY2hhciBfX3NyYzRfMSwgY2hhciBfX3NyYzZfMSwKICAgICAgICAg
ICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAg
ICAgICAgICAgIF9fdWludDMyX3QgX19zcmMwXzQsIF9fdWludDMyX3QgX19zcmM0XzQsCiAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgX191aW50MzJfdCBf
X3VpOwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVuc2lnbmVkIGNoYXIgX191YzsKICAgIHVu
c2lnbmVkIGNoYXIgX19jOwogIH0gKl9fdSA9IF9fZGVzdDE7CiAgc3dpdGNoICgodW5zaWduZWQg
aW50KSBfX3NyY2xlbikKICAgIHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX2MgPSBfX3NyYzBf
MTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAgIGJy
ZWFrOwogICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9
IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBicmVhazsKICAgIGNhc2Ug
MzoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9f
ICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX2MgPSBfX3NyYzJfMTsKICAgICAgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAgY2Fz
ZSA0OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25f
XyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAgICBfX3Ut
Pl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191
ICsgNCk7CiAgICAgIF9fdS0+X19jID0gX19zcmM0XzE7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgNjoKICAgICAgX191
LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBicmVhazsKICAgIGNhc2UgNzoKICAgICAg
X191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fYyA9IF9fc3JjNl8xOwog
ICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7
CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0XzQ7
CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBicmVh
azsKICAgIH0KICByZXR1cm4gKHZvaWQgKikgX191Owp9CiMgMTA1OSAiLi4vc3RyaW5nL2JpdHMv
c3RyaW5nMi5oIgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJ0b2tfcl8xYyAoY2hhciAqX19z
LCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19z
dHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCkKewogIGNo
YXIgKl9fcmVzdWx0OwogIGlmIChfX3MgPT0gKCh2b2lkICopMCkpCiAgICBfX3MgPSAqX19uZXh0
cDsKICB3aGlsZSAoKl9fcyA9PSBfX3NlcCkKICAgICsrX19zOwogIF9fcmVzdWx0ID0gKCh2b2lk
ICopMCk7CiAgaWYgKCpfX3MgIT0gJ1wwJykKICAgIHsKICAgICAgX19yZXN1bHQgPSBfX3MrKzsK
ICAgICAgd2hpbGUgKCpfX3MgIT0gJ1wwJykKICAgICAgICBpZiAoKl9fcysrID09IF9fc2VwKQog
ICAgICAgICAgewogICAgICAgICAgICBfX3NbLTFdID0gJ1wwJzsKICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICB9CiAgICAgICpfX25leHRwID0gX19zOwogICAgfQogIHJldHVybiBfX3Jlc3Vs
dDsKfQojIDEwOTEgIi4uL3N0cmluZy9iaXRzL3N0cmluZzIuaCIKZXh0ZXJuIGNoYXIgKl9fc3Ry
c2VwX2cgKGNoYXIgKipfX3N0cmluZ3AsIF9fY29uc3QgY2hhciAqX19kZWxpbSk7CiMgMTEwOSAi
Li4vc3RyaW5nL2JpdHMvc3RyaW5nMi5oIgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBf
MWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAq
X19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSAmJiAoKl9fcyA9
IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZWplY3QpID8gKChfX3Jl
amVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19yZWplY3Qp
IDogX19zdHJjaHJfYyAoX19yZXR2YWwsICgoX19yZWplY3QpICYgMHhmZikgPDwgOCkpIDogX19z
dHJjaHJfZyAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikwKSkKICAgICooKl9f
cykrKyA9ICdcMCc7CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAq
X19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0Mik7
CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIgX19y
ZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9f
czsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNo
YXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiAgICAgICAgewogICAgICAgICAg
aWYgKCpfX2NwID09ICdcMCcpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfX2NwID0gKCh2
b2lkICopMCk7CiAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgaWYgKCpf
X2NwID09IF9fcmVqZWN0MSB8fCAqX19jcCA9PSBfX3JlamVjdDIpCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAqX19jcCsrID0gJ1wwJzsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgfQogICAgICAgICAgKytfX2NwOwogICAgICAgIH0KICAgICAgKl9fcyA9IF9fY3A7CiAgICB9
CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfM2Mg
KGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBj
aGFyICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVq
ZWN0MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7
CiAgaWYgKF9fcmV0dmFsICE9ICgodm9pZCAqKTApKQogICAgewogICAgICByZWdpc3RlciBjaGFy
ICpfX2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgxKQogICAgICAgIHsKICAgICAgICAgIGlm
ICgqX19jcCA9PSAnXDAnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgX19jcCA9ICgodm9p
ZCAqKTApOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIGlmICgqX19j
cCA9PSBfX3JlamVjdDEgfHwgKl9fY3AgPT0gX19yZWplY3QyIHx8ICpfX2NwID09IF9fcmVqZWN0
MykKICAgICAgICAgICAgewogICAgICAgICAgICAgICpfX2NwKysgPSAnXDAnOwogICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICArK19fY3A7CiAgICAgICAgfQogICAg
ICAqX19zID0gX19jcDsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KIyAxMTkwICIuLi9zdHJp
bmcvYml0cy9zdHJpbmcyLmgiCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25zdCBjaGFyICpf
X3N0cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxMjA5ICIuLi9zdHJpbmcv
Yml0cy9zdHJpbmcyLmgiCmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hhciAqX19z
dHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAy
ICIuLi9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyCiMgMzYxICIuLi9zdHJpbmcvc3RyaW5nLmgi
IDIKCgoKCiMgNTAgIi4uL2luY2x1ZGUvc3RyaW5nLmgiIDIKIyAyMyAicHRocmVhZC5jIiAyCiMg
MSAiLi4vaW5jbHVkZS91bmlzdGQuaCIgMQoKIyAxICIuLi9wb3NpeC91bmlzdGQuaCIgMQojIDI4
ICIuLi9wb3NpeC91bmlzdGQuaCIKCiMgMTc1ICIuLi9wb3NpeC91bmlzdGQuaCIKIyAxICIuLi9s
aW51eHRocmVhZHMvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9iaXRzL3Bvc2l4X29wdC5o
IiAxCiMgMTc2ICIuLi9wb3NpeC91bmlzdGQuaCIgMgoKCgojIDEgIi4uL3N5c2RlcHMvZ2VuZXJp
Yy9iaXRzL2Vudmlyb25tZW50cy5oIiAxCiMgMjMgIi4uL3N5c2RlcHMvZ2VuZXJpYy9iaXRzL2Vu
dmlyb25tZW50cy5oIgojIDEgIi4uL3N5c2RlcHMvd29yZHNpemUtMzIvYml0cy93b3Jkc2l6ZS5o
IiAxCiMgMjQgIi4uL3N5c2RlcHMvZ2VuZXJpYy9iaXRzL2Vudmlyb25tZW50cy5oIiAyCiMgMTgw
ICIuLi9wb3NpeC91bmlzdGQuaCIgMgojIDE5OSAiLi4vcG9zaXgvdW5pc3RkLmgiCiMgMSAiL3Vz
ci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMjAwICIuLi9wb3NpeC91bmlzdGQuaCIgMgojIDI0MCAiLi4vcG9zaXgvdW5pc3RkLmgiCnR5
cGVkZWYgX19pbnRwdHJfdCBpbnRwdHJfdDsKCgoKCgoKdHlwZWRlZiBfX3NvY2tsZW5fdCBzb2Nr
bGVuX3Q7CiMgMjYwICIuLi9wb3NpeC91bmlzdGQuaCIKZXh0ZXJuIGludCBhY2Nlc3MgKF9fY29u
c3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSA7CgoKCgpleHRlcm4gaW50IGV1aWRhY2Nlc3Mg
KF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSA7CiMgMjkwICIuLi9wb3NpeC91bmlz
dGQuaCIKZXh0ZXJuIF9fb2ZmX3QgbHNlZWsgKGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBp
bnQgX193aGVuY2UpIDsKIyAzMDIgIi4uL3Bvc2l4L3VuaXN0ZC5oIgpleHRlcm4gX19vZmY2NF90
IGxzZWVrNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgOwoK
CgpleHRlcm4gaW50IGNsb3NlIChpbnQgX19mZCkgOwoKCgpleHRlcm4gc3NpemVfdCByZWFkIChp
bnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcykgOwoKCmV4dGVybiBzc2l6ZV90
IHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbikgOwoKCgpl
eHRlcm4gc3NpemVfdCBwcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0
ZXMsIF9fb2ZmX3QgX19vZmZzZXQpCiAgICAgOwpleHRlcm4gc3NpemVfdCBwd3JpdGUgKGludCBf
X2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAg
ICAgIF9fb2ZmX3QgX19vZmZzZXQpIDsKIyAzNDAgIi4uL3Bvc2l4L3VuaXN0ZC5oIgpleHRlcm4g
c3NpemVfdCBwcmVhZDY0IChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcywK
ICAgICAgICAgICAgICAgICAgICAgICAgX19vZmY2NF90IF9fb2Zmc2V0KSA7CgoKZXh0ZXJuIHNz
aXplX3QgcHdyaXRlNjQgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19u
LAogICAgICAgICAgICAgICAgICAgICAgICAgX19vZmY2NF90IF9fb2Zmc2V0KSA7CgoKCgoKCgpl
eHRlcm4gaW50IHBpcGUgKGludCBfX3BpcGVkZXNbMl0pIDsKIyAzNjIgIi4uL3Bvc2l4L3VuaXN0
ZC5oIgpleHRlcm4gdW5zaWduZWQgaW50IGFsYXJtICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSA7
CiMgMzcxICIuLi9wb3NpeC91bmlzdGQuaCIKZXh0ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAodW5z
aWduZWQgaW50IF9fc2Vjb25kcykgOwoKCgoKCgpleHRlcm4gX191c2Vjb25kc190IHVhbGFybSAo
X191c2Vjb25kc190IF9fdmFsdWUsIF9fdXNlY29uZHNfdCBfX2ludGVydmFsKQogICAgIDsKCgoK
ZXh0ZXJuIGludCB1c2xlZXAgKF9fdXNlY29uZHNfdCBfX3VzZWNvbmRzKSA7CgoKCgoKZXh0ZXJu
IGludCBwYXVzZSAodm9pZCkgOwoKCgpleHRlcm4gaW50IGNob3duIChfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgOwoKCgpleHRlcm4g
aW50IGZjaG93biAoaW50IF9fZmQsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKSA7
CgoKCgpleHRlcm4gaW50IGxjaG93biAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19v
d25lciwgX19naWRfdCBfX2dyb3VwKQogICAgIDsKCgoKCmV4dGVybiBpbnQgY2hkaXIgKF9fY29u
c3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBpbnQgZmNoZGlyIChpbnQgX19mZCkgOwojIDQy
MyAiLi4vcG9zaXgvdW5pc3RkLmgiCmV4dGVybiBjaGFyICpnZXRjd2QgKGNoYXIgKl9fYnVmLCBz
aXplX3QgX19zaXplKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmdldF9jdXJyZW50X2Rpcl9uYW1lICh2
b2lkKSA7CgoKCgoKCmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpIDsKCgoKCmV4dGVy
biBpbnQgZHVwIChpbnQgX19mZCkgOwoKCmV4dGVybiBpbnQgZHVwMiAoaW50IF9fZmQsIGludCBf
X2ZkMikgOwoKCmV4dGVybiBjaGFyICoqX19lbnZpcm9uOwoKZXh0ZXJuIGNoYXIgKiplbnZpcm9u
OwoKCgoKCmV4dGVybiBpbnQgZXhlY3ZlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19j
b25zdCBfX2FyZ3ZbXSwKICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29uc3QgX19lbnZwW10p
IDsKCgoKCmV4dGVybiBpbnQgZmV4ZWN2ZSAoaW50IF9fZmQsIGNoYXIgKl9fY29uc3QgX19hcmd2
W10sIGNoYXIgKl9fY29uc3QgX19lbnZwW10pCiAgICAgOwoKCgoKZXh0ZXJuIGludCBleGVjdiAo
X19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10pIDsKCgoKZXh0ZXJu
IGludCBleGVjbGUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAu
Li4pIDsKCgoKZXh0ZXJuIGludCBleGVjbCAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fY29uc3Qg
Y2hhciAqX19hcmcsIC4uLikgOwoKCgpleHRlcm4gaW50IGV4ZWN2cCAoX19jb25zdCBjaGFyICpf
X2ZpbGUsIGNoYXIgKl9fY29uc3QgX19hcmd2W10pIDsKCgoKCmV4dGVybiBpbnQgZXhlY2xwIChf
X2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCgpleHRl
cm4gaW50IG5pY2UgKGludCBfX2luYykgOwoKCgoKZXh0ZXJuIHZvaWQgX2V4aXQgKGludCBfX3N0
YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCiMgMSAiLi4vc3lzZGVw
cy9nZW5lcmljL2JpdHMvY29uZm5hbWUuaCIgMQojIDI1ICIuLi9zeXNkZXBzL2dlbmVyaWMvYml0
cy9jb25mbmFtZS5oIgplbnVtCiAgewogICAgX1BDX0xJTktfTUFYLAoKICAgIF9QQ19NQVhfQ0FO
T04sCgogICAgX1BDX01BWF9JTlBVVCwKCiAgICBfUENfTkFNRV9NQVgsCgogICAgX1BDX1BBVEhf
TUFYLAoKICAgIF9QQ19QSVBFX0JVRiwKCiAgICBfUENfQ0hPV05fUkVTVFJJQ1RFRCwKCiAgICBf
UENfTk9fVFJVTkMsCgogICAgX1BDX1ZESVNBQkxFLAoKICAgIF9QQ19TWU5DX0lPLAoKICAgIF9Q
Q19BU1lOQ19JTywKCiAgICBfUENfUFJJT19JTywKCiAgICBfUENfU09DS19NQVhCVUYsCgogICAg
X1BDX0ZJTEVTSVpFQklUUywKCiAgICBfUENfUkVDX0lOQ1JfWEZFUl9TSVpFLAoKICAgIF9QQ19S
RUNfTUFYX1hGRVJfU0laRSwKCiAgICBfUENfUkVDX01JTl9YRkVSX1NJWkUsCgogICAgX1BDX1JF
Q19YRkVSX0FMSUdOLAoKICAgIF9QQ19BTExPQ19TSVpFX01JTiwKCiAgICBfUENfU1lNTElOS19N
QVgKCiAgfTsKCgplbnVtCiAgewogICAgX1NDX0FSR19NQVgsCgogICAgX1NDX0NISUxEX01BWCwK
CiAgICBfU0NfQ0xLX1RDSywKCiAgICBfU0NfTkdST1VQU19NQVgsCgogICAgX1NDX09QRU5fTUFY
LAoKICAgIF9TQ19TVFJFQU1fTUFYLAoKICAgIF9TQ19UWk5BTUVfTUFYLAoKICAgIF9TQ19KT0Jf
Q09OVFJPTCwKCiAgICBfU0NfU0FWRURfSURTLAoKICAgIF9TQ19SRUFMVElNRV9TSUdOQUxTLAoK
ICAgIF9TQ19QUklPUklUWV9TQ0hFRFVMSU5HLAoKICAgIF9TQ19USU1FUlMsCgogICAgX1NDX0FT
WU5DSFJPTk9VU19JTywKCiAgICBfU0NfUFJJT1JJVElaRURfSU8sCgogICAgX1NDX1NZTkNIUk9O
SVpFRF9JTywKCiAgICBfU0NfRlNZTkMsCgogICAgX1NDX01BUFBFRF9GSUxFUywKCiAgICBfU0Nf
TUVNTE9DSywKCiAgICBfU0NfTUVNTE9DS19SQU5HRSwKCiAgICBfU0NfTUVNT1JZX1BST1RFQ1RJ
T04sCgogICAgX1NDX01FU1NBR0VfUEFTU0lORywKCiAgICBfU0NfU0VNQVBIT1JFUywKCiAgICBf
U0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19BSU9fTElTVElPX01BWCwKCiAgICBf
U0NfQUlPX01BWCwKCiAgICBfU0NfQUlPX1BSSU9fREVMVEFfTUFYLAoKICAgIF9TQ19ERUxBWVRJ
TUVSX01BWCwKCiAgICBfU0NfTVFfT1BFTl9NQVgsCgogICAgX1NDX01RX1BSSU9fTUFYLAoKICAg
IF9TQ19WRVJTSU9OLAoKICAgIF9TQ19QQUdFU0laRSwKCgogICAgX1NDX1JUU0lHX01BWCwKCiAg
ICBfU0NfU0VNX05TRU1TX01BWCwKCiAgICBfU0NfU0VNX1ZBTFVFX01BWCwKCiAgICBfU0NfU0lH
UVVFVUVfTUFYLAoKICAgIF9TQ19USU1FUl9NQVgsCgoKCgogICAgX1NDX0JDX0JBU0VfTUFYLAoK
ICAgIF9TQ19CQ19ESU1fTUFYLAoKICAgIF9TQ19CQ19TQ0FMRV9NQVgsCgogICAgX1NDX0JDX1NU
UklOR19NQVgsCgogICAgX1NDX0NPTExfV0VJR0hUU19NQVgsCgogICAgX1NDX0VRVUlWX0NMQVNT
X01BWCwKCiAgICBfU0NfRVhQUl9ORVNUX01BWCwKCiAgICBfU0NfTElORV9NQVgsCgogICAgX1ND
X1JFX0RVUF9NQVgsCgogICAgX1NDX0NIQVJDTEFTU19OQU1FX01BWCwKCgogICAgX1NDXzJfVkVS
U0lPTiwKCiAgICBfU0NfMl9DX0JJTkQsCgogICAgX1NDXzJfQ19ERVYsCgogICAgX1NDXzJfRk9S
VF9ERVYsCgogICAgX1NDXzJfRk9SVF9SVU4sCgogICAgX1NDXzJfU1dfREVWLAoKICAgIF9TQ18y
X0xPQ0FMRURFRiwKCgogICAgX1NDX1BJSSwKCiAgICBfU0NfUElJX1hUSSwKCiAgICBfU0NfUElJ
X1NPQ0tFVCwKCiAgICBfU0NfUElJX0lOVEVSTkVULAoKICAgIF9TQ19QSUlfT1NJLAoKICAgIF9T
Q19QT0xMLAoKICAgIF9TQ19TRUxFQ1QsCgogICAgX1NDX1VJT19NQVhJT1YsCgogICAgX1NDX0lP
Vl9NQVggPSBfU0NfVUlPX01BWElPViwKCiAgICBfU0NfUElJX0lOVEVSTkVUX1NUUkVBTSwKCiAg
ICBfU0NfUElJX0lOVEVSTkVUX0RHUkFNLAoKICAgIF9TQ19QSUlfT1NJX0NPVFMsCgogICAgX1ND
X1BJSV9PU0lfQ0xUUywKCiAgICBfU0NfUElJX09TSV9NLAoKICAgIF9TQ19UX0lPVl9NQVgsCgoK
CiAgICBfU0NfVEhSRUFEUywKCiAgICBfU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TLAoKICAgIF9T
Q19HRVRHUl9SX1NJWkVfTUFYLAoKICAgIF9TQ19HRVRQV19SX1NJWkVfTUFYLAoKICAgIF9TQ19M
T0dJTl9OQU1FX01BWCwKCiAgICBfU0NfVFRZX05BTUVfTUFYLAoKICAgIF9TQ19USFJFQURfREVT
VFJVQ1RPUl9JVEVSQVRJT05TLAoKICAgIF9TQ19USFJFQURfS0VZU19NQVgsCgogICAgX1NDX1RI
UkVBRF9TVEFDS19NSU4sCgogICAgX1NDX1RIUkVBRF9USFJFQURTX01BWCwKCiAgICBfU0NfVEhS
RUFEX0FUVFJfU1RBQ0tBRERSLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS1NJWkUsCgogICAg
X1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HLAoKICAgIF9TQ19USFJFQURfUFJJT19JTkhF
UklULAoKICAgIF9TQ19USFJFQURfUFJJT19QUk9URUNULAoKICAgIF9TQ19USFJFQURfUFJPQ0VT
U19TSEFSRUQsCgoKICAgIF9TQ19OUFJPQ0VTU09SU19DT05GLAoKICAgIF9TQ19OUFJPQ0VTU09S
U19PTkxOLAoKICAgIF9TQ19QSFlTX1BBR0VTLAoKICAgIF9TQ19BVlBIWVNfUEFHRVMsCgogICAg
X1NDX0FURVhJVF9NQVgsCgogICAgX1NDX1BBU1NfTUFYLAoKCiAgICBfU0NfWE9QRU5fVkVSU0lP
TiwKCiAgICBfU0NfWE9QRU5fWENVX1ZFUlNJT04sCgogICAgX1NDX1hPUEVOX1VOSVgsCgogICAg
X1NDX1hPUEVOX0NSWVBULAoKICAgIF9TQ19YT1BFTl9FTkhfSTE4TiwKCiAgICBfU0NfWE9QRU5f
U0hNLAoKCiAgICBfU0NfMl9DSEFSX1RFUk0sCgogICAgX1NDXzJfQ19WRVJTSU9OLAoKICAgIF9T
Q18yX1VQRSwKCgogICAgX1NDX1hPUEVOX1hQRzIsCgogICAgX1NDX1hPUEVOX1hQRzMsCgogICAg
X1NDX1hPUEVOX1hQRzQsCgoKICAgIF9TQ19DSEFSX0JJVCwKCiAgICBfU0NfQ0hBUl9NQVgsCgog
ICAgX1NDX0NIQVJfTUlOLAoKICAgIF9TQ19JTlRfTUFYLAoKICAgIF9TQ19JTlRfTUlOLAoKICAg
IF9TQ19MT05HX0JJVCwKCiAgICBfU0NfV09SRF9CSVQsCgogICAgX1NDX01CX0xFTl9NQVgsCgog
ICAgX1NDX05aRVJPLAoKICAgIF9TQ19TU0laRV9NQVgsCgogICAgX1NDX1NDSEFSX01BWCwKCiAg
ICBfU0NfU0NIQVJfTUlOLAoKICAgIF9TQ19TSFJUX01BWCwKCiAgICBfU0NfU0hSVF9NSU4sCgog
ICAgX1NDX1VDSEFSX01BWCwKCiAgICBfU0NfVUlOVF9NQVgsCgogICAgX1NDX1VMT05HX01BWCwK
CiAgICBfU0NfVVNIUlRfTUFYLAoKCiAgICBfU0NfTkxfQVJHTUFYLAoKICAgIF9TQ19OTF9MQU5H
TUFYLAoKICAgIF9TQ19OTF9NU0dNQVgsCgogICAgX1NDX05MX05NQVgsCgogICAgX1NDX05MX1NF
VE1BWCwKCiAgICBfU0NfTkxfVEVYVE1BWCwKCgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGMzIsCgog
ICAgX1NDX1hCUzVfSUxQMzJfT0ZGQklHLAoKICAgIF9TQ19YQlM1X0xQNjRfT0ZGNjQsCgogICAg
X1NDX1hCUzVfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfWE9QRU5fTEVHQUNZLAoKICAgIF9TQ19Y
T1BFTl9SRUFMVElNRSwKCiAgICBfU0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUywKCgogICAgX1ND
X0FEVklTT1JZX0lORk8sCgogICAgX1NDX0JBUlJJRVJTLAoKICAgIF9TQ19CQVNFLAoKICAgIF9T
Q19DX0xBTkdfU1VQUE9SVCwKCiAgICBfU0NfQ19MQU5HX1NVUFBPUlRfUiwKCiAgICBfU0NfQ0xP
Q0tfU0VMRUNUSU9OLAoKICAgIF9TQ19DUFVUSU1FLAoKICAgIF9TQ19USFJFQURfQ1BVVElNRSwK
CiAgICBfU0NfREVWSUNFX0lPLAoKICAgIF9TQ19ERVZJQ0VfU1BFQ0lGSUMsCgogICAgX1NDX0RF
VklDRV9TUEVDSUZJQ19SLAoKICAgIF9TQ19GRF9NR01ULAoKICAgIF9TQ19GSUZPLAoKICAgIF9T
Q19QSVBFLAoKICAgIF9TQ19GSUxFX0FUVFJJQlVURVMsCgogICAgX1NDX0ZJTEVfTE9DS0lORywK
CiAgICBfU0NfRklMRV9TWVNURU0sCgogICAgX1NDX01PTk9UT05JQ19DTE9DSywKCiAgICBfU0Nf
TVVMVElfUFJPQ0VTUywKCiAgICBfU0NfU0lOR0xFX1BST0NFU1MsCgogICAgX1NDX05FVFdPUktJ
TkcsCgogICAgX1NDX1JFQURFUl9XUklURVJfTE9DS1MsCgogICAgX1NDX1NQSU5fTE9DS1MsCgog
ICAgX1NDX1JFR0VYUCwKCiAgICBfU0NfUkVHRVhfVkVSU0lPTiwKCiAgICBfU0NfU0hFTEwsCgog
ICAgX1NDX1NJR05BTFMsCgogICAgX1NDX1NQQVdOLAoKICAgIF9TQ19TUE9SQURJQ19TRVJWRVIs
CgogICAgX1NDX1RIUkVBRF9TUE9SQURJQ19TRVJWRVIsCgogICAgX1NDX1NZU1RFTV9EQVRBQkFT
RSwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFX1IsCgogICAgX1NDX1RJTUVPVVRTLAoKICAgIF9T
Q19UWVBFRF9NRU1PUllfT0JKRUNUUywKCiAgICBfU0NfVVNFUl9HUk9VUFMsCgogICAgX1NDX1VT
RVJfR1JPVVBTX1IsCgogICAgX1NDXzJfUEJTLAoKICAgIF9TQ18yX1BCU19BQ0NPVU5USU5HLAoK
ICAgIF9TQ18yX1BCU19MT0NBVEUsCgogICAgX1NDXzJfUEJTX01FU1NBR0UsCgogICAgX1NDXzJf
UEJTX1RSQUNLLAoKICAgIF9TQ19TWU1MT09QX01BWCwKCiAgICBfU0NfU1RSRUFNUywKCiAgICBf
U0NfMl9QQlNfQ0hFQ0tQT0lOVCwKCgogICAgX1NDX1Y2X0lMUDMyX09GRjMyLAoKICAgIF9TQ19W
Nl9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1Y2X0xQNjRfT0ZGNjQsCgogICAgX1NDX1Y2X0xQQklH
X09GRkJJRywKCgogICAgX1NDX0hPU1RfTkFNRV9NQVgsCgogICAgX1NDX1RSQUNFLAoKICAgIF9T
Q19UUkFDRV9FVkVOVF9GSUxURVIsCgogICAgX1NDX1RSQUNFX0lOSEVSSVQsCgogICAgX1NDX1RS
QUNFX0xPRwoKICB9OwoKCgoKCmVudW0KICB7CiAgICBfQ1NfUEFUSCwKCgoKCiAgICBfQ1NfTEZT
X0NGTEFHUyA9IDEwMDAsCgogICAgX0NTX0xGU19MREZMQUdTLAoKICAgIF9DU19MRlNfTElCUywK
CiAgICBfQ1NfTEZTX0xJTlRGTEFHUywKCiAgICBfQ1NfTEZTNjRfQ0ZMQUdTLAoKICAgIF9DU19M
RlM2NF9MREZMQUdTLAoKICAgIF9DU19MRlM2NF9MSUJTLAoKICAgIF9DU19MRlM2NF9MSU5URkxB
R1MsCgoKCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTID0gMTEwMCwKCiAgICBfQ1Nf
WEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMs
CgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMy
X09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAg
X0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJ
TlRGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfWEJTNV9M
UDY0X09GRjY0X0xERkxBR1MsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTLAoKICAgIF9D
U19YQlM1X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19D
RkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVf
TFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUywK
CgoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2
X0lMUDMyX09GRjMyX0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMs
CgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhf
VjZfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xE
RkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSUJTLAoKICAgIF9DU19QT1NJ
WF9WNl9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0
X0NGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MREZMQUdTLAoKICAgIF9DU19Q
T1NJWF9WNl9MUDY0X09GRjY0X0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElO
VEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19Q
T1NJWF9WNl9MUEJJR19PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZG
QklHX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MSU5URkxBR1MsCgoKCiAg
ICBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTCgogIH07CiMgNTAxICIuLi9wb3NpeC91bmlz
dGQuaCIgMgoKCmV4dGVybiBsb25nIGludCBwYXRoY29uZiAoX19jb25zdCBjaGFyICpfX3BhdGgs
IGludCBfX25hbWUpIDsKCgpleHRlcm4gbG9uZyBpbnQgZnBhdGhjb25mIChpbnQgX19mZCwgaW50
IF9fbmFtZSkgOwoKCmV4dGVybiBsb25nIGludCBzeXNjb25mIChpbnQgX19uYW1lKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBzaXplX3QgY29uZnN0ciAoaW50IF9fbmFt
ZSwgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlk
ICh2b2lkKSA7CgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cHBpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIF9f
cGlkX3QgZ2V0cGdycCAodm9pZCkgOwojIDUzNiAiLi4vcG9zaXgvdW5pc3RkLmgiCmV4dGVybiBf
X3BpZF90IF9fZ2V0cGdpZCAoX19waWRfdCBfX3BpZCkgOwoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdp
ZCAoX19waWRfdCBfX3BpZCkgOwoKCgoKCgpleHRlcm4gaW50IHNldHBnaWQgKF9fcGlkX3QgX19w
aWQsIF9fcGlkX3QgX19wZ2lkKSA7CiMgNTYyICIuLi9wb3NpeC91bmlzdGQuaCIKZXh0ZXJuIGlu
dCBzZXRwZ3JwICh2b2lkKSA7CiMgNTgwICIuLi9wb3NpeC91bmlzdGQuaCIKZXh0ZXJuIF9fcGlk
X3Qgc2V0c2lkICh2b2lkKSA7CgoKCmV4dGVybiBfX3BpZF90IGdldHNpZCAoX19waWRfdCBfX3Bp
ZCkgOwoKCgpleHRlcm4gX191aWRfdCBnZXR1aWQgKHZvaWQpIDsKCgpleHRlcm4gX191aWRfdCBn
ZXRldWlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSA7CgoKZXh0ZXJu
IF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRncm91cHMgKGludCBf
X3NpemUsIF9fZ2lkX3QgX19saXN0W10pIDsKCgoKZXh0ZXJuIGludCBncm91cF9tZW1iZXIgKF9f
Z2lkX3QgX19naWQpIDsKCgoKCgoKZXh0ZXJuIGludCBzZXR1aWQgKF9fdWlkX3QgX191aWQpIDsK
CgoKCmV4dGVybiBpbnQgc2V0cmV1aWQgKF9fdWlkX3QgX19ydWlkLCBfX3VpZF90IF9fZXVpZCkg
OwoKCgoKZXh0ZXJuIGludCBzZXRldWlkIChfX3VpZF90IF9fdWlkKSA7CgoKCgoKCmV4dGVybiBp
bnQgc2V0Z2lkIChfX2dpZF90IF9fZ2lkKSA7CgoKCgpleHRlcm4gaW50IHNldHJlZ2lkIChfX2dp
ZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0ZWdpZCAoX19n
aWRfdCBfX2dpZCkgOwoKCgoKCgpleHRlcm4gX19waWRfdCBmb3JrICh2b2lkKSA7CgoKCgoKCmV4
dGVybiBfX3BpZF90IHZmb3JrICh2b2lkKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUgKGlu
dCBfX2ZkKSA7CgoKCmV4dGVybiBpbnQgdHR5bmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYs
IHNpemVfdCBfX2J1ZmxlbikgOwoKCgpleHRlcm4gaW50IGlzYXR0eSAoaW50IF9fZmQpIDsKCgoK
CgpleHRlcm4gaW50IHR0eXNsb3QgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgbGluayAoX19jb25z
dCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgOwoKCgpleHRlcm4gaW50IHN5bWxp
bmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pIDsKCgoKCmV4dGVy
biBpbnQgcmVhZGxpbmsgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3BhdGgsIGNoYXIgKl9f
cmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgOwoKCgpl
eHRlcm4gaW50IHVubGluayAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgpleHRlcm4gaW50IHJt
ZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gX19waWRfdCB0Y2dldHBncnAg
KGludCBfX2ZkKSA7CgoKZXh0ZXJuIGludCB0Y3NldHBncnAgKGludCBfX2ZkLCBfX3BpZF90IF9f
cGdycF9pZCkgOwoKCgpleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQpIDsKCgoKCmV4dGVybiBp
bnQgZ2V0bG9naW5fciAoY2hhciAqX19uYW1lLCBzaXplX3QgX19uYW1lX2xlbikgOwoKCgoKZXh0
ZXJuIGludCBzZXRsb2dpbiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKIyA3MjYgIi4uL3Bvc2l4
L3VuaXN0ZC5oIgojIDEgIi4uL2luY2x1ZGUvZ2V0b3B0LmgiIDEKCgojIDEgIi4uL3Bvc2l4L2dl
dG9wdC5oIiAxCiMgNDcgIi4uL3Bvc2l4L2dldG9wdC5oIgpleHRlcm4gY2hhciAqb3B0YXJnOwoj
IDYxICIuLi9wb3NpeC9nZXRvcHQuaCIKZXh0ZXJuIGludCBvcHRpbmQ7CgoKCgpleHRlcm4gaW50
IG9wdGVycjsKCgoKZXh0ZXJuIGludCBvcHRvcHQ7CiMgMTQ1ICIuLi9wb3NpeC9nZXRvcHQuaCIK
ZXh0ZXJuIGludCBnZXRvcHQgKGludCBfX19hcmdjLCBjaGFyICpjb25zdCAqX19fYXJndiwgY29u
c3QgY2hhciAqX19zaG9ydG9wdHMpOwojIDQgIi4uL2luY2x1ZGUvZ2V0b3B0LmgiIDIKCgpleHRl
cm4gdm9pZCBfX2dldG9wdF9jbGVhbl9lbnZpcm9ubWVudCAoY2hhciAqKl9fZW52KTsKIyA3Mjcg
Ii4uL3Bvc2l4L3VuaXN0ZC5oIiAyCgoKCgoKCgpleHRlcm4gaW50IGdldGhvc3RuYW1lIChjaGFy
ICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwoKCgoKCgpleHRlcm4gaW50IHNldGhvc3RuYW1lIChf
X2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgc2V0aG9z
dGlkIChsb25nIGludCBfX2lkKSA7CgoKCgoKZXh0ZXJuIGludCBnZXRkb21haW5uYW1lIChjaGFy
ICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IHNldGRvbWFpbm5hbWUgKF9fY29u
c3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKCgoKCgpleHRlcm4gaW50IHZoYW5ndXAg
KHZvaWQpIDsKCgpleHRlcm4gaW50IHJldm9rZSAoX19jb25zdCBjaGFyICpfX2ZpbGUpIDsKCgoK
CgoKCmV4dGVybiBpbnQgcHJvZmlsICh1bnNpZ25lZCBzaG9ydCBpbnQgKl9fc2FtcGxlX2J1ZmZl
ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX29mZnNldCwgdW5z
aWduZWQgaW50IF9fc2NhbGUpIDsKCgoKCgpleHRlcm4gaW50IGFjY3QgKF9fY29uc3QgY2hhciAq
X19uYW1lKSA7CgoKCmV4dGVybiBjaGFyICpnZXR1c2Vyc2hlbGwgKHZvaWQpIDsKZXh0ZXJuIHZv
aWQgZW5kdXNlcnNoZWxsICh2b2lkKSA7CmV4dGVybiB2b2lkIHNldHVzZXJzaGVsbCAodm9pZCkg
OwoKCgoKCmV4dGVybiBpbnQgZGFlbW9uIChpbnQgX19ub2NoZGlyLCBpbnQgX19ub2Nsb3NlKSA7
CgoKCgoKCmV4dGVybiBpbnQgY2hyb290IChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRl
cm4gY2hhciAqZ2V0cGFzcyAoX19jb25zdCBjaGFyICpfX3Byb21wdCkgOwoKCgoKCmV4dGVybiBp
bnQgZnN5bmMgKGludCBfX2ZkKSA7CgoKCgoKCmV4dGVybiBsb25nIGludCBnZXRob3N0aWQgKHZv
aWQpIDsKCgpleHRlcm4gdm9pZCBzeW5jICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGdldHBhZ2Vz
aXplICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHRy
dW5jYXRlIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmZfdCBfX2xlbmd0aCkgOwojIDgzNiAi
Li4vcG9zaXgvdW5pc3RkLmgiCmV4dGVybiBpbnQgdHJ1bmNhdGU2NCAoX19jb25zdCBjaGFyICpf
X2ZpbGUsIF9fb2ZmNjRfdCBfX2xlbmd0aCkgOwoKCgoKZXh0ZXJuIGludCBmdHJ1bmNhdGUgKGlu
dCBfX2ZkLCBfX29mZl90IF9fbGVuZ3RoKSA7CiMgODUxICIuLi9wb3NpeC91bmlzdGQuaCIKZXh0
ZXJuIGludCBmdHJ1bmNhdGU2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX2xlbmd0aCkgOwoKCgoK
CmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSAodm9pZCkgOwojIDg2NiAiLi4vcG9zaXgvdW5pc3Rk
LmgiCmV4dGVybiBpbnQgYnJrICh2b2lkICpfX2FkZHIpIDsKCgoKCgpleHRlcm4gdm9pZCAqc2Jy
ayAoaW50cHRyX3QgX19kZWx0YSkgOwojIDg4NyAiLi4vcG9zaXgvdW5pc3RkLmgiCmV4dGVybiBs
b25nIGludCBzeXNjYWxsIChsb25nIGludCBfX3N5c25vLCAuLi4pIDsKIyA5MDcgIi4uL3Bvc2l4
L3VuaXN0ZC5oIgpleHRlcm4gaW50IGxvY2tmIChpbnQgX19mZCwgaW50IF9fY21kLCBfX29mZl90
IF9fbGVuKSA7CiMgOTE3ICIuLi9wb3NpeC91bmlzdGQuaCIKZXh0ZXJuIGludCBsb2NrZjY0IChp
bnQgX19mZCwgaW50IF9fY21kLCBfX29mZjY0X3QgX19sZW4pIDsKIyA5MzggIi4uL3Bvc2l4L3Vu
aXN0ZC5oIgpleHRlcm4gaW50IGZkYXRhc3luYyAoaW50IF9fZmlsZGVzKSA7CgoKCgoKCgpleHRl
cm4gY2hhciAqY3J5cHQgKF9fY29uc3QgY2hhciAqX19rZXksIF9fY29uc3QgY2hhciAqX19zYWx0
KSA7CgoKCmV4dGVybiB2b2lkIGVuY3J5cHQgKGNoYXIgKl9fYmxvY2ssIGludCBfX2VkZmxhZykg
OwoKCgoKCgpleHRlcm4gdm9pZCBzd2FiIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19mcm9t
LCB2b2lkICpfX3Jlc3RyaWN0IF9fdG8sCiAgICAgICAgICAgICAgICAgIHNzaXplX3QgX19uKSA7
CgoKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CiMgOTgzICIuLi9wb3Np
eC91bmlzdGQuaCIKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAoKl9fcHJlcGFyZSkg
KHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19wYXJlbnQpICh2b2lk
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgOwoK
CgojIDMgIi4uL2luY2x1ZGUvdW5pc3RkLmgiIDIKCgpleHRlcm4gaW50IF9fYWNjZXNzIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSk7CmV4dGVybiBpbnQgX19ldWlkYWNjZXNzIChf
X2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSk7CmV4dGVybiBfX29mZjY0X3QgX19sc2Vl
azY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpOwpleHRlcm4g
X19vZmZfdCBfX2xzZWVrIChpbnQgX19mZCwgX19vZmZfdCBfX29mZnNldCwgaW50IF9fd2hlbmNl
KTsKZXh0ZXJuIF9fb2ZmX3QgX19saWJjX2xzZWVrIChpbnQgX19mZCwgX19vZmZfdCBfX29mZnNl
dCwgaW50IF9fd2hlbmNlKTsKZXh0ZXJuIF9fb2ZmNjRfdCBfX2xpYmNfbHNlZWs2NCAoaW50IF9f
ZmQsIF9fb2ZmNjRfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlKTsKZXh0ZXJuIHNzaXplX3QgX19w
cmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fb2ZmX3QgX19vZmZzZXQpOwpleHRlcm4gc3NpemVfdCBfX2xpYmNfcHJl
YWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fb2ZmX3QgX19vZmZzZXQpOwpleHRlcm4gc3NpemVfdCBfX3ByZWFk
NjQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCk7CmV4dGVybiBzc2l6ZV90IF9fbGliY19w
cmVhZDY0IChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCk7CmV4dGVybiBzc2l6ZV90
IF9fcHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmX3QgX19vZmZzZXQpOwpleHRlcm4gc3NpemVfdCBf
X2xpYmNfcHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19vZmZfdCBfX29mZnNldCk7CmV4dGVybiBz
c2l6ZV90IF9fcHdyaXRlNjQgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3Qg
X19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX29mZjY0X3QgX19vZmZzZXQpOwpleHRl
cm4gc3NpemVfdCBfX2xpYmNfcHdyaXRlNjQgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVm
LCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmNjRfdCBf
X29mZnNldCk7CmV4dGVybiBzc2l6ZV90IF9fbGliY19yZWFkIChpbnQgX19mZCwgdm9pZCAqX19i
dWYsIHNpemVfdCBfX24pOwpleHRlcm4gc3NpemVfdCBfX2xpYmNfd3JpdGUgKGludCBfX2ZkLCBf
X2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uKTsKZXh0ZXJuIGludCBfX3BpcGUgKGludCBf
X3BpcGVkZXNbMl0pOwpleHRlcm4gdW5zaWduZWQgaW50IF9fc2xlZXAgKHVuc2lnbmVkIGludCBf
X3NlY29uZHMpOwpleHRlcm4gaW50IF9fY2hvd24gKF9fY29uc3QgY2hhciAqX19maWxlLAogICAg
ICAgICAgICAgICAgICAgIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKTsKZXh0ZXJu
IGludCBfX2ZjaG93biAoaW50IF9fZmQsCiAgICAgICAgICAgICAgICAgICAgIF9fdWlkX3QgX19v
d25lciwgX19naWRfdCBfX2dyb3VwKTsKZXh0ZXJuIGludCBfX2xjaG93biAoX19jb25zdCBjaGFy
ICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwKICAgICAgICAgICAgICAgICAgICAgX19naWRfdCBf
X2dyb3VwKTsKZXh0ZXJuIGludCBfX2NoZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCk7CmV4dGVy
biBpbnQgX19mY2hkaXIgKGludCBfX2ZkKTsKZXh0ZXJuIGNoYXIgKl9fZ2V0Y3dkIChjaGFyICpf
X2J1Ziwgc2l6ZV90IF9fc2l6ZSk7CmV4dGVybiBpbnQgX19ybWRpciAoY29uc3QgY2hhciAqX19w
YXRoKTsKCgoKCgoKCmNoYXIgKl9fY2Fub25pY2FsaXplX2RpcmVjdG9yeV9uYW1lX2ludGVybmFs
IChfX2NvbnN0IGNoYXIgKl9fdGhpc2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc2l6ZSk7CgpleHRlcm4gaW50IF9fZHVwIChpbnQg
X19mZCk7CmV4dGVybiBpbnQgX19kdXAyIChpbnQgX19mZCwgaW50IF9fZmQyKTsKZXh0ZXJuIGlu
dCBfX2V4ZWN2ZSAoX19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2W10s
CiAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29uc3QgX19lbnZwW10pOwpleHRlcm4gbG9u
ZyBpbnQgX19wYXRoY29uZiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUpOwpleHRl
cm4gbG9uZyBpbnQgX19mcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQgX19uYW1lKTsKZXh0ZXJuIGxv
bmcgaW50IF9fc3lzY29uZiAoaW50IF9fbmFtZSk7CmV4dGVybiBfX3BpZF90IF9fZ2V0cGlkICh2
b2lkKTsKZXh0ZXJuIF9fcGlkX3QgX19nZXRwcGlkICh2b2lkKTsKZXh0ZXJuIF9fcGlkX3QgX19z
ZXRzaWQgKHZvaWQpOwpleHRlcm4gX191aWRfdCBfX2dldHVpZCAodm9pZCk7CmV4dGVybiBfX3Vp
ZF90IF9fZ2V0ZXVpZCAodm9pZCk7CmV4dGVybiBfX2dpZF90IF9fZ2V0Z2lkICh2b2lkKTsKZXh0
ZXJuIF9fZ2lkX3QgX19nZXRlZ2lkICh2b2lkKTsKZXh0ZXJuIGludCBfX2dldGdyb3VwcyAoaW50
IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSk7CmV4dGVybiBpbnQgX19ncm91cF9tZW1iZXIgKF9f
Z2lkX3QgX19naWQpOwpleHRlcm4gaW50IF9fc2V0dWlkIChfX3VpZF90IF9fdWlkKTsKZXh0ZXJu
IGludCBfX3NldHJldWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpOwpleHRlcm4g
aW50IF9fc2V0Z2lkIChfX2dpZF90IF9fZ2lkKTsKZXh0ZXJuIGludCBfX3NldHBnaWQgKF9fcGlk
X3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKTsKZXh0ZXJuIGludCBfX3NldHJlZ2lkIChfX2dpZF90
IF9fcmdpZCwgX19naWRfdCBfX2VnaWQpOwpleHRlcm4gX19waWRfdCBfX3Zmb3JrICh2b2lkKTsK
ZXh0ZXJuIGludCBfX3R0eW5hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19i
dWZsZW4pOwpleHRlcm4gaW50IF9faXNhdHR5IChpbnQgX19mZCk7CmV4dGVybiBpbnQgX19saW5r
IChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKTsKZXh0ZXJuIGludCBf
X3N5bWxpbmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pOwpleHRl
cm4gaW50IF9fcmVhZGxpbmsgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fbGVuKTsKZXh0ZXJuIGludCBfX3VubGluayAoX19jb25zdCBjaGFyICpfX25hbWUpOwpl
eHRlcm4gaW50IF9fZ2V0aG9zdG5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKTsKZXh0
ZXJuIGludCBfX3Byb2ZpbCAodW5zaWduZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNp
emVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX29mZnNldCwgdW5zaWdu
ZWQgaW50IF9fc2NhbGUpOwpleHRlcm4gaW50IF9fZ2V0ZHRhYmxlc2l6ZSAodm9pZCk7CmV4dGVy
biBpbnQgX19icmsgKHZvaWQgKl9fYWRkcik7CmV4dGVybiBpbnQgX19jbG9zZSAoaW50IF9fZmQp
OwpleHRlcm4gc3NpemVfdCBfX3JlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9f
bmJ5dGVzKTsKZXh0ZXJuIHNzaXplX3QgX193cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAq
X19idWYsIHNpemVfdCBfX24pOwpleHRlcm4gX19waWRfdCBfX2ZvcmsgKHZvaWQpOwpleHRlcm4g
aW50IF9fZ2V0cGFnZXNpemUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0
ZXJuIGludCBfX2Z0cnVuY2F0ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5ndGgpOwpleHRlcm4g
aW50IF9fZnRydW5jYXRlNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19sZW5ndGgpOwpleHRlcm4g
dm9pZCAqX19zYnJrIChpbnRwdHJfdCBfX2RlbHRhKTsKCgoKCgoKCmV4dGVybiBpbnQgX19saWJj
X2VuYWJsZV9zZWN1cmU7CgoKCmV4dGVybiB2b2lkIF9fbGliY19jaGVja19zdGFuZGFyZF9mZHMg
KHZvaWQpOwojIDI0ICJwdGhyZWFkLmMiIDIKIyAxICIuLi9pbmNsdWRlL2ZjbnRsLmgiIDEKCiMg
MSAiLi4vaW8vZmNudGwuaCIgMQojIDI5ICIuLi9pby9mY250bC5oIgoKCgoKIyAxICIuLi9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2JpdHMvZmNudGwuaCIgMQojIDI1ICIuLi9zeXNkZXBz
L3VuaXgvc3lzdi9saW51eC9pMzg2L2JpdHMvZmNudGwuaCIKIyAxICIuLi9pbmNsdWRlL3N5cy90
eXBlcy5oIiAxCiMgMjYgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvYml0cy9mY250
bC5oIiAyCiMgMTM2ICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2JpdHMvZmNudGwu
aCIKc3RydWN0IGZsb2NrCiAgewogICAgc2hvcnQgaW50IGxfdHlwZTsKICAgIHNob3J0IGludCBs
X3doZW5jZTsKCiAgICBfX29mZl90IGxfc3RhcnQ7CiAgICBfX29mZl90IGxfbGVuOwoKCgoKICAg
IF9fcGlkX3QgbF9waWQ7CiAgfTsKCgpzdHJ1Y3QgZmxvY2s2NAogIHsKICAgIHNob3J0IGludCBs
X3R5cGU7CiAgICBzaG9ydCBpbnQgbF93aGVuY2U7CiAgICBfX29mZjY0X3QgbF9zdGFydDsKICAg
IF9fb2ZmNjRfdCBsX2xlbjsKICAgIF9fcGlkX3QgbF9waWQ7CiAgfTsKIyAzNCAiLi4vaW8vZmNu
dGwuaCIgMgoKCgojIDEgIi4uL2luY2x1ZGUvc3lzL3N0YXQuaCIgMQoKIyAxICIuLi9pby9zeXMv
c3RhdC5oIiAxCiMgMzIgIi4uL2lvL3N5cy9zdGF0LmgiCiMgMSAiLi4vaW5jbHVkZS90aW1lLmgi
IDEKCgojIDEgIi4uL3RpbWUvdGltZS5oIiAxCiMgNCAiLi4vaW5jbHVkZS90aW1lLmgiIDIKIyAz
MyAiLi4vaW8vc3lzL3N0YXQuaCIgMgojIDk2ICIuLi9pby9zeXMvc3RhdC5oIgoKCiMgMSAiLi4v
c3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zdGF0LmgiIDEKIyAzNiAiLi4vc3lzZGVwcy91
bml4L3N5c3YvbGludXgvYml0cy9zdGF0LmgiCnN0cnVjdCBzdGF0CiAgewogICAgX19kZXZfdCBz
dF9kZXY7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQxOwoKICAgIF9faW5vX3Qgc3RfaW5v
OwoKCgogICAgX19tb2RlX3Qgc3RfbW9kZTsKICAgIF9fbmxpbmtfdCBzdF9ubGluazsKICAgIF9f
dWlkX3Qgc3RfdWlkOwogICAgX19naWRfdCBzdF9naWQ7CiAgICBfX2Rldl90IHN0X3JkZXY7CiAg
ICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwoKICAgIF9fb2ZmX3Qgc3Rfc2l6ZTsKCgoKICAg
IF9fYmxrc2l6ZV90IHN0X2Jsa3NpemU7CgoKICAgIF9fYmxrY250X3Qgc3RfYmxvY2tzOwoKCgog
ICAgX190aW1lX3Qgc3RfYXRpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDE7CiAg
ICBfX3RpbWVfdCBzdF9tdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAg
IF9fdGltZV90IHN0X2N0aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwoKICAg
IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkNDsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51
c2VkNTsKCgoKICB9OwoKCnN0cnVjdCBzdGF0NjQKICB7CiAgICBfX2Rldl90IHN0X2RldjsKICAg
IHVuc2lnbmVkIGludCBfX3BhZDE7CgogICAgX19pbm9fdCBfX3N0X2lubzsKICAgIF9fbW9kZV90
IHN0X21vZGU7CiAgICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsKICAg
IF9fZ2lkX3Qgc3RfZ2lkOwogICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgaW50IF9f
cGFkMjsKICAgIF9fb2ZmNjRfdCBzdF9zaXplOwogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6ZTsK
CiAgICBfX2Jsa2NudDY0X3Qgc3RfYmxvY2tzOwogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAgICB1
bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDE7CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAgIHVu
c2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAgdW5z
aWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwogICAgX19pbm82NF90IHN0X2lubzsKICB9OwojIDk5
ICIuLi9pby9zeXMvc3RhdC5oIiAyCiMgMjAwICIuLi9pby9zeXMvc3RhdC5oIgpleHRlcm4gaW50
IHN0YXQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAg
c3RydWN0IHN0YXQgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKZXh0ZXJuIGludCBmc3RhdCAoaW50
IF9fZmQsIHN0cnVjdCBzdGF0ICpfX2J1ZikgOwojIDIxOSAiLi4vaW8vc3lzL3N0YXQuaCIKZXh0
ZXJuIGludCBzdGF0NjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3Jlc3RyaWN0IF9fYnVmKSA7CmV4dGVybiBpbnQg
ZnN0YXQ2NCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0NjQgKl9fYnVmKSA7CgoKCgoKCmV4dGVybiBp
bnQgbHN0YXQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzdGF0ICpfX3Jlc3RyaWN0IF9fYnVmKSA7CiMgMjQxICIuLi9pby9zeXMvc3Rh
dC5oIgpleHRlcm4gaW50IGxzdGF0NjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUs
CiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19yZXN0cmljdCBfX2J1ZikgOwoK
CgoKCgpleHRlcm4gaW50IGNobW9kIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19t
b2RlKSA7CgoKCmV4dGVybiBpbnQgZmNobW9kIChpbnQgX19mZCwgX19tb2RlX3QgX19tb2RlKSA7
CgoKCgoKZXh0ZXJuIF9fbW9kZV90IHVtYXNrIChfX21vZGVfdCBfX21hc2spIDsKCgoKCmV4dGVy
biBfX21vZGVfdCBnZXR1bWFzayAodm9pZCkgOwoKCgpleHRlcm4gaW50IG1rZGlyIChfX2NvbnN0
IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0ZXJuIGludCBta25vZCAo
X19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCBfX2RldikKICAg
ICA7CgoKCgpleHRlcm4gaW50IG1rZmlmbyAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90
IF9fbW9kZSkgOwojIDMwNiAiLi4vaW8vc3lzL3N0YXQuaCIKZXh0ZXJuIGludCBfX2Z4c3RhdCAo
aW50IF9fdmVyLCBpbnQgX19maWxkZXMsIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSA7CmV4dGVy
biBpbnQgX194c3RhdCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYpIDsKZXh0ZXJuIGludCBfX2x4
c3RhdCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSA7CiMgMzMwICIuLi9pby9zeXMvc3RhdC5o
IgpleHRlcm4gaW50IF9fZnhzdGF0NjQgKGludCBfX3ZlciwgaW50IF9fZmlsZGVzLCBzdHJ1Y3Qg
c3RhdDY0ICpfX3N0YXRfYnVmKQogICAgIDsKZXh0ZXJuIGludCBfX3hzdGF0NjQgKGludCBfX3Zl
ciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHN0YXQ2NCAqX19zdGF0X2J1ZikgOwpleHRlcm4gaW50IF9fbHhzdGF0NjQgKGludCBfX3Zlciwg
X19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
dGF0NjQgKl9fc3RhdF9idWYpIDsKCmV4dGVybiBpbnQgX194bWtub2QgKGludCBfX3ZlciwgX19j
b25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
X19kZXZfdCAqX19kZXYpIDsKCgoKCmV4dGVybiBfX2lubGluZV9fIGludCBzdGF0IChfX2NvbnN0
IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpf
X3N0YXRidWYpCnsKICByZXR1cm4gX194c3RhdCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoK
ZXh0ZXJuIF9faW5saW5lX18gaW50IGxzdGF0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJu
IF9fbHhzdGF0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBp
bnQgZnN0YXQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJuIF9f
ZnhzdGF0ICgzLCBfX2ZkLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IG1r
bm9kIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fZGV2X3QgX19kZXYpCnsKICByZXR1cm4gX194bWtub2QgKDEsIF9f
cGF0aCwgX19tb2RlLCAmX19kZXYpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lX18gaW50IHN0YXQ2
NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX3hzdGF0NjQgKDMsIF9fcGF0aCwg
X19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBsc3RhdDY0IChfX2NvbnN0IGNo
YXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQg
Kl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2x4c3RhdDY0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7
Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQ2NCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0
NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2Z4c3RhdDY0ICgzLCBfX2ZkLCBfX3N0YXRidWYp
Owp9CgoKCgoKIyAzICIuLi9pbmNsdWRlL3N5cy9zdGF0LmgiIDIKCgpleHRlcm4gaW50IF9fc3Rh
dCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIHN0cnVjdCBzdGF0ICpfX2J1Zik7CmV4dGVybiBpbnQg
X19mc3RhdCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0ICpfX2J1Zik7CmV4dGVybiBpbnQgX19sc3Rh
dCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIHN0cnVjdCBzdGF0ICpfX2J1Zik7CmV4dGVybiBpbnQg
X19jaG1vZCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSk7CmV4dGVybiBp
bnQgX19mY2htb2QgKGludCBfX2ZkLCBfX21vZGVfdCBfX21vZGUpOwpleHRlcm4gX19tb2RlX3Qg
X191bWFzayAoX19tb2RlX3QgX19tYXNrKTsKZXh0ZXJuIGludCBfX21rZGlyIChfX2NvbnN0IGNo
YXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKTsKZXh0ZXJuIGludCBfX21rbm9kIChfX2NvbnN0
IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICBfX21vZGVfdCBfX21vZGUsIF9fZGV2
X3QgX19kZXYpOwpleHRlcm4gX19pbmxpbmVfXyBpbnQgX19zdGF0IChfX2NvbnN0IGNoYXIgKl9f
cGF0aCwgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX3hzdGF0ICgzLCBfX3Bh
dGgsIF9fc3RhdGJ1Zik7Cn0KZXh0ZXJuIF9faW5saW5lX18gaW50IF9fbHN0YXQgKF9fY29uc3Qg
Y2hhciAqX19wYXRoLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJuIF9fbHhzdGF0
ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KZXh0ZXJuIF9faW5saW5lX18gaW50IF9fZnN0YXQg
KGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJuIF9fZnhzdGF0ICgz
LCBfX2ZkLCBfX3N0YXRidWYpOwp9CmV4dGVybiBfX2lubGluZV9fIGludCBfX21rbm9kIChfX2Nv
bnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19kZXZfdCBfX2RldikKewogIHJldHVybiBfX3hta25vZCAoMSwgX19wYXRoLCBf
X21vZGUsICZfX2Rldik7Cn0KIyAzOCAiLi4vaW8vZmNudGwuaCIgMgojIDYwICIuLi9pby9mY250
bC5oIgpleHRlcm4gaW50IGZjbnRsIChpbnQgX19mZCwgaW50IF9fY21kLCAuLi4pIDsKCgoKCgpl
eHRlcm4gaW50IG9wZW4gKF9fY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19vZmxhZywgLi4uKSA7
CiMgNzYgIi4uL2lvL2ZjbnRsLmgiCmV4dGVybiBpbnQgb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikgOwoKCgoKCgpleHRlcm4gaW50IGNyZWF0IChfX2NvbnN0
IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19tb2RlKSA7CiMgOTMgIi4uL2lvL2ZjbnRsLmgiCmV4
dGVybiBpbnQgY3JlYXQ2NCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkg
OwojIDEzMCAiLi4vaW8vZmNudGwuaCIKZXh0ZXJuIGludCBwb3NpeF9mYWR2aXNlIChpbnQgX19m
ZCwgX19vZmZfdCBfX29mZnNldCwgc2l6ZV90IF9fbGVuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBfX2FkdmlzZSkgOwojIDE0MiAiLi4vaW8vZmNudGwuaCIKZXh0ZXJuIGludCBwb3Np
eF9mYWR2aXNlNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIHNpemVfdCBfX2xlbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FkdmlzZSkgOwoKCgoKCmV4dGVybiBp
bnQgcG9zaXhfZmFsbG9jYXRlIChpbnQgX19mZCwgX19vZmZfdCBfX29mZnNldCwgc2l6ZV90IF9f
bGVuKSA7CiMgMTYwICIuLi9pby9mY250bC5oIgpleHRlcm4gaW50IHBvc2l4X2ZhbGxvY2F0ZTY0
IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBzaXplX3QgX19sZW4pCiAgICAgOwoKCgoK
IyAzICIuLi9pbmNsdWRlL2ZjbnRsLmgiIDIKCgpleHRlcm4gaW50IF9fb3BlbjY0IChfX2NvbnN0
IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4uLik7CmV4dGVybiBpbnQgX19saWJjX29wZW42
NCAoY29uc3QgY2hhciAqZmlsZSwgaW50IG9mbGFnLCAuLi4pOwpleHRlcm4gaW50IF9fbGliY19v
cGVuIChjb25zdCBjaGFyICpmaWxlLCBpbnQgb2ZsYWcsIC4uLik7CmV4dGVybiBpbnQgX19saWJj
X2ZjbnRsIChpbnQgZmQsIGludCBjbWQsIC4uLik7CmV4dGVybiBpbnQgX19vcGVuIChfX2NvbnN0
IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4uLik7CmV4dGVybiBpbnQgX19mY250bCAoaW50
IF9fZmQsIGludCBfX2NtZCwgLi4uKSA7CiMgMjUgInB0aHJlYWQuYyIgMgojIDEgIi4uL2luY2x1
ZGUvc3lzL3dhaXQuaCIgMQoKIyAxICIuLi9wb3NpeC9zeXMvd2FpdC5oIiAxCiMgMjggIi4uL3Bv
c2l4L3N5cy93YWl0LmgiCgoKIyAxICIuLi9pbmNsdWRlL3NpZ25hbC5oIiAxCgoKCgojIDEgIi4u
L3NpZ25hbC9zaWduYWwuaCIgMQojIDMxICIuLi9zaWduYWwvc2lnbmFsLmgiCgoKIyAxICIuLi9z
eXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NpZ3NldC5oIiAxCiMgMTAzICIuLi9zeXNkZXBz
L3VuaXgvc3lzdi9saW51eC9iaXRzL3NpZ3NldC5oIgpleHRlcm4gaW50IF9fc2lnaXNtZW1iZXIg
KF9fY29uc3QgX19zaWdzZXRfdCAqLCBpbnQpOwpleHRlcm4gaW50IF9fc2lnYWRkc2V0IChfX3Np
Z3NldF90ICosIGludCk7CmV4dGVybiBpbnQgX19zaWdkZWxzZXQgKF9fc2lnc2V0X3QgKiwgaW50
KTsKIyAxMTcgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc2lnc2V0LmgiCmV4dGVy
biBfX2lubGluZSBpbnQgX19zaWdpc21lbWJlciAoX19jb25zdCBfX3NpZ3NldF90ICpfX3NldCwg
aW50IF9fc2lnKSB7IHVuc2lnbmVkIGxvbmcgaW50IF9fbWFzayA9ICgoKHVuc2lnbmVkIGxvbmcg
aW50KSAxKSA8PCAoKChfX3NpZykgLSAxKSAlICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGlu
dCkpKSk7IHVuc2lnbmVkIGxvbmcgaW50IF9fd29yZCA9ICgoKF9fc2lnKSAtIDEpIC8gKDggKiBz
aXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpOyByZXR1cm4gKF9fc2V0LT5fX3ZhbFtfX3dvcmRd
ICYgX19tYXNrKSA/IDEgOiAwOyB9CmV4dGVybiBfX2lubGluZSBpbnQgX19zaWdhZGRzZXQgKCBf
X3NpZ3NldF90ICpfX3NldCwgaW50IF9fc2lnKSB7IHVuc2lnbmVkIGxvbmcgaW50IF9fbWFzayA9
ICgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAoKChfX3NpZykgLSAxKSAlICg4ICogc2l6ZW9m
ICh1bnNpZ25lZCBsb25nIGludCkpKSk7IHVuc2lnbmVkIGxvbmcgaW50IF9fd29yZCA9ICgoKF9f
c2lnKSAtIDEpIC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpOyByZXR1cm4gKChf
X3NldC0+X192YWxbX193b3JkXSB8PSBfX21hc2spLCAwKTsgfQpleHRlcm4gX19pbmxpbmUgaW50
IF9fc2lnZGVsc2V0ICggX19zaWdzZXRfdCAqX19zZXQsIGludCBfX3NpZykgeyB1bnNpZ25lZCBs
b25nIGludCBfX21hc2sgPSAoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgKCgoX19zaWcpIC0g
MSkgJSAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkpOyB1bnNpZ25lZCBsb25nIGlu
dCBfX3dvcmQgPSAoKChfX3NpZykgLSAxKSAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGlu
dCkpKTsgcmV0dXJuICgoX19zZXQtPl9fdmFsW19fd29yZF0gJj0gfl9fbWFzayksIDApOyB9CiMg
MzQgIi4uL3NpZ25hbC9zaWduYWwuaCIgMgoKCgoKCgp0eXBlZGVmIF9fc2lnX2F0b21pY190IHNp
Z19hdG9taWNfdDsKIyA1NiAiLi4vc2lnbmFsL3NpZ25hbC5oIgojIDEgIi4uL3N5c2RlcHMvdW5p
eC9zeXN2L2xpbnV4L2JpdHMvc2lnbnVtLmgiIDEKIyA1NyAiLi4vc2lnbmFsL3NpZ25hbC5oIiAy
CiMgNzEgIi4uL3NpZ25hbC9zaWduYWwuaCIKdHlwZWRlZiB2b2lkICgqX19zaWdoYW5kbGVyX3Qp
IChpbnQpOwoKCgoKZXh0ZXJuIF9fc2lnaGFuZGxlcl90IF9fc3lzdl9zaWduYWwgKGludCBfX3Np
ZywgX19zaWdoYW5kbGVyX3QgX19oYW5kbGVyKQogICAgIDsKCmV4dGVybiBfX3NpZ2hhbmRsZXJf
dCBzeXN2X3NpZ25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRsZXIpCiAgICAg
OwoKCgoKCgpleHRlcm4gX19zaWdoYW5kbGVyX3Qgc2lnbmFsIChpbnQgX19zaWcsIF9fc2lnaGFu
ZGxlcl90IF9faGFuZGxlcikgOwojIDEwMyAiLi4vc2lnbmFsL3NpZ25hbC5oIgpleHRlcm4gX19z
aWdoYW5kbGVyX3QgYnNkX3NpZ25hbCAoaW50IF9fc2lnLCBfX3NpZ2hhbmRsZXJfdCBfX2hhbmRs
ZXIpIDsKCgoKCgoKZXh0ZXJuIGludCBraWxsIChfX3BpZF90IF9fcGlkLCBpbnQgX19zaWcpIDsK
CgoKCgoKZXh0ZXJuIGludCBraWxscGcgKF9fcGlkX3QgX19wZ3JwLCBpbnQgX19zaWcpIDsKCgoK
ZXh0ZXJuIGludCByYWlzZSAoaW50IF9fc2lnKSA7CgoKCmV4dGVybiBfX3NpZ2hhbmRsZXJfdCBz
c2lnbmFsIChpbnQgX19zaWcsIF9fc2lnaGFuZGxlcl90IF9faGFuZGxlcikgOwpleHRlcm4gaW50
IGdzaWduYWwgKGludCBfX3NpZykgOwoKCgoKZXh0ZXJuIHZvaWQgcHNpZ25hbCAoaW50IF9fc2ln
LCBfX2NvbnN0IGNoYXIgKl9fcykgOwojIDE0MCAiLi4vc2lnbmFsL3NpZ25hbC5oIgpleHRlcm4g
aW50IF9fc2lncGF1c2UgKGludCBfX3NpZ19vcl9tYXNrLCBpbnQgX19pc19zaWcpIDsKCgoKCmV4
dGVybiBpbnQgc2lncGF1c2UgKGludCBfX21hc2spIDsKIyAxNjggIi4uL3NpZ25hbC9zaWduYWwu
aCIKZXh0ZXJuIGludCBzaWdibG9jayAoaW50IF9fbWFzaykgOwoKCmV4dGVybiBpbnQgc2lnc2V0
bWFzayAoaW50IF9fbWFzaykgOwoKCmV4dGVybiBpbnQgc2lnZ2V0bWFzayAodm9pZCkgOwojIDE4
MyAiLi4vc2lnbmFsL3NpZ25hbC5oIgp0eXBlZGVmIF9fc2lnaGFuZGxlcl90IHNpZ2hhbmRsZXJf
dDsKCgoKCnR5cGVkZWYgX19zaWdoYW5kbGVyX3Qgc2lnX3Q7CgoKCgoKCgojIDEgIi4uL2luY2x1
ZGUvdGltZS5oIiAxCgoKIyAxICIuLi90aW1lL3RpbWUuaCIgMQojIDQgIi4uL2luY2x1ZGUvdGlt
ZS5oIiAyCiMgMTk3ICIuLi9zaWduYWwvc2lnbmFsLmgiIDIKCgojIDEgIi4uL3N5c2RlcHMvdW5p
eC9zeXN2L2xpbnV4L2JpdHMvc2lnaW5mby5oIiAxCiMgMjUgIi4uL3N5c2RlcHMvdW5peC9zeXN2
L2xpbnV4L2JpdHMvc2lnaW5mby5oIgojIDEgIi4uL3N5c2RlcHMvd29yZHNpemUtMzIvYml0cy93
b3Jkc2l6ZS5oIiAxCiMgMjYgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc2lnaW5m
by5oIiAyCgoKCgoKCgp0eXBlZGVmIHVuaW9uIHNpZ3ZhbAogIHsKICAgIGludCBzaXZhbF9pbnQ7
CiAgICB2b2lkICpzaXZhbF9wdHI7CiAgfSBzaWd2YWxfdDsKIyA1MSAiLi4vc3lzZGVwcy91bml4
L3N5c3YvbGludXgvYml0cy9zaWdpbmZvLmgiCnR5cGVkZWYgc3RydWN0IHNpZ2luZm8KICB7CiAg
ICBpbnQgc2lfc2lnbm87CiAgICBpbnQgc2lfZXJybm87CgogICAgaW50IHNpX2NvZGU7CgogICAg
dW5pb24KICAgICAgewogICAgICAgIGludCBfcGFkWygoMTI4IC8gc2l6ZW9mIChpbnQpKSAtIDMp
XTsKCgogICAgICAgIHN0cnVjdAogICAgICAgICAgewogICAgICAgICAgICBfX3BpZF90IHNpX3Bp
ZDsKICAgICAgICAgICAgX191aWRfdCBzaV91aWQ7CiAgICAgICAgICB9IF9raWxsOwoKCiAgICAg
ICAgc3RydWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIHVuc2lnbmVkIGludCBfdGltZXIxOwog
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgX3RpbWVyMjsKICAgICAgICAgIH0gX3RpbWVyOwoKCiAg
ICAgICAgc3RydWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIF9fcGlkX3Qgc2lfcGlkOwogICAg
ICAgICAgICBfX3VpZF90IHNpX3VpZDsKICAgICAgICAgICAgc2lndmFsX3Qgc2lfc2lndmFsOwog
ICAgICAgICAgfSBfcnQ7CgoKICAgICAgICBzdHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAg
X19waWRfdCBzaV9waWQ7CiAgICAgICAgICAgIF9fdWlkX3Qgc2lfdWlkOwogICAgICAgICAgICBp
bnQgc2lfc3RhdHVzOwogICAgICAgICAgICBfX2Nsb2NrX3Qgc2lfdXRpbWU7CiAgICAgICAgICAg
IF9fY2xvY2tfdCBzaV9zdGltZTsKICAgICAgICAgIH0gX3NpZ2NobGQ7CgoKICAgICAgICBzdHJ1
Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgdm9pZCAqc2lfYWRkcjsKICAgICAgICAgIH0gX3Np
Z2ZhdWx0OwoKCiAgICAgICAgc3RydWN0CiAgICAgICAgICB7CiAgICAgICAgICAgIGxvbmcgaW50
IHNpX2JhbmQ7CiAgICAgICAgICAgIGludCBzaV9mZDsKICAgICAgICAgIH0gX3NpZ3BvbGw7CiAg
ICAgIH0gX3NpZmllbGRzOwogIH0gc2lnaW5mb190OwojIDEyOCAiLi4vc3lzZGVwcy91bml4L3N5
c3YvbGludXgvYml0cy9zaWdpbmZvLmgiCmVudW0KewogIFNJX0FTWU5DTkwgPSAtNiwKCiAgU0lf
U0lHSU8sCgogIFNJX0FTWU5DSU8sCgogIFNJX01FU0dRLAoKICBTSV9USU1FUiwKCiAgU0lfUVVF
VUUsCgogIFNJX1VTRVIsCgogIFNJX0tFUk5FTCA9IDB4ODAKCn07CgoKCmVudW0KewogIElMTF9J
TExPUEMgPSAxLAoKICBJTExfSUxMT1BOLAoKICBJTExfSUxMQURSLAoKICBJTExfSUxMVFJQLAoK
ICBJTExfUFJWT1BDLAoKICBJTExfUFJWUkVHLAoKICBJTExfQ09QUk9DLAoKICBJTExfQkFEU1RL
Cgp9OwoKCmVudW0KewogIEZQRV9JTlRESVYgPSAxLAoKICBGUEVfSU5UT1ZGLAoKICBGUEVfRkxU
RElWLAoKICBGUEVfRkxUT1ZGLAoKICBGUEVfRkxUVU5ELAoKICBGUEVfRkxUUkVTLAoKICBGUEVf
RkxUSU5WLAoKICBGUEVfRkxUU1VCCgp9OwoKCmVudW0KewogIFNFR1ZfTUFQRVJSID0gMSwKCiAg
U0VHVl9BQ0NFUlIKCn07CgoKZW51bQp7CiAgQlVTX0FEUkFMTiA9IDEsCgogIEJVU19BRFJFUlIs
CgogIEJVU19PQkpFUlIKCn07CgoKZW51bQp7CiAgVFJBUF9CUktQVCA9IDEsCgogIFRSQVBfVFJB
Q0UKCn07CgoKZW51bQp7CiAgQ0xEX0VYSVRFRCA9IDEsCgogIENMRF9LSUxMRUQsCgogIENMRF9E
VU1QRUQsCgogIENMRF9UUkFQUEVELAoKICBDTERfU1RPUFBFRCwKCiAgQ0xEX0NPTlRJTlVFRAoK
fTsKCgplbnVtCnsKICBQT0xMX0lOID0gMSwKCiAgUE9MTF9PVVQsCgogIFBPTExfTVNHLAoKICBQ
T0xMX0VSUiwKCiAgUE9MTF9QUkksCgogIFBPTExfSFVQCgp9OwojIDI3MSAiLi4vc3lzZGVwcy91
bml4L3N5c3YvbGludXgvYml0cy9zaWdpbmZvLmgiCnN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zOwoK
dHlwZWRlZiBzdHJ1Y3Qgc2lnZXZlbnQKICB7CiAgICBzaWd2YWxfdCBzaWdldl92YWx1ZTsKICAg
IGludCBzaWdldl9zaWdubzsKICAgIGludCBzaWdldl9ub3RpZnk7CgogICAgdW5pb24KICAgICAg
ewogICAgICAgIGludCBfcGFkWygoNjQgLyBzaXplb2YgKGludCkpIC0gMyldOwoKICAgICAgICBz
dHJ1Y3QKICAgICAgICAgIHsKICAgICAgICAgICAgdm9pZCAoKl9mdW5jdGlvbikgKHNpZ3ZhbF90
KTsKICAgICAgICAgICAgc3RydWN0IF9fcHRocmVhZF9hdHRyX3MgKl9hdHRyaWJ1dGU7CiAgICAg
ICAgICB9IF9zaWdldl90aHJlYWQ7CiAgICAgIH0gX3NpZ2V2X3VuOwogIH0gc2lnZXZlbnRfdDsK
CgoKCgoKZW51bQp7CiAgU0lHRVZfU0lHTkFMID0gMCwKCiAgU0lHRVZfTk9ORSwKCiAgU0lHRVZf
VEhSRUFECgp9OwojIDIwMCAiLi4vc2lnbmFsL3NpZ25hbC5oIiAyCgoKCmV4dGVybiBpbnQgc2ln
ZW1wdHlzZXQgKHNpZ3NldF90ICpfX3NldCkgOwoKCmV4dGVybiBpbnQgc2lnZmlsbHNldCAoc2ln
c2V0X3QgKl9fc2V0KSA7CgoKZXh0ZXJuIGludCBzaWdhZGRzZXQgKHNpZ3NldF90ICpfX3NldCwg
aW50IF9fc2lnbm8pIDsKCgpleHRlcm4gaW50IHNpZ2RlbHNldCAoc2lnc2V0X3QgKl9fc2V0LCBp
bnQgX19zaWdubykgOwoKCmV4dGVybiBpbnQgc2lnaXNtZW1iZXIgKF9fY29uc3Qgc2lnc2V0X3Qg
Kl9fc2V0LCBpbnQgX19zaWdubykgOwoKCgpleHRlcm4gaW50IHNpZ2lzZW1wdHlzZXQgKF9fY29u
c3Qgc2lnc2V0X3QgKl9fc2V0KSA7CgoKZXh0ZXJuIGludCBzaWdhbmRzZXQgKHNpZ3NldF90ICpf
X3NldCwgX19jb25zdCBzaWdzZXRfdCAqX19sZWZ0LAogICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBzaWdzZXRfdCAqX19yaWdodCkgOwoKCmV4dGVybiBpbnQgc2lnb3JzZXQgKHNpZ3NldF90
ICpfX3NldCwgX19jb25zdCBzaWdzZXRfdCAqX19sZWZ0LAogICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IHNpZ3NldF90ICpfX3JpZ2h0KSA7CgoKCgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2
L2xpbnV4L2JpdHMvc2lnYWN0aW9uLmgiIDEKIyAyNSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGlu
dXgvYml0cy9zaWdhY3Rpb24uaCIKc3RydWN0IHNpZ2FjdGlvbgogIHsKCgogICAgdW5pb24KICAg
ICAgewoKICAgICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5kbGVyOwoKICAgICAgICB2b2lkICgq
c2Ffc2lnYWN0aW9uKSAoaW50LCBzaWdpbmZvX3QgKiwgdm9pZCAqKTsKICAgICAgfQogICAgX19z
aWdhY3Rpb25faGFuZGxlcjsKCgoKCgoKCiAgICBfX3NpZ3NldF90IHNhX21hc2s7CgoKICAgIGlu
dCBzYV9mbGFnczsKCgogICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSAodm9pZCk7CiAgfTsKIyAyMzMg
Ii4uL3NpZ25hbC9zaWduYWwuaCIgMgoKCmV4dGVybiBpbnQgc2lncHJvY21hc2sgKGludCBfX2hv
dywgX19jb25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19vc2V0KSA7CgoKCmV4dGVybiBpbnQgc2lnc3Vz
cGVuZCAoX19jb25zdCBzaWdzZXRfdCAqX19zZXQpIDsKCgpleHRlcm4gaW50IHNpZ2FjdGlvbiAo
aW50IF9fc2lnLCBfX2NvbnN0IHN0cnVjdCBzaWdhY3Rpb24gKl9fcmVzdHJpY3QgX19hY3QsCiAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uICpfX3Jlc3RyaWN0IF9fb2FjdCkg
OwoKCmV4dGVybiBpbnQgc2lncGVuZGluZyAoc2lnc2V0X3QgKl9fc2V0KSA7CgoKCmV4dGVybiBp
bnQgc2lnd2FpdCAoX19jb25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwgaW50ICpfX3Jl
c3RyaWN0IF9fc2lnKQogICAgIDsKCgoKZXh0ZXJuIGludCBzaWd3YWl0aW5mbyAoX19jb25zdCBz
aWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKICAgICAgICAgICAgICAgICAgICAgICAgc2lnaW5m
b190ICpfX3Jlc3RyaWN0IF9faW5mbykgOwoKCgpleHRlcm4gaW50IHNpZ3RpbWVkd2FpdCAoX19j
b25zdCBzaWdzZXRfdCAqX19yZXN0cmljdCBfX3NldCwKICAgICAgICAgICAgICAgICAgICAgICAg
IHNpZ2luZm9fdCAqX19yZXN0cmljdCBfX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCBfX3RpbWVvdXQpCiAgICAgOwoKCgpl
eHRlcm4gaW50IHNpZ3F1ZXVlIChfX3BpZF90IF9fcGlkLCBpbnQgX19zaWcsIF9fY29uc3QgdW5p
b24gc2lndmFsIF9fdmFsKQogICAgIDsKIyAyNzggIi4uL3NpZ25hbC9zaWduYWwuaCIKZXh0ZXJu
IF9fY29uc3QgY2hhciAqX19jb25zdCBfc3lzX3NpZ2xpc3RbNjRdOwpleHRlcm4gX19jb25zdCBj
aGFyICpfX2NvbnN0IHN5c19zaWdsaXN0WzY0XTsKCgpzdHJ1Y3Qgc2lndmVjCiAgewogICAgX19z
aWdoYW5kbGVyX3Qgc3ZfaGFuZGxlcjsKICAgIGludCBzdl9tYXNrOwoKICAgIGludCBzdl9mbGFn
czsKCiAgfTsKIyAzMDIgIi4uL3NpZ25hbC9zaWduYWwuaCIKZXh0ZXJuIGludCBzaWd2ZWMgKGlu
dCBfX3NpZywgX19jb25zdCBzdHJ1Y3Qgc2lndmVjICpfX3ZlYywKICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzaWd2ZWMgKl9fb3ZlYykgOwoKCgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xp
bnV4L2JpdHMvc2lnY29udGV4dC5oIiAxCiMgMjggIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L2JpdHMvc2lnY29udGV4dC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9hc20v
c2lnY29udGV4dC5oIiAxIDMKIyAxOCAiL3Vzci9zcmMvbGludXgtdGhpcy9pbmNsdWRlL2FzbS9z
aWdjb250ZXh0LmgiIDMKc3RydWN0IF9mcHJlZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2ln
bmlmaWNhbmRbNF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7Cn07CgpzdHJ1Y3Qg
X2ZweHJlZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNhbmRbNF07CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFkZGluZ1sz
XTsKfTsKCnN0cnVjdCBfeG1tcmVnIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGVsZW1lbnRbNF07
Cn07CgpzdHJ1Y3QgX2Zwc3RhdGUgewoKICAgICAgICB1bnNpZ25lZCBsb25nIGN3OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc3c7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0YWc7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBpcG9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNzc2VsOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZGF0YW9mZjsKICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGFzZWw7CiAgICAg
ICAgc3RydWN0IF9mcHJlZyBfc3RbOF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IG1hZ2ljOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBfZnhz
cl9lbnZbNl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBteGNzcjsKICAgICAgICB1bnNpZ25lZCBs
b25nIHJlc2VydmVkOwogICAgICAgIHN0cnVjdCBfZnB4cmVnIF9meHNyX3N0WzhdOwogICAgICAg
IHN0cnVjdCBfeG1tcmVnIF94bW1bOF07CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYWRkaW5nWzU2
XTsKfTsKCgoKc3RydWN0IHNpZ2NvbnRleHQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBf
X2dzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2RzaDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzaTsKICAgICAgICB1
bnNpZ25lZCBsb25nIGVicDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsKICAgICAgICB1bnNp
Z25lZCBsb25nIGVieDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVkeDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVjeDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVheDsKICAgICAgICB1bnNpZ25lZCBs
b25nIHRyYXBubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGVycjsKICAgICAgICB1bnNpZ25lZCBs
b25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBlZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3BfYXRfc2lnbmFsOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKICAgICAgICBzdHJ1Y3QgX2Zwc3RhdGUgKiBm
cHN0YXRlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbWFzazsKICAgICAgICB1bnNpZ25lZCBs
b25nIGNyMjsKfTsKIyAyOSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zaWdjb250
ZXh0LmgiIDIKIyAzMDggIi4uL3NpZ25hbC9zaWduYWwuaCIgMgoKCmV4dGVybiBpbnQgc2lncmV0
dXJuIChzdHJ1Y3Qgc2lnY29udGV4dCAqX19zY3ApIDsKIyAzMjAgIi4uL3NpZ25hbC9zaWduYWwu
aCIKZXh0ZXJuIGludCBzaWdpbnRlcnJ1cHQgKGludCBfX3NpZywgaW50IF9faW50ZXJydXB0KSA7
CgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc2lnc3RhY2suaCIgMQojIDI2
ICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NpZ3N0YWNrLmgiCnN0cnVjdCBzaWdz
dGFjawogIHsKICAgIHZvaWQgKnNzX3NwOwogICAgaW50IHNzX29uc3RhY2s7CiAgfTsKCgoKZW51
bQp7CiAgU1NfT05TVEFDSyA9IDEsCgogIFNTX0RJU0FCTEUKCn07CiMgNTAgIi4uL3N5c2RlcHMv
dW5peC9zeXN2L2xpbnV4L2JpdHMvc2lnc3RhY2suaCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnYWx0c3Rh
Y2sKICB7CiAgICB2b2lkICpzc19zcDsKICAgIGludCBzc19mbGFnczsKICAgIHNpemVfdCBzc19z
aXplOwogIH0gc3RhY2tfdDsKIyAzMjMgIi4uL3NpZ25hbC9zaWduYWwuaCIgMgoKIyAxICIuLi9p
bmNsdWRlL3Vjb250ZXh0LmgiIDEKIyAxICIuLi9zdGRsaWIvdWNvbnRleHQuaCIgMQojIDI3ICIu
Li9zdGRsaWIvdWNvbnRleHQuaCIKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2
L3N5cy91Y29udGV4dC5oIiAxCiMgMjMgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYv
c3lzL3Vjb250ZXh0LmgiCiMgMSAiLi4vaW5jbHVkZS9zaWduYWwuaCIgMQojIDI0ICIuLi9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5cy91Y29udGV4dC5oIiAyCgoKCiMgMSAiLi4vc3lz
ZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zaWdjb250ZXh0LmgiIDEKIyAyOCAiLi4vc3lzZGVw
cy91bml4L3N5c3YvbGludXgvaTM4Ni9zeXMvdWNvbnRleHQuaCIgMgoKCgp0eXBlZGVmIGludCBn
cmVnX3Q7CgoKCgoKdHlwZWRlZiBncmVnX3QgZ3JlZ3NldF90WzE5XTsKCgoKZW51bQp7CiAgUkVH
X0dTID0gMCwKCiAgUkVHX0ZTLAoKICBSRUdfRVMsCgogIFJFR19EUywKCiAgUkVHX0VESSwKCiAg
UkVHX0VTSSwKCiAgUkVHX0VCUCwKCiAgUkVHX0VTUCwKCiAgUkVHX0VCWCwKCiAgUkVHX0VEWCwK
CiAgUkVHX0VDWCwKCiAgUkVHX0VBWCwKCiAgUkVHX1RSQVBOTywKCiAgUkVHX0VSUiwKCiAgUkVH
X0VJUCwKCiAgUkVHX0NTLAoKICBSRUdfRUZMLAoKICBSRUdfVUVTUCwKCiAgUkVHX1NTCgp9OwoK
CgpzdHJ1Y3QgX2xpYmNfZnByZWcKewogIHVuc2lnbmVkIHNob3J0IGludCBzaWduaWZpY2FuZFs0
XTsKICB1bnNpZ25lZCBzaG9ydCBpbnQgZXhwb25lbnQ7Cn07CgpzdHJ1Y3QgX2xpYmNfZnBzdGF0
ZQp7CiAgdW5zaWduZWQgbG9uZyBpbnQgY3c7CiAgdW5zaWduZWQgbG9uZyBpbnQgc3c7CiAgdW5z
aWduZWQgbG9uZyBpbnQgdGFnOwogIHVuc2lnbmVkIGxvbmcgaW50IGlwb2ZmOwogIHVuc2lnbmVk
IGxvbmcgaW50IGNzc2VsOwogIHVuc2lnbmVkIGxvbmcgaW50IGRhdGFvZmY7CiAgdW5zaWduZWQg
bG9uZyBpbnQgZGF0YXNlbDsKICBzdHJ1Y3QgX2xpYmNfZnByZWcgX3N0WzhdOwogIHVuc2lnbmVk
IGxvbmcgaW50IHN0YXR1czsKfTsKCgp0eXBlZGVmIHN0cnVjdCBfbGliY19mcHN0YXRlICpmcHJl
Z3NldF90OwoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgZ3JlZ3NldF90IGdyZWdzOwoKCiAgICBm
cHJlZ3NldF90IGZwcmVnczsKICAgIHVuc2lnbmVkIGxvbmcgaW50IG9sZG1hc2s7CiAgICB1bnNp
Z25lZCBsb25nIGludCBjcjI7CiAgfSBtY29udGV4dF90OwoKCnR5cGVkZWYgc3RydWN0IHVjb250
ZXh0CiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgdWNfZmxhZ3M7CiAgICBzdHJ1Y3QgdWNvbnRl
eHQgKnVjX2xpbms7CiAgICBzdGFja190IHVjX3N0YWNrOwogICAgbWNvbnRleHRfdCB1Y19tY29u
dGV4dDsKICAgIF9fc2lnc2V0X3QgdWNfc2lnbWFzazsKICAgIHN0cnVjdCBfbGliY19mcHN0YXRl
IF9fZnByZWdzX21lbTsKICB9IHVjb250ZXh0X3Q7CiMgMjggIi4uL3N0ZGxpYi91Y29udGV4dC5o
IiAyCgoKCgpleHRlcm4gaW50IGdldGNvbnRleHQgKHVjb250ZXh0X3QgKl9fdWNwKSA7CgoKZXh0
ZXJuIGludCBzZXRjb250ZXh0IChfX2NvbnN0IHVjb250ZXh0X3QgKl9fdWNwKSA7CgoKCmV4dGVy
biBpbnQgc3dhcGNvbnRleHQgKHVjb250ZXh0X3QgKl9fcmVzdHJpY3QgX19vdWNwLAogICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHVjb250ZXh0X3QgKl9fcmVzdHJpY3QgX191Y3ApIDsK
CgoKCgoKCmV4dGVybiB2b2lkIG1ha2Vjb250ZXh0ICh1Y29udGV4dF90ICpfX3VjcCwgdm9pZCAo
Kl9fZnVuYykgKHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYXJnYywgLi4u
KSA7CgoKIyAyICIuLi9pbmNsdWRlL3Vjb250ZXh0LmgiIDIKIyAzMjUgIi4uL3NpZ25hbC9zaWdu
YWwuaCIgMgoKCgoKCmV4dGVybiBpbnQgc2lnc3RhY2sgKHN0cnVjdCBzaWdzdGFjayAqX19zcywg
c3RydWN0IHNpZ3N0YWNrICpfX29zcykgOwoKCgpleHRlcm4gaW50IHNpZ2FsdHN0YWNrIChfX2Nv
bnN0IHN0cnVjdCBzaWdhbHRzdGFjayAqX19yZXN0cmljdCBfX3NzLAogICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgc2lnYWx0c3RhY2sgKl9fcmVzdHJpY3QgX19vc3MpIDsKCgoKCgoKCmV4
dGVybiBpbnQgc2lnaG9sZCAoaW50IF9fc2lnKSA7CgoKZXh0ZXJuIGludCBzaWdyZWxzZSAoaW50
IF9fc2lnKSA7CgoKZXh0ZXJuIGludCBzaWdpZ25vcmUgKGludCBfX3NpZykgOwoKCmV4dGVybiBf
X3NpZ2hhbmRsZXJfdCBzaWdzZXQgKGludCBfX3NpZywgX19zaWdoYW5kbGVyX3QgX19kaXNwKSA7
CgoKCgoKIyAxICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9z
aWd0aHJlYWQuaCIgMQojIDMxICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy91bml4L3N5c3YvbGlu
dXgvYml0cy9zaWd0aHJlYWQuaCIKZXh0ZXJuIGludCBwdGhyZWFkX3NpZ21hc2sgKGludCBfX2hv
dywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgX19zaWdzZXRfdCAqX19yZXN0
cmljdCBfX25ld21hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3NpZ3NldF90ICpf
X3Jlc3RyaWN0IF9fb2xkbWFzayk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2tpbGwgKHB0aHJlYWRf
dCBfX3RocmVhZCwgaW50IF9fc2lnbm8pIDsKIyAzNTkgIi4uL3NpZ25hbC9zaWduYWwuaCIgMgoK
CgoKCgpleHRlcm4gaW50IF9fbGliY19jdXJyZW50X3NpZ3J0bWluICh2b2lkKSA7CgpleHRlcm4g
aW50IF9fbGliY19jdXJyZW50X3NpZ3J0bWF4ICh2b2lkKSA7CgoKCgojIDYgIi4uL2luY2x1ZGUv
c2lnbmFsLmgiIDIKCgpleHRlcm4gX19zaWdoYW5kbGVyX3QgX19ic2Rfc2lnbmFsIChpbnQgX19z
aWcsIF9fc2lnaGFuZGxlcl90IF9faGFuZGxlcik7CmV4dGVybiBpbnQgX19raWxsIChfX3BpZF90
IF9fcGlkLCBpbnQgX19zaWcpOwpleHRlcm4gaW50IF9fc2lnYWN0aW9uIChpbnQgX19zaWcsIF9f
Y29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqX19yZXN0cmljdCBfX2FjdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiAqX19yZXN0cmljdCBfX29hY3QpOwpleHRlcm4gaW50
IF9fc2lnYmxvY2sgKGludCBfX21hc2spOwpleHRlcm4gaW50IF9fc2lnc2V0bWFzayAoaW50IF9f
bWFzayk7CmV4dGVybiBpbnQgX19zaWdwcm9jbWFzayAoaW50IF9faG93LAogICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3Qgc2lnc2V0X3QgKl9fc2V0LCBzaWdzZXRfdCAqX19vc2V0KTsK
ZXh0ZXJuIGludCBfX3NpZ3N1c3BlbmQgKF9fY29uc3Qgc2lnc2V0X3QgKl9fc2V0KTsKZXh0ZXJu
IGludCBfX3NpZ3dhaXQgKF9fY29uc3Qgc2lnc2V0X3QgKl9fc2V0LCBpbnQgKl9fc2lnKTsKZXh0
ZXJuIGludCBfX3NpZ3dhaXRpbmZvIChfX2NvbnN0IHNpZ3NldF90ICpfX3NldCwgc2lnaW5mb190
ICpfX2luZm8pOwpleHRlcm4gaW50IF9fc2lndGltZWR3YWl0IChfX2NvbnN0IHNpZ3NldF90ICpf
X3NldCwgc2lnaW5mb190ICpfX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgc3RydWN0IHRpbWVzcGVjICpfX3RpbWVvdXQpOwpleHRlcm4gaW50IF9fc2lncXVldWUgKF9f
cGlkX3QgX19waWQsIGludCBfX3NpZywKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVu
aW9uIHNpZ3ZhbCBfX3ZhbCk7CmV4dGVybiBpbnQgX19zaWd2ZWMgKGludCBfX3NpZywgX19jb25z
dCBzdHJ1Y3Qgc2lndmVjICpfX3ZlYywKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNpZ3Zl
YyAqX19vdmVjKTsKZXh0ZXJuIGludCBfX3NpZ3JldHVybiAoc3RydWN0IHNpZ2NvbnRleHQgKl9f
c2NwKTsKZXh0ZXJuIGludCBfX3NpZ2FsdHN0YWNrIChfX2NvbnN0IHN0cnVjdCBzaWdhbHRzdGFj
ayAqX19zcywKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2lnYWx0c3RhY2sgKl9f
b3NzKTsKZXh0ZXJuIGludCBfX2xpYmNfc2lnYWN0aW9uIChpbnQgc2lnLCBjb25zdCBzdHJ1Y3Qg
c2lnYWN0aW9uICphY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNpZ2Fj
dGlvbiAqb2FjdCk7CgpleHRlcm4gaW50IF9fc2lncGF1c2UgKGludCBzaWdfb3JfbWFzaywgaW50
IGlzX3NpZyk7CmV4dGVybiBpbnQgX19kZWZhdWx0X3NpZ3BhdXNlIChpbnQgbWFzayk7CmV4dGVy
biBpbnQgX194cGdfc2lncGF1c2UgKGludCBzaWcpOwoKCgoKZXh0ZXJuIGludCBfX2xpYmNfYWxs
b2NhdGVfcnRzaWcgKGludCBfX2hpZ2gpOwojIDMxICIuLi9wb3NpeC9zeXMvd2FpdC5oIiAyCiMg
MSAiLi4vaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMQoKIyAxICIuLi9yZXNvdXJjZS9zeXMvcmVz
b3VyY2UuaCIgMQojIDI1ICIuLi9yZXNvdXJjZS9zeXMvcmVzb3VyY2UuaCIKIyAxICIuLi9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2JpdHMvcmVzb3VyY2UuaCIgMQojIDMyICIuLi9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2JpdHMvcmVzb3VyY2UuaCIKZW51bSBfX3JsaW1pdF9y
ZXNvdXJjZQp7CgogIFJMSU1JVF9DUFUgPSAwLAoKCgogIFJMSU1JVF9GU0laRSA9IDEsCgoKCiAg
UkxJTUlUX0RBVEEgPSAyLAoKCgogIFJMSU1JVF9TVEFDSyA9IDMsCgoKCiAgUkxJTUlUX0NPUkUg
PSA0LAoKCgoKCgogIFJMSU1JVF9SU1MgPSA1LAoKCgogIFJMSU1JVF9OT0ZJTEUgPSA3LAogIFJM
SU1JVF9PRklMRSA9IFJMSU1JVF9OT0ZJTEUsCgoKCgogIFJMSU1JVF9BUyA9IDksCgoKCiAgUkxJ
TUlUX05QUk9DID0gNiwKCgoKICBSTElNSVRfTUVNTE9DSyA9IDgsCgoKCiAgUkxJTUlUX0xPQ0tT
ID0gMTAsCgoKICBSTElNSVRfTkxJTUlUUyA9IDExLAogIFJMSU1fTkxJTUlUUyA9IFJMSU1JVF9O
TElNSVRTCgoKfTsKIyAxMDcgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvYml0cy9y
ZXNvdXJjZS5oIgp0eXBlZGVmIF9fcmxpbV90IHJsaW1fdDsKCgoKCnR5cGVkZWYgX19ybGltNjRf
dCBybGltNjRfdDsKCgpzdHJ1Y3QgcmxpbWl0CiAgewoKICAgIHJsaW1fdCBybGltX2N1cjsKCiAg
ICBybGltX3QgcmxpbV9tYXg7CiAgfTsKCgpzdHJ1Y3QgcmxpbWl0NjQKICB7CgogICAgcmxpbTY0
X3QgcmxpbV9jdXI7CgogICAgcmxpbTY0X3QgcmxpbV9tYXg7CiB9OwoKCgplbnVtIF9fcnVzYWdl
X3dobwp7CgogIFJVU0FHRV9TRUxGID0gMCwKCgoKICBSVVNBR0VfQ0hJTERSRU4gPSAtMSwKCgoK
ICBSVVNBR0VfQk9USCA9IC0yCgp9OwoKCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgv
aTM4Ni9iaXRzL3RpbWUuaCIgMQojIDE1MSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4
Ni9iaXRzL3Jlc291cmNlLmgiIDIKCgpzdHJ1Y3QgcnVzYWdlCiAgewoKICAgIHN0cnVjdCB0aW1l
dmFsIHJ1X3V0aW1lOwoKICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwoKICAgIGxvbmcgaW50
IHJ1X21heHJzczsKCgogICAgbG9uZyBpbnQgcnVfaXhyc3M7CgogICAgbG9uZyBpbnQgcnVfaWRy
c3M7CgogICAgbG9uZyBpbnQgcnVfaXNyc3M7CgoKICAgIGxvbmcgaW50IHJ1X21pbmZsdDsKCiAg
ICBsb25nIGludCBydV9tYWpmbHQ7CgogICAgbG9uZyBpbnQgcnVfbnN3YXA7CgoKICAgIGxvbmcg
aW50IHJ1X2luYmxvY2s7CgogICAgbG9uZyBpbnQgcnVfb3VibG9jazsKCiAgICBsb25nIGludCBy
dV9tc2dzbmQ7CgogICAgbG9uZyBpbnQgcnVfbXNncmN2OwoKICAgIGxvbmcgaW50IHJ1X25zaWdu
YWxzOwoKCgogICAgbG9uZyBpbnQgcnVfbnZjc3c7CgoKICAgIGxvbmcgaW50IHJ1X25pdmNzdzsK
ICB9OwoKCgoKCgoKZW51bSBfX3ByaW9yaXR5X3doaWNoCnsKICBQUklPX1BST0NFU1MgPSAwLAoK
ICBQUklPX1BHUlAgPSAxLAoKICBQUklPX1VTRVIgPSAyCgp9OwojIDI2ICIuLi9yZXNvdXJjZS9z
eXMvcmVzb3VyY2UuaCIgMgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBlbnVtIF9fcmxpbWl0X3Jlc291
cmNlIF9fcmxpbWl0X3Jlc291cmNlX3Q7CnR5cGVkZWYgZW51bSBfX3J1c2FnZV93aG8gX19ydXNh
Z2Vfd2hvX3Q7CnR5cGVkZWYgZW51bSBfX3ByaW9yaXR5X3doaWNoIF9fcHJpb3JpdHlfd2hpY2hf
dDsKIyA1MSAiLi4vcmVzb3VyY2Uvc3lzL3Jlc291cmNlLmgiCmV4dGVybiBpbnQgZ2V0cmxpbWl0
IChfX3JsaW1pdF9yZXNvdXJjZV90IF9fcmVzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgcmxpbWl0ICpfX3JsaW1pdHMpIDsKIyA2MyAiLi4vcmVzb3VyY2Uvc3lzL3Jlc291cmNl
LmgiCmV4dGVybiBpbnQgZ2V0cmxpbWl0NjQgKF9fcmxpbWl0X3Jlc291cmNlX3QgX19yZXNvdXJj
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJsaW1pdDY0ICpfX3JsaW1pdHMpIDsK
CgoKCgoKZXh0ZXJuIGludCBzZXRybGltaXQgKF9fcmxpbWl0X3Jlc291cmNlX3QgX19yZXNvdXJj
ZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHJsaW1pdCAqX19ybGltaXRz
KSA7CiMgODMgIi4uL3Jlc291cmNlL3N5cy9yZXNvdXJjZS5oIgpleHRlcm4gaW50IHNldHJsaW1p
dDY0IChfX3JsaW1pdF9yZXNvdXJjZV90IF9fcmVzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3Qgc3RydWN0IHJsaW1pdDY0ICpfX3JsaW1pdHMpIDsKCgoKCmV4dGVybiBpbnQg
Z2V0cnVzYWdlIChfX3J1c2FnZV93aG9fdCBfX3dobywgc3RydWN0IHJ1c2FnZSAqX191c2FnZSkg
OwoKCgoKCmV4dGVybiBpbnQgZ2V0cHJpb3JpdHkgKF9fcHJpb3JpdHlfd2hpY2hfdCBfX3doaWNo
LCBpZF90IF9fd2hvKSA7CgoKCmV4dGVybiBpbnQgc2V0cHJpb3JpdHkgKF9fcHJpb3JpdHlfd2hp
Y2hfdCBfX3doaWNoLCBpZF90IF9fd2hvLCBpbnQgX19wcmlvKQogICAgIDsKCgojIDMgIi4uL2lu
Y2x1ZGUvc3lzL3Jlc291cmNlLmgiIDIKCgpleHRlcm4gaW50IF9fZ2V0cmxpbWl0IChlbnVtIF9f
cmxpbWl0X3Jlc291cmNlIF9fcmVzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBybGltaXQgKl9fcmxpbWl0cyk7CmV4dGVybiBpbnQgX19nZXRydXNhZ2UgKGVudW0gX19ydXNh
Z2Vfd2hvIF9fd2hvLCBzdHJ1Y3QgcnVzYWdlICpfX3VzYWdlKTsKCmV4dGVybiBpbnQgX19zZXRy
bGltaXQgKGVudW0gX19ybGltaXRfcmVzb3VyY2UgX19yZXNvdXJjZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RydWN0IHJsaW1pdCAqX19ybGltaXRzKTsKIyAzMiAiLi4vcG9zaXgv
c3lzL3dhaXQuaCIgMgojIDk4ICIuLi9wb3NpeC9zeXMvd2FpdC5oIgp0eXBlZGVmIGVudW0Kewog
IFBfQUxMLAogIFBfUElELAogIFBfUEdJRAp9IGlkdHlwZV90OwoKCgoKCmV4dGVybiBfX3BpZF90
IHdhaXQgKF9fV0FJVF9TVEFUVVMgX19zdGF0X2xvYykgOwojIDEyOSAiLi4vcG9zaXgvc3lzL3dh
aXQuaCIKZXh0ZXJuIF9fcGlkX3Qgd2FpdHBpZCAoX19waWRfdCBfX3BpZCwgaW50ICpfX3N0YXRf
bG9jLCBpbnQgX19vcHRpb25zKSA7CgoKCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgv
Yml0cy9zaWdpbmZvLmgiIDEKIyAyNSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9z
aWdpbmZvLmgiCiMgMSAiLi4vc3lzZGVwcy93b3Jkc2l6ZS0zMi9iaXRzL3dvcmRzaXplLmgiIDEK
IyAyNiAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zaWdpbmZvLmgiIDIKIyAxMzQg
Ii4uL3Bvc2l4L3N5cy93YWl0LmgiIDIKIyAxNDIgIi4uL3Bvc2l4L3N5cy93YWl0LmgiCmV4dGVy
biBpbnQgd2FpdGlkIChpZHR5cGVfdCBfX2lkdHlwZSwgX19pZF90IF9faWQsIHNpZ2luZm9fdCAq
X19pbmZvcCwKICAgICAgICAgICAgICAgICAgIGludCBfX29wdGlvbnMpIDsKCgoKCgpzdHJ1Y3Qg
cnVzYWdlOwoKCgoKCgpleHRlcm4gX19waWRfdCB3YWl0MyAoX19XQUlUX1NUQVRVUyBfX3N0YXRf
bG9jLCBpbnQgX19vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ1c2FnZSAq
IF9fdXNhZ2UpIDsKCgoKCgpzdHJ1Y3QgcnVzYWdlOwoKCmV4dGVybiBfX3BpZF90IHdhaXQ0IChf
X3BpZF90IF9fcGlkLCBfX1dBSVRfU1RBVFVTIF9fc3RhdF9sb2MsIGludCBfX29wdGlvbnMsCiAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnVzYWdlICpfX3VzYWdlKSA7CgoKCgojIDMgIi4u
L2luY2x1ZGUvc3lzL3dhaXQuaCIgMgoKCmV4dGVybiBfX3BpZF90IF9fd2FpdHBpZCAoX19waWRf
dCBfX3BpZCwgaW50ICpfX3N0YXRfbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X29wdGlvbnMpOwpleHRlcm4gX19waWRfdCBfX2xpYmNfd2FpdHBpZCAocGlkX3QgX19waWQsIGlu
dCAqX19zdGF0X2xvYywgaW50IF9fb3B0aW9ucyk7CmV4dGVybiBfX3BpZF90IF9fbGliY193YWl0
IChpbnQgKl9fc3RhdF9sb2MpOwpleHRlcm4gX19waWRfdCBfX3dhaXQgKF9fV0FJVF9TVEFUVVMg
X19zdGF0X2xvYyk7CmV4dGVybiBfX3BpZF90IF9fd2FpdDMgKF9fV0FJVF9TVEFUVVMgX19zdGF0
X2xvYywKICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fb3B0aW9ucywgc3RydWN0IHJ1c2Fn
ZSAqIF9fdXNhZ2UpOwpleHRlcm4gX19waWRfdCBfX3dhaXQ0IChfX3BpZF90IF9fcGlkLCBfX1dB
SVRfU1RBVFVTIF9fc3RhdF9sb2MsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX29wdGlv
bnMsIHN0cnVjdCBydXNhZ2UgKl9fdXNhZ2UpOwojIDI2ICJwdGhyZWFkLmMiIDIKCiMgMSAiLi4v
aW5jbHVkZS9zeXMvc3lzY3RsLmgiIDEKCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgv
c3lzL3N5c2N0bC5oIiAxCiMgMjQgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3N5cy9zeXNj
dGwuaCIKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtcGMtbGludXgtZ251LzMuMi9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKIyAyOCAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvc3lzL3N5
c2N0bC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtdGhpcy9pbmNsdWRlL2xpbnV4L3N5c2N0bC5o
IiAxIDMKIyAyNyAiL3Vzci9zcmMvbGludXgtdGhpcy9pbmNsdWRlL2xpbnV4L3N5c2N0bC5oIiAz
CiMgMSAiL3Vzci9zcmMvbGludXgtdGhpcy9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxIDMKIyAx
NjcgIi91c3Ivc3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMwpzdHJ1Y3Qg
c3lzaW5mbyB7CiAgICAgICAgbG9uZyB1cHRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb2Fk
c1szXTsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFscmFtOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZnJlZXJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNoYXJlZHJhbTsKICAgICAgICB1bnNp
Z25lZCBsb25nIGJ1ZmZlcnJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFsc3dhcDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGZyZWVzd2FwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHByb2Nz
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHBhZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRvdGFs
aGlnaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVoaWdoOwogICAgICAgIHVuc2lnbmVkIGlu
dCBtZW1fdW5pdDsKICAgICAgICBjaGFyIF9mWzIwLTIqc2l6ZW9mKGxvbmcpLXNpemVvZihpbnQp
XTsKfTsKIyAyOCAiL3Vzci9zcmMvbGludXgtdGhpcy9pbmNsdWRlL2xpbnV4L3N5c2N0bC5oIiAy
IDMKIyAxICIvdXNyL3NyYy9saW51eC10aGlzL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMSAzCgoK
CgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5o
IiAxIDMKCgoKIyAxICIvdXNyL3NyYy9saW51eC10aGlzL2luY2x1ZGUvbGludXgvc3RkZGVmLmgi
IDEgMwojIDUgIi91c3Ivc3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5o
IiAyIDMKIyAzNiAiL3Vzci9zcmMvbGludXgtdGhpcy9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVz
LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmRzX2JpdHMgWygx
MDI0Lyg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSldOwp9IF9fa2VybmVsX2ZkX3NldDsKCgp0
eXBlZGVmIHZvaWQgKCpfX2tlcm5lbF9zaWdoYW5kbGVyX3QpKGludCk7CgoKdHlwZWRlZiBpbnQg
X19rZXJuZWxfa2V5X3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9hc20vcG9z
aXhfdHlwZXMuaCIgMSAzCiMgMTAgIi91c3Ivc3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9hc20vcG9z
aXhfdHlwZXMuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2Rldl90Owp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgX19rZXJuZWxfaW5vX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
X19rZXJuZWxfbW9kZV90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX25saW5rX3Q7
CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9vZmZfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfcGlkX3Q7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfaXBjX3BpZF90Owp0eXBlZGVmIHVuc2ln
bmVkIHNob3J0IF9fa2VybmVsX3VpZF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVs
X2dpZF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9zaXplX3Q7CnR5cGVkZWYgaW50
IF9fa2VybmVsX3NzaXplX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX3B0cmRpZmZfdDsKdHlwZWRl
ZiBsb25nIF9fa2VybmVsX3RpbWVfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVsX3N1c2Vjb25kc190
Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfY2xvY2tfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfZGFk
ZHJfdDsKdHlwZWRlZiBjaGFyICogX19rZXJuZWxfY2FkZHJfdDsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBfX2tlcm5lbF91aWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2dp
ZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX3VpZDMyX3Q7CnR5cGVkZWYgdW5z
aWduZWQgaW50IF9fa2VybmVsX2dpZDMyX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2Vy
bmVsX29sZF91aWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRfZ2lkX3Q7
CgoKdHlwZWRlZiBsb25nIGxvbmcgX19rZXJuZWxfbG9mZl90OwoKCnR5cGVkZWYgc3RydWN0IHsK
CgoKICAgICAgICBpbnQgX192YWxbMl07Cgp9IF9fa2VybmVsX2ZzaWRfdDsKIyA0NyAiL3Vzci9z
cmMvbGludXgtdGhpcy9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDIgMwojIDkgIi91c3Iv
c3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9saW51eC90eXBlcy5oIiAyIDMKIyAxICIvdXNyL3NyYy9s
aW51eC10aGlzL2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEgMwoKCgp0eXBlZGVmIHVuc2lnbmVkIHNo
b3J0IHVtb2RlX3Q7CgoKCgoKCnR5cGVkZWYgX19zaWduZWRfXyBjaGFyIF9fczg7CnR5cGVkZWYg
dW5zaWduZWQgY2hhciBfX3U4OwoKdHlwZWRlZiBfX3NpZ25lZF9fIHNob3J0IF9fczE2Owp0eXBl
ZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2OwoKdHlwZWRlZiBfX3NpZ25lZF9fIGludCBfX3MzMjsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CgoKdHlwZWRlZiBfX3NpZ25lZF9fIGxvbmcgbG9u
ZyBfX3M2NDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX191NjQ7CiMgMTAgIi91c3Ivc3Jj
L2xpbnV4LXRoaXMvaW5jbHVkZS9saW51eC90eXBlcy5oIiAyIDMKIyAxMjMgIi91c3Ivc3JjL2xp
bnV4LXRoaXMvaW5jbHVkZS9saW51eC90eXBlcy5oIiAzCnN0cnVjdCB1c3RhdCB7CiAgICAgICAg
X19rZXJuZWxfZGFkZHJfdCBmX3RmcmVlOwogICAgICAgIF9fa2VybmVsX2lub190IGZfdGlub2Rl
OwogICAgICAgIGNoYXIgZl9mbmFtZVs2XTsKICAgICAgICBjaGFyIGZfZnBhY2tbNl07Cn07CiMg
MjkgIi91c3Ivc3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9saW51eC9zeXNjdGwuaCIgMiAzCiMgMSAi
L3Vzci9zcmMvbGludXgtdGhpcy9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMSAzCiMgMzAgIi91c3Iv
c3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9saW51eC9zeXNjdGwuaCIgMiAzCgpzdHJ1Y3QgZmlsZTsK
CgoKc3RydWN0IF9fc3lzY3RsX2FyZ3MgewogICAgICAgIGludCAqbmFtZTsKICAgICAgICBpbnQg
bmxlbjsKICAgICAgICB2b2lkICpvbGR2YWw7CiAgICAgICAgc2l6ZV90ICpvbGRsZW5wOwogICAg
ICAgIHZvaWQgKm5ld3ZhbDsKICAgICAgICBzaXplX3QgbmV3bGVuOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgX191bnVzZWRbNF07Cn07CiMgNTUgIi91c3Ivc3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9s
aW51eC9zeXNjdGwuaCIgMwplbnVtCnsKICAgICAgICBDVExfS0VSTj0xLAogICAgICAgIENUTF9W
TT0yLAogICAgICAgIENUTF9ORVQ9MywKICAgICAgICBDVExfUFJPQz00LAogICAgICAgIENUTF9G
Uz01LAogICAgICAgIENUTF9ERUJVRz02LAogICAgICAgIENUTF9ERVY9NywKICAgICAgICBDVExf
QlVTPTgsCiAgICAgICAgQ1RMX0FCST05LAogICAgICAgIENUTF9DUFU9MTAKfTsKCgplbnVtCnsK
ICAgICAgICBCVVNfSVNBPTEKfTsKCgplbnVtCnsKICAgICAgICBLRVJOX09TVFlQRT0xLAogICAg
ICAgIEtFUk5fT1NSRUxFQVNFPTIsCiAgICAgICAgS0VSTl9PU1JFVj0zLAogICAgICAgIEtFUk5f
VkVSU0lPTj00LAogICAgICAgIEtFUk5fU0VDVVJFTUFTSz01LAogICAgICAgIEtFUk5fUFJPRj02
LAogICAgICAgIEtFUk5fTk9ERU5BTUU9NywKICAgICAgICBLRVJOX0RPTUFJTk5BTUU9OCwKCiAg
ICAgICAgS0VSTl9DQVBfQlNFVD0xNCwKICAgICAgICBLRVJOX1BBTklDPTE1LAogICAgICAgIEtF
Uk5fUkVBTFJPT1RERVY9MTYsCgogICAgICAgIEtFUk5fU1BBUkNfUkVCT09UPTIxLAogICAgICAg
IEtFUk5fQ1RMQUxUREVMPTIyLAogICAgICAgIEtFUk5fUFJJTlRLPTIzLAogICAgICAgIEtFUk5f
TkFNRVRSQU5TPTI0LAogICAgICAgIEtFUk5fUFBDX0hUQUJSRUNMQUlNPTI1LAogICAgICAgIEtF
Uk5fUFBDX1pFUk9QQUdFRD0yNiwKICAgICAgICBLRVJOX1BQQ19QT1dFUlNBVkVfTkFQPTI3LAog
ICAgICAgIEtFUk5fTU9EUFJPQkU9MjgsCiAgICAgICAgS0VSTl9TR19CSUdfQlVGRj0yOSwKICAg
ICAgICBLRVJOX0FDQ1Q9MzAsCiAgICAgICAgS0VSTl9QUENfTDJDUj0zMSwKCiAgICAgICAgS0VS
Tl9SVFNJR05SPTMyLAogICAgICAgIEtFUk5fUlRTSUdNQVg9MzMsCgogICAgICAgIEtFUk5fU0hN
TUFYPTM0LAogICAgICAgIEtFUk5fTVNHTUFYPTM1LAogICAgICAgIEtFUk5fTVNHTU5CPTM2LAog
ICAgICAgIEtFUk5fTVNHUE9PTD0zNywKICAgICAgICBLRVJOX1NZU1JRPTM4LAogICAgICAgIEtF
Uk5fTUFYX1RIUkVBRFM9MzksCiAgICAgICAgS0VSTl9SQU5ET009NDAsCiAgICAgICAgS0VSTl9T
SE1BTEw9NDEsCiAgICAgICAgS0VSTl9NU0dNTkk9NDIsCiAgICAgICAgS0VSTl9TRU09NDMsCiAg
ICAgICAgS0VSTl9TUEFSQ19TVE9QX0E9NDQsCiAgICAgICAgS0VSTl9TSE1NTkk9NDUsCiAgICAg
ICAgS0VSTl9PVkVSRkxPV1VJRD00NiwKICAgICAgICBLRVJOX09WRVJGTE9XR0lEPTQ3LAogICAg
ICAgIEtFUk5fU0hNUEFUSD00OCwKICAgICAgICBLRVJOX0hPVFBMVUc9NDksCiAgICAgICAgS0VS
Tl9JRUVFX0VNVUxBVElPTl9XQVJOSU5HUz01MCwKICAgICAgICBLRVJOX1MzOTBfVVNFUl9ERUJV
R19MT0dHSU5HPTUxLAogICAgICAgIEtFUk5fQ09SRV9VU0VTX1BJRD01MiwKICAgICAgICBLRVJO
X1RBSU5URUQ9NTMsCiAgICAgICAgS0VSTl9DQURQSUQ9NTQsCn07CgoKCmVudW0KewogICAgICAg
IFZNX1NXQVBDVEw9MSwKICAgICAgICBWTV9TV0FQT1VUPTIsCiAgICAgICAgVk1fRlJFRVBHPTMs
CiAgICAgICAgVk1fQkRGTFVTSD00LAogICAgICAgIFZNX09WRVJDT01NSVRfTUVNT1JZPTUsCiAg
ICAgICAgVk1fQlVGRkVSTUVNPTYsCiAgICAgICAgVk1fUEFHRUNBQ0hFPTcsCiAgICAgICAgVk1f
UEFHRVJEQUVNT049OCwKICAgICAgICBWTV9QR1RfQ0FDSEU9OSwKICAgICAgICBWTV9QQUdFX0NM
VVNURVI9MTAsCiAgICAgICBWTV9NSU5fUkVBREFIRUFEPTEyLAogICAgICAgVk1fTUFYX1JFQURB
SEVBRD0xMwp9OwoKCgplbnVtCnsKICAgICAgICBORVRfQ09SRT0xLAogICAgICAgIE5FVF9FVEhF
Uj0yLAogICAgICAgIE5FVF84MDI9MywKICAgICAgICBORVRfVU5JWD00LAogICAgICAgIE5FVF9J
UFY0PTUsCiAgICAgICAgTkVUX0lQWD02LAogICAgICAgIE5FVF9BVEFMSz03LAogICAgICAgIE5F
VF9ORVRST009OCwKICAgICAgICBORVRfQVgyNT05LAogICAgICAgIE5FVF9CUklER0U9MTAsCiAg
ICAgICAgTkVUX1JPU0U9MTEsCiAgICAgICAgTkVUX0lQVjY9MTIsCiAgICAgICAgTkVUX1gyNT0x
MywKICAgICAgICBORVRfVFI9MTQsCiAgICAgICAgTkVUX0RFQ05FVD0xNSwKICAgICAgICBORVRf
RUNPTkVUPTE2LAogICAgICAgIE5FVF9LSFRUUEQ9MTcKfTsKCgplbnVtCnsKICAgICAgICBSQU5E
T01fUE9PTFNJWkU9MSwKICAgICAgICBSQU5ET01fRU5UUk9QWV9DT1VOVD0yLAogICAgICAgIFJB
TkRPTV9SRUFEX1RIUkVTSD0zLAogICAgICAgIFJBTkRPTV9XUklURV9USFJFU0g9NCwKICAgICAg
ICBSQU5ET01fQk9PVF9JRD01LAogICAgICAgIFJBTkRPTV9VVUlEPTYKfTsKCgplbnVtCnsKICAg
ICAgICBCVVNfSVNBX01FTV9CQVNFPTEsCiAgICAgICAgQlVTX0lTQV9QT1JUX0JBU0U9MiwKICAg
ICAgICBCVVNfSVNBX1BPUlRfU0hJRlQ9Mwp9OwoKCmVudW0KewogICAgICAgIE5FVF9DT1JFX1dN
RU1fTUFYPTEsCiAgICAgICAgTkVUX0NPUkVfUk1FTV9NQVg9MiwKICAgICAgICBORVRfQ09SRV9X
TUVNX0RFRkFVTFQ9MywKICAgICAgICBORVRfQ09SRV9STUVNX0RFRkFVTFQ9NCwKCiAgICAgICAg
TkVUX0NPUkVfTUFYX0JBQ0tMT0c9NiwKICAgICAgICBORVRfQ09SRV9GQVNUUk9VVEU9NywKICAg
ICAgICBORVRfQ09SRV9NU0dfQ09TVD04LAogICAgICAgIE5FVF9DT1JFX01TR19CVVJTVD05LAog
ICAgICAgIE5FVF9DT1JFX09QVE1FTV9NQVg9MTAsCiAgICAgICAgTkVUX0NPUkVfSE9UX0xJU1Rf
TEVOR1RIPTExLAogICAgICAgIE5FVF9DT1JFX0RJVkVSVF9WRVJTSU9OPTEyLAogICAgICAgIE5F
VF9DT1JFX05PX0NPTkdfVEhSRVNIPTEzLAogICAgICAgIE5FVF9DT1JFX05PX0NPTkc9MTQsCiAg
ICAgICAgTkVUX0NPUkVfTE9fQ09ORz0xNSwKICAgICAgICBORVRfQ09SRV9NT0RfQ09ORz0xNgp9
OwoKCgoKCgoKZW51bQp7CiAgICAgICAgTkVUX1VOSVhfREVTVFJPWV9ERUxBWT0xLAogICAgICAg
IE5FVF9VTklYX0RFTEVURV9ERUxBWT0yLAogICAgICAgIE5FVF9VTklYX01BWF9ER1JBTV9RTEVO
PTMsCn07CgoKZW51bQp7CgogICAgICAgIE5FVF9JUFY0X0ZPUldBUkQ9OCwKICAgICAgICBORVRf
SVBWNF9EWU5BRERSPTksCgogICAgICAgIE5FVF9JUFY0X0NPTkY9MTYsCiAgICAgICAgTkVUX0lQ
VjRfTkVJR0g9MTcsCiAgICAgICAgTkVUX0lQVjRfUk9VVEU9MTgsCiAgICAgICAgTkVUX0lQVjRf
RklCX0hBU0g9MTksCgogICAgICAgIE5FVF9JUFY0X1RDUF9USU1FU1RBTVBTPTMzLAogICAgICAg
IE5FVF9JUFY0X1RDUF9XSU5ET1dfU0NBTElORz0zNCwKICAgICAgICBORVRfSVBWNF9UQ1BfU0FD
Sz0zNSwKICAgICAgICBORVRfSVBWNF9UQ1BfUkVUUkFOU19DT0xMQVBTRT0zNiwKICAgICAgICBO
RVRfSVBWNF9ERUZBVUxUX1RUTD0zNywKICAgICAgICBORVRfSVBWNF9BVVRPQ09ORklHPTM4LAog
ICAgICAgIE5FVF9JUFY0X05PX1BNVFVfRElTQz0zOSwKICAgICAgICBORVRfSVBWNF9UQ1BfU1lO
X1JFVFJJRVM9NDAsCiAgICAgICAgTkVUX0lQVjRfSVBGUkFHX0hJR0hfVEhSRVNIPTQxLAogICAg
ICAgIE5FVF9JUFY0X0lQRlJBR19MT1dfVEhSRVNIPTQyLAogICAgICAgIE5FVF9JUFY0X0lQRlJB
R19USU1FPTQzLAogICAgICAgIE5FVF9JUFY0X1RDUF9NQVhfS0FfUFJPQkVTPTQ0LAogICAgICAg
IE5FVF9JUFY0X1RDUF9LRUVQQUxJVkVfVElNRT00NSwKICAgICAgICBORVRfSVBWNF9UQ1BfS0VF
UEFMSVZFX1BST0JFUz00NiwKICAgICAgICBORVRfSVBWNF9UQ1BfUkVUUklFUzE9NDcsCiAgICAg
ICAgTkVUX0lQVjRfVENQX1JFVFJJRVMyPTQ4LAogICAgICAgIE5FVF9JUFY0X1RDUF9GSU5fVElN
RU9VVD00OSwKICAgICAgICBORVRfSVBWNF9JUF9NQVNRX0RFQlVHPTUwLAogICAgICAgIE5FVF9U
Q1BfU1lOQ09PS0lFUz01MSwKICAgICAgICBORVRfVENQX1NURFVSRz01MiwKICAgICAgICBORVRf
VENQX1JGQzEzMzc9NTMsCiAgICAgICAgTkVUX1RDUF9TWU5fVEFJTERST1A9NTQsCiAgICAgICAg
TkVUX1RDUF9NQVhfU1lOX0JBQ0tMT0c9NTUsCiAgICAgICAgTkVUX0lQVjRfTE9DQUxfUE9SVF9S
QU5HRT01NiwKICAgICAgICBORVRfSVBWNF9JQ01QX0VDSE9fSUdOT1JFX0FMTD01NywKICAgICAg
ICBORVRfSVBWNF9JQ01QX0VDSE9fSUdOT1JFX0JST0FEQ0FTVFM9NTgsCiAgICAgICAgTkVUX0lQ
VjRfSUNNUF9TT1VSQ0VRVUVOQ0hfUkFURT01OSwKICAgICAgICBORVRfSVBWNF9JQ01QX0RFU1RV
TlJFQUNIX1JBVEU9NjAsCiAgICAgICAgTkVUX0lQVjRfSUNNUF9USU1FRVhDRUVEX1JBVEU9NjEs
CiAgICAgICAgTkVUX0lQVjRfSUNNUF9QQVJBTVBST0JfUkFURT02MiwKICAgICAgICBORVRfSVBW
NF9JQ01QX0VDSE9SRVBMWV9SQVRFPTYzLAogICAgICAgIE5FVF9JUFY0X0lDTVBfSUdOT1JFX0JP
R1VTX0VSUk9SX1JFU1BPTlNFUz02NCwKICAgICAgICBORVRfSVBWNF9JR01QX01BWF9NRU1CRVJT
SElQUz02NSwKICAgICAgICBORVRfVENQX1RXX1JFQ1lDTEU9NjYsCiAgICAgICAgTkVUX0lQVjRf
QUxXQVlTX0RFRlJBRz02NywKICAgICAgICBORVRfSVBWNF9UQ1BfS0VFUEFMSVZFX0lOVFZMPTY4
LAogICAgICAgIE5FVF9JUFY0X0lORVRfUEVFUl9USFJFU0hPTEQ9NjksCiAgICAgICAgTkVUX0lQ
VjRfSU5FVF9QRUVSX01JTlRUTD03MCwKICAgICAgICBORVRfSVBWNF9JTkVUX1BFRVJfTUFYVFRM
PTcxLAogICAgICAgIE5FVF9JUFY0X0lORVRfUEVFUl9HQ19NSU5USU1FPTcyLAogICAgICAgIE5F
VF9JUFY0X0lORVRfUEVFUl9HQ19NQVhUSU1FPTczLAogICAgICAgIE5FVF9UQ1BfT1JQSEFOX1JF
VFJJRVM9NzQsCiAgICAgICAgTkVUX1RDUF9BQk9SVF9PTl9PVkVSRkxPVz03NSwKICAgICAgICBO
RVRfVENQX1NZTkFDS19SRVRSSUVTPTc2LAogICAgICAgIE5FVF9UQ1BfTUFYX09SUEhBTlM9Nzcs
CiAgICAgICAgTkVUX1RDUF9NQVhfVFdfQlVDS0VUUz03OCwKICAgICAgICBORVRfVENQX0ZBQ0s9
NzksCiAgICAgICAgTkVUX1RDUF9SRU9SREVSSU5HPTgwLAogICAgICAgIE5FVF9UQ1BfRUNOPTgx
LAogICAgICAgIE5FVF9UQ1BfRFNBQ0s9ODIsCiAgICAgICAgTkVUX1RDUF9NRU09ODMsCiAgICAg
ICAgTkVUX1RDUF9XTUVNPTg0LAogICAgICAgIE5FVF9UQ1BfUk1FTT04NSwKICAgICAgICBORVRf
VENQX0FQUF9XSU49ODYsCiAgICAgICAgTkVUX1RDUF9BRFZfV0lOX1NDQUxFPTg3LAogICAgICAg
IE5FVF9JUFY0X05PTkxPQ0FMX0JJTkQ9ODgsCiAgICAgICAgTkVUX0lQVjRfSUNNUF9SQVRFTElN
SVQ9ODksCiAgICAgICAgTkVUX0lQVjRfSUNNUF9SQVRFTUFTSz05MAp9OwoKZW51bSB7CiAgICAg
ICAgTkVUX0lQVjRfUk9VVEVfRkxVU0g9MSwKICAgICAgICBORVRfSVBWNF9ST1VURV9NSU5fREVM
QVk9MiwKICAgICAgICBORVRfSVBWNF9ST1VURV9NQVhfREVMQVk9MywKICAgICAgICBORVRfSVBW
NF9ST1VURV9HQ19USFJFU0g9NCwKICAgICAgICBORVRfSVBWNF9ST1VURV9NQVhfU0laRT01LAog
ICAgICAgIE5FVF9JUFY0X1JPVVRFX0dDX01JTl9JTlRFUlZBTD02LAogICAgICAgIE5FVF9JUFY0
X1JPVVRFX0dDX1RJTUVPVVQ9NywKICAgICAgICBORVRfSVBWNF9ST1VURV9HQ19JTlRFUlZBTD04
LAogICAgICAgIE5FVF9JUFY0X1JPVVRFX1JFRElSRUNUX0xPQUQ9OSwKICAgICAgICBORVRfSVBW
NF9ST1VURV9SRURJUkVDVF9OVU1CRVI9MTAsCiAgICAgICAgTkVUX0lQVjRfUk9VVEVfUkVESVJF
Q1RfU0lMRU5DRT0xMSwKICAgICAgICBORVRfSVBWNF9ST1VURV9FUlJPUl9DT1NUPTEyLAogICAg
ICAgIE5FVF9JUFY0X1JPVVRFX0VSUk9SX0JVUlNUPTEzLAogICAgICAgIE5FVF9JUFY0X1JPVVRF
X0dDX0VMQVNUSUNJVFk9MTQsCiAgICAgICAgTkVUX0lQVjRfUk9VVEVfTVRVX0VYUElSRVM9MTUs
CiAgICAgICAgTkVUX0lQVjRfUk9VVEVfTUlOX1BNVFU9MTYsCiAgICAgICAgTkVUX0lQVjRfUk9V
VEVfTUlOX0FEVk1TUz0xNwp9OwoKZW51bQp7CiAgICAgICAgTkVUX1BST1RPX0NPTkZfQUxMPS0y
LAogICAgICAgIE5FVF9QUk9UT19DT05GX0RFRkFVTFQ9LTMKCgp9OwoKZW51bQp7CiAgICAgICAg
TkVUX0lQVjRfQ09ORl9GT1JXQVJESU5HPTEsCiAgICAgICAgTkVUX0lQVjRfQ09ORl9NQ19GT1JX
QVJESU5HPTIsCiAgICAgICAgTkVUX0lQVjRfQ09ORl9QUk9YWV9BUlA9MywKICAgICAgICBORVRf
SVBWNF9DT05GX0FDQ0VQVF9SRURJUkVDVFM9NCwKICAgICAgICBORVRfSVBWNF9DT05GX1NFQ1VS
RV9SRURJUkVDVFM9NSwKICAgICAgICBORVRfSVBWNF9DT05GX1NFTkRfUkVESVJFQ1RTPTYsCiAg
ICAgICAgTkVUX0lQVjRfQ09ORl9TSEFSRURfTUVESUE9NywKICAgICAgICBORVRfSVBWNF9DT05G
X1JQX0ZJTFRFUj04LAogICAgICAgIE5FVF9JUFY0X0NPTkZfQUNDRVBUX1NPVVJDRV9ST1VURT05
LAogICAgICAgIE5FVF9JUFY0X0NPTkZfQk9PVFBfUkVMQVk9MTAsCiAgICAgICAgTkVUX0lQVjRf
Q09ORl9MT0dfTUFSVElBTlM9MTEsCiAgICAgICAgTkVUX0lQVjRfQ09ORl9UQUc9MTIsCiAgICAg
ICAgTkVUX0lQVjRfQ09ORl9BUlBGSUxURVI9MTMKfTsKCgplbnVtIHsKICAgICAgICBORVRfSVBW
Nl9DT05GPTE2LAogICAgICAgIE5FVF9JUFY2X05FSUdIPTE3LAogICAgICAgIE5FVF9JUFY2X1JP
VVRFPTE4Cn07CgplbnVtIHsKICAgICAgICBORVRfSVBWNl9ST1VURV9GTFVTSD0xLAogICAgICAg
IE5FVF9JUFY2X1JPVVRFX0dDX1RIUkVTSD0yLAogICAgICAgIE5FVF9JUFY2X1JPVVRFX01BWF9T
SVpFPTMsCiAgICAgICAgTkVUX0lQVjZfUk9VVEVfR0NfTUlOX0lOVEVSVkFMPTQsCiAgICAgICAg
TkVUX0lQVjZfUk9VVEVfR0NfVElNRU9VVD01LAogICAgICAgIE5FVF9JUFY2X1JPVVRFX0dDX0lO
VEVSVkFMPTYsCiAgICAgICAgTkVUX0lQVjZfUk9VVEVfR0NfRUxBU1RJQ0lUWT03LAogICAgICAg
IE5FVF9JUFY2X1JPVVRFX01UVV9FWFBJUkVTPTgsCiAgICAgICAgTkVUX0lQVjZfUk9VVEVfTUlO
X0FEVk1TUz05Cn07CgplbnVtIHsKICAgICAgICBORVRfSVBWNl9GT1JXQVJESU5HPTEsCiAgICAg
ICAgTkVUX0lQVjZfSE9QX0xJTUlUPTIsCiAgICAgICAgTkVUX0lQVjZfTVRVPTMsCiAgICAgICAg
TkVUX0lQVjZfQUNDRVBUX1JBPTQsCiAgICAgICAgTkVUX0lQVjZfQUNDRVBUX1JFRElSRUNUUz01
LAogICAgICAgIE5FVF9JUFY2X0FVVE9DT05GPTYsCiAgICAgICAgTkVUX0lQVjZfREFEX1RSQU5T
TUlUUz03LAogICAgICAgIE5FVF9JUFY2X1JUUl9TT0xJQ0lUUz04LAogICAgICAgIE5FVF9JUFY2
X1JUUl9TT0xJQ0lUX0lOVEVSVkFMPTksCiAgICAgICAgTkVUX0lQVjZfUlRSX1NPTElDSVRfREVM
QVk9MTAKfTsKCgplbnVtIHsKICAgICAgICBORVRfTkVJR0hfTUNBU1RfU09MSUNJVD0xLAogICAg
ICAgIE5FVF9ORUlHSF9VQ0FTVF9TT0xJQ0lUPTIsCiAgICAgICAgTkVUX05FSUdIX0FQUF9TT0xJ
Q0lUPTMsCiAgICAgICAgTkVUX05FSUdIX1JFVFJBTlNfVElNRT00LAogICAgICAgIE5FVF9ORUlH
SF9SRUFDSEFCTEVfVElNRT01LAogICAgICAgIE5FVF9ORUlHSF9ERUxBWV9QUk9CRV9USU1FPTYs
CiAgICAgICAgTkVUX05FSUdIX0dDX1NUQUxFX1RJTUU9NywKICAgICAgICBORVRfTkVJR0hfVU5S
RVNfUUxFTj04LAogICAgICAgIE5FVF9ORUlHSF9QUk9YWV9RTEVOPTksCiAgICAgICAgTkVUX05F
SUdIX0FOWUNBU1RfREVMQVk9MTAsCiAgICAgICAgTkVUX05FSUdIX1BST1hZX0RFTEFZPTExLAog
ICAgICAgIE5FVF9ORUlHSF9MT0NLVElNRT0xMiwKICAgICAgICBORVRfTkVJR0hfR0NfSU5URVJW
QUw9MTMsCiAgICAgICAgTkVUX05FSUdIX0dDX1RIUkVTSDE9MTQsCiAgICAgICAgTkVUX05FSUdI
X0dDX1RIUkVTSDI9MTUsCiAgICAgICAgTkVUX05FSUdIX0dDX1RIUkVTSDM9MTYKfTsKCgplbnVt
IHsKICAgICAgICBORVRfSVBYX1BQUk9QX0JST0FEQ0FTVElORz0xLAogICAgICAgIE5FVF9JUFhf
Rk9SV0FSRElORz0yCn07CgoKCmVudW0gewogICAgICAgIE5FVF9BVEFMS19BQVJQX0VYUElSWV9U
SU1FPTEsCiAgICAgICAgTkVUX0FUQUxLX0FBUlBfVElDS19USU1FPTIsCiAgICAgICAgTkVUX0FU
QUxLX0FBUlBfUkVUUkFOU01JVF9MSU1JVD0zLAogICAgICAgIE5FVF9BVEFMS19BQVJQX1JFU09M
VkVfVElNRT00Cn07CgoKCmVudW0gewogICAgICAgIE5FVF9ORVRST01fREVGQVVMVF9QQVRIX1FV
QUxJVFk9MSwKICAgICAgICBORVRfTkVUUk9NX09CU09MRVNDRU5DRV9DT1VOVF9JTklUSUFMSVNF
Uj0yLAogICAgICAgIE5FVF9ORVRST01fTkVUV09SS19UVExfSU5JVElBTElTRVI9MywKICAgICAg
ICBORVRfTkVUUk9NX1RSQU5TUE9SVF9USU1FT1VUPTQsCiAgICAgICAgTkVUX05FVFJPTV9UUkFO
U1BPUlRfTUFYSU1VTV9UUklFUz01LAogICAgICAgIE5FVF9ORVRST01fVFJBTlNQT1JUX0FDS05P
V0xFREdFX0RFTEFZPTYsCiAgICAgICAgTkVUX05FVFJPTV9UUkFOU1BPUlRfQlVTWV9ERUxBWT03
LAogICAgICAgIE5FVF9ORVRST01fVFJBTlNQT1JUX1JFUVVFU1RFRF9XSU5ET1dfU0laRT04LAog
ICAgICAgIE5FVF9ORVRST01fVFJBTlNQT1JUX05PX0FDVElWSVRZX1RJTUVPVVQ9OSwKICAgICAg
ICBORVRfTkVUUk9NX1JPVVRJTkdfQ09OVFJPTD0xMCwKICAgICAgICBORVRfTkVUUk9NX0xJTktf
RkFJTFNfQ09VTlQ9MTEKfTsKCgplbnVtIHsKICAgICAgICBORVRfQVgyNV9JUF9ERUZBVUxUX01P
REU9MSwKICAgICAgICBORVRfQVgyNV9ERUZBVUxUX01PREU9MiwKICAgICAgICBORVRfQVgyNV9C
QUNLT0ZGX1RZUEU9MywKICAgICAgICBORVRfQVgyNV9DT05ORUNUX01PREU9NCwKICAgICAgICBO
RVRfQVgyNV9TVEFOREFSRF9XSU5ET1c9NSwKICAgICAgICBORVRfQVgyNV9FWFRFTkRFRF9XSU5E
T1c9NiwKICAgICAgICBORVRfQVgyNV9UMV9USU1FT1VUPTcsCiAgICAgICAgTkVUX0FYMjVfVDJf
VElNRU9VVD04LAogICAgICAgIE5FVF9BWDI1X1QzX1RJTUVPVVQ9OSwKICAgICAgICBORVRfQVgy
NV9JRExFX1RJTUVPVVQ9MTAsCiAgICAgICAgTkVUX0FYMjVfTjI9MTEsCiAgICAgICAgTkVUX0FY
MjVfUEFDTEVOPTEyLAogICAgICAgIE5FVF9BWDI1X1BST1RPQ09MPTEzLAogICAgICAgIE5FVF9B
WDI1X0RBTUFfU0xBVkVfVElNRU9VVD0xNAp9OwoKCmVudW0gewogICAgICAgIE5FVF9ST1NFX1JF
U1RBUlRfUkVRVUVTVF9USU1FT1VUPTEsCiAgICAgICAgTkVUX1JPU0VfQ0FMTF9SRVFVRVNUX1RJ
TUVPVVQ9MiwKICAgICAgICBORVRfUk9TRV9SRVNFVF9SRVFVRVNUX1RJTUVPVVQ9MywKICAgICAg
ICBORVRfUk9TRV9DTEVBUl9SRVFVRVNUX1RJTUVPVVQ9NCwKICAgICAgICBORVRfUk9TRV9BQ0tf
SE9MRF9CQUNLX1RJTUVPVVQ9NSwKICAgICAgICBORVRfUk9TRV9ST1VUSU5HX0NPTlRST0w9NiwK
ICAgICAgICBORVRfUk9TRV9MSU5LX0ZBSUxfVElNRU9VVD03LAogICAgICAgIE5FVF9ST1NFX01B
WF9WQ1M9OCwKICAgICAgICBORVRfUk9TRV9XSU5ET1dfU0laRT05LAogICAgICAgIE5FVF9ST1NF
X05PX0FDVElWSVRZX1RJTUVPVVQ9MTAKfTsKCgplbnVtIHsKICAgICAgICBORVRfWDI1X1JFU1RB
UlRfUkVRVUVTVF9USU1FT1VUPTEsCiAgICAgICAgTkVUX1gyNV9DQUxMX1JFUVVFU1RfVElNRU9V
VD0yLAogICAgICAgIE5FVF9YMjVfUkVTRVRfUkVRVUVTVF9USU1FT1VUPTMsCiAgICAgICAgTkVU
X1gyNV9DTEVBUl9SRVFVRVNUX1RJTUVPVVQ9NCwKICAgICAgICBORVRfWDI1X0FDS19IT0xEX0JB
Q0tfVElNRU9VVD01Cn07CgoKZW51bQp7CiAgICAgICAgTkVUX1RSX1JJRl9USU1FT1VUPTEKfTsK
CgplbnVtIHsKICAgICAgICBORVRfREVDTkVUX05PREVfVFlQRSA9IDEsCiAgICAgICAgTkVUX0RF
Q05FVF9OT0RFX0FERFJFU1MgPSAyLAogICAgICAgIE5FVF9ERUNORVRfTk9ERV9OQU1FID0gMywK
ICAgICAgICBORVRfREVDTkVUX0RFRkFVTFRfREVWSUNFID0gNCwKICAgICAgICBORVRfREVDTkVU
X1RJTUVfV0FJVCA9IDUsCiAgICAgICAgTkVUX0RFQ05FVF9ETl9DT1VOVCA9IDYsCiAgICAgICAg
TkVUX0RFQ05FVF9ESV9DT1VOVCA9IDcsCiAgICAgICAgTkVUX0RFQ05FVF9EUl9DT1VOVCA9IDgs
CiAgICAgICAgTkVUX0RFQ05FVF9EU1RfR0NfSU5URVJWQUwgPSA5LAogICAgICAgIE5FVF9ERUNO
RVRfQ09ORiA9IDEwLAogICAgICAgIE5FVF9ERUNORVRfTk9fRkNfTUFYX0NXTkQgPSAxMSwKICAg
ICAgICBORVRfREVDTkVUX0RFQlVHX0xFVkVMID0gMjU1Cn07CgoKZW51bSB7CiAgICAgICAgTkVU
X0tIVFRQRF9ET0NST09UID0gMSwKICAgICAgICBORVRfS0hUVFBEX1NUQVJUID0gMiwKICAgICAg
ICBORVRfS0hUVFBEX1NUT1AgPSAzLAogICAgICAgIE5FVF9LSFRUUERfVU5MT0FEID0gNCwKICAg
ICAgICBORVRfS0hUVFBEX0NMSUVOVFBPUlQgPSA1LAogICAgICAgIE5FVF9LSFRUUERfUEVSTVJF
USA9IDYsCiAgICAgICAgTkVUX0tIVFRQRF9QRVJNRk9SQklEID0gNywKICAgICAgICBORVRfS0hU
VFBEX0xPR0dJTkcgPSA4LAogICAgICAgIE5FVF9LSFRUUERfU0VSVkVSUE9SVCA9IDksCiAgICAg
ICAgTkVUX0tIVFRQRF9EWU5BTUlDU1RSSU5HPSAxMCwKICAgICAgICBORVRfS0hUVFBEX1NMT1BQ
WU1JTUUgPSAxMSwKICAgICAgICBORVRfS0hUVFBEX1RIUkVBRFMgPSAxMiwKICAgICAgICBORVRf
S0hUVFBEX01BWENPTk5FQ1QgPSAxMwp9OwoKCmVudW0gewogICAgICAgIE5FVF9ERUNORVRfQ09O
Rl9MT09QQkFDSyA9IC0yLAogICAgICAgIE5FVF9ERUNORVRfQ09ORl9ERENNUCA9IC0zLAogICAg
ICAgIE5FVF9ERUNORVRfQ09ORl9QUFAgPSAtNCwKICAgICAgICBORVRfREVDTkVUX0NPTkZfWDI1
ID0gLTUsCiAgICAgICAgTkVUX0RFQ05FVF9DT05GX0dSRSA9IC02LAogICAgICAgIE5FVF9ERUNO
RVRfQ09ORl9FVEhFUiA9IC03CgoKfTsKCgplbnVtIHsKICAgICAgICBORVRfREVDTkVUX0NPTkZf
REVWX1BSSU9SSVRZID0gMSwKICAgICAgICBORVRfREVDTkVUX0NPTkZfREVWX1QxID0gMiwKICAg
ICAgICBORVRfREVDTkVUX0NPTkZfREVWX1QyID0gMywKICAgICAgICBORVRfREVDTkVUX0NPTkZf
REVWX1QzID0gNCwKICAgICAgICBORVRfREVDTkVUX0NPTkZfREVWX0ZPUldBUkRJTkcgPSA1LAog
ICAgICAgIE5FVF9ERUNORVRfQ09ORl9ERVZfQkxLU0laRSA9IDYsCiAgICAgICAgTkVUX0RFQ05F
VF9DT05GX0RFVl9TVEFURSA9IDcKfTsKCgoKCmVudW0KewogICAgICAgIEZTX05SSU5PREU9MSwK
ICAgICAgICBGU19TVEFUSU5PREU9MiwKICAgICAgICBGU19NQVhJTk9ERT0zLAogICAgICAgIEZT
X05SRFFVT1Q9NCwKICAgICAgICBGU19NQVhEUVVPVD01LAogICAgICAgIEZTX05SRklMRT02LAog
ICAgICAgIEZTX01BWEZJTEU9NywKICAgICAgICBGU19ERU5UUlk9OCwKICAgICAgICBGU19OUlNV
UEVSPTksCiAgICAgICAgRlNfTUFYU1VQRVI9MTAsCiAgICAgICAgRlNfT1ZFUkZMT1dVSUQ9MTEs
CiAgICAgICAgRlNfT1ZFUkZMT1dHSUQ9MTIsCiAgICAgICAgRlNfTEVBU0VTPTEzLAogICAgICAg
IEZTX0RJUl9OT1RJRlk9MTQsCiAgICAgICAgRlNfTEVBU0VfVElNRT0xNSwKfTsKCgoKCmVudW0g
ewogICAgICAgIERFVl9DRFJPTT0xLAogICAgICAgIERFVl9IV01PTj0yLAogICAgICAgIERFVl9Q
QVJQT1JUPTMsCiAgICAgICAgREVWX1JBSUQ9NCwKICAgICAgICBERVZfTUFDX0hJRD01Cn07CgoK
ZW51bSB7CiAgICAgICAgREVWX0NEUk9NX0lORk89MSwKICAgICAgICBERVZfQ0RST01fQVVUT0NM
T1NFPTIsCiAgICAgICAgREVWX0NEUk9NX0FVVE9FSkVDVD0zLAogICAgICAgIERFVl9DRFJPTV9E
RUJVRz00LAogICAgICAgIERFVl9DRFJPTV9MT0NLPTUsCiAgICAgICAgREVWX0NEUk9NX0NIRUNL
X01FRElBPTYKfTsKCgplbnVtIHsKICAgICAgICBERVZfUEFSUE9SVF9ERUZBVUxUPS0zCn07CgoK
ZW51bSB7CiAgICAgICAgREVWX1JBSURfU1BFRURfTElNSVRfTUlOPTEsCiAgICAgICAgREVWX1JB
SURfU1BFRURfTElNSVRfTUFYPTIKfTsKCgplbnVtIHsKICAgICAgICBERVZfUEFSUE9SVF9ERUZB
VUxUX1RJTUVTTElDRT0xLAogICAgICAgIERFVl9QQVJQT1JUX0RFRkFVTFRfU1BJTlRJTUU9Mgp9
OwoKCmVudW0gewogICAgICAgIERFVl9QQVJQT1JUX1NQSU5USU1FPTEsCiAgICAgICAgREVWX1BB
UlBPUlRfQkFTRV9BRERSPTIsCiAgICAgICAgREVWX1BBUlBPUlRfSVJRPTMsCiAgICAgICAgREVW
X1BBUlBPUlRfRE1BPTQsCiAgICAgICAgREVWX1BBUlBPUlRfTU9ERVM9NSwKICAgICAgICBERVZf
UEFSUE9SVF9ERVZJQ0VTPTYsCiAgICAgICAgREVWX1BBUlBPUlRfQVVUT1BST0JFPTE2Cn07CgoK
ZW51bSB7CiAgICAgICAgREVWX1BBUlBPUlRfREVWSUNFU19BQ1RJVkU9LTMsCn07CgoKZW51bSB7
CiAgICAgICAgREVWX1BBUlBPUlRfREVWSUNFX1RJTUVTTElDRT0xLAp9OwoKCmVudW0gewogICAg
ICAgIERFVl9NQUNfSElEX0tFWUJPQVJEX1NFTkRTX0xJTlVYX0tFWUNPREVTPTEsCiAgICAgICAg
REVWX01BQ19ISURfS0VZQk9BUkRfTE9DS19LRVlDT0RFUz0yLAogICAgICAgIERFVl9NQUNfSElE
X01PVVNFX0JVVFRPTl9FTVVMQVRJT049MywKICAgICAgICBERVZfTUFDX0hJRF9NT1VTRV9CVVRU
T04yX0tFWUNPREU9NCwKICAgICAgICBERVZfTUFDX0hJRF9NT1VTRV9CVVRUT04zX0tFWUNPREU9
NSwKICAgICAgICBERVZfTUFDX0hJRF9BREJfTU9VU0VfU0VORFNfS0VZQ09ERVM9Ngp9OwoKCmVu
dW0KewogICAgICAgIEFCSV9ERUZIQU5ETEVSX0NPRkY9MSwKICAgICAgICBBQklfREVGSEFORExF
Ul9FTEY9MiwKICAgICAgICBBQklfREVGSEFORExFUl9MQ0FMTDc9MywKICAgICAgICBBQklfREVG
SEFORExFUl9MSUJDU089NCwKICAgICAgICBBQklfVFJBQ0U9NSwKICAgICAgICBBQklfRkFLRV9V
VFNOQU1FPTYsCn07CiMgMjkgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3N5cy9zeXNjdGwu
aCIgMgoKCmV4dGVybiBpbnQgc3lzY3RsIChpbnQgKl9fbmFtZSwgaW50IF9fbmxlbiwgdm9pZCAq
X19vbGR2YWwsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fb2xkbGVucCwgdm9pZCAqX19u
ZXd2YWwsIHNpemVfdCBfX25ld2xlbikgOwoKCiMgMyAiLi4vaW5jbHVkZS9zeXMvc3lzY3RsLmgi
IDIKCgpleHRlcm4gaW50IF9fc3lzY3RsIChpbnQgKl9fbmFtZSwgaW50IF9fbmxlbiwgdm9pZCAq
X19vbGR2YWwsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19vbGRsZW5wLCB2b2lkICpf
X25ld3ZhbCwgc2l6ZV90IF9fbmV3bGVuKTsKIyAyOCAicHRocmVhZC5jIiAyCiMgMSAiLi4vaW5j
bHVkZS9zaGxpYi1jb21wYXQuaCIgMQojIDI2ICIuLi9pbmNsdWRlL3NobGliLWNvbXBhdC5oIgoj
IDEgIi91c3Ivc3JjL2dsaWJjLTIuMi41LWJ1aWxkL2FiaS12ZXJzaW9ucy5oIiAxCiMgMjcgIi4u
L2luY2x1ZGUvc2hsaWItY29tcGF0LmgiIDIKIyAyOSAicHRocmVhZC5jIiAyCiMgMSAiLi4vaW5j
bHVkZS9wdGhyZWFkLmgiIDEKIyAxICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy9wdGhyZWFkL3B0
aHJlYWQuaCIgMQojIDIwICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy9wdGhyZWFkL3B0aHJlYWQu
aCIKIyAxICIuLi9pbmNsdWRlL3NjaGVkLmgiIDEKCiMgMSAiLi4vcG9zaXgvc2NoZWQuaCIgMQoj
IDI5ICIuLi9wb3NpeC9zY2hlZC5oIgojIDEgIi4uL2luY2x1ZGUvdGltZS5oIiAxCgoKIyAxICIu
Li90aW1lL3RpbWUuaCIgMQojIDQgIi4uL2luY2x1ZGUvdGltZS5oIiAyCiMgMzAgIi4uL3Bvc2l4
L3NjaGVkLmgiIDIKCgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc2NoZWQu
aCIgMQojIDQ3ICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NjaGVkLmgiCnN0cnVj
dCBzY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVkX3ByaW9yaXR5OwogIH07CgoKCgoKZXh0
ZXJuIGludCBjbG9uZSAoaW50ICgqX19mbikgKHZvaWQgKl9fYXJnKSwgdm9pZCAqX19jaGlsZF9z
dGFjaywKICAgICAgICAgICAgICAgICAgaW50IF9fZmxhZ3MsIHZvaWQgKl9fYXJnKSA7CgoKCiMg
MzMgIi4uL3Bvc2l4L3NjaGVkLmgiIDIKCgoKCgoKCmV4dGVybiBpbnQgc2NoZWRfc2V0cGFyYW0g
KF9fcGlkX3QgX19waWQsIF9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKQogICAg
IDsKCgpleHRlcm4gaW50IHNjaGVkX2dldHBhcmFtIChfX3BpZF90IF9fcGlkLCBzdHJ1Y3Qgc2No
ZWRfcGFyYW0gKl9fcGFyYW0pIDsKCgpleHRlcm4gaW50IHNjaGVkX3NldHNjaGVkdWxlciAoX19w
aWRfdCBfX3BpZCwgaW50IF9fcG9saWN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pIDsKCgpleHRlcm4gaW50IHNjaGVk
X2dldHNjaGVkdWxlciAoX19waWRfdCBfX3BpZCkgOwoKCmV4dGVybiBpbnQgc2NoZWRfeWllbGQg
KHZvaWQpIDsKCgpleHRlcm4gaW50IHNjaGVkX2dldF9wcmlvcml0eV9tYXggKGludCBfX2FsZ29y
aXRobSkgOwoKCmV4dGVybiBpbnQgc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiAoaW50IF9fYWxnb3Jp
dGhtKSA7CgoKZXh0ZXJuIGludCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwgKF9fcGlkX3QgX19waWQs
IHN0cnVjdCB0aW1lc3BlYyAqX190KSA7CgoKIyAzICIuLi9pbmNsdWRlL3NjaGVkLmgiIDIKCgpl
eHRlcm4gaW50IF9fc2NoZWRfc2V0cGFyYW0gKF9fcGlkX3QgX19waWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pOwpleHRl
cm4gaW50IF9fc2NoZWRfZ2V0cGFyYW0gKF9fcGlkX3QgX19waWQsIHN0cnVjdCBzY2hlZF9wYXJh
bSAqX19wYXJhbSk7CmV4dGVybiBpbnQgX19zY2hlZF9zZXRzY2hlZHVsZXIgKF9fcGlkX3QgX19w
aWQsIGludCBfX3BvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pOwpleHRlcm4gaW50IF9fc2NoZWRfZ2V0c2No
ZWR1bGVyIChfX3BpZF90IF9fcGlkKTsKZXh0ZXJuIGludCBfX3NjaGVkX3lpZWxkICh2b2lkKTsK
ZXh0ZXJuIGludCBfX3NjaGVkX2dldF9wcmlvcml0eV9tYXggKGludCBfX2FsZ29yaXRobSk7CmV4
dGVybiBpbnQgX19zY2hlZF9nZXRfcHJpb3JpdHlfbWluIChpbnQgX19hbGdvcml0aG0pOwpleHRl
cm4gaW50IF9fc2NoZWRfcnJfZ2V0X2ludGVydmFsIChfX3BpZF90IF9fcGlkLCBzdHJ1Y3QgdGlt
ZXNwZWMgKl9fdCk7CgoKZXh0ZXJuIGludCBfX2Nsb25lIChpbnQgKCpfX2ZuKSAodm9pZCAqX19h
cmcpLCB2b2lkICpfX2NoaWxkX3N0YWNrLAogICAgICAgICAgICAgICAgICAgIGludCBfX2ZsYWdz
LCB2b2lkICpfX2FyZyk7CmV4dGVybiBpbnQgX19jbG9uZTIgKGludCAoKl9fZm4pICh2b2lkICpf
X2FyZyksIHZvaWQgKl9fY2hpbGRfc3RhY2tfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fY2hpbGRfc3RhY2tfc2l6ZSwgaW50IF9fZmxhZ3MsIHZvaWQgKl9fYXJnKTsKIyAyMSAi
Li4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFkLmgiIDIKIyAxICIuLi9pbmNs
dWRlL3RpbWUuaCIgMQoKCgoKIyAxICIuLi90aW1lL3RpbWUuaCIgMQojIDMwICIuLi90aW1lL3Rp
bWUuaCIKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4y
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM5ICIuLi90aW1lL3RpbWUuaCIgMgoKCgojIDEgIi4u
L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvYml0cy90aW1lLmgiIDEKIyA0MyAiLi4vdGlt
ZS90aW1lLmgiIDIKIyAxMTggIi4uL3RpbWUvdGltZS5oIgpzdHJ1Y3QgdG0KewogIGludCB0bV9z
ZWM7CiAgaW50IHRtX21pbjsKICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1f
bW9uOwogIGludCB0bV95ZWFyOwogIGludCB0bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0
bV9pc2RzdDsKCgogIGxvbmcgaW50IHRtX2dtdG9mZjsKICBfX2NvbnN0IGNoYXIgKnRtX3pvbmU7
CgoKCgp9OwoKCgoKc3RydWN0IGl0aW1lcnNwZWMKICB7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRf
aW50ZXJ2YWw7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7CiAgfTsKCgpzdHJ1Y3Qgc2ln
ZXZlbnQ7CiMgMTYzICIuLi90aW1lL3RpbWUuaCIKZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZvaWQp
IDsKCgpleHRlcm4gdGltZV90IHRpbWUgKHRpbWVfdCAqX190aW1lcikgOwoKCmV4dGVybiBkb3Vi
bGUgZGlmZnRpbWUgKHRpbWVfdCBfX3RpbWUxLCB0aW1lX3QgX190aW1lMCkKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIHRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAq
X190cCkgOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RyZnRpbWUgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBzaXplX3QgX19tYXhzaXplLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3Ry
dWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKCmV4dGVybiBjaGFyICpzdHJwdGltZSAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIHN0cnVjdCB0bSAqX190cCkKICAgICA7CgoKCgoKZXh0
ZXJuIHN0cnVjdCB0bSAqZ210aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgOwoKCgpleHRl
cm4gc3RydWN0IHRtICpsb2NhbHRpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSA7CgoKCgpl
eHRlcm4gc3RydWN0IHRtICpnbXRpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190
aW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBf
X3RwKSA7CgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yIChfX2NvbnN0IHRpbWVfdCAq
X19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKCmV4dGVybiBjaGFyICphc2N0aW1lIChfX2NvbnN0
IHN0cnVjdCB0bSAqX190cCkgOwoKCmV4dGVybiBjaGFyICpjdGltZSAoX19jb25zdCB0aW1lX3Qg
Kl9fdGltZXIpIDsKCgoKCgoKZXh0ZXJuIGNoYXIgKmFzY3RpbWVfciAoX19jb25zdCBzdHJ1Y3Qg
dG0gKl9fcmVzdHJpY3QgX190cCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0
cmljdCBfX2J1ZikgOwoKCmV4dGVybiBjaGFyICpjdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19y
ZXN0cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBf
X2J1ZikgOwoKCgoKZXh0ZXJuIGNoYXIgKl9fdHpuYW1lWzJdOwpleHRlcm4gaW50IF9fZGF5bGln
aHQ7CmV4dGVybiBsb25nIGludCBfX3RpbWV6b25lOwoKCgoKZXh0ZXJuIGNoYXIgKnR6bmFtZVsy
XTsKCgoKZXh0ZXJuIHZvaWQgdHpzZXQgKHZvaWQpIDsKCgoKZXh0ZXJuIGludCBkYXlsaWdodDsK
ZXh0ZXJuIGxvbmcgaW50IHRpbWV6b25lOwoKCgoKCmV4dGVybiBpbnQgc3RpbWUgKF9fY29uc3Qg
dGltZV90ICpfX3doZW4pIDsKIyAyNzEgIi4uL3RpbWUvdGltZS5oIgpleHRlcm4gdGltZV90IHRp
bWVnbSAoc3RydWN0IHRtICpfX3RwKSA7CgoKZXh0ZXJuIHRpbWVfdCB0aW1lbG9jYWwgKHN0cnVj
dCB0bSAqX190cCkgOwoKCmV4dGVybiBpbnQgZHlzaXplIChpbnQgX195ZWFyKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGludCBuYW5vc2xlZXAgKF9fY29uc3Qgc3Ry
dWN0IHRpbWVzcGVjICpfX3JlcXVlc3RlZF90aW1lLAogICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHRpbWVzcGVjICpfX3JlbWFpbmluZykgOwoKCgpleHRlcm4gaW50IGNsb2NrX2dldHJlcyAo
Y2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX19yZXMpIDsKCgpleHRlcm4g
aW50IGNsb2NrX2dldHRpbWUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMg
Kl9fdHApIDsKCgpleHRlcm4gaW50IGNsb2NrX3NldHRpbWUgKGNsb2NraWRfdCBfX2Nsb2NrX2lk
LCBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX190cCkKICAgICA7CgoKCmV4dGVybiBpbnQgY2xv
Y2tfbmFub3NsZWVwIChjbG9ja2lkX3QgX19jbG9ja19pZCwgaW50IF9fZmxhZ3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtKSA7CgoKZXh0ZXJu
IGludCBjbG9ja19nZXRjcHVjbG9ja2lkIChwaWRfdCBfX3BpZCwgY2xvY2tpZF90ICpfX2Nsb2Nr
X2lkKSA7CgoKCgpleHRlcm4gaW50IHRpbWVyX2NyZWF0ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2lnZXZlbnQgKl9fcmVzdHJpY3QgX19l
dnAsCiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcl90ICpfX3Jlc3RyaWN0IF9fdGltZXJp
ZCkgOwoKCmV4dGVybiBpbnQgdGltZXJfZGVsZXRlICh0aW1lcl90IF9fdGltZXJpZCkgOwoKCmV4
dGVybiBpbnQgdGltZXJfc2V0dGltZSAodGltZXJfdCBfX3RpbWVyaWQsIGludCBfX2ZsYWdzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKl9fcmVz
dHJpY3QgX192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVyc3Bl
YyAqX19yZXN0cmljdCBfX292YWx1ZSkgOwoKCmV4dGVybiBpbnQgdGltZXJfZ2V0dGltZSAodGlt
ZXJfdCBfX3RpbWVyaWQsIHN0cnVjdCBpdGltZXJzcGVjICpfX3ZhbHVlKQogICAgIDsKCgpleHRl
cm4gaW50IHRpbWVyX2dldG92ZXJydW4gKHRpbWVyX3QgX190aW1lcmlkKSA7CiMgMzQyICIuLi90
aW1lL3RpbWUuaCIKZXh0ZXJuIGludCBnZXRkYXRlX2VycjsKCgoKCgpleHRlcm4gc3RydWN0IHRt
ICpnZXRkYXRlIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nKSA7CiMgMzU3ICIuLi90aW1lL3RpbWUu
aCIKZXh0ZXJuIGludCBnZXRkYXRlX3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3N0cmlu
ZywKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3Jlc2J1ZnAp
IDsKCgoKCiMgNiAiLi4vaW5jbHVkZS90aW1lLmgiIDIKCgpzdHJ1Y3QgdG07CgoKZXh0ZXJuIGNv
bnN0IHVuc2lnbmVkIHNob3J0IGludCBfX21vbl95ZGF5WzJdWzEzXTsKCgpleHRlcm4gc3RydWN0
IHRtIF90bWJ1ZjsKCgpleHRlcm4gY2hhciAqX190enN0cmluZyAoY29uc3QgY2hhciAqc3RyaW5n
KTsKCgpleHRlcm4gc2l6ZV90IF9fdHpuYW1lX2N1cl9tYXg7CgoKZXh0ZXJuIGludCBfX3VzZV90
emZpbGU7CgpleHRlcm4gdm9pZCBfX3R6ZmlsZV9yZWFkIChjb25zdCBjaGFyICpmaWxlLCBzaXpl
X3QgZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipleHRyYXApOwpleHRl
cm4gaW50IF9fdHpmaWxlX2NvbXB1dGUgKHRpbWVfdCB0aW1lciwgaW50IHVzZV9sb2NhbHRpbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKmxlYXBfY29ycmVjdCwgaW50
ICpsZWFwX2hpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKnRwKTsK
ZXh0ZXJuIHZvaWQgX190emZpbGVfZGVmYXVsdCAoY29uc3QgY2hhciAqc3RkLCBjb25zdCBjaGFy
ICpkc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50IHN0ZG9mZiwgbG9u
ZyBpbnQgZHN0b2ZmKTsKCgoKCmV4dGVybiB0aW1lX3QgX19ta3RpbWVfaW50ZXJuYWwgKHN0cnVj
dCB0bSAqX190cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRtICoo
Kl9fZnVuYykgKGNvbnN0IHRpbWVfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRtICopLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lX3QgKl9fb2Zmc2V0KTsKZXh0ZXJuIHN0cnVjdCB0bSAqX19sb2Nh
bHRpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCB0bSAqX190cCk7CgpleHRlcm4gc3RydWN0IHRtICpfX2dtdGltZV9y
IChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCk7CgoKCgoKZXh0ZXJuIGludCBf
X29mZnRpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyLAogICAgICAgICAgICAgICAgICAgICAg
bG9uZyBpbnQgX19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fdHAp
OwoKZXh0ZXJuIGNoYXIgKl9fYXNjdGltZV9yIChfX2NvbnN0IHN0cnVjdCB0bSAqX190cCwgY2hh
ciAqX19idWYpOwpleHRlcm4gdm9pZCBfX3R6c2V0ICh2b2lkKTsKCgpleHRlcm4gc3RydWN0IHRt
ICpfX3R6X2NvbnZlcnQgKGNvbnN0IHRpbWVfdCAqdGltZXIsIGludCB1c2VfbG9jYWx0aW1lLCBz
dHJ1Y3QgdG0gKnRwKTsKCgoKZXh0ZXJuIGxvbmcgaW50IF9fdHpuYW1lX21heCAodm9pZCk7Cgpl
eHRlcm4gaW50IF9fbmFub3NsZWVwIChfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0
ZWRfdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjICpfX3JlbWFp
bmluZyk7CmV4dGVybiBpbnQgX19nZXRkYXRlX3IgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHN0
cnVjdCB0bSAqX19yZXNidWZwKTsKCgoKZXh0ZXJuIGludCBfX2dldGNsa3RjayAodm9pZCk7CiMg
MjIgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvcHRocmVhZC5oIiAyCgoKCiMgMSAi
Li4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL3B0aHJlYWR0eXBlcy5oIiAxCiMg
MjYgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvcHRocmVhZC5oIiAyCiMgMSAiLi4v
bGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL2luaXRzcGluLmgiIDEKIyAyNyAiLi4v
bGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFkLmgiIDIKCgoKIyA1OSAiLi4vbGlu
dXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFkLmgiCmVudW0KewogIFBUSFJFQURfQ1JF
QVRFX0pPSU5BQkxFLAoKICBQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRAoKfTsKCmVudW0KewogIFBU
SFJFQURfSU5IRVJJVF9TQ0hFRCwKCiAgUFRIUkVBRF9FWFBMSUNJVF9TQ0hFRAoKfTsKCmVudW0K
ewogIFBUSFJFQURfU0NPUEVfU1lTVEVNLAoKICBQVEhSRUFEX1NDT1BFX1BST0NFU1MKCn07Cgpl
bnVtCnsKICBQVEhSRUFEX01VVEVYX1RJTUVEX05QLAogIFBUSFJFQURfTVVURVhfUkVDVVJTSVZF
X05QLAogIFBUSFJFQURfTVVURVhfRVJST1JDSEVDS19OUCwKICBQVEhSRUFEX01VVEVYX0FEQVBU
SVZFX05QCgogICwKICBQVEhSRUFEX01VVEVYX05PUk1BTCA9IFBUSFJFQURfTVVURVhfVElNRURf
TlAsCiAgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUgPSBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9O
UCwKICBQVEhSRUFEX01VVEVYX0VSUk9SQ0hFQ0sgPSBQVEhSRUFEX01VVEVYX0VSUk9SQ0hFQ0tf
TlAsCiAgUFRIUkVBRF9NVVRFWF9ERUZBVUxUID0gUFRIUkVBRF9NVVRFWF9OT1JNQUwKCgoKICAs
IFBUSFJFQURfTVVURVhfRkFTVF9OUCA9IFBUSFJFQURfTVVURVhfQURBUFRJVkVfTlAKCn07Cgpl
bnVtCnsKICBQVEhSRUFEX1BST0NFU1NfUFJJVkFURSwKCiAgUFRIUkVBRF9QUk9DRVNTX1NIQVJF
RAoKfTsKCgplbnVtCnsKICBQVEhSRUFEX1JXTE9DS19QUkVGRVJfUkVBREVSX05QLAogIFBUSFJF
QURfUldMT0NLX1BSRUZFUl9XUklURVJfTlAsCiAgUFRIUkVBRF9SV0xPQ0tfUFJFRkVSX1dSSVRF
Ul9OT05SRUNVUlNJVkVfTlAsCiAgUFRIUkVBRF9SV0xPQ0tfREVGQVVMVF9OUCA9IFBUSFJFQURf
UldMT0NLX1BSRUZFUl9XUklURVJfTlAKfTsKIyAxMzEgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBz
L3B0aHJlYWQvcHRocmVhZC5oIgpzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIKewogIHZv
aWQgKCpfX3JvdXRpbmUpICh2b2lkICopOwogIHZvaWQgKl9fYXJnOwogIGludCBfX2NhbmNlbHR5
cGU7CiAgc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyICpfX3ByZXY7Cn07CgoKCmVudW0K
ewogIFBUSFJFQURfQ0FOQ0VMX0VOQUJMRSwKCiAgUFRIUkVBRF9DQU5DRUxfRElTQUJMRQoKfTsK
ZW51bQp7CiAgUFRIUkVBRF9DQU5DRUxfREVGRVJSRUQsCgogIFBUSFJFQURfQ0FOQ0VMX0FTWU5D
SFJPTk9VUwoKfTsKIyAxNjMgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3B0aHJlYWQvcHRocmVh
ZC5oIgpleHRlcm4gaW50IHB0aHJlYWRfY3JlYXRlIChwdGhyZWFkX3QgKl9fcmVzdHJpY3QgX190
aHJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgcHRocmVhZF9hdHRyX3Qg
Kl9fcmVzdHJpY3QgX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICooKl9f
c3RhcnRfcm91dGluZSkgKHZvaWQgKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
Kl9fcmVzdHJpY3QgX19hcmcpIDsKCgpleHRlcm4gcHRocmVhZF90IHB0aHJlYWRfc2VsZiAodm9p
ZCkgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9lcXVhbCAocHRocmVhZF90IF9fdGhyZWFkMSwgcHRo
cmVhZF90IF9fdGhyZWFkMikgOwoKCmV4dGVybiB2b2lkIHB0aHJlYWRfZXhpdCAodm9pZCAqX19y
ZXR2YWwpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX2pvaW4gKHB0aHJlYWRfdCBfX3RoLCB2b2lkICoqX190aHJlYWRfcmV0dXJuKSA7
CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2RldGFjaCAocHRocmVhZF90IF9fdGgpIDsKCgoKCgoK
CmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2luaXQgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIpIDsK
CgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9kZXN0cm95IChwdGhyZWFkX2F0dHJfdCAqX19hdHRy
KSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNoc3RhdGUgKHB0aHJlYWRfYXR0
cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
X19kZXRhY2hzdGF0ZSkgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldGRldGFjaHN0YXRl
IChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgKl9fZGV0YWNoc3RhdGUpIDsKCgpleHRlcm4gaW50IHB0aHJl
YWRfYXR0cl9zZXRzY2hlZHBhcmFtIChwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdCBfX2F0dHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHNj
aGVkX3BhcmFtICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fcGFyYW0pIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBhcmFtIChf
X2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHNjaGVkX3BhcmFtICpfX3Jlc3RyaWN0IF9fcGFyYW0pCiAgICAgOwoKCmV4
dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHNjaGVkcG9saWN5IChwdGhyZWFkX2F0dHJfdCAqX19h
dHRyLCBpbnQgX19wb2xpY3kpCiAgICAgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHNj
aGVkcG9saWN5IChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHIsIGludCAqX19yZXN0cmljdCBfX3Bv
bGljeSkKICAgICA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkIChw
dGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBfX2luaGVyaXQpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRpbmhl
cml0c2NoZWQgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3QKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHIsIGludCAqX19yZXN0cmljdCBfX2lu
aGVyaXQpCiAgICAgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHNjb3BlIChwdGhyZWFk
X2F0dHJfdCAqX19hdHRyLCBpbnQgX19zY29wZSkKICAgICA7CgoKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfZ2V0c2NvcGUgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3QgX19hdHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2Nv
cGUpIDsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0Z3VhcmRzaXplIChwdGhyZWFkX2F0
dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX2d1YXJkc2l6ZSkgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldGd1YXJkc2l6ZSAo
X19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fYXR0ciwgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fZ3VhcmRzaXplKQog
ICAgIDsKCgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2thZGRyIChwdGhyZWFk
X2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKl9fc3RhY2thZGRyKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2thZGRy
IChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19hdHRyLCB2b2lkICoqX19yZXN0cmljdCBfX3N0YWNrYWRkcikK
ICAgICA7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2sgKHB0aHJlYWRfYXR0
cl90ICpfX2F0dHIsIHZvaWQgKl9fc3RhY2thZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IF9fc3RhY2tzaXplKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJf
Z2V0c3RhY2sgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3QgX19hdHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKl9fcmVzdHJpY3QgX19zdGFja2Fk
ZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3Qg
X19zdGFja3NpemUpIDsKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzdGFja3NpemUg
KHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IF9fc3RhY2tzaXplKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0
c3RhY2tzaXplIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyLCBzaXplX3QgKl9fcmVzdHJpY3QgX19z
dGFja3NpemUpCiAgICAgOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfZ2V0YXR0cl9ucCAocHRocmVh
ZF90IF9fdGgsIHB0aHJlYWRfYXR0cl90ICpfX2F0dHIpIDsKCgoKCgoKZXh0ZXJuIGludCBwdGhy
ZWFkX3NldHNjaGVkcGFyYW0gKHB0aHJlYWRfdCBfX3RhcmdldF90aHJlYWQsIGludCBfX3BvbGlj
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHNjaGVk
X3BhcmFtICpfX3BhcmFtKQogICAgIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfZ2V0c2NoZWRwYXJh
bSAocHRocmVhZF90IF9fdGFyZ2V0X3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCAqX19yZXN0cmljdCBfX3BvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19yZXN0cmljdCBfX3BhcmFtKQogICAgIDsK
CgoKZXh0ZXJuIGludCBwdGhyZWFkX2dldGNvbmN1cnJlbmN5ICh2b2lkKSA7CgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX3NldGNvbmN1cnJlbmN5IChpbnQgX19sZXZlbCkgOwoKCgoKCgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX3lpZWxkICh2b2lkKSA7CgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9p
bml0IChwdGhyZWFkX211dGV4X3QgKl9fcmVzdHJpY3QgX19tdXRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqX19yZXN0cmljdAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19tdXRleF9hdHRyKSA7CgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX211dGV4X2Rlc3Ryb3kgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgOwoKCmV4
dGVybiBpbnQgcHRocmVhZF9tdXRleF90cnlsb2NrIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgp
IDsKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfbG9jayAocHRocmVhZF9tdXRleF90ICpfX211
dGV4KSA7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF90aW1lZGxvY2sgKHB0aHJlYWRfbXV0
ZXhfdCAqX19yZXN0cmljdCBfX211dGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2Fic3RpbWUpIDsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX211
dGV4X3VubG9jayAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSA7CgoKCgoKCmV4dGVybiBpbnQg
cHRocmVhZF9tdXRleGF0dHJfaW5pdCAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyKSA7CgoK
ZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95IChwdGhyZWFkX211dGV4YXR0cl90
ICpfX2F0dHIpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHBzaGFyZWQgKF9f
Y29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19yZXN0cmljdCBfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fcHNoYXJlZCkgOwoKCmV4dGVybiBpbnQg
cHRocmVhZF9tdXRleGF0dHJfc2V0cHNoYXJlZCAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3BzaGFyZWQp
IDsKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUgKHB0aHJlYWRfbXV0
ZXhhdHRyX3QgKl9fYXR0ciwgaW50IF9fa2luZCkKICAgICA7CgoKZXh0ZXJuIGludCBwdGhyZWFk
X211dGV4YXR0cl9nZXR0eXBlIChfX2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fcmVzdHJp
Y3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHIsIGludCAqX19y
ZXN0cmljdCBfX2tpbmQpIDsKCgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2luaXQgKHB0
aHJlYWRfY29uZF90ICpfX3Jlc3RyaWN0IF9fY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCBwdGhyZWFkX2NvbmRhdHRyX3QgKl9fcmVzdHJpY3QKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25kX2F0dHIpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfY29u
ZF9kZXN0cm95IChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFk
X2NvbmRfc2lnbmFsIChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSA7CgoKZXh0ZXJuIGludCBwdGhy
ZWFkX2NvbmRfYnJvYWRjYXN0IChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSA7CgoKCmV4dGVybiBp
bnQgcHRocmVhZF9jb25kX3dhaXQgKHB0aHJlYWRfY29uZF90ICpfX3Jlc3RyaWN0IF9fY29uZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9tdXRleF90ICpfX3Jlc3RyaWN0
IF9fbXV0ZXgpIDsKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF90aW1lZHdhaXQgKHB0aHJl
YWRfY29uZF90ICpfX3Jlc3RyaWN0IF9fY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdGhyZWFkX211dGV4X3QgKl9fcmVzdHJpY3QgX19tdXRleCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmlj
dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYWJzdGltZSkgOwoKCgoKZXh0
ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2luaXQgKHB0aHJlYWRfY29uZGF0dHJfdCAqX19hdHRy
KSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2Rlc3Ryb3kgKHB0aHJlYWRfY29uZGF0
dHJfdCAqX19hdHRyKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2dldHBzaGFyZWQg
KF9fY29uc3QgcHRocmVhZF9jb25kYXR0cl90ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fcHNoYXJlZCkgOwoKCmV4dGVybiBpbnQg
cHRocmVhZF9jb25kYXR0cl9zZXRwc2hhcmVkIChwdGhyZWFkX2NvbmRhdHRyX3QgKl9fYXR0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3BzaGFyZWQpIDsK
CgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfaW5pdCAocHRocmVhZF9yd2xvY2tfdCAq
X19yZXN0cmljdCBfX3J3bG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHB0aHJlYWRfcndsb2NrYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19hdHRyKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja19kZXN0cm95
IChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jaykgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xv
Y2tfcmRsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jaykgOwoKCmV4dGVybiBpbnQgcHRo
cmVhZF9yd2xvY2tfdHJ5cmRsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jaykgOwoKCgpl
eHRlcm4gaW50IHB0aHJlYWRfcndsb2NrX3RpbWVkcmRsb2NrIChwdGhyZWFkX3J3bG9ja190ICpf
X3Jlc3RyaWN0IF9fcndsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2Fic3RpbWUpIDsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3
bG9ja193cmxvY2sgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKSA7CgoKZXh0ZXJuIGludCBw
dGhyZWFkX3J3bG9ja190cnl3cmxvY2sgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKSA7CgoK
CmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfdGltZWR3cmxvY2sgKHB0aHJlYWRfcndsb2NrX3Qg
Kl9fcmVzdHJpY3QgX19yd2xvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fYWJzdGltZSkgOwoKCgpleHRlcm4gaW50IHB0aHJlYWRf
cndsb2NrX3VubG9jayAocHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2spIDsKCgoKCgpleHRlcm4g
aW50IHB0aHJlYWRfcndsb2NrYXR0cl9pbml0IChwdGhyZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRy
KSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja2F0dHJfZGVzdHJveSAocHRocmVhZF9yd2xv
Y2thdHRyX3QgKl9fYXR0cikgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2thdHRyX2dldHBz
aGFyZWQgKF9fY29uc3QgcHRocmVhZF9yd2xvY2thdHRyX3QgKgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fYXR0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fcHNoYXJlZCkgOwoK
CmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2thdHRyX3NldHBzaGFyZWQgKHB0aHJlYWRfcndsb2Nr
YXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBfX3BzaGFyZWQpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9nZXRraW5k
X25wIChfX2NvbnN0IHB0aHJlYWRfcndsb2NrYXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19wcmVmKSA7CgoKZXh0ZXJuIGludCBw
dGhyZWFkX3J3bG9ja2F0dHJfc2V0a2luZF9ucCAocHRocmVhZF9yd2xvY2thdHRyX3QgKl9fYXR0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fcHJlZikg
OwojIDUwOSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFkLmgiCmV4dGVy
biBpbnQgcHRocmVhZF9zcGluX2luaXQgKHB0aHJlYWRfc3BpbmxvY2tfdCAqX19sb2NrLCBpbnQg
X19wc2hhcmVkKQogICAgIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfc3Bpbl9kZXN0cm95IChwdGhy
ZWFkX3NwaW5sb2NrX3QgKl9fbG9jaykgOwoKCmV4dGVybiBpbnQgcHRocmVhZF9zcGluX2xvY2sg
KHB0aHJlYWRfc3BpbmxvY2tfdCAqX19sb2NrKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3NwaW5f
dHJ5bG9jayAocHRocmVhZF9zcGlubG9ja190ICpfX2xvY2spIDsKCgpleHRlcm4gaW50IHB0aHJl
YWRfc3Bpbl91bmxvY2sgKHB0aHJlYWRfc3BpbmxvY2tfdCAqX19sb2NrKSA7CgoKCgpleHRlcm4g
aW50IHB0aHJlYWRfYmFycmllcl9pbml0IChwdGhyZWFkX2JhcnJpZXJfdCAqX19yZXN0cmljdCBf
X2JhcnJpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgcHRocmVh
ZF9iYXJyaWVyYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fYXR0ciwgdW5zaWduZWQgaW50IF9fY291bnQpIDsKCmV4dGVybiBpbnQgcHRocmVhZF9i
YXJyaWVyX2Rlc3Ryb3kgKHB0aHJlYWRfYmFycmllcl90ICpfX2JhcnJpZXIpIDsKCmV4dGVybiBp
bnQgcHRocmVhZF9iYXJyaWVyYXR0cl9pbml0IChwdGhyZWFkX2JhcnJpZXJhdHRyX3QgKl9fYXR0
cikgOwoKZXh0ZXJuIGludCBwdGhyZWFkX2JhcnJpZXJhdHRyX2Rlc3Ryb3kgKHB0aHJlYWRfYmFy
cmllcmF0dHJfdCAqX19hdHRyKSA7CgpleHRlcm4gaW50IHB0aHJlYWRfYmFycmllcmF0dHJfZ2V0
cHNoYXJlZCAoX19jb25zdCBwdGhyZWFkX2JhcnJpZXJhdHRyX3QgKgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX2F0dHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19wc2hhcmVk
KSA7CgpleHRlcm4gaW50IHB0aHJlYWRfYmFycmllcmF0dHJfc2V0cHNoYXJlZCAocHRocmVhZF9i
YXJyaWVyYXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19wc2hhcmVkKSA7CgpleHRlcm4gaW50IHB0aHJlYWRfYmFycmllcl93YWl0
IChwdGhyZWFkX2JhcnJpZXJfdCAqX19iYXJyaWVyKSA7CiMgNTU2ICIuLi9saW51eHRocmVhZHMv
c3lzZGVwcy9wdGhyZWFkL3B0aHJlYWQuaCIKZXh0ZXJuIGludCBwdGhyZWFkX2tleV9jcmVhdGUg
KHB0aHJlYWRfa2V5X3QgKl9fa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAoKl9fZGVzdHJfZnVuY3Rpb24pICh2b2lkICopKSA7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2tl
eV9kZWxldGUgKHB0aHJlYWRfa2V5X3QgX19rZXkpIDsKCgpleHRlcm4gaW50IHB0aHJlYWRfc2V0
c3BlY2lmaWMgKHB0aHJlYWRfa2V5X3QgX19rZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCB2b2lkICpfX3BvaW50ZXIpIDsKCgpleHRlcm4gdm9pZCAqcHRocmVhZF9n
ZXRzcGVjaWZpYyAocHRocmVhZF9rZXlfdCBfX2tleSkgOwojIDU3NiAiLi4vbGludXh0aHJlYWRz
L3N5c2RlcHMvcHRocmVhZC9wdGhyZWFkLmgiCmV4dGVybiBpbnQgcHRocmVhZF9vbmNlIChwdGhy
ZWFkX29uY2VfdCAqX19vbmNlX2NvbnRyb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICgqX19pbml0X3JvdXRpbmUpICh2b2lkKSkgOwoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfc2V0
Y2FuY2Vsc3RhdGUgKGludCBfX3N0YXRlLCBpbnQgKl9fb2xkc3RhdGUpIDsKCgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX3NldGNhbmNlbHR5cGUgKGludCBfX3R5cGUsIGludCAqX19vbGR0eXBlKSA7CgoK
ZXh0ZXJuIGludCBwdGhyZWFkX2NhbmNlbCAocHRocmVhZF90IF9fdGhyZWFkKSA7CgoKCgpleHRl
cm4gdm9pZCBwdGhyZWFkX3Rlc3RjYW5jZWwgKHZvaWQpIDsKIyA2MTAgIi4uL2xpbnV4dGhyZWFk
cy9zeXNkZXBzL3B0aHJlYWQvcHRocmVhZC5oIgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVw
X3B1c2ggKHN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlciAqX19idWZmZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fcm91dGluZSkgKHZvaWQgKiksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19hcmcpIDsKCgoKCgoKCmV4
dGVybiB2b2lkIF9wdGhyZWFkX2NsZWFudXBfcG9wIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9i
dWZmZXIgKl9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
ZXhlY3V0ZSkgOwojIDYzMSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFk
LmgiCmV4dGVybiB2b2lkIF9wdGhyZWFkX2NsZWFudXBfcHVzaF9kZWZlciAoc3RydWN0IF9wdGhy
ZWFkX2NsZWFudXBfYnVmZmVyICpfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICgqX19yb3V0aW5lKSAodm9pZCAqKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2FyZykgOwojIDY0MiAiLi4vbGludXh0
aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9wdGhyZWFkLmgiCmV4dGVybiB2b2lkIF9wdGhyZWFkX2Ns
ZWFudXBfcG9wX3Jlc3RvcmUgKHN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlciAqX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2V4ZWN1
dGUpIDsKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfZ2V0Y3B1Y2xvY2tpZCAocHRocmVhZF90IF9f
dGhyZWFkX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tpZF90ICpf
X2Nsb2NrX2lkKSA7CiMgNjcxICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy9wdGhyZWFkL3B0aHJl
YWQuaCIKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAoKl9fcHJlcGFyZSkgKHZvaWQp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgOwoKCgoKZXh0
ZXJuIHZvaWQgcHRocmVhZF9raWxsX290aGVyX3RocmVhZHNfbnAgKHZvaWQpIDsKCgojIDIgIi4u
L2luY2x1ZGUvcHRocmVhZC5oIiAyCgoKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX2luaXRpYWxpemUg
KHZvaWQpIF9fYXR0cmlidXRlX18gKCh3ZWFrKSk7CgpleHRlcm4gdm9pZCBfX3B0aHJlYWRfaW5p
dGlhbGl6ZV9taW5pbWFsICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgod2VhaykpOwojIDMwICJwdGhy
ZWFkLmMiIDIKIyAxICJpbnRlcm5hbHMuaCIgMQojIDIyICJpbnRlcm5hbHMuaCIKIyAxICIuLi9p
bmNsdWRlL2xpbWl0cy5oIiAxCiMgMTI0ICIuLi9pbmNsdWRlL2xpbWl0cy5oIgojIDEgIi91c3Iv
bGliL2djYy1saWIvaTU4Ni1wYy1saW51eC1nbnUvMy4yL2luY2x1ZGUvbGltaXRzLmgiIDEgMwoj
IDEyNSAiLi4vaW5jbHVkZS9saW1pdHMuaCIgMgojIDE0NCAiLi4vaW5jbHVkZS9saW1pdHMuaCIK
IyAxICIuLi9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxCiMgMSAiLi4vcG9zaXgvYml0cy9w
b3NpeDFfbGltLmgiIDEKIyAxMjYgIi4uL3Bvc2l4L2JpdHMvcG9zaXgxX2xpbS5oIgojIDEgIi4u
L2xpbnV4dGhyZWFkcy9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL2xvY2FsX2xpbS5oIiAx
CiMgMzYgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL2xvY2Fs
X2xpbS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9saW51eC9saW1pdHMuaCIg
MSAzCiMgMzcgIi4uL2xpbnV4dGhyZWFkcy9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL2xv
Y2FsX2xpbS5oIiAyCiMgMTI3ICIuLi9wb3NpeC9iaXRzL3Bvc2l4MV9saW0uaCIgMgojIDIgIi4u
L2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDIKIyAxNDUgIi4uL2luY2x1ZGUvbGltaXRzLmgi
IDIKCgoKIyAxICIuLi9pbmNsdWRlL2JpdHMvcG9zaXgyX2xpbS5oIiAxCiMgMSAiLi4vcG9zaXgv
Yml0cy9wb3NpeDJfbGltLmgiIDEKIyAyICIuLi9pbmNsdWRlL2JpdHMvcG9zaXgyX2xpbS5oIiAy
CiMgMTQ5ICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAyCgoKCiMgMSAiLi4vaW5jbHVkZS9iaXRzL3hv
cGVuX2xpbS5oIiAxCiMgMzQgIi4uL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIKIyAxICIvdXNy
L3NyYy9nbGliYy0yLjIuNS1idWlsZC9iaXRzL3N0ZGlvX2xpbS5oIiAxCiMgMzUgIi4uL2luY2x1
ZGUvYml0cy94b3Blbl9saW0uaCIgMgojIDE1MyAiLi4vaW5jbHVkZS9saW1pdHMuaCIgMgojIDIz
ICJpbnRlcm5hbHMuaCIgMgojIDEgIi4uL2luY2x1ZGUvcmVzb2x2LmgiIDEKIyAxMSAiLi4vaW5j
bHVkZS9yZXNvbHYuaCIKIyAxICIuLi9yZXNvbHYvcmVzb2x2LmgiIDEKIyA1NSAiLi4vcmVzb2x2
L3Jlc29sdi5oIgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3N5cy9wYXJhbS5oIiAx
CiMgMjIgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3N5cy9wYXJhbS5oIgojIDEgIi4uL2lu
Y2x1ZGUvbGltaXRzLmgiIDEKIyAxNDQgIi4uL2luY2x1ZGUvbGltaXRzLmgiCiMgMSAiLi4vaW5j
bHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMQojIDE0NSAiLi4vaW5jbHVkZS9saW1pdHMuaCIgMgoK
CgojIDEgIi4uL2luY2x1ZGUvYml0cy9wb3NpeDJfbGltLmgiIDEKIyAxNDkgIi4uL2luY2x1ZGUv
bGltaXRzLmgiIDIKIyAyMyAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvc3lzL3BhcmFtLmgi
IDIKCiMgMSAiL3Vzci9zcmMvbGludXgtdGhpcy9pbmNsdWRlL2xpbnV4L3BhcmFtLmgiIDEgMwoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LXRoaXMvaW5jbHVkZS9hc20vcGFyYW0uaCIgMSAzCiMgNSAi
L3Vzci9zcmMvbGludXgtdGhpcy9pbmNsdWRlL2xpbnV4L3BhcmFtLmgiIDIgMwojIDI1ICIuLi9z
eXNkZXBzL3VuaXgvc3lzdi9saW51eC9zeXMvcGFyYW0uaCIgMgojIDQyICIuLi9zeXNkZXBzL3Vu
aXgvc3lzdi9saW51eC9zeXMvcGFyYW0uaCIKIyAxICIuLi9pbmNsdWRlL3N5cy90eXBlcy5oIiAx
CiMgNDMgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3N5cy9wYXJhbS5oIiAyCiMgNTYgIi4u
L3Jlc29sdi9yZXNvbHYuaCIgMgoKIyAxICIuLi9pbmNsdWRlL3N5cy9iaXR5cGVzLmgiIDEKIyAx
ICIuLi9yZXNvbHYvc3lzL2JpdHlwZXMuaCIgMQoKCiMgMSAiLi4vaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMQojIDQgIi4uL3Jlc29sdi9zeXMvYml0eXBlcy5oIiAyCiMgMiAiLi4vaW5jbHVkZS9zeXMv
Yml0eXBlcy5oIiAyCiMgNTggIi4uL3Jlc29sdi9yZXNvbHYuaCIgMgoKCgojIDEgIi4uL2luY2x1
ZGUvc3lzL2NkZWZzLmgiIDEKIyA2MiAiLi4vcmVzb2x2L3Jlc29sdi5oIiAyCgoKIyAxICIuLi9p
bmNsdWRlL25ldGluZXQvaW4uaCIgMQojIDEgIi4uL2luZXQvbmV0aW5ldC9pbi5oIiAxCiMgMjMg
Ii4uL2luZXQvbmV0aW5ldC9pbi5oIgojIDEgIi4uL3N5c2RlcHMvZ2VuZXJpYy9zdGRpbnQuaCIg
MQojIDI4ICIuLi9zeXNkZXBzL2dlbmVyaWMvc3RkaW50LmgiCiMgMSAiLi4vc3lzZGVwcy93b3Jk
c2l6ZS0zMi9iaXRzL3dvcmRzaXplLmgiIDEKIyAyOSAiLi4vc3lzZGVwcy9nZW5lcmljL3N0ZGlu
dC5oIiAyCiMgNDkgIi4uL3N5c2RlcHMvZ2VuZXJpYy9zdGRpbnQuaCIKdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIHVpbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVpbnQxNl90OwoKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7CgoKCgoKX19leHRlbnNpb25fXwp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgbG9uZyBpbnQgdWludDY0X3Q7CgoKCgoKCnR5cGVkZWYgc2lnbmVkIGNoYXIg
aW50X2xlYXN0OF90Owp0eXBlZGVmIHNob3J0IGludCBpbnRfbGVhc3QxNl90Owp0eXBlZGVmIGlu
dCBpbnRfbGVhc3QzMl90OwoKCgpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgbG9uZyBsb25nIGludCBp
bnRfbGVhc3Q2NF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9sZWFzdDhfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQg
aW50IHVpbnRfbGVhc3QzMl90OwoKCgpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBsb25nIGludCB1aW50X2xlYXN0NjRfdDsKCgoKCgoKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRf
ZmFzdDhfdDsKCgoKCgp0eXBlZGVmIGludCBpbnRfZmFzdDE2X3Q7CnR5cGVkZWYgaW50IGludF9m
YXN0MzJfdDsKX19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgaW50X2Zhc3Q2NF90
OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9mYXN0OF90OwoKCgoKCnR5cGVkZWYgdW5z
aWduZWQgaW50IHVpbnRfZmFzdDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRfZmFzdDMy
X3Q7Cl9fZXh0ZW5zaW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRfZmFz
dDY0X3Q7CiMgMTI5ICIuLi9zeXNkZXBzL2dlbmVyaWMvc3RkaW50LmgiCnR5cGVkZWYgdW5zaWdu
ZWQgaW50IHVpbnRwdHJfdDsKIyAxMzggIi4uL3N5c2RlcHMvZ2VuZXJpYy9zdGRpbnQuaCIKX19l
eHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgaW50bWF4X3Q7Cl9fZXh0ZW5zaW9uX18K
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRtYXhfdDsKIyAyNCAiLi4vaW5ldC9u
ZXRpbmV0L2luLmgiIDIKCgoKCgoKZW51bQogIHsKICAgIElQUFJPVE9fSVAgPSAwLAoKICAgIElQ
UFJPVE9fSE9QT1BUUyA9IDAsCgogICAgSVBQUk9UT19JQ01QID0gMSwKCiAgICBJUFBST1RPX0lH
TVAgPSAyLAoKICAgIElQUFJPVE9fSVBJUCA9IDQsCgogICAgSVBQUk9UT19UQ1AgPSA2LAoKICAg
IElQUFJPVE9fRUdQID0gOCwKCiAgICBJUFBST1RPX1BVUCA9IDEyLAoKICAgIElQUFJPVE9fVURQ
ID0gMTcsCgogICAgSVBQUk9UT19JRFAgPSAyMiwKCiAgICBJUFBST1RPX1RQID0gMjksCgogICAg
SVBQUk9UT19JUFY2ID0gNDEsCgogICAgSVBQUk9UT19ST1VUSU5HID0gNDMsCgogICAgSVBQUk9U
T19GUkFHTUVOVCA9IDQ0LAoKICAgIElQUFJPVE9fUlNWUCA9IDQ2LAoKICAgIElQUFJPVE9fR1JF
ID0gNDcsCgogICAgSVBQUk9UT19FU1AgPSA1MCwKCiAgICBJUFBST1RPX0FIID0gNTEsCgogICAg
SVBQUk9UT19JQ01QVjYgPSA1OCwKCiAgICBJUFBST1RPX05PTkUgPSA1OSwKCiAgICBJUFBST1RP
X0RTVE9QVFMgPSA2MCwKCiAgICBJUFBST1RPX01UUCA9IDkyLAoKICAgIElQUFJPVE9fRU5DQVAg
PSA5OCwKCiAgICBJUFBST1RPX1BJTSA9IDEwMywKCiAgICBJUFBST1RPX0NPTVAgPSAxMDgsCgog
ICAgSVBQUk9UT19SQVcgPSAyNTUsCgogICAgSVBQUk9UT19NQVgKICB9OwoKCgp0eXBlZGVmIHVp
bnQxNl90IGluX3BvcnRfdDsKCgplbnVtCiAgewogICAgSVBQT1JUX0VDSE8gPSA3LAogICAgSVBQ
T1JUX0RJU0NBUkQgPSA5LAogICAgSVBQT1JUX1NZU1RBVCA9IDExLAogICAgSVBQT1JUX0RBWVRJ
TUUgPSAxMywKICAgIElQUE9SVF9ORVRTVEFUID0gMTUsCiAgICBJUFBPUlRfRlRQID0gMjEsCiAg
ICBJUFBPUlRfVEVMTkVUID0gMjMsCiAgICBJUFBPUlRfU01UUCA9IDI1LAogICAgSVBQT1JUX1RJ
TUVTRVJWRVIgPSAzNywKICAgIElQUE9SVF9OQU1FU0VSVkVSID0gNDIsCiAgICBJUFBPUlRfV0hP
SVMgPSA0MywKICAgIElQUE9SVF9NVFAgPSA1NywKCiAgICBJUFBPUlRfVEZUUCA9IDY5LAogICAg
SVBQT1JUX1JKRSA9IDc3LAogICAgSVBQT1JUX0ZJTkdFUiA9IDc5LAogICAgSVBQT1JUX1RUWUxJ
TksgPSA4NywKICAgIElQUE9SVF9TVVBEVVAgPSA5NSwKCgogICAgSVBQT1JUX0VYRUNTRVJWRVIg
PSA1MTIsCiAgICBJUFBPUlRfTE9HSU5TRVJWRVIgPSA1MTMsCiAgICBJUFBPUlRfQ01EU0VSVkVS
ID0gNTE0LAogICAgSVBQT1JUX0VGU1NFUlZFUiA9IDUyMCwKCgogICAgSVBQT1JUX0JJRkZVRFAg
PSA1MTIsCiAgICBJUFBPUlRfV0hPU0VSVkVSID0gNTEzLAogICAgSVBQT1JUX1JPVVRFU0VSVkVS
ID0gNTIwLAoKCiAgICBJUFBPUlRfUkVTRVJWRUQgPSAxMDI0LAoKCiAgICBJUFBPUlRfVVNFUlJF
U0VSVkVEID0gNTAwMAogIH07CgoKCnR5cGVkZWYgdWludDMyX3QgaW5fYWRkcl90OwpzdHJ1Y3Qg
aW5fYWRkcgogIHsKICAgIGluX2FkZHJfdCBzX2FkZHI7CiAgfTsKIyAxOTAgIi4uL2luZXQvbmV0
aW5ldC9pbi5oIgpzdHJ1Y3QgaW42X2FkZHIKICB7CiAgICB1bmlvbgogICAgICB7CiAgICAgICAg
dWludDhfdCB1Nl9hZGRyOFsxNl07CiAgICAgICAgdWludDE2X3QgdTZfYWRkcjE2WzhdOwogICAg
ICAgIHVpbnQzMl90IHU2X2FkZHIzMls0XTsKICAgICAgfSBpbjZfdTsKCgoKICB9OwoKZXh0ZXJu
IGNvbnN0IHN0cnVjdCBpbjZfYWRkciBpbjZhZGRyX2FueTsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBp
bjZfYWRkciBpbjZhZGRyX2xvb3BiYWNrOwoKCgoKCgoKIyAxICIuLi9zeXNkZXBzL3VuaXgvc3lz
di9saW51eC9iaXRzL3NvY2tldC5oIiAxCiMgMjkgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L2JpdHMvc29ja2V0LmgiCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LXBjLWxpbnV4LWdudS8z
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L2JpdHMvc29ja2V0LmgiIDIKCiMgMSAiLi4vaW5jbHVkZS9saW1pdHMuaCIgMQojIDE0NCAiLi4v
aW5jbHVkZS9saW1pdHMuaCIKIyAxICIuLi9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxCiMg
MTQ1ICIuLi9pbmNsdWRlL2xpbWl0cy5oIiAyCgoKCiMgMSAiLi4vaW5jbHVkZS9iaXRzL3Bvc2l4
Ml9saW0uaCIgMQojIDE0OSAiLi4vaW5jbHVkZS9saW1pdHMuaCIgMgojIDMyICIuLi9zeXNkZXBz
L3VuaXgvc3lzdi9saW51eC9iaXRzL3NvY2tldC5oIiAyCiMgMSAiLi4vaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMQojIDMzICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NvY2tldC5oIiAy
CiMgNDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2JpdHMvc29ja2V0LmgiCmVudW0gX19z
b2NrZXRfdHlwZQp7CiAgU09DS19TVFJFQU0gPSAxLAoKCiAgU09DS19ER1JBTSA9IDIsCgoKICBT
T0NLX1JBVyA9IDMsCgogIFNPQ0tfUkRNID0gNCwKCiAgU09DS19TRVFQQUNLRVQgPSA1LAoKCiAg
U09DS19QQUNLRVQgPSAxMAoKCgp9OwojIDE0MiAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgv
Yml0cy9zb2NrZXQuaCIKIyAxICIuLi9zeXNkZXBzL2dlbmVyaWMvYml0cy9zb2NrYWRkci5oIiAx
CiMgMjkgIi4uL3N5c2RlcHMvZ2VuZXJpYy9iaXRzL3NvY2thZGRyLmgiCnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgaW50IHNhX2ZhbWlseV90OwojIDE0MyAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGlu
dXgvYml0cy9zb2NrZXQuaCIgMgoKCnN0cnVjdCBzb2NrYWRkcgogIHsKICAgIHNhX2ZhbWlseV90
IHNhX2ZhbWlseTsKICAgIGNoYXIgc2FfZGF0YVsxNF07CiAgfTsKIyAxNjIgIi4uL3N5c2RlcHMv
dW5peC9zeXN2L2xpbnV4L2JpdHMvc29ja2V0LmgiCnN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlCiAg
ewogICAgc2FfZmFtaWx5X3Qgc3NfZmFtaWx5OwogICAgX191aW50MzJfdCBfX3NzX2FsaWduOwog
ICAgY2hhciBfX3NzX3BhZGRpbmdbKDEyOCAtICgyICogc2l6ZW9mIChfX3VpbnQzMl90KSkpXTsK
ICB9OwoKCgplbnVtCiAgewogICAgTVNHX09PQiA9IDB4MDEsCgogICAgTVNHX1BFRUsgPSAweDAy
LAoKICAgIE1TR19ET05UUk9VVEUgPSAweDA0LAoKCgogICAgTVNHX1RSWUhBUkQgPSBNU0dfRE9O
VFJPVVRFLAoKCiAgICBNU0dfQ1RSVU5DID0gMHgwOCwKCiAgICBNU0dfUFJPWFkgPSAweDEwLAoK
ICAgIE1TR19UUlVOQyA9IDB4MjAsCgogICAgTVNHX0RPTlRXQUlUID0gMHg0MCwKCiAgICBNU0df
RU9SID0gMHg4MCwKCiAgICBNU0dfV0FJVEFMTCA9IDB4MTAwLAoKICAgIE1TR19GSU4gPSAweDIw
MCwKCiAgICBNU0dfU1lOID0gMHg0MDAsCgogICAgTVNHX0NPTkZJUk0gPSAweDgwMCwKCiAgICBN
U0dfUlNUID0gMHgxMDAwLAoKICAgIE1TR19FUlJRVUVVRSA9IDB4MjAwMCwKCiAgICBNU0dfTk9T
SUdOQUwgPSAweDQwMDAsCgogICAgTVNHX01PUkUgPSAweDgwMDAKCiAgfTsKCgoKCnN0cnVjdCBt
c2doZHIKICB7CiAgICB2b2lkICptc2dfbmFtZTsKICAgIHNvY2tsZW5fdCBtc2dfbmFtZWxlbjsK
CiAgICBzdHJ1Y3QgaW92ZWMgKm1zZ19pb3Y7CiAgICBpbnQgbXNnX2lvdmxlbjsKCiAgICB2b2lk
ICptc2dfY29udHJvbDsKICAgIHNvY2tsZW5fdCBtc2dfY29udHJvbGxlbjsKCiAgICBpbnQgbXNn
X2ZsYWdzOwogIH07CgoKc3RydWN0IGNtc2doZHIKICB7CiAgICBzaXplX3QgY21zZ19sZW47Cgog
ICAgaW50IGNtc2dfbGV2ZWw7CiAgICBpbnQgY21zZ190eXBlOwoKICAgIF9fZXh0ZW5zaW9uX18g
dW5zaWduZWQgY2hhciBfX2Ntc2dfZGF0YSBbXTsKCiAgfTsKIyAyNTcgIi4uL3N5c2RlcHMvdW5p
eC9zeXN2L2xpbnV4L2JpdHMvc29ja2V0LmgiCmV4dGVybiBzdHJ1Y3QgY21zZ2hkciAqX19jbXNn
X254dGhkciAoc3RydWN0IG1zZ2hkciAqX19taGRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBjbXNnaGRyICpfX2Ntc2cpIDsKCgoKCmV4dGVybiBfX2lubGlu
ZSBzdHJ1Y3QgY21zZ2hkciAqCl9fY21zZ19ueHRoZHIgKHN0cnVjdCBtc2doZHIgKl9fbWhkciwg
c3RydWN0IGNtc2doZHIgKl9fY21zZykKewogIGlmICgoc2l6ZV90KSBfX2Ntc2ctPmNtc2dfbGVu
IDwgc2l6ZW9mIChzdHJ1Y3QgY21zZ2hkcikpCgogICAgcmV0dXJuIDA7CgogIF9fY21zZyA9IChz
dHJ1Y3QgY21zZ2hkciAqKSAoKHVuc2lnbmVkIGNoYXIgKikgX19jbXNnCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICArICgoKF9fY21zZy0+Y21zZ19sZW4pICsgc2l6ZW9mIChzaXplX3Qp
IC0gMSkgJiAoc2l6ZV90KSB+KHNpemVvZiAoc2l6ZV90KSAtIDEpKSk7CiAgaWYgKCh1bnNpZ25l
ZCBjaGFyICopIChfX2Ntc2cgKyAxKSA+ICgodW5zaWduZWQgY2hhciAqKSBfX21oZHItPm1zZ19j
b250cm9sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIF9fbWhkci0+
bXNnX2NvbnRyb2xsZW4pCiAgICAgIHx8ICgodW5zaWduZWQgY2hhciAqKSBfX2Ntc2cgKyAoKChf
X2Ntc2ctPmNtc2dfbGVuKSArIHNpemVvZiAoc2l6ZV90KSAtIDEpICYgKHNpemVfdCkgfihzaXpl
b2YgKHNpemVfdCkgLSAxKSkKICAgICAgICAgID4gKCh1bnNpZ25lZCBjaGFyICopIF9fbWhkci0+
bXNnX2NvbnRyb2wgKyBfX21oZHItPm1zZ19jb250cm9sbGVuKSkpCgogICAgcmV0dXJuIDA7CiAg
cmV0dXJuIF9fY21zZzsKfQoKCgoKZW51bQogIHsKICAgIFNDTV9SSUdIVFMgPSAweDAxLAoKCiAg
ICBTQ01fQ1JFREVOVElBTFMgPSAweDAyLAoKCiAgICBfX1NDTV9DT05ORUNUID0gMHgwMwogIH07
CgoKCnN0cnVjdCB1Y3JlZAp7CiAgcGlkX3QgcGlkOwogIHVpZF90IHVpZDsKICBnaWRfdCBnaWQ7
Cn07CgoKIyAxICIvdXNyL3NyYy9saW51eC10aGlzL2luY2x1ZGUvYXNtL3NvY2tldC5oIiAxIDMK
CgoKIyAxICIvdXNyL3NyYy9saW51eC10aGlzL2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMSAzCiMg
NSAiL3Vzci9zcmMvbGludXgtdGhpcy9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMiAzCiMgMzA2ICIu
Li9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NvY2tldC5oIiAyCgoKCnN0cnVjdCBsaW5n
ZXIKICB7CiAgICBpbnQgbF9vbm9mZjsKICAgIGludCBsX2xpbmdlcjsKICB9OwojIDIxMyAiLi4v
aW5ldC9uZXRpbmV0L2luLmgiIDIKCgoKc3RydWN0IHNvY2thZGRyX2luCiAgewogICAgc2FfZmFt
aWx5X3Qgc2luX2ZhbWlseTsKICAgIGluX3BvcnRfdCBzaW5fcG9ydDsKICAgIHN0cnVjdCBpbl9h
ZGRyIHNpbl9hZGRyOwoKCiAgICB1bnNpZ25lZCBjaGFyIHNpbl96ZXJvW3NpemVvZiAoc3RydWN0
IHNvY2thZGRyKSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaXplb2YgKHVuc2lnbmVk
IHNob3J0IGludCkpIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChpbl9wb3J0
X3QpIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChzdHJ1Y3QgaW5fYWRkcild
OwogIH07CgoKc3RydWN0IHNvY2thZGRyX2luNgogIHsKICAgIHNhX2ZhbWlseV90IHNpbjZfZmFt
aWx5OwogICAgaW5fcG9ydF90IHNpbjZfcG9ydDsKICAgIHVpbnQzMl90IHNpbjZfZmxvd2luZm87
CiAgICBzdHJ1Y3QgaW42X2FkZHIgc2luNl9hZGRyOwogICAgdWludDMyX3Qgc2luNl9zY29wZV9p
ZDsKICB9OwoKCnN0cnVjdCBpcHY2X21yZXEKICB7CgogICAgc3RydWN0IGluNl9hZGRyIGlwdjZt
cl9tdWx0aWFkZHI7CgoKICAgIHVuc2lnbmVkIGludCBpcHY2bXJfaW50ZXJmYWNlOwogIH07CgoK
IyAxICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL2luLmgiIDEKIyA2NiAiLi4vc3lz
ZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9pbi5oIgpzdHJ1Y3QgaXBfb3B0cwogIHsKICAgIHN0
cnVjdCBpbl9hZGRyIGlwX2RzdDsKICAgIGNoYXIgaXBfb3B0c1s0MF07CiAgfTsKCgpzdHJ1Y3Qg
aXBfbXJlcQogIHsKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9tdWx0aWFkZHI7CiAgICBzdHJ1Y3Qg
aW5fYWRkciBpbXJfaW50ZXJmYWNlOwogIH07CgoKc3RydWN0IGlwX21yZXFuCiAgewogICAgc3Ry
dWN0IGluX2FkZHIgaW1yX211bHRpYWRkcjsKICAgIHN0cnVjdCBpbl9hZGRyIGltcl9hZGRyZXNz
OwogICAgaW50IGltcl9pZmluZGV4OwogIH07CgoKc3RydWN0IGluX3BrdGluZm8KICB7CiAgICBp
bnQgaXBpX2lmaW5kZXg7CiAgICBzdHJ1Y3QgaW5fYWRkciBpcGlfc3BlY19kc3Q7CiAgICBzdHJ1
Y3QgaW5fYWRkciBpcGlfYWRkcjsKICB9OwojIDI1MSAiLi4vaW5ldC9uZXRpbmV0L2luLmgiIDIK
IyAyNTkgIi4uL2luZXQvbmV0aW5ldC9pbi5oIgpleHRlcm4gdWludDMyX3QgbnRvaGwgKHVpbnQz
Ml90IF9fbmV0bG9uZykgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gdWludDE2
X3QgbnRvaHMgKHVpbnQxNl90IF9fbmV0c2hvcnQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwpleHRlcm4gdWludDMyX3QgaHRvbmwgKHVpbnQzMl90IF9faG9zdGxvbmcpCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gdWludDE2X3QgaHRvbnMgKHVpbnQx
Nl90IF9faG9zdHNob3J0KQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiMgMSAi
Li4vaW5jbHVkZS9lbmRpYW4uaCIgMQojIDI2OCAiLi4vaW5ldC9uZXRpbmV0L2luLmgiIDIKCgoj
IDEgIi4uL3N5c2RlcHMvaTM4Ni9iaXRzL2J5dGVzd2FwLmgiIDEKIyAyNzEgIi4uL2luZXQvbmV0
aW5ldC9pbi5oIiAyCiMgMzMzICIuLi9pbmV0L25ldGluZXQvaW4uaCIKZXh0ZXJuIGludCBiaW5k
cmVzdnBvcnQgKGludCBfX3NvY2tmZCwgc3RydWN0IHNvY2thZGRyX2luICpfX3NvY2tfaW4pIDsK
CgpleHRlcm4gaW50IGJpbmRyZXN2cG9ydDYgKGludCBfX3NvY2tmZCwgc3RydWN0IHNvY2thZGRy
X2luNiAqX19zb2NrX2luKQogICAgIDsKIyAzNjEgIi4uL2luZXQvbmV0aW5ldC9pbi5oIgpzdHJ1
Y3QgaW42X3BrdGluZm8KICB7CiAgICBzdHJ1Y3QgaW42X2FkZHIgaXBpNl9hZGRyOwogICAgdW5z
aWduZWQgaW50IGlwaTZfaWZpbmRleDsKICB9OwoKCiMgMiAiLi4vaW5jbHVkZS9uZXRpbmV0L2lu
LmgiIDIKIyA2NSAiLi4vcmVzb2x2L3Jlc29sdi5oIiAyCiMgMSAiLi4vaW5jbHVkZS9hcnBhL25h
bWVzZXIuaCIgMQojIDEgIi4uL3Jlc29sdi9hcnBhL25hbWVzZXIuaCIgMQojIDU4ICIuLi9yZXNv
bHYvYXJwYS9uYW1lc2VyLmgiCiMgMSAiLi4vaW5jbHVkZS9zeXMvYml0eXBlcy5oIiAxCiMgMSAi
Li4vcmVzb2x2L3N5cy9iaXR5cGVzLmgiIDEKCgojIDEgIi4uL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDEKIyA0ICIuLi9yZXNvbHYvc3lzL2JpdHlwZXMuaCIgMgojIDIgIi4uL2luY2x1ZGUvc3lzL2Jp
dHlwZXMuaCIgMgojIDU5ICIuLi9yZXNvbHYvYXJwYS9uYW1lc2VyLmgiIDIKCgoKIyAxICIuLi9p
bmNsdWRlL3N5cy9jZGVmcy5oIiAxCiMgNjMgIi4uL3Jlc29sdi9hcnBhL25hbWVzZXIuaCIgMgoj
IDk2ICIuLi9yZXNvbHYvYXJwYS9uYW1lc2VyLmgiCnR5cGVkZWYgZW51bSBfX25zX3NlY3Qgewog
ICAgICAgIG5zX3NfcWQgPSAwLAogICAgICAgIG5zX3Nfem4gPSAwLAogICAgICAgIG5zX3NfYW4g
PSAxLAogICAgICAgIG5zX3NfcHIgPSAxLAogICAgICAgIG5zX3NfbnMgPSAyLAogICAgICAgIG5z
X3NfdWQgPSAyLAogICAgICAgIG5zX3NfYXIgPSAzLAogICAgICAgIG5zX3NfbWF4ID0gNAp9IG5z
X3NlY3Q7CgoKCgoKCnR5cGVkZWYgc3RydWN0IF9fbnNfbXNnIHsKICAgICAgICBjb25zdCB1X2No
YXIgKl9tc2csICpfZW9tOwogICAgICAgIHVfaW50MTZfdCBfaWQsIF9mbGFncywgX2NvdW50c1tu
c19zX21heF07CiAgICAgICAgY29uc3QgdV9jaGFyICpfc2VjdGlvbnNbbnNfc19tYXhdOwogICAg
ICAgIG5zX3NlY3QgX3NlY3Q7CiAgICAgICAgaW50IF9ycm51bTsKICAgICAgICBjb25zdCB1X2No
YXIgKl9wdHI7Cn0gbnNfbXNnOwoKCnN0cnVjdCBfbnNfZmxhZ2RhdGEgeyBpbnQgbWFzaywgc2hp
ZnQ7IH07CmV4dGVybiBzdHJ1Y3QgX25zX2ZsYWdkYXRhIF9uc19mbGFnZGF0YVtdOwojIDEzOSAi
Li4vcmVzb2x2L2FycGEvbmFtZXNlci5oIgp0eXBlZGVmIHN0cnVjdCBfX25zX3JyIHsKICAgICAg
ICBjaGFyIG5hbWVbMTAyNV07CiAgICAgICAgdV9pbnQxNl90IHR5cGU7CiAgICAgICAgdV9pbnQx
Nl90IHJyX2NsYXNzOwogICAgICAgIHVfaW50MzJfdCB0dGw7CiAgICAgICAgdV9pbnQxNl90IHJk
bGVuZ3RoOwogICAgICAgIGNvbnN0IHVfY2hhciAqIHJkYXRhOwp9IG5zX3JyOwojIDE2MSAiLi4v
cmVzb2x2L2FycGEvbmFtZXNlci5oIgp0eXBlZGVmIGVudW0gX19uc19mbGFnIHsKICAgICAgICBu
c19mX3FyLAogICAgICAgIG5zX2Zfb3Bjb2RlLAogICAgICAgIG5zX2ZfYWEsCiAgICAgICAgbnNf
Zl90YywKICAgICAgICBuc19mX3JkLAogICAgICAgIG5zX2ZfcmEsCiAgICAgICAgbnNfZl96LAog
ICAgICAgIG5zX2ZfYWQsCiAgICAgICAgbnNfZl9jZCwKICAgICAgICBuc19mX3Jjb2RlLAogICAg
ICAgIG5zX2ZfbWF4Cn0gbnNfZmxhZzsKCgoKCnR5cGVkZWYgZW51bSBfX25zX29wY29kZSB7CiAg
ICAgICAgbnNfb19xdWVyeSA9IDAsCiAgICAgICAgbnNfb19pcXVlcnkgPSAxLAogICAgICAgIG5z
X29fc3RhdHVzID0gMiwKCiAgICAgICAgbnNfb19ub3RpZnkgPSA0LAogICAgICAgIG5zX29fdXBk
YXRlID0gNSwKICAgICAgICBuc19vX21heCA9IDYKfSBuc19vcGNvZGU7CgoKCgp0eXBlZGVmIGVu
dW0gX19uc19yY29kZSB7CiAgICAgICAgbnNfcl9ub2Vycm9yID0gMCwKICAgICAgICBuc19yX2Zv
cm1lcnIgPSAxLAogICAgICAgIG5zX3Jfc2VydmZhaWwgPSAyLAogICAgICAgIG5zX3Jfbnhkb21h
aW4gPSAzLAogICAgICAgIG5zX3Jfbm90aW1wbCA9IDQsCiAgICAgICAgbnNfcl9yZWZ1c2VkID0g
NSwKCiAgICAgICAgbnNfcl95eGRvbWFpbiA9IDYsCiAgICAgICAgbnNfcl95eHJyc2V0ID0gNywK
ICAgICAgICBuc19yX254cnJzZXQgPSA4LAogICAgICAgIG5zX3Jfbm90YXV0aCA9IDksCiAgICAg
ICAgbnNfcl9ub3R6b25lID0gMTAsCiAgICAgICAgbnNfcl9tYXggPSAxMSwKCiAgICAgICAgbnNf
cl9iYWRzaWcgPSAxNiwKICAgICAgICBuc19yX2JhZGtleSA9IDE3LAogICAgICAgIG5zX3JfYmFk
dGltZSA9IDE4Cn0gbnNfcmNvZGU7CgoKdHlwZWRlZiBlbnVtIF9fbnNfdXBkYXRlX29wZXJhdGlv
biB7CiAgICAgICAgbnNfdW9wX2RlbGV0ZSA9IDAsCiAgICAgICAgbnNfdW9wX2FkZCA9IDEsCiAg
ICAgICAgbnNfdW9wX21heCA9IDIKfSBuc191cGRhdGVfb3BlcmF0aW9uOwoKCgoKc3RydWN0IG5z
X3RzaWdfa2V5IHsKICAgICAgICBjaGFyIG5hbWVbMTAyNV0sIGFsZ1sxMDI1XTsKICAgICAgICB1
bnNpZ25lZCBjaGFyICpkYXRhOwogICAgICAgIGludCBsZW47Cn07CnR5cGVkZWYgc3RydWN0IG5z
X3RzaWdfa2V5IG5zX3RzaWdfa2V5OwoKCgoKc3RydWN0IG5zX3RjcF90c2lnX3N0YXRlIHsKICAg
ICAgICBpbnQgY291bnRlcjsKICAgICAgICBzdHJ1Y3QgZHN0X2tleSAqa2V5OwogICAgICAgIHZv
aWQgKmN0eDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNpZ1s1MTJdOwogICAgICAgIGludCBzaWds
ZW47Cn07CnR5cGVkZWYgc3RydWN0IG5zX3RjcF90c2lnX3N0YXRlIG5zX3RjcF90c2lnX3N0YXRl
OwojIDI1MSAiLi4vcmVzb2x2L2FycGEvbmFtZXNlci5oIgp0eXBlZGVmIGVudW0gX19uc190eXBl
IHsKICAgICAgICBuc190X2ludmFsaWQgPSAwLAogICAgICAgIG5zX3RfYSA9IDEsCiAgICAgICAg
bnNfdF9ucyA9IDIsCiAgICAgICAgbnNfdF9tZCA9IDMsCiAgICAgICAgbnNfdF9tZiA9IDQsCiAg
ICAgICAgbnNfdF9jbmFtZSA9IDUsCiAgICAgICAgbnNfdF9zb2EgPSA2LAogICAgICAgIG5zX3Rf
bWIgPSA3LAogICAgICAgIG5zX3RfbWcgPSA4LAogICAgICAgIG5zX3RfbXIgPSA5LAogICAgICAg
IG5zX3RfbnVsbCA9IDEwLAogICAgICAgIG5zX3Rfd2tzID0gMTEsCiAgICAgICAgbnNfdF9wdHIg
PSAxMiwKICAgICAgICBuc190X2hpbmZvID0gMTMsCiAgICAgICAgbnNfdF9taW5mbyA9IDE0LAog
ICAgICAgIG5zX3RfbXggPSAxNSwKICAgICAgICBuc190X3R4dCA9IDE2LAogICAgICAgIG5zX3Rf
cnAgPSAxNywKICAgICAgICBuc190X2Fmc2RiID0gMTgsCiAgICAgICAgbnNfdF94MjUgPSAxOSwK
ICAgICAgICBuc190X2lzZG4gPSAyMCwKICAgICAgICBuc190X3J0ID0gMjEsCiAgICAgICAgbnNf
dF9uc2FwID0gMjIsCiAgICAgICAgbnNfdF9uc2FwX3B0ciA9IDIzLAogICAgICAgIG5zX3Rfc2ln
ID0gMjQsCiAgICAgICAgbnNfdF9rZXkgPSAyNSwKICAgICAgICBuc190X3B4ID0gMjYsCiAgICAg
ICAgbnNfdF9ncG9zID0gMjcsCiAgICAgICAgbnNfdF9hYWFhID0gMjgsCiAgICAgICAgbnNfdF9s
b2MgPSAyOSwKICAgICAgICBuc190X254dCA9IDMwLAogICAgICAgIG5zX3RfZWlkID0gMzEsCiAg
ICAgICAgbnNfdF9uaW1sb2MgPSAzMiwKICAgICAgICBuc190X3NydiA9IDMzLAogICAgICAgIG5z
X3RfYXRtYSA9IDM0LAogICAgICAgIG5zX3RfbmFwdHIgPSAzNSwKICAgICAgICBuc190X2t4ID0g
MzYsCiAgICAgICAgbnNfdF9jZXJ0ID0gMzcsCiAgICAgICAgbnNfdF9hNiA9IDM4LAogICAgICAg
IG5zX3RfZG5hbWUgPSAzOSwKICAgICAgICBuc190X3NpbmsgPSA0MCwKICAgICAgICBuc190X29w
dCA9IDQxLAogICAgICAgIG5zX3RfdHNpZyA9IDI1MCwKICAgICAgICBuc190X2l4ZnIgPSAyNTEs
CiAgICAgICAgbnNfdF9heGZyID0gMjUyLAogICAgICAgIG5zX3RfbWFpbGIgPSAyNTMsCiAgICAg
ICAgbnNfdF9tYWlsYSA9IDI1NCwKICAgICAgICBuc190X2FueSA9IDI1NSwKICAgICAgICBuc190
X3p4ZnIgPSAyNTYsCiAgICAgICAgbnNfdF9tYXggPSA2NTUzNgp9IG5zX3R5cGU7CiMgMzE4ICIu
Li9yZXNvbHYvYXJwYS9uYW1lc2VyLmgiCnR5cGVkZWYgZW51bSBfX25zX2NsYXNzIHsKICAgICAg
ICBuc19jX2ludmFsaWQgPSAwLAogICAgICAgIG5zX2NfaW4gPSAxLAogICAgICAgIG5zX2NfMiA9
IDIsCiAgICAgICAgbnNfY19jaGFvcyA9IDMsCiAgICAgICAgbnNfY19ocyA9IDQsCgogICAgICAg
IG5zX2Nfbm9uZSA9IDI1NCwKICAgICAgICBuc19jX2FueSA9IDI1NSwKICAgICAgICBuc19jX21h
eCA9IDY1NTM2Cn0gbnNfY2xhc3M7CgoKCnR5cGVkZWYgZW51bSBfX25zX2tleV90eXBlcyB7CiAg
ICAgICAgbnNfa3RfcnNhID0gMSwKICAgICAgICBuc19rdF9kaCA9IDIsCiAgICAgICAgbnNfa3Rf
ZHNhID0gMywKICAgICAgICBuc19rdF9wcml2YXRlID0gMjU0Cn0gbnNfa2V5X3R5cGVzOwoKdHlw
ZWRlZiBlbnVtIF9fbnNfY2VydF90eXBlcyB7CiAgICAgICAgY2VydF90X3BraXggPSAxLAogICAg
ICAgIGNlcnRfdF9zcGtpID0gMiwKICAgICAgICBjZXJ0X3RfcGdwID0gMywKICAgICAgICBjZXJ0
X3RfdXJsID0gMjUzLAogICAgICAgIGNlcnRfdF9vaWQgPSAyNTQKfSBuc19jZXJ0X3R5cGVzOwoj
IDUwMSAiLi4vcmVzb2x2L2FycGEvbmFtZXNlci5oIgoKdV9pbnQgX19uc19nZXQxNiAoY29uc3Qg
dV9jaGFyICopIDsKdV9sb25nIF9fbnNfZ2V0MzIgKGNvbnN0IHVfY2hhciAqKSA7CnZvaWQgX19u
c19wdXQxNiAodV9pbnQsIHVfY2hhciAqKSA7CnZvaWQgX19uc19wdXQzMiAodV9sb25nLCB1X2No
YXIgKikgOwppbnQgX19uc19pbml0cGFyc2UgKGNvbnN0IHVfY2hhciAqLCBpbnQsIG5zX21zZyAq
KSA7CmludCBfX25zX3NraXByciAoY29uc3QgdV9jaGFyICosIGNvbnN0IHVfY2hhciAqLCBuc19z
ZWN0LCBpbnQpIDsKaW50IF9fbnNfcGFyc2VyciAobnNfbXNnICosIG5zX3NlY3QsIGludCwgbnNf
cnIgKikgOwppbnQgX19uc19zcHJpbnRyciAoY29uc3QgbnNfbXNnICosIGNvbnN0IG5zX3JyICos
IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICosIHNpemVfdCkgOwoKaW50IF9fbnNf
c3ByaW50cnJmIChjb25zdCB1X2NoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIG5zX2NsYXNz
LCBuc190eXBlLCB1X2xvbmcsIGNvbnN0IHVfY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqLCBjaGFyICosIHNpemVfdCkgOwoKCgppbnQgX19uc19mb3JtYXRfdHRsICh1
X2xvbmcsIGNoYXIgKiwgc2l6ZV90KSA7CmludCBfX25zX3BhcnNlX3R0bCAoY29uc3QgY2hhciAq
LCB1X2xvbmcgKikgOwp1X2ludDMyX3QgX19uc19kYXRldG9zZWNzIChjb25zdCBjaGFyICpjcCwg
aW50ICplcnJwKSA7CmludCBfX25zX25hbWVfbnRvbCAoY29uc3QgdV9jaGFyICosIHVfY2hhciAq
LCBzaXplX3QpIDsKaW50IF9fbnNfbmFtZV9udG9wIChjb25zdCB1X2NoYXIgKiwgY2hhciAqLCBz
aXplX3QpIDsKaW50IF9fbnNfbmFtZV9wdG9uIChjb25zdCBjaGFyICosIHVfY2hhciAqLCBzaXpl
X3QpIDsKaW50IF9fbnNfbmFtZV91bnBhY2sgKGNvbnN0IHVfY2hhciAqLCBjb25zdCB1X2NoYXIg
KiwgY29uc3QgdV9jaGFyICosIHVfY2hhciAqLCBzaXplX3QpIDsKCmludCBfX25zX25hbWVfcGFj
ayAoY29uc3QgdV9jaGFyICosIHVfY2hhciAqLCBpbnQsIGNvbnN0IHVfY2hhciAqKiwgY29uc3Qg
dV9jaGFyICoqKSA7CgppbnQgX19uc19uYW1lX3VuY29tcHJlc3MgKGNvbnN0IHVfY2hhciAqLCBj
b25zdCB1X2NoYXIgKiwgY29uc3QgdV9jaGFyICosIGNoYXIgKiwgc2l6ZV90KSA7CgppbnQgX19u
c19uYW1lX2NvbXByZXNzIChjb25zdCBjaGFyICosIHVfY2hhciAqLCBzaXplX3QsIGNvbnN0IHVf
Y2hhciAqKiwgY29uc3QgdV9jaGFyICoqKSA7CgppbnQgX19uc19uYW1lX3NraXAgKGNvbnN0IHVf
Y2hhciAqKiwgY29uc3QgdV9jaGFyICopIDsKdm9pZCBfX25zX25hbWVfcm9sbGJhY2sgKGNvbnN0
IHVfY2hhciAqLCBjb25zdCB1X2NoYXIgKiosIGNvbnN0IHVfY2hhciAqKikgOwoKaW50IF9fbnNf
c2lnbiAodV9jaGFyICosIGludCAqLCBpbnQsIGludCwgdm9pZCAqLCBjb25zdCB1X2NoYXIgKiwg
aW50LCB1X2NoYXIgKiwgaW50ICosIHRpbWVfdCkgOwoKaW50IF9fbnNfc2lnbl90Y3AgKHVfY2hh
ciAqLCBpbnQgKiwgaW50LCBpbnQsIG5zX3RjcF90c2lnX3N0YXRlICosIGludCkgOwoKaW50IF9f
bnNfc2lnbl90Y3BfaW5pdCAodm9pZCAqLCBjb25zdCB1X2NoYXIgKiwgaW50LCBuc190Y3BfdHNp
Z19zdGF0ZSAqKSA7Cgp1X2NoYXIgKl9fbnNfZmluZF90c2lnICh1X2NoYXIgKiwgdV9jaGFyICop
IDsKaW50IF9fbnNfdmVyaWZ5ICh1X2NoYXIgKiwgaW50ICosIHZvaWQgKiwgY29uc3QgdV9jaGFy
ICosIGludCwgdV9jaGFyICosIGludCAqLCB0aW1lX3QgKiwgaW50KSA7CgoKaW50IF9fbnNfdmVy
aWZ5X3RjcCAodV9jaGFyICosIGludCAqLCBuc190Y3BfdHNpZ19zdGF0ZSAqLCBpbnQpIDsKaW50
IF9fbnNfdmVyaWZ5X3RjcF9pbml0ICh2b2lkICosIGNvbnN0IHVfY2hhciAqLCBpbnQsIG5zX3Rj
cF90c2lnX3N0YXRlICopIDsKCmludCBfX25zX3NhbWVkb21haW4gKGNvbnN0IGNoYXIgKiwgY29u
c3QgY2hhciAqKSA7CmludCBfX25zX3N1YmRvbWFpbiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICopIDsKaW50IF9fbnNfbWFrZWNhbm9uIChjb25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90KSA7
CmludCBfX25zX3NhbWVuYW1lIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikgOwoKCgojIDEg
Ii4uL2luY2x1ZGUvYXJwYS9uYW1lc2VyX2NvbXBhdC5oIiAxCiMgMSAiLi4vcmVzb2x2L2FycGEv
bmFtZXNlcl9jb21wYXQuaCIgMQojIDM5ICIuLi9yZXNvbHYvYXJwYS9uYW1lc2VyX2NvbXBhdC5o
IgojIDEgIi4uL2luY2x1ZGUvZW5kaWFuLmgiIDEKIyA0MCAiLi4vcmVzb2x2L2FycGEvbmFtZXNl
cl9jb21wYXQuaCIgMgojIDQ4ICIuLi9yZXNvbHYvYXJwYS9uYW1lc2VyX2NvbXBhdC5oIgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgaWQgOjE2OwojIDY2ICIuLi9yZXNvbHYvYXJw
YS9uYW1lc2VyX2NvbXBhdC5oIgogICAgICAgIHVuc2lnbmVkIHJkIDoxOwogICAgICAgIHVuc2ln
bmVkIHRjIDoxOwogICAgICAgIHVuc2lnbmVkIGFhIDoxOwogICAgICAgIHVuc2lnbmVkIG9wY29k
ZSA6NDsKICAgICAgICB1bnNpZ25lZCBxciA6MTsKCiAgICAgICAgdW5zaWduZWQgcmNvZGUgOjQ7
CiAgICAgICAgdW5zaWduZWQgY2Q6IDE7CiAgICAgICAgdW5zaWduZWQgYWQ6IDE7CiAgICAgICAg
dW5zaWduZWQgdW51c2VkIDoxOwogICAgICAgIHVuc2lnbmVkIHJhIDoxOwoKCiAgICAgICAgdW5z
aWduZWQgcWRjb3VudCA6MTY7CiAgICAgICAgdW5zaWduZWQgYW5jb3VudCA6MTY7CiAgICAgICAg
dW5zaWduZWQgbnNjb3VudCA6MTY7CiAgICAgICAgdW5zaWduZWQgYXJjb3VudCA6MTY7Cn0gSEVB
REVSOwojIDIgIi4uL2luY2x1ZGUvYXJwYS9uYW1lc2VyX2NvbXBhdC5oIiAyCiMgNTUzICIuLi9y
ZXNvbHYvYXJwYS9uYW1lc2VyLmgiIDIKIyAyICIuLi9pbmNsdWRlL2FycGEvbmFtZXNlci5oIiAy
CiMgNjYgIi4uL3Jlc29sdi9yZXNvbHYuaCIgMgojIDg3ICIuLi9yZXNvbHYvcmVzb2x2LmgiCnR5
cGVkZWYgZW51bSB7IHJlc19nb2FoZWFkLCByZXNfbmV4dG5zLCByZXNfbW9kaWZpZWQsIHJlc19k
b25lLCByZXNfZXJyb3IgfQogICAgICAgIHJlc19zZW5kaG9va2FjdDsKCnR5cGVkZWYgcmVzX3Nl
bmRob29rYWN0ICgqcmVzX3NlbmRfcWhvb2spIChzdHJ1Y3Qgc29ja2FkZHJfaW4gKiBjb25zdCAq
bnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1X2No
YXIgKipxdWVyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCAqcXVlcnlsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
X2NoYXIgKmFucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBhbnNzaXosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
KnJlc3BsZW4pOwoKdHlwZWRlZiByZXNfc2VuZGhvb2thY3QgKCpyZXNfc2VuZF9yaG9vaykgKGNv
bnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1X2NoYXIgKnF1ZXJ5LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHF1ZXJ5bGVuLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICphbnMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgYW5zc2l6LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ICpyZXNwbGVuKTsKCnN0cnVjdCByZXNfc3ltIHsKICAgICAg
ICBpbnQgbnVtYmVyOwogICAgICAgIGNoYXIgKiBuYW1lOwogICAgICAgIGNoYXIgKiBodW1hbm5h
bWU7Cn07CiMgMTI2ICIuLi9yZXNvbHYvcmVzb2x2LmgiCnN0cnVjdCBfX3Jlc19zdGF0ZSB7CiAg
ICAgICAgaW50IHJldHJhbnM7CiAgICAgICAgaW50IHJldHJ5OwogICAgICAgIHVfbG9uZyBvcHRp
b25zOwogICAgICAgIGludCBuc2NvdW50OwogICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbgogICAg
ICAgICAgICAgICAgbnNhZGRyX2xpc3RbM107CgogICAgICAgIHVfc2hvcnQgaWQ7CiAgICAgICAg
Y2hhciAqZG5zcmNoWzYgKzFdOwogICAgICAgIGNoYXIgZGVmZG5hbWVbMjU2XTsKICAgICAgICB1
X2xvbmcgcGZjb2RlOwogICAgICAgIHVuc2lnbmVkIG5kb3RzOjQ7CiAgICAgICAgdW5zaWduZWQg
bnNvcnQ6NDsKICAgICAgICBjaGFyIHVudXNlZFszXTsKICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgc3RydWN0IGluX2FkZHIgYWRkcjsKICAgICAgICAgICAgICAgIHVfaW50MzJfdCBt
YXNrOwogICAgICAgIH0gc29ydF9saXN0WzEwXTsKICAgICAgICByZXNfc2VuZF9xaG9vayBxaG9v
azsKICAgICAgICByZXNfc2VuZF9yaG9vayByaG9vazsKICAgICAgICBpbnQgcmVzX2hfZXJybm87
CiAgICAgICAgaW50IF92Y3NvY2s7CiAgICAgICAgdV9pbnQgX2ZsYWdzOwogICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgICAgIGNoYXIgcGFkWzUyXTsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50MTZfdCBuc2NvdW50OwogICAgICAgICAgICAg
ICAgICAgICAgICB1X2ludDE2X3QgbnN0aW1lc1szXTsKICAgICAgICAgICAgICAgICAgICAgICAg
aW50IG5zc29ja3NbM107CiAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50MTZfdCBuc2NvdW50
NjsKICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQxNl90IG5zaW5pdDsKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiAqbnNhZGRyc1szXTsKICAgICAgICAgICAg
ICAgIH0gX2V4dDsKICAgICAgICB9IF91Owp9OwoKdHlwZWRlZiBzdHJ1Y3QgX19yZXNfc3RhdGUg
KnJlc19zdGF0ZTsKIyAyMjAgIi4uL3Jlc29sdi9yZXNvbHYuaCIKCmV4dGVybiBzdHJ1Y3QgX19y
ZXNfc3RhdGUgKl9fcmVzX3N0YXRlKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CiMgMjQ0ICIuLi9yZXNvbHYvcmVzb2x2LmgiCgp2b2lkIF9fZnBfbnF1ZXJ5IChjb25zdCB1X2No
YXIgKiwgaW50LCBGSUxFICopIDsKdm9pZCBfX2ZwX3F1ZXJ5IChjb25zdCB1X2NoYXIgKiwgRklM
RSAqKSA7CmNvbnN0IGNoYXIgKiBfX2hvc3RhbGlhcyAoY29uc3QgY2hhciAqKSA7CnZvaWQgX19w
X3F1ZXJ5IChjb25zdCB1X2NoYXIgKikgOwp2b2lkIF9fcmVzX2Nsb3NlICh2b2lkKSA7CmludCBf
X3Jlc19pbml0ICh2b2lkKSA7CmludCBfX3Jlc19pc291cnNlcnZlciAoY29uc3Qgc3RydWN0IHNv
Y2thZGRyX2luICopIDsKaW50IF9fcmVzX21rcXVlcnkgKGludCwgY29uc3QgY2hhciAqLCBpbnQs
IGludCwgY29uc3QgdV9jaGFyICosIGludCwgY29uc3QgdV9jaGFyICosIHVfY2hhciAqLCBpbnQp
IDsKCmludCBfX3Jlc19xdWVyeSAoY29uc3QgY2hhciAqLCBpbnQsIGludCwgdV9jaGFyICosIGlu
dCkgOwppbnQgX19yZXNfcXVlcnlkb21haW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBp
bnQsIGludCwgdV9jaGFyICosIGludCkgOwoKaW50IF9fcmVzX3NlYXJjaCAoY29uc3QgY2hhciAq
LCBpbnQsIGludCwgdV9jaGFyICosIGludCkgOwppbnQgX19yZXNfc2VuZCAoY29uc3QgdV9jaGFy
ICosIGludCwgdV9jaGFyICosIGludCkgOwoKIyAyNzAgIi4uL3Jlc29sdi9yZXNvbHYuaCIKZXh0
ZXJuIGNvbnN0IHN0cnVjdCByZXNfc3ltIF9fcF9rZXlfc3ltc1tdOwpleHRlcm4gY29uc3Qgc3Ry
dWN0IHJlc19zeW0gX19wX2NlcnRfc3ltc1tdOwpleHRlcm4gY29uc3Qgc3RydWN0IHJlc19zeW0g
X19wX2NsYXNzX3N5bXNbXTsKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZXNfc3ltIF9fcF90eXBlX3N5
bXNbXTsKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZXNfc3ltIF9fcF9yY29kZV9zeW1zW107CiMgMzE5
ICIuLi9yZXNvbHYvcmVzb2x2LmgiCgppbnQgX19yZXNfaG5vayAoY29uc3QgY2hhciAqKSA7Cmlu
dCBfX3Jlc19vd25vayAoY29uc3QgY2hhciAqKSA7CmludCBfX3Jlc19tYWlsb2sgKGNvbnN0IGNo
YXIgKikgOwppbnQgX19yZXNfZG5vayAoY29uc3QgY2hhciAqKSA7CmludCBfX3N5bV9zdG9uIChj
b25zdCBzdHJ1Y3QgcmVzX3N5bSAqLCBjb25zdCBjaGFyICosIGludCAqKSA7CmNvbnN0IGNoYXIg
KiBfX3N5bV9udG9zIChjb25zdCBzdHJ1Y3QgcmVzX3N5bSAqLCBpbnQsIGludCAqKSA7CmNvbnN0
IGNoYXIgKiBfX3N5bV9udG9wIChjb25zdCBzdHJ1Y3QgcmVzX3N5bSAqLCBpbnQsIGludCAqKSA7
CmludCBfX2I2NF9udG9wICh1X2NoYXIgY29uc3QgKiwgc2l6ZV90LCBjaGFyICosIHNpemVfdCkg
OwppbnQgX19iNjRfcHRvbiAoY2hhciBjb25zdCAqLCB1X2NoYXIgKiwgc2l6ZV90KSA7CmludCBf
X2xvY19hdG9uIChjb25zdCBjaGFyICphc2NpaSwgdV9jaGFyICpiaW5hcnkpIDsKY29uc3QgY2hh
ciAqIF9fbG9jX250b2EgKGNvbnN0IHVfY2hhciAqYmluYXJ5LCBjaGFyICphc2NpaSkgOwppbnQg
X19kbl9za2lwbmFtZSAoY29uc3QgdV9jaGFyICosIGNvbnN0IHVfY2hhciAqKSA7CnZvaWQgX19w
dXRsb25nICh1X2ludDMyX3QsIHVfY2hhciAqKSA7CnZvaWQgX19wdXRzaG9ydCAodV9pbnQxNl90
LCB1X2NoYXIgKikgOwpjb25zdCBjaGFyICogX19wX2NsYXNzIChpbnQpIDsKY29uc3QgY2hhciAq
IF9fcF90aW1lICh1X2ludDMyX3QpIDsKY29uc3QgY2hhciAqIF9fcF90eXBlIChpbnQpIDsKY29u
c3QgY2hhciAqIF9fcF9yY29kZSAoaW50KSA7CmNvbnN0IHVfY2hhciAqIF9fcF9jZG5uYW1lIChj
b25zdCB1X2NoYXIgKiwgY29uc3QgdV9jaGFyICosIGludCwgRklMRSAqKSA7CmNvbnN0IHVfY2hh
ciAqIF9fcF9jZG5hbWUgKGNvbnN0IHVfY2hhciAqLCBjb25zdCB1X2NoYXIgKiwgRklMRSAqKSA7
CmNvbnN0IHVfY2hhciAqIF9fcF9mcW5uYW1lIChjb25zdCB1X2NoYXIgKmNwLCBjb25zdCB1X2No
YXIgKm1zZywgaW50LCBjaGFyICosIGludCkgOwoKY29uc3QgdV9jaGFyICogX19wX2ZxbmFtZSAo
Y29uc3QgdV9jaGFyICosIGNvbnN0IHVfY2hhciAqLCBGSUxFICopIDsKY29uc3QgY2hhciAqIF9f
cF9vcHRpb24gKHVfbG9uZyBvcHRpb24pIDsKY2hhciAqIF9fcF9zZWNzdG9kYXRlICh1X2xvbmcp
IDsKaW50IF9fZG5fY291bnRfbGFiZWxzIChjb25zdCBjaGFyICopIDsKaW50IF9fZG5fY29tcCAo
Y29uc3QgY2hhciAqLCB1X2NoYXIgKiwgaW50LCB1X2NoYXIgKiosIHVfY2hhciAqKikgOwoKaW50
IF9fZG5fZXhwYW5kIChjb25zdCB1X2NoYXIgKiwgY29uc3QgdV9jaGFyICosIGNvbnN0IHVfY2hh
ciAqLCBjaGFyICosIGludCkgOwoKdV9pbnQgX19yZXNfcmFuZG9taWQgKHZvaWQpIDsKaW50IF9f
cmVzX25hbWVpbnF1ZXJ5IChjb25zdCBjaGFyICosIGludCwgaW50LCBjb25zdCB1X2NoYXIgKiwg
Y29uc3QgdV9jaGFyICopIDsKCmludCBfX3Jlc19xdWVyaWVzbWF0Y2ggKGNvbnN0IHVfY2hhciAq
LCBjb25zdCB1X2NoYXIgKiwgY29uc3QgdV9jaGFyICosIGNvbnN0IHVfY2hhciAqKSA7Cgpjb25z
dCBjaGFyICogX19wX3NlY3Rpb24gKGludCBzZWN0aW9uLCBpbnQgb3Bjb2RlKSA7CgppbnQgX19y
ZXNfbmluaXQgKHJlc19zdGF0ZSkgOwppbnQgX19yZXNfbmlzb3Vyc2VydmVyIChjb25zdCByZXNf
c3RhdGUsIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9pbiAqKSA7Cgp2b2lkIF9fZnBfcmVzc3RhdCAo
Y29uc3QgcmVzX3N0YXRlLCBGSUxFICopIDsKdm9pZCBfX3Jlc19ucHF1ZXJ5IChjb25zdCByZXNf
c3RhdGUsIGNvbnN0IHVfY2hhciAqLCBpbnQsIEZJTEUgKikgOwpjb25zdCBjaGFyICogX19yZXNf
aG9zdGFsaWFzIChjb25zdCByZXNfc3RhdGUsIGNvbnN0IGNoYXIgKiwgY2hhciAqLCBzaXplX3Qp
IDsKCmludCBfX3Jlc19ucXVlcnkgKHJlc19zdGF0ZSwgY29uc3QgY2hhciAqLCBpbnQsIGludCwg
dV9jaGFyICosIGludCkgOwoKaW50IF9fcmVzX25zZWFyY2ggKHJlc19zdGF0ZSwgY29uc3QgY2hh
ciAqLCBpbnQsIGludCwgdV9jaGFyICosIGludCkgOwoKaW50IF9fcmVzX25xdWVyeWRvbWFpbiAo
cmVzX3N0YXRlLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50LCBpbnQsIHVfY2hhciAq
LCBpbnQpIDsKCgppbnQgX19yZXNfbm1rcXVlcnkgKHJlc19zdGF0ZSwgaW50LCBjb25zdCBjaGFy
ICosIGludCwgaW50LCBjb25zdCB1X2NoYXIgKiwgaW50LCBjb25zdCB1X2NoYXIgKiwgdV9jaGFy
ICosIGludCkgOwoKCmludCBfX3Jlc19uc2VuZCAocmVzX3N0YXRlLCBjb25zdCB1X2NoYXIgKiwg
aW50LCB1X2NoYXIgKiwgaW50KSA7CnZvaWQgX19yZXNfbmNsb3NlIChyZXNfc3RhdGUpIDsKCiMg
MTIgIi4uL2luY2x1ZGUvcmVzb2x2LmgiIDIKCgpleHRlcm4gaW50IF9fcmVzX3Zpbml0IChyZXNf
c3RhdGUsIGludCk7CmV4dGVybiB2b2lkIF9zZXRodGVudCAoaW50KTsKZXh0ZXJuIHZvaWQgX2Vu
ZGh0ZW50ICh2b2lkKTsKZXh0ZXJuIHN0cnVjdCBob3N0ZW50ICpfZ2V0aHRlbnQgKHZvaWQpOwpl
eHRlcm4gc3RydWN0IGhvc3RlbnQgKl9nZXRodGJ5bmFtZSAoY29uc3QgY2hhciAqX19uYW1lKTsK
ZXh0ZXJuIHN0cnVjdCBob3N0ZW50ICpfZ2V0aHRieW5hbWUyIChjb25zdCBjaGFyICpfX25hbWUs
IGludCBfX2FmKTsKc3RydWN0IGhvc3RlbnQgKl9nZXRodGJ5YWRkciAoY29uc3QgY2hhciAqYWRk
ciwgc2l6ZV90IF9fbGVuLCBpbnQgX19hZik7CmV4dGVybiB1X2ludDMyX3QgX2dldGxvbmcgKGNv
bnN0IHVfY2hhciAqX19zcmMpOwpleHRlcm4gdV9pbnQxNl90IF9nZXRzaG9ydCAoY29uc3QgdV9j
aGFyICpfX3NyYyk7CmV4dGVybiB2b2lkIHJlc19wcXVlcnkgKGNvbnN0IHJlc19zdGF0ZSBfX3N0
YXRwLCBjb25zdCB1X2NoYXIgKl9fbXNnLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19s
ZW4sIEZJTEUgKl9fZmlsZSk7CmV4dGVybiB2b2lkIHJlc19zZW5kX3NldHFob29rIChyZXNfc2Vu
ZF9xaG9vayBfX2hvb2spOwpleHRlcm4gdm9pZCByZXNfc2VuZF9zZXRyaG9vayAocmVzX3NlbmRf
cmhvb2sgX19ob29rKTsKZXh0ZXJuIGludCByZXNfb3Vyc2VydmVyX3AgKGNvbnN0IHJlc19zdGF0
ZSBfX3N0YXRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNvY2th
ZGRyX2luNiAqX19pbnApOwojIDI0ICJpbnRlcm5hbHMuaCIgMgojIDEgIi4uL2luY2x1ZGUvc2V0
am1wLmgiIDEKCiMgMSAiLi4vc2V0am1wL3NldGptcC5oIiAxCiMgMjggIi4uL3NldGptcC9zZXRq
bXAuaCIKCgojIDEgIi4uL3N5c2RlcHMvaTM4Ni9iaXRzL3NldGptcC5oIiAxCiMgMzYgIi4uL3N5
c2RlcHMvaTM4Ni9iaXRzL3NldGptcC5oIgp0eXBlZGVmIGludCBfX2ptcF9idWZbNl07CiMgMzEg
Ii4uL3NldGptcC9zZXRqbXAuaCIgMgojIDEgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2Jp
dHMvc2lnc2V0LmgiIDEKIyAzMiAiLi4vc2V0am1wL3NldGptcC5oIiAyCgoKdHlwZWRlZiBzdHJ1
Y3QgX19qbXBfYnVmX3RhZwogIHsKCgoKCiAgICBfX2ptcF9idWYgX19qbXBidWY7CiAgICBpbnQg
X19tYXNrX3dhc19zYXZlZDsKICAgIF9fc2lnc2V0X3QgX19zYXZlZF9tYXNrOwogIH0gam1wX2J1
ZlsxXTsKCgoKCmV4dGVybiBpbnQgc2V0am1wIChqbXBfYnVmIF9fZW52KSA7CgoKCmV4dGVybiBp
bnQgX3NldGptcCAoam1wX2J1ZiBfX2VudikgOwoKCgoKZXh0ZXJuIGludCBfX3NpZ3NldGptcCAo
am1wX2J1ZiBfX2VudiwgaW50IF9fc2F2ZW1hc2spIDsKIyA3MyAiLi4vc2V0am1wL3NldGptcC5o
IgpleHRlcm4gdm9pZCBsb25nam1wIChqbXBfYnVmIF9fZW52LCBpbnQgX192YWwpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX2xvbmdqbXAgKGpt
cF9idWYgX19lbnYsIGludCBfX3ZhbCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgoKCgoKCgp0eXBlZGVmIGptcF9idWYgc2lnam1wX2J1ZjsKIyA5OCAiLi4vc2V0am1wL3Nl
dGptcC5oIgpleHRlcm4gdm9pZCBzaWdsb25nam1wIChzaWdqbXBfYnVmIF9fZW52LCBpbnQgX192
YWwpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgojIDMgIi4uL2luY2x1
ZGUvc2V0am1wLmgiIDIKCgoKCmV4dGVybiB2b2lkIF9fbG9uZ2ptcCAoX19qbXBfYnVmIF9fZW52
LCBpbnQgX192YWwpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCmV4
dGVybiBpbnQgX19zaWdqbXBfc2F2ZSAoam1wX2J1ZiBfX2VudiwgaW50IF9fc2F2ZW1hc2spOwoK
ZXh0ZXJuIHZvaWQgX2xvbmdqbXBfdW53aW5kIChqbXBfYnVmIGVudiwgaW50IHZhbCk7CgpleHRl
cm4gdm9pZCBfX2xpYmNfc2lnbG9uZ2ptcCAoc2lnam1wX2J1ZiBfX2VudiwgaW50IF9fdmFsKQog
ICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7CiMgMjUgImludGVybmFscy5oIiAy
CgoKIyAxICIuLi9zeXNkZXBzL2kzODYvc3RhY2tpbmZvLmgiIDEKIyAyOCAiaW50ZXJuYWxzLmgi
IDIKIyAxICIuLi9pbmNsdWRlL3N5cy90eXBlcy5oIiAxCiMgMjkgImludGVybmFscy5oIiAyCiMg
MSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL2xpYmMtdHNkLmgiIDEKIyAy
NSAiLi4vbGludXh0aHJlYWRzL3N5c2RlcHMvcHRocmVhZC9iaXRzL2xpYmMtdHNkLmgiCmVudW0g
X19saWJjX3RzZF9rZXlfdCB7IF9MSUJDX1RTRF9LRVlfTUFMTE9DID0gMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgX0xJQkNfVFNEX0tFWV9ETF9FUlJPUiwKICAgICAgICAgICAgICAgICAgICAg
ICAgX0xJQkNfVFNEX0tFWV9SUENfVkFSUywKICAgICAgICAgICAgICAgICAgICAgICAgX0xJQkNf
VFNEX0tFWV9OIH07CgpleHRlcm4gdm9pZCAqKCpfX2xpYmNfaW50ZXJuYWxfdHNkX2dldCkgKGVu
dW0gX19saWJjX3RzZF9rZXlfdCkgOwpleHRlcm4gaW50ICgqX19saWJjX2ludGVybmFsX3RzZF9z
ZXQpIChlbnVtIF9fbGliY190c2Rfa2V5X3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3Qgdm9pZCAqKSA7CiMgMzAgImludGVybmFscy5oIiAyCgpleHRlcm4g
bG9uZyBpbnQgdGVzdGFuZHNldCAoaW50ICpzcGlubG9jayk7CmV4dGVybiBpbnQgX19jb21wYXJl
X2FuZF9zd2FwIChsb25nIGludCAqcCwgbG9uZyBpbnQgb2xkdmFsLCBsb25nIGludCBuZXd2YWwp
OwoKIyAxICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy9pMzg2L3B0LW1hY2hpbmUuaCIgMQojIDMz
ICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy9pMzg2L3B0LW1hY2hpbmUuaCIKZXh0ZXJuIGlubGlu
ZSBnZXRmcmFtZWFkZHIgKHZvaWQpCnsKICAgICAgICBpbnQgcmV0OwogICAgICAgIF9fYXNtX18g
KAogICAgICAgICAgICAgICAgIm1vdmwgJSVlc3AsICUwIgogICAgICAgICAgICAgICAgOiAiPW1y
IihyZXQpCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgoKZXh0ZXJuIGlubGluZSBs
b25nIGludAp0ZXN0YW5kc2V0IChpbnQgKnNwaW5sb2NrKQp7CiAgbG9uZyBpbnQgcmV0OwoKICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICJ4Y2hnbCAlMCwgJTEiCiAgICAgICA6ICI9ciIo
cmV0KSwgIj1tIigqc3BpbmxvY2spCiAgICAgICA6ICIwIigxKSwgIm0iKCpzcGlubG9jaykKICAg
ICAgIDogIm1lbW9yeSIpOwoKICByZXR1cm4gcmV0Owp9CiMgNjYgIi4uL2xpbnV4dGhyZWFkcy9z
eXNkZXBzL2kzODYvcHQtbWFjaGluZS5oIgpleHRlcm4gaW5saW5lIGludApfX2NvbXBhcmVfYW5k
X3N3YXAgKGxvbmcgaW50ICpwLCBsb25nIGludCBvbGR2YWwsIGxvbmcgaW50IG5ld3ZhbCkKewog
IGNoYXIgcmV0OwogIGxvbmcgaW50IHJlYWR2YWw7CgogIF9fYXNtX18gX192b2xhdGlsZV9fICgi
bG9jazsgY21weGNoZ2wgJTMsICUxOyBzZXRlICUwIgogICAgICAgICAgICAgICAgICAgICAgICA6
ICI9cSIgKHJldCksICI9bSIgKCpwKSwgIj1hIiAocmVhZHZhbCkKICAgICAgICAgICAgICAgICAg
ICAgICAgOiAiciIgKG5ld3ZhbCksICJtIiAoKnApLCAiYSIgKG9sZHZhbCkKICAgICAgICAgICAg
ICAgICAgICAgICAgOiAibWVtb3J5Iik7CiAgcmV0dXJuIHJldDsKfQoKCmV4dGVybiBpbmxpbmUg
aW50CmdldF9lZmxhZ3MgKHZvaWQpCnsKICBpbnQgcmVzOwogIF9fYXNtX18gX192b2xhdGlsZV9f
ICgicHVzaGZsOyBwb3BsICUwIiA6ICI9ciIgKHJlcykgOiApOwogIHJldHVybiByZXM7Cn0KCgpl
eHRlcm4gaW5saW5lIHZvaWQKc2V0X2VmbGFncyAoaW50IG5ld2ZsYWdzKQp7CiAgX19hc21fXyBf
X3ZvbGF0aWxlX18gKCJwdXNobCAlMDsgcG9wZmwiIDogOiAiciIgKG5ld2ZsYWdzKSA6ICJjYyIp
Owp9CgoKZXh0ZXJuIGlubGluZSBpbnQKY29tcGFyZV9hbmRfc3dhcF9pc19hdmFpbGFibGUgKHZv
aWQpCnsKICBpbnQgb2xkZmxhZ3MgPSBnZXRfZWZsYWdzICgpOwogIGludCBjaGFuZ2VkOwoKICBz
ZXRfZWZsYWdzIChvbGRmbGFncyBeIDB4NDAwMDApOwoKICBjaGFuZ2VkID0gKGdldF9lZmxhZ3Mg
KCkgXiBvbGRmbGFncykgJiAweDQwMDAwOwoKICBzZXRfZWZsYWdzIChvbGRmbGFncyk7CgoKICBy
ZXR1cm4gY2hhbmdlZCAhPSAwOwp9CiMgMzUgImludGVybmFscy5oIiAyCiMgMSAic2VtYXBob3Jl
LmgiIDEKIyAxOSAic2VtYXBob3JlLmgiCiMgMSAiLi4vaW5jbHVkZS9zeXMvdHlwZXMuaCIgMQoj
IDIwICJzZW1hcGhvcmUuaCIgMgojIDMyICJzZW1hcGhvcmUuaCIKdHlwZWRlZiBzdHJ1Y3QKewog
IHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX3NlbV9sb2NrOwogIGludCBfX3NlbV92YWx1ZTsK
ICBfcHRocmVhZF9kZXNjciBfX3NlbV93YWl0aW5nOwp9IHNlbV90OwojIDQ4ICJzZW1hcGhvcmUu
aCIKCgoKCmV4dGVybiBpbnQgc2VtX2luaXQgKHNlbV90ICpfX3NlbSwgaW50IF9fcHNoYXJlZCwg
dW5zaWduZWQgaW50IF9fdmFsdWUpIDsKCgpleHRlcm4gaW50IHNlbV9kZXN0cm95IChzZW1fdCAq
X19zZW0pIDsKCgpleHRlcm4gc2VtX3QgKnNlbV9vcGVuIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwg
aW50IF9fb2ZsYWcsIC4uLikgOwoKCmV4dGVybiBpbnQgc2VtX2Nsb3NlIChzZW1fdCAqX19zZW0p
IDsKCgpleHRlcm4gaW50IHNlbV91bmxpbmsgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKZXh0
ZXJuIGludCBzZW1fd2FpdCAoc2VtX3QgKl9fc2VtKSA7CgoKCmV4dGVybiBpbnQgc2VtX3RpbWVk
d2FpdCAoc2VtX3QgKl9fcmVzdHJpY3QgX19zZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX19hYnN0aW1lKQogICAgIDsKCgoK
ZXh0ZXJuIGludCBzZW1fdHJ5d2FpdCAoc2VtX3QgKl9fc2VtKSA7CgoKZXh0ZXJuIGludCBzZW1f
cG9zdCAoc2VtX3QgKl9fc2VtKSA7CgoKZXh0ZXJuIGludCBzZW1fZ2V0dmFsdWUgKHNlbV90ICpf
X3Jlc3RyaWN0IF9fc2VtLCBpbnQgKl9fcmVzdHJpY3QgX19zdmFsKQogICAgIDsKCgojIDM2ICJp
bnRlcm5hbHMuaCIgMgojIDEgIi4uL2xpbnV4dGhyZWFkc19kYi90aHJlYWRfZGJQLmgiIDEKCgoK
CgojIDEgIi4uL2xpbnV4dGhyZWFkc19kYi9wcm9jX3NlcnZpY2UuaCIgMQojIDIwICIuLi9saW51
eHRocmVhZHNfZGIvcHJvY19zZXJ2aWNlLmgiCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGlu
dXgvaTM4Ni9zeXMvcHJvY2ZzLmgiIDEKIyAzMiAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgv
aTM4Ni9zeXMvcHJvY2ZzLmgiCiMgMSAiLi4vaW5jbHVkZS9zeXMvdGltZS5oIiAxCgojIDEgIi4u
L3RpbWUvc3lzL3RpbWUuaCIgMQojIDI4ICIuLi90aW1lL3N5cy90aW1lLmgiCiMgMSAiLi4vc3lz
ZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9iaXRzL3RpbWUuaCIgMQojIDI5ICIuLi90aW1lL3N5
cy90aW1lLmgiIDIKIyAzOCAiLi4vdGltZS9zeXMvdGltZS5oIgoKIyA1NiAiLi4vdGltZS9zeXMv
dGltZS5oIgpzdHJ1Y3QgdGltZXpvbmUKICB7CiAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICBp
bnQgdHpfZHN0dGltZTsKICB9OwoKdHlwZWRlZiBzdHJ1Y3QgdGltZXpvbmUgKl9fcmVzdHJpY3Qg
X190aW1lem9uZV9wdHJfdDsKIyA3MiAiLi4vdGltZS9zeXMvdGltZS5oIgpleHRlcm4gaW50IGdl
dHRpbWVvZmRheSAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190diwKICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdGltZXpvbmVfcHRyX3QgX190eikgOwoKCgoKZXh0ZXJuIGludCBzZXR0
aW1lb2ZkYXkgKF9fY29uc3Qgc3RydWN0IHRpbWV2YWwgKl9fdHYsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lem9uZSAqX190eikgOwoKCgoKCmV4dGVybiBpbnQg
YWRqdGltZSAoX19jb25zdCBzdHJ1Y3QgdGltZXZhbCAqX19kZWx0YSwKICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgdGltZXZhbCAqX19vbGRkZWx0YSkgOwoKCgoKZW51bSBfX2l0aW1lcl93aGlj
aAogIHsKCiAgICBJVElNRVJfUkVBTCA9IDAsCgoKICAgIElUSU1FUl9WSVJUVUFMID0gMSwKCgoK
ICAgIElUSU1FUl9QUk9GID0gMgoKICB9OwoKCgpzdHJ1Y3QgaXRpbWVydmFsCiAgewoKICAgIHN0
cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwoKICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwog
IH07CgoKCgp0eXBlZGVmIGVudW0gX19pdGltZXJfd2hpY2ggX19pdGltZXJfd2hpY2hfdDsKCgoK
CgoKZXh0ZXJuIGludCBnZXRpdGltZXIgKF9faXRpbWVyX3doaWNoX3QgX193aGljaCwKICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJ2YWwgKl9fdmFsdWUpIDsKCgoKCmV4dGVybiBp
bnQgc2V0aXRpbWVyIChfX2l0aW1lcl93aGljaF90IF9fd2hpY2gsCiAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHN0cnVjdCBpdGltZXJ2YWwgKl9fcmVzdHJpY3QgX19uZXcsCiAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVydmFsICpfX3Jlc3RyaWN0IF9fb2xkKSA7CgoKCmV4
dGVybiBpbnQgdXRpbWVzIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25zdCBzdHJ1Y3QgdGlt
ZXZhbCBfX3R2cFsyXSkKICAgICA7CiMgMTcxICIuLi90aW1lL3N5cy90aW1lLmgiCgojIDMgIi4u
L2luY2x1ZGUvc3lzL3RpbWUuaCIgMgoKCmV4dGVybiBpbnQgX19nZXR0aW1lb2ZkYXkgKHN0cnVj
dCB0aW1ldmFsICpfX3R2LAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXpv
bmUgKl9fdHopOwpleHRlcm4gaW50IF9fc2V0dGltZW9mZGF5IChfX2NvbnN0IHN0cnVjdCB0aW1l
dmFsICpfX3R2LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1l
em9uZSAqX190eik7CmV4dGVybiBpbnQgX19hZGp0aW1lIChfX2NvbnN0IHN0cnVjdCB0aW1ldmFs
ICpfX2RlbHRhLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKl9fb2xkZGVs
dGEpOwpleHRlcm4gaW50IF9fZ2V0aXRpbWVyIChlbnVtIF9faXRpbWVyX3doaWNoIF9fd2hpY2gs
CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJ2YWwgKl9fdmFsdWUpOwpleHRl
cm4gaW50IF9fc2V0aXRpbWVyIChlbnVtIF9faXRpbWVyX3doaWNoIF9fd2hpY2gsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqX19yZXN0cmljdCBfX25l
dywKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl0aW1lcnZhbCAqX19yZXN0cmljdCBf
X29sZCk7CmV4dGVybiBpbnQgX191dGltZXMgKF9fY29uc3QgY2hhciAqX19maWxlLCBjb25zdCBz
dHJ1Y3QgdGltZXZhbCBfX3R2cFsyXSk7CiMgMzMgIi4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4
L2kzODYvc3lzL3Byb2Nmcy5oIiAyCiMgMSAiLi4vaW5jbHVkZS9zeXMvdHlwZXMuaCIgMQojIDM0
ICIuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5cy9wcm9jZnMuaCIgMgojIDEgIi4u
L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc3lzL3VzZXIuaCIgMQojIDI2ICIuLi9zeXNk
ZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5cy91c2VyLmgiCnN0cnVjdCB1c2VyX2ZwcmVnc19z
dHJ1Y3QKewogIGxvbmcgaW50IGN3ZDsKICBsb25nIGludCBzd2Q7CiAgbG9uZyBpbnQgdHdkOwog
IGxvbmcgaW50IGZpcDsKICBsb25nIGludCBmY3M7CiAgbG9uZyBpbnQgZm9vOwogIGxvbmcgaW50
IGZvczsKICBsb25nIGludCBzdF9zcGFjZSBbMjBdOwp9OwoKc3RydWN0IHVzZXJfZnB4cmVnc19z
dHJ1Y3QKewogIHVuc2lnbmVkIHNob3J0IGludCBjd2Q7CiAgdW5zaWduZWQgc2hvcnQgaW50IHN3
ZDsKICB1bnNpZ25lZCBzaG9ydCBpbnQgdHdkOwogIHVuc2lnbmVkIHNob3J0IGludCBmb3A7CiAg
bG9uZyBpbnQgZmlwOwogIGxvbmcgaW50IGZjczsKICBsb25nIGludCBmb287CiAgbG9uZyBpbnQg
Zm9zOwogIGxvbmcgaW50IG14Y3NyOwogIGxvbmcgaW50IHJlc2VydmVkOwogIGxvbmcgaW50IHN0
X3NwYWNlWzMyXTsKICBsb25nIGludCB4bW1fc3BhY2VbMzJdOwogIGxvbmcgaW50IHBhZGRpbmdb
NTZdOwp9OwoKc3RydWN0IHVzZXJfcmVnc19zdHJ1Y3QKewogIGxvbmcgaW50IGVieDsKICBsb25n
IGludCBlY3g7CiAgbG9uZyBpbnQgZWR4OwogIGxvbmcgaW50IGVzaTsKICBsb25nIGludCBlZGk7
CiAgbG9uZyBpbnQgZWJwOwogIGxvbmcgaW50IGVheDsKICBsb25nIGludCB4ZHM7CiAgbG9uZyBp
bnQgeGVzOwogIGxvbmcgaW50IHhmczsKICBsb25nIGludCB4Z3M7CiAgbG9uZyBpbnQgb3JpZ19l
YXg7CiAgbG9uZyBpbnQgZWlwOwogIGxvbmcgaW50IHhjczsKICBsb25nIGludCBlZmxhZ3M7CiAg
bG9uZyBpbnQgZXNwOwogIGxvbmcgaW50IHhzczsKfTsKCnN0cnVjdCB1c2VyCnsKICBzdHJ1Y3Qg
dXNlcl9yZWdzX3N0cnVjdCByZWdzOwogIGludCB1X2ZwdmFsaWQ7CiAgc3RydWN0IHVzZXJfZnBy
ZWdzX3N0cnVjdCBpMzg3OwogIHVuc2lnbmVkIGxvbmcgaW50IHVfdHNpemU7CiAgdW5zaWduZWQg
bG9uZyBpbnQgdV9kc2l6ZTsKICB1bnNpZ25lZCBsb25nIGludCB1X3NzaXplOwogIHVuc2lnbmVk
IGxvbmcgc3RhcnRfY29kZTsKICB1bnNpZ25lZCBsb25nIHN0YXJ0X3N0YWNrOwogIGxvbmcgaW50
IHNpZ25hbDsKICBpbnQgcmVzZXJ2ZWQ7CiAgc3RydWN0IHVzZXJfcmVnc19zdHJ1Y3QqIHVfYXIw
OwogIHN0cnVjdCB1c2VyX2ZwcmVnc19zdHJ1Y3QqIHVfZnBzdGF0ZTsKICB1bnNpZ25lZCBsb25n
IGludCBtYWdpYzsKICBjaGFyIHVfY29tbSBbMzJdOwogIGludCB1X2RlYnVncmVnIFs4XTsKfTsK
IyAzNSAiLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zeXMvcHJvY2ZzLmgiIDIKCgoK
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBlbGZfZ3JlZ190OwoKCgoKCgp0eXBlZGVmIGVsZl9ncmVn
X3QgZWxmX2dyZWdzZXRfdFsoc2l6ZW9mIChzdHJ1Y3QgdXNlcl9yZWdzX3N0cnVjdCkgLyBzaXpl
b2YoZWxmX2dyZWdfdCkpXTsKCgp0eXBlZGVmIHN0cnVjdCB1c2VyX2ZwcmVnc19zdHJ1Y3QgZWxm
X2ZwcmVnc2V0X3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB1c2VyX2ZweHJlZ3Nfc3RydWN0IGVsZl9m
cHhyZWdzZXRfdDsKCgoKc3RydWN0IGVsZl9zaWdpbmZvCiAgewogICAgaW50IHNpX3NpZ25vOwog
ICAgaW50IHNpX2NvZGU7CiAgICBpbnQgc2lfZXJybm87CiAgfTsKIyA3MyAiLi4vc3lzZGVwcy91
bml4L3N5c3YvbGludXgvaTM4Ni9zeXMvcHJvY2ZzLmgiCnN0cnVjdCBlbGZfcHJzdGF0dXMKICB7
CiAgICBzdHJ1Y3QgZWxmX3NpZ2luZm8gcHJfaW5mbzsKICAgIHNob3J0IGludCBwcl9jdXJzaWc7
CiAgICB1bnNpZ25lZCBsb25nIGludCBwcl9zaWdwZW5kOwogICAgdW5zaWduZWQgbG9uZyBpbnQg
cHJfc2lnaG9sZDsKICAgIF9fcGlkX3QgcHJfcGlkOwogICAgX19waWRfdCBwcl9wcGlkOwogICAg
X19waWRfdCBwcl9wZ3JwOwogICAgX19waWRfdCBwcl9zaWQ7CiAgICBzdHJ1Y3QgdGltZXZhbCBw
cl91dGltZTsKICAgIHN0cnVjdCB0aW1ldmFsIHByX3N0aW1lOwogICAgc3RydWN0IHRpbWV2YWwg
cHJfY3V0aW1lOwogICAgc3RydWN0IHRpbWV2YWwgcHJfY3N0aW1lOwogICAgZWxmX2dyZWdzZXRf
dCBwcl9yZWc7CiAgICBpbnQgcHJfZnB2YWxpZDsKICB9OwoKCgoKc3RydWN0IGVsZl9wcnBzaW5m
bwogIHsKICAgIGNoYXIgcHJfc3RhdGU7CiAgICBjaGFyIHByX3NuYW1lOwogICAgY2hhciBwcl96
b21iOwogICAgY2hhciBwcl9uaWNlOwogICAgdW5zaWduZWQgbG9uZyBpbnQgcHJfZmxhZzsKICAg
IHVuc2lnbmVkIHNob3J0IGludCBwcl91aWQ7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgcHJfZ2lk
OwogICAgaW50IHByX3BpZCwgcHJfcHBpZCwgcHJfcGdycCwgcHJfc2lkOwoKICAgIGNoYXIgcHJf
Zm5hbWVbMTZdOwogICAgY2hhciBwcl9wc2FyZ3NbKDgwKV07CiAgfTsKCgoKCgoKCnR5cGVkZWYg
dm9pZCAqcHNhZGRyX3Q7CgoKdHlwZWRlZiBlbGZfZ3JlZ3NldF90IHByZ3JlZ3NldF90Owp0eXBl
ZGVmIGVsZl9mcHJlZ3NldF90IHByZnByZWdzZXRfdDsKCgoKdHlwZWRlZiBfX3BpZF90IGx3cGlk
X3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgZWxmX3Byc3RhdHVzIHByc3RhdHVzX3Q7CnR5cGVkZWYgc3Ry
dWN0IGVsZl9wcnBzaW5mbyBwcnBzaW5mb190OwoKCiMgMjEgIi4uL2xpbnV4dGhyZWFkc19kYi9w
cm9jX3NlcnZpY2UuaCIgMgoKdHlwZWRlZiBlbnVtCnsKICBQU19PSywKICBQU19FUlIsCiAgUFNf
QkFEUElELAogIFBTX0JBRExJRCwKICBQU19CQURBRERSLAogIFBTX05PU1lNLAogICAgICAgIFBT
X05PRlJFR1MKCgoKCn0gcHNfZXJyX2U7CgoKc3RydWN0IHBzX3Byb2NoYW5kbGU7CgoKZXh0ZXJu
IHBzX2Vycl9lIHBzX3BkcmVhZChzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqLAogICAgICAgICAgICAg
ICAgICAgICAgICBwc2FkZHJfdCwgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gcHNfZXJyX2UgcHNf
cGR3cml0ZShzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqLAogICAgICAgICAgICAgICAgICAgICAgICBw
c2FkZHJfdCwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gcHNfZXJyX2UgcHNfcHRyZWFk
KHN0cnVjdCBwc19wcm9jaGFuZGxlICosCiAgICAgICAgICAgICAgICAgICAgICAgIHBzYWRkcl90
LCB2b2lkICosIHNpemVfdCk7CmV4dGVybiBwc19lcnJfZSBwc19wdHdyaXRlKHN0cnVjdCBwc19w
cm9jaGFuZGxlICosCiAgICAgICAgICAgICAgICAgICAgICAgIHBzYWRkcl90LCBjb25zdCB2b2lk
ICosIHNpemVfdCk7CgpleHRlcm4gcHNfZXJyX2UgcHNfcGdsb2JhbF9sb29rdXAoc3RydWN0IHBz
X3Byb2NoYW5kbGUgKiwKICAgICAgICBjb25zdCBjaGFyICpvYmplY3RfbmFtZSwgY29uc3QgY2hh
ciAqc3ltX25hbWUsIHBzYWRkcl90ICpzeW1fYWRkcik7CgoKZXh0ZXJuIHBzX2Vycl9lIHBzX2xn
ZXRyZWdzKHN0cnVjdCBwc19wcm9jaGFuZGxlICosCiAgICAgICAgICAgICAgICAgICAgICAgIGx3
cGlkX3QsIHByZ3JlZ3NldF90KTsKZXh0ZXJuIHBzX2Vycl9lIHBzX2xzZXRyZWdzKHN0cnVjdCBw
c19wcm9jaGFuZGxlICosCiAgICAgICAgICAgICAgICAgICAgICAgIGx3cGlkX3QsIGNvbnN0IHBy
Z3JlZ3NldF90KTsKZXh0ZXJuIHBzX2Vycl9lIHBzX2xnZXRmcHJlZ3Moc3RydWN0IHBzX3Byb2No
YW5kbGUgKiwKICAgICAgICAgICAgICAgICAgICAgICAgbHdwaWRfdCwgcHJmcHJlZ3NldF90ICop
OwpleHRlcm4gcHNfZXJyX2UgcHNfbHNldGZwcmVncyhzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqLAog
ICAgICAgICAgICAgICAgICAgICAgICBsd3BpZF90LCBjb25zdCBwcmZwcmVnc2V0X3QgKik7Cgpl
eHRlcm4gcGlkX3QgcHNfZ2V0cGlkIChzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqKTsKCgpleHRlcm4g
cHNfZXJyX2UgcHNfcHN0b3AgKGNvbnN0IHN0cnVjdCBwc19wcm9jaGFuZGxlICopOwpleHRlcm4g
cHNfZXJyX2UgcHNfcGNvbnRpbnVlIChjb25zdCBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqKTsKCmV4
dGVybiBwc19lcnJfZSBwc19sc3RvcCAoY29uc3Qgc3RydWN0IHBzX3Byb2NoYW5kbGUgKiwgbHdw
aWRfdCk7CmV4dGVybiBwc19lcnJfZSBwc19sY29udGludWUgKGNvbnN0IHN0cnVjdCBwc19wcm9j
aGFuZGxlICosIGx3cGlkX3QpOwojIDcgIi4uL2xpbnV4dGhyZWFkc19kYi90aHJlYWRfZGJQLmgi
IDIKIyAxICIuLi9saW51eHRocmVhZHNfZGIvdGhyZWFkX2RiLmgiIDEKIyAyNSAiLi4vbGludXh0
aHJlYWRzX2RiL3RocmVhZF9kYi5oIgojIDEgIi4uL2luY2x1ZGUvcHRocmVhZC5oIiAxCgoKCmV4
dGVybiB2b2lkIF9fcHRocmVhZF9pbml0aWFsaXplICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgod2Vh
aykpOwoKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX2luaXRpYWxpemVfbWluaW1hbCAodm9pZCkgX19h
dHRyaWJ1dGVfXyAoKHdlYWspKTsKIyAyNiAiLi4vbGludXh0aHJlYWRzX2RiL3RocmVhZF9kYi5o
IiAyCgojIDEgIi4uL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEKIyAyOCAiLi4vbGludXh0aHJlYWRz
X2RiL3RocmVhZF9kYi5oIiAyCgoKCgp0eXBlZGVmIGVudW0KewogIFREX09LLAogIFREX0VSUiwK
ICBURF9OT1RIUiwKICBURF9OT1NWLAogIFREX05PTFdQLAogIFREX0JBRFBILAogIFREX0JBRFRI
LAogIFREX0JBRFNILAogIFREX0JBRFRBLAogIFREX0JBREtFWSwKICBURF9OT01TRywKICBURF9O
T0ZQUkVHUywKICBURF9OT0xJQlRIUkVBRCwKICBURF9OT0VWRU5ULAogIFREX05PQ0FQQUIsCiAg
VERfREJFUlIsCiAgVERfTk9BUExJQywKICBURF9OT1RTRCwKICBURF9NQUxMT0MsCiAgVERfUEFS
VElBTFJFRywKICBURF9OT1hSRUdTCn0gdGRfZXJyX2U7CgoKCgp0eXBlZGVmIGVudW0KewogIFRE
X1RIUl9BTllfU1RBVEUsCiAgVERfVEhSX1VOS05PV04sCiAgVERfVEhSX1NUT1BQRUQsCiAgVERf
VEhSX1JVTiwKICBURF9USFJfQUNUSVZFLAogIFREX1RIUl9aT01CSUUsCiAgVERfVEhSX1NMRUVQ
LAogIFREX1RIUl9TVE9QUEVEX0FTTEVFUAp9IHRkX3Rocl9zdGF0ZV9lOwoKCgp0eXBlZGVmIGVu
dW0KewogIFREX1RIUl9BTllfVFlQRSwKICBURF9USFJfVVNFUiwKICBURF9USFJfU1lTVEVNCn0g
dGRfdGhyX3R5cGVfZTsKCgoKCgp0eXBlZGVmIHN0cnVjdCB0ZF90aHJhZ2VudCB0ZF90aHJhZ2Vu
dF90OwoKCnR5cGVkZWYgc3RydWN0IHRkX3RocmhhbmRsZQp7CiAgdGRfdGhyYWdlbnRfdCAqdGhf
dGFfcDsKICBwc2FkZHJfdCB0aF91bmlxdWU7Cn0gdGRfdGhyaGFuZGxlX3Q7CiMgMTA3ICIuLi9s
aW51eHRocmVhZHNfZGIvdGhyZWFkX2RiLmgiCnR5cGVkZWYgc3RydWN0IHRkX3Rocl9ldmVudHMK
ewogIHVpbnQzMl90IGV2ZW50X2JpdHNbMl07Cn0gdGRfdGhyX2V2ZW50c190OwojIDE0NiAiLi4v
bGludXh0aHJlYWRzX2RiL3RocmVhZF9kYi5oIgp0eXBlZGVmIGVudW0KewogIFREX0FMTF9FVkVO
VFMsCiAgVERfRVZFTlRfTk9ORSA9IFREX0FMTF9FVkVOVFMsCiAgVERfUkVBRFksCiAgVERfU0xF
RVAsCiAgVERfU1dJVENIVE8sCiAgVERfU1dJVENIRlJPTSwKICBURF9MT0NLX1RSWSwKICBURF9D
QVRDSFNJRywKICBURF9JRExFLAogIFREX0NSRUFURSwKICBURF9ERUFUSCwKICBURF9QUkVFTVBU
LAogIFREX1BSSV9JTkhFUklULAogIFREX1JFQVAsCiAgVERfQ09OQ1VSUkVOQ1ksCiAgVERfVElN
RU9VVCwKICBURF9NSU5fRVZFTlRfTlVNID0gVERfUkVBRFksCiAgVERfTUFYX0VWRU5UX05VTSA9
IFREX1RJTUVPVVQsCiAgVERfRVZFTlRTX0VOQUJMRSA9IDMxCn0gdGRfZXZlbnRfZTsKCgp0eXBl
ZGVmIGVudW0KewogIE5PVElGWV9CUFQsCiAgTk9USUZZX0FVVE9CUFQsCgogIE5PVElGWV9TWVND
QUxMCn0gdGRfbm90aWZ5X2U7CgoKdHlwZWRlZiBzdHJ1Y3QgdGRfbm90aWZ5CnsKICB0ZF9ub3Rp
ZnlfZSB0eXBlOwogIHVuaW9uCiAgewogICAgcHNhZGRyX3QgYnB0YWRkcjsKICAgIGludCBzeXNj
YWxsbm87CiAgfSB1Owp9IHRkX25vdGlmeV90OwoKCnR5cGVkZWYgc3RydWN0IHRkX2V2ZW50X21z
Zwp7CiAgdGRfZXZlbnRfZSBldmVudDsKICBjb25zdCB0ZF90aHJoYW5kbGVfdCAqdGhfcDsKICB1
bmlvbgogIHsKCgoKICAgIHVpbnRwdHJfdCBkYXRhOwogIH0gbXNnOwp9IHRkX2V2ZW50X21zZ190
OwoKCnR5cGVkZWYgc3RydWN0CnsKICB0ZF90aHJfZXZlbnRzX3QgZXZlbnRtYXNrOwogIHRkX2V2
ZW50X2UgZXZlbnRudW07CiAgdm9pZCAqZXZlbnRkYXRhOwp9IHRkX2V2ZW50YnVmX3Q7CgoKCnR5
cGVkZWYgc3RydWN0IHRkX3RhX3N0YXRzCnsKICBpbnQgbnRocmVhZHM7CiAgaW50IHJfY29uY3Vy
cmVuY3k7CiAgaW50IG5ydW5uYWJsZV9udW07CiAgaW50IG5ydW5uYWJsZV9kZW47CiAgaW50IGFf
Y29uY3VycmVuY3lfbnVtOwogIGludCBhX2NvbmN1cnJlbmN5X2RlbjsKICBpbnQgbmx3cHNfbnVt
OwoKICBpbnQgbmx3cHNfZGVuOwoKICBpbnQgbmlkbGVfbnVtOwoKICBpbnQgbmlkbGVfZGVuOwoK
fSB0ZF90YV9zdGF0c190OwoKCgoKdHlwZWRlZiBwdGhyZWFkX3QgdGhyZWFkX3Q7CnR5cGVkZWYg
cHRocmVhZF9rZXlfdCB0aHJlYWRfa2V5X3Q7CgoKCnR5cGVkZWYgaW50IHRkX3Rocl9pdGVyX2Yg
KGNvbnN0IHRkX3RocmhhbmRsZV90ICosIHZvaWQgKik7CgoKdHlwZWRlZiBpbnQgdGRfa2V5X2l0
ZXJfZiAodGhyZWFkX2tleV90LCB2b2lkICgqKSAodm9pZCAqKSwgdm9pZCAqKTsKCgoKCnN0cnVj
dCBwc19wcm9jaGFuZGxlOwoKCgp0eXBlZGVmIHN0cnVjdCB0ZF90aHJpbmZvCnsKICB0ZF90aHJh
Z2VudF90ICp0aV90YV9wOwogIHVuc2lnbmVkIGludCB0aV91c2VyX2ZsYWdzOwogIHRocmVhZF90
IHRpX3RpZDsKCiAgY2hhciAqdGlfdGxzOwogIHBzYWRkcl90IHRpX3N0YXJ0ZnVuYzsKCiAgcHNh
ZGRyX3QgdGlfc3RrYmFzZTsKICBsb25nIGludCB0aV9zdGtzaXplOwogIHBzYWRkcl90IHRpX3Jv
X2FyZWE7CiAgaW50IHRpX3JvX3NpemU7CiAgdGRfdGhyX3N0YXRlX2UgdGlfc3RhdGU7CiAgdW5z
aWduZWQgY2hhciB0aV9kYl9zdXNwZW5kZWQ7CiAgdGRfdGhyX3R5cGVfZSB0aV90eXBlOwoKICBp
bnRwdHJfdCB0aV9wYzsKICBpbnRwdHJfdCB0aV9zcDsKICBzaG9ydCBpbnQgdGlfZmxhZ3M7CiAg
aW50IHRpX3ByaTsKICBsd3BpZF90IHRpX2xpZDsKICBzaWdzZXRfdCB0aV9zaWdtYXNrOwogIHVu
c2lnbmVkIGNoYXIgdGlfdHJhY2VtZTsKCiAgdW5zaWduZWQgY2hhciB0aV9wcmVlbXB0ZmxhZzsK
ICB1bnNpZ25lZCBjaGFyIHRpX3BpcmVjZmxhZzsKICBzaWdzZXRfdCB0aV9wZW5kaW5nOwogIHRk
X3Rocl9ldmVudHNfdCB0aV9ldmVudHM7Cn0gdGRfdGhyaW5mb190OwoKCgoKCgpleHRlcm4gdGRf
ZXJyX2UgdGRfaW5pdCAodm9pZCk7CgoKZXh0ZXJuIHRkX2Vycl9lIHRkX2xvZyAodm9pZCk7CgoK
ZXh0ZXJuIGNvbnN0IGNoYXIgKip0ZF9zeW1ib2xfbGlzdCAodm9pZCk7CgoKZXh0ZXJuIHRkX2Vy
cl9lIHRkX3RhX25ldyAoc3RydWN0IHBzX3Byb2NoYW5kbGUgKl9fcHMsIHRkX3RocmFnZW50X3Qg
KipfX3RhKTsKCgpleHRlcm4gdGRfZXJyX2UgdGRfdGFfZGVsZXRlICh0ZF90aHJhZ2VudF90ICpf
X3RhKTsKCgpleHRlcm4gdGRfZXJyX2UgdGRfdGFfZ2V0X250aHJlYWRzIChjb25zdCB0ZF90aHJh
Z2VudF90ICpfX3RhLCBpbnQgKl9fbnApOwoKCgpleHRlcm4gdGRfZXJyX2UgdGRfdGFfZ2V0X3Bo
IChjb25zdCB0ZF90aHJhZ2VudF90ICpfX3RhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSAqKl9fcGgpOwoKCgpleHRlcm4gdGRfZXJyX2UgdGRfdGFf
bWFwX2lkMnRociAoY29uc3QgdGRfdGhyYWdlbnRfdCAqX190YSwgcHRocmVhZF90IF9fcHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZF90aHJoYW5kbGVfdCAqX190aCk7CgoK
CmV4dGVybiB0ZF9lcnJfZSB0ZF90YV9tYXBfbHdwMnRociAoY29uc3QgdGRfdGhyYWdlbnRfdCAq
X190YSwgbHdwaWRfdCBfX2x3cGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRkX3RocmhhbmRsZV90ICpfX3RoKTsKCgoKCmV4dGVybiB0ZF9lcnJfZSB0ZF90YV90aHJfaXRl
ciAoY29uc3QgdGRfdGhyYWdlbnRfdCAqX190YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZF90aHJfaXRlcl9mICpfX2NhbGxiYWNrLCB2b2lkICpfX2NiZGF0YV9wLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRkX3Rocl9zdGF0ZV9lIF9fc3RhdGUsIGludCBfX3Rp
X3ByaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdzZXRfdCAqX190aV9zaWdt
YXNrX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fdGlf
dXNlcl9mbGFncyk7CgoKZXh0ZXJuIHRkX2Vycl9lIHRkX3RhX3RzZF9pdGVyIChjb25zdCB0ZF90
aHJhZ2VudF90ICpfX3RhLCB0ZF9rZXlfaXRlcl9mICpfX2tpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKl9fcCk7CgoKCmV4dGVybiB0ZF9lcnJfZSB0ZF90YV9ldmVudF9h
ZGRyIChjb25zdCB0ZF90aHJhZ2VudF90ICpfX3RhLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGRfZXZlbnRfZSBfX2V2ZW50LCB0ZF9ub3RpZnlfdCAqX19wdHIpOwoKCmV4dGVy
biB0ZF9lcnJfZSB0ZF90YV9zZXRfZXZlbnQgKGNvbnN0IHRkX3RocmFnZW50X3QgKl9fdGEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkX3Rocl9ldmVudHNfdCAqX19ldmVudCk7
CgoKZXh0ZXJuIHRkX2Vycl9lIHRkX3RhX2NsZWFyX2V2ZW50IChjb25zdCB0ZF90aHJhZ2VudF90
ICpfX3RhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkX3Rocl9ldmVudHNf
dCAqX19ldmVudCk7CgoKZXh0ZXJuIHRkX2Vycl9lIHRkX3RhX2V2ZW50X2dldG1zZyAoY29uc3Qg
dGRfdGhyYWdlbnRfdCAqX190YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGRfZXZlbnRfbXNnX3QgKm1zZyk7CgoKCmV4dGVybiB0ZF9lcnJfZSB0ZF90YV9zZXRjb25jdXJy
ZW5jeSAoY29uc3QgdGRfdGhyYWdlbnRfdCAqX190YSwgaW50IF9fbGV2ZWwpOwoKCgpleHRlcm4g
dGRfZXJyX2UgdGRfdGFfZW5hYmxlX3N0YXRzIChjb25zdCB0ZF90aHJhZ2VudF90ICpfX3RhLCBp
bnQgX19lbmFibGUpOwoKCmV4dGVybiB0ZF9lcnJfZSB0ZF90YV9yZXNldF9zdGF0cyAoY29uc3Qg
dGRfdGhyYWdlbnRfdCAqX190YSk7CgoKZXh0ZXJuIHRkX2Vycl9lIHRkX3RhX2dldF9zdGF0cyAo
Y29uc3QgdGRfdGhyYWdlbnRfdCAqX190YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGRfdGFfc3RhdHNfdCAqX19zdGF0c3ApOwoKCgpleHRlcm4gdGRfZXJyX2UgdGRfdGhyX3Zh
bGlkYXRlIChjb25zdCB0ZF90aHJoYW5kbGVfdCAqX190aCk7CgoKZXh0ZXJuIHRkX2Vycl9lIHRk
X3Rocl9nZXRfaW5mbyAoY29uc3QgdGRfdGhyaGFuZGxlX3QgKl9fdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRkX3RocmluZm9fdCAqX19pbmZvcCk7CgoKZXh0ZXJuIHRkX2Vy
cl9lIHRkX3Rocl9nZXRmcHJlZ3MgKGNvbnN0IHRkX3RocmhhbmRsZV90ICpfX3RoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJmcHJlZ3NldF90ICpfX3JlZ3NldCk7CgoKZXh0
ZXJuIHRkX2Vycl9lIHRkX3Rocl9nZXRncmVncyAoY29uc3QgdGRfdGhyaGFuZGxlX3QgKl9fdGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZ3JlZ3NldF90IF9fZ3JlZ3MpOwoK
CmV4dGVybiB0ZF9lcnJfZSB0ZF90aHJfZ2V0eHJlZ3MgKGNvbnN0IHRkX3RocmhhbmRsZV90ICpf
X3RoLCB2b2lkICpfX3hyZWdzKTsKCgpleHRlcm4gdGRfZXJyX2UgdGRfdGhyX2dldHhyZWdzaXpl
IChjb25zdCB0ZF90aHJoYW5kbGVfdCAqX190aCwgaW50ICpfX3NpemVwKTsKCgpleHRlcm4gdGRf
ZXJyX2UgdGRfdGhyX3NldGZwcmVncyAoY29uc3QgdGRfdGhyaGFuZGxlX3QgKl9fdGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmZwcmVnc2V0X3QgKl9fZnByZWdz
KTsKCgpleHRlcm4gdGRfZXJyX2UgdGRfdGhyX3NldGdyZWdzIChjb25zdCB0ZF90aHJoYW5kbGVf
dCAqX190aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJncmVnc2V0X3QgX19n
cmVncyk7CgoKZXh0ZXJuIHRkX2Vycl9lIHRkX3Rocl9zZXR4cmVncyAoY29uc3QgdGRfdGhyaGFu
ZGxlX3QgKl9fdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
Kl9fYWRkcik7CgoKCmV4dGVybiB0ZF9lcnJfZSB0ZF90aHJfZXZlbnRfZW5hYmxlIChjb25zdCB0
ZF90aHJoYW5kbGVfdCAqX190aCwgaW50IF9fZXZlbnQpOwoKCmV4dGVybiB0ZF9lcnJfZSB0ZF90
aHJfc2V0X2V2ZW50IChjb25zdCB0ZF90aHJoYW5kbGVfdCAqX190aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRkX3Rocl9ldmVudHNfdCAqX19ldmVudCk7CgoKZXh0ZXJuIHRk
X2Vycl9lIHRkX3Rocl9jbGVhcl9ldmVudCAoY29uc3QgdGRfdGhyaGFuZGxlX3QgKl9fdGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkX3Rocl9ldmVudHNfdCAqX19ldmVu
dCk7CgoKZXh0ZXJuIHRkX2Vycl9lIHRkX3Rocl9ldmVudF9nZXRtc2cgKGNvbnN0IHRkX3Rocmhh
bmRsZV90ICpfX3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGRfZXZl
bnRfbXNnX3QgKl9fbXNnKTsKCgoKZXh0ZXJuIHRkX2Vycl9lIHRkX3Rocl9zZXRwcmlvIChjb25z
dCB0ZF90aHJoYW5kbGVfdCAqX190aCwgaW50IF9fcHJpbyk7CgoKCmV4dGVybiB0ZF9lcnJfZSB0
ZF90aHJfc2V0c2lncGVuZGluZyAoY29uc3QgdGRfdGhyaGFuZGxlX3QgKl9fdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBfX24sIGNvbnN0IHNp
Z3NldF90ICpfX3NzKTsKCgpleHRlcm4gdGRfZXJyX2UgdGRfdGhyX3NpZ3NldG1hc2sgKGNvbnN0
IHRkX3RocmhhbmRsZV90ICpfX3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHNpZ3NldF90ICpfX3NzKTsKCgoKZXh0ZXJuIHRkX2Vycl9lIHRkX3Rocl90c2QgKGNv
bnN0IHRkX3RocmhhbmRsZV90ICpfX3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdGhyZWFkX2tleV90IF9fdGssIHZvaWQgKipfX2RhdGEpOwoKCgpleHRlcm4gdGRfZXJyX2Ug
dGRfdGhyX2Ric3VzcGVuZCAoY29uc3QgdGRfdGhyaGFuZGxlX3QgKl9fdGgpOwoKCmV4dGVybiB0
ZF9lcnJfZSB0ZF90aHJfZGJyZXN1bWUgKGNvbnN0IHRkX3RocmhhbmRsZV90ICpfX3RoKTsKIyA4
ICIuLi9saW51eHRocmVhZHNfZGIvdGhyZWFkX2RiUC5oIiAyCiMgMSAiLi4vbGludXh0aHJlYWRz
L2ludGVybmFscy5oIiAxCiMgOSAiLi4vbGludXh0aHJlYWRzX2RiL3RocmVhZF9kYlAuaCIgMgoK
CgplbnVtCiAgewogICAgUFRIUkVBRF9USFJFQURTX0VWRU5UUyA9IDAsCiAgICBQVEhSRUFEX0xB
U1RfRVZFTlQsCiAgICBQVEhSRUFEX0hBTkRMRVNfTlVNLAogICAgUFRIUkVBRF9IQU5ETEVTLAog
ICAgUFRIUkVBRF9LRVlTLAogICAgTElOVVhUSFJFQURTX1BUSFJFQURfVEhSRUFEU19NQVgsCiAg
ICBMSU5VWFRIUkVBRFNfUFRIUkVBRF9LRVlTX01BWCwKICAgIExJTlVYVEhSRUFEU19QVEhSRUFE
X1NJWkVPRl9ERVNDUiwKICAgIExJTlVYVEhSRUFEU19DUkVBVEVfRVZFTlQsCiAgICBMSU5VWFRI
UkVBRFNfREVBVEhfRVZFTlQsCiAgICBMSU5VWFRIUkVBRFNfUkVBUF9FVkVOVCwKICAgIE5VTV9N
RVNTQUdFUwogIH07CgoKCgoKZXh0ZXJuIGludCBfX3RkX2RlYnVnOwoKCgoKCgpzdHJ1Y3QgdGRf
dGhyYWdlbnQKewoKCiAgc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoOwoKCgoKICBzdHJ1Y3QgcHRo
cmVhZF9oYW5kbGVfc3RydWN0ICpoYW5kbGVzOwoKCiAgc3RydWN0IHB0aHJlYWRfa2V5X3N0cnVj
dCAqa2V5czsKCgogIGludCBwdGhyZWFkX3RocmVhZHNfbWF4OwoKCiAgaW50IHB0aHJlYWRfa2V5
c19tYXg7CgoKICBpbnQgcHRocmVhZF9rZXlfMm5kbGV2ZWxfc2l6ZTsKCgogIGludCBzaXplb2Zf
ZGVzY3I7CgoKICBwc2FkZHJfdCBwdGhyZWFkX3RocmVhZHNfZXZlbnRzcDsKCgogIHBzYWRkcl90
IHB0aHJlYWRfbGFzdF9ldmVudDsKCgogIHBzYWRkcl90IHB0aHJlYWRfaGFuZGxlc19udW07Cn07
CgoKCnN0cnVjdCBhZ2VudF9saXN0CnsKICB0ZF90aHJhZ2VudF90ICp0YTsKICBzdHJ1Y3QgYWdl
bnRfbGlzdCAqbmV4dDsKfTsKCgpleHRlcm4gc3RydWN0IGFnZW50X2xpc3QgKl9fdGRfYWdlbnRf
bGlzdDsKCgpzdGF0aWMgaW5saW5lIGludAp0YV9vayAoY29uc3QgdGRfdGhyYWdlbnRfdCAqdGEp
CnsKICBzdHJ1Y3QgYWdlbnRfbGlzdCAqcnVucCA9IF9fdGRfYWdlbnRfbGlzdDsKCiAgaWYgKHRh
ID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuIDA7CgogIHdoaWxlIChydW5wICE9ICgodm9pZCAq
KTApICYmIHJ1bnAtPnRhICE9IHRhKQogICAgcnVucCA9IHJ1bnAtPm5leHQ7CgogIHJldHVybiBy
dW5wICE9ICgodm9pZCAqKTApOwp9CgoKCmV4dGVybiBpbnQgdGRfbG9va3VwIChzdHJ1Y3QgcHNf
cHJvY2hhbmRsZSAqcHMsIGludCBpZHgsIHBzYWRkcl90ICpzeW1fYWRkcik7CiMgMzcgImludGVy
bmFscy5oIiAyCiMgMSAiLi4vc3lzZGVwcy9nZW5lcmljL2hwLXRpbWluZy5oIiAxCiMgNzEgIi4u
L3N5c2RlcHMvZ2VuZXJpYy9ocC10aW1pbmcuaCIKdHlwZWRlZiBpbnQgaHBfdGltaW5nX3Q7CiMg
MzggImludGVybmFscy5oIiAyCiMgNTQgImludGVybmFscy5oIgpzdHJ1Y3QgcHRocmVhZF9zdGFy
dF9hcmdzIHsKICB2b2lkICogKCpzdGFydF9yb3V0aW5lKSh2b2lkICopOwogIHZvaWQgKiBhcmc7
CiAgc2lnc2V0X3QgbWFzazsKICBpbnQgc2NoZWRwb2xpY3k7CiAgc3RydWN0IHNjaGVkX3BhcmFt
IHNjaGVkcGFyYW07Cn07CiMgNzcgImludGVybmFscy5oIgp0eXBlZGVmIHZvaWQgKCpkZXN0cl9m
dW5jdGlvbikodm9pZCAqKTsKCnN0cnVjdCBwdGhyZWFkX2tleV9zdHJ1Y3QgewogIGludCBpbl91
c2U7CiAgZGVzdHJfZnVuY3Rpb24gZGVzdHI7Cn07CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRo
cmVhZF9kZXNjcl9zdHJ1Y3QgKiBwdGhyZWFkX2Rlc2NyOwojIDEwMSAiaW50ZXJuYWxzLmgiCnR5
cGVkZWYgc3RydWN0IF9wdGhyZWFkX2V4dHJpY2F0ZV9zdHJ1Y3QgewogICAgdm9pZCAqcHVfb2Jq
ZWN0OwogICAgaW50ICgqcHVfZXh0cmljYXRlX2Z1bmMpKHZvaWQgKiwgcHRocmVhZF9kZXNjcik7
Cn0gcHRocmVhZF9leHRyaWNhdGVfaWY7CgoKCnN0cnVjdCBwdGhyZWFkX2F0b21pYyB7CiAgbG9u
ZyBwX2NvdW50OwogIGludCBwX3NwaW5sb2NrOwp9OwojIDEyMSAiaW50ZXJuYWxzLmgiCnN0cnVj
dCBfcHRocmVhZF9yd2xvY2tfdDsKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX3J3bG9ja19pbmZv
IHsKICBzdHJ1Y3QgX3B0aHJlYWRfcndsb2NrX2luZm8gKnByX25leHQ7CiAgc3RydWN0IF9wdGhy
ZWFkX3J3bG9ja190ICpwcl9sb2NrOwogIGludCBwcl9sb2NrX2NvdW50Owp9IHB0aHJlYWRfcmVh
ZGxvY2tfaW5mbzsKCnN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgewogIHVuaW9uIHsKICAg
IHN0cnVjdCB7CiAgICAgIHB0aHJlYWRfZGVzY3Igc2VsZjsKICAgIH0gZGF0YTsKICAgIHZvaWQg
Kl9fcGFkZGluZ1sxNl07CiAgfSBwX2hlYWRlcjsKICBwdGhyZWFkX2Rlc2NyIHBfbmV4dGxpdmUs
IHBfcHJldmxpdmU7CgogIHB0aHJlYWRfZGVzY3IgcF9uZXh0d2FpdGluZzsKICBwdGhyZWFkX2Rl
c2NyIHBfbmV4dGxvY2s7CiAgcHRocmVhZF90IHBfdGlkOwogIGludCBwX3BpZDsKICBpbnQgcF9w
cmlvcml0eTsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgKiBwX2xvY2s7CiAgaW50IHBfc2ln
bmFsOwogIHNpZ2ptcF9idWYgKiBwX3NpZ25hbF9qbXA7CiAgc2lnam1wX2J1ZiAqIHBfY2FuY2Vs
X2ptcDsKICBjaGFyIHBfdGVybWluYXRlZDsKICBjaGFyIHBfZGV0YWNoZWQ7CiAgY2hhciBwX2V4
aXRlZDsKICB2b2lkICogcF9yZXR2YWw7CiAgaW50IHBfcmV0Y29kZTsKICBwdGhyZWFkX2Rlc2Ny
IHBfam9pbmluZzsKICBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKiBwX2NsZWFudXA7
CiAgY2hhciBwX2NhbmNlbHN0YXRlOwogIGNoYXIgcF9jYW5jZWx0eXBlOwogIGNoYXIgcF9jYW5j
ZWxlZDsKICBpbnQgKiBwX2Vycm5vcDsKICBpbnQgcF9lcnJubzsKICBpbnQgKiBwX2hfZXJybm9w
OwogIGludCBwX2hfZXJybm87CiAgY2hhciAqIHBfaW5fc2lnaGFuZGxlcjsKICBjaGFyIHBfc2ln
d2FpdGluZzsKICBzdHJ1Y3QgcHRocmVhZF9zdGFydF9hcmdzIHBfc3RhcnRfYXJnczsKICB2b2lk
ICoqIHBfc3BlY2lmaWNbKCgxMDI0ICsgMzIgLSAxKSAvIDMyKV07CiAgdm9pZCAqIHBfbGliY19z
cGVjaWZpY1tfTElCQ19UU0RfS0VZX05dOwogIGludCBwX3VzZXJzdGFjazsKICB2b2lkICpwX2d1
YXJkYWRkcjsKICBzaXplX3QgcF9ndWFyZHNpemU7CiAgaW50IHBfbnI7CiAgaW50IHBfcmVwb3J0
X2V2ZW50czsKICB0ZF9ldmVudGJ1Zl90IHBfZXZlbnRidWY7CiAgc3RydWN0IHB0aHJlYWRfYXRv
bWljIHBfcmVzdW1lX2NvdW50OwoKICBjaGFyIHBfd29rZW5fYnlfY2FuY2VsOwogIGNoYXIgcF9j
b25kdmFyX2F2YWlsOwogIGNoYXIgcF9zZW1fYXZhaWw7CiAgcHRocmVhZF9leHRyaWNhdGVfaWYg
KnBfZXh0cmljYXRlOwogIHB0aHJlYWRfcmVhZGxvY2tfaW5mbyAqcF9yZWFkbG9ja19saXN0Owog
IHB0aHJlYWRfcmVhZGxvY2tfaW5mbyAqcF9yZWFkbG9ja19mcmVlOwogIGludCBwX3VudHJhY2tl
ZF9yZWFkbG9ja19jb3VudDsKICBzdHJ1Y3QgX19yZXNfc3RhdGUgKnBfcmVzcDsKICBzdHJ1Y3Qg
X19yZXNfc3RhdGUgcF9yZXM7CiAgaW50IHBfaW5oZXJpdHNjaGVkOwoKCgoKfSBfX2F0dHJpYnV0
ZV9fICgoYWxpZ25lZCgzMikpKTsKIyAxOTcgImludGVybmFscy5oIgp0eXBlZGVmIHN0cnVjdCBw
dGhyZWFkX2hhbmRsZV9zdHJ1Y3QgKiBwdGhyZWFkX2hhbmRsZTsKCnN0cnVjdCBwdGhyZWFkX2hh
bmRsZV9zdHJ1Y3QgewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBoX2xvY2s7CiAgcHRocmVh
ZF9kZXNjciBoX2Rlc2NyOwogIGNoYXIgKiBoX2JvdHRvbTsKfTsKCgoKc3RydWN0IHB0aHJlYWRf
cmVxdWVzdCB7CiAgcHRocmVhZF9kZXNjciByZXFfdGhyZWFkOwogIGVudW0gewogICAgUkVRX0NS
RUFURSwgUkVRX0ZSRUUsIFJFUV9QUk9DRVNTX0VYSVQsIFJFUV9NQUlOX1RIUkVBRF9FWElULAog
ICAgUkVRX1BPU1QsIFJFUV9ERUJVRywgUkVRX0tJQ0ssIFJFUV9GT1JfRUFDSF9USFJFQUQKICB9
IHJlcV9raW5kOwogIHVuaW9uIHsKICAgIHN0cnVjdCB7CiAgICAgIGNvbnN0IHB0aHJlYWRfYXR0
cl90ICogYXR0cjsKICAgICAgdm9pZCAqICgqZm4pKHZvaWQgKik7CiAgICAgIHZvaWQgKiBhcmc7
CiAgICAgIHNpZ3NldF90IG1hc2s7CiAgICB9IGNyZWF0ZTsKICAgIHN0cnVjdCB7CiAgICAgIHB0
aHJlYWRfdCB0aHJlYWRfaWQ7CiAgICB9IGZyZWU7CiAgICBzdHJ1Y3QgewogICAgICBpbnQgY29k
ZTsKICAgIH0gZXhpdDsKICAgIHZvaWQgKiBwb3N0OwogICAgc3RydWN0IHsKICAgICAgdm9pZCAo
KmZuKSh2b2lkICosIHB0aHJlYWRfZGVzY3IpOwogICAgICB2b2lkICphcmc7CiAgICB9IGZvcl9l
YWNoOwogIH0gcmVxX2FyZ3M7Cn07CgoKCgpleHRlcm4gaW50IF9fcHRocmVhZF9zaWdfcmVzdGFy
dDsKZXh0ZXJuIGludCBfX3B0aHJlYWRfc2lnX2NhbmNlbDsKCgoKZXh0ZXJuIGludCBfX3B0aHJl
YWRfc2lnX2RlYnVnOwoKCgoKCmV4dGVybiBzdHJ1Y3QgcHRocmVhZF9oYW5kbGVfc3RydWN0IF9f
cHRocmVhZF9oYW5kbGVzWzEwMjRdOwoKCgpleHRlcm4gc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0
cnVjdCBfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQ7CgoKCmV4dGVybiBzdHJ1Y3QgX3B0aHJlYWRf
ZGVzY3Jfc3RydWN0IF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZDsKCgoKZXh0ZXJuIHB0aHJlYWRf
ZGVzY3IgX19wdGhyZWFkX21haW5fdGhyZWFkOwoKCgoKCgpleHRlcm4gY2hhciAqX19wdGhyZWFk
X2luaXRpYWxfdGhyZWFkX2JvczsKCgoKCmV4dGVybiBpbnQgX19wdGhyZWFkX25vbnN0YW5kYXJk
X3N0YWNrczsKCgoKCmV4dGVybiBpbnQgX19wdGhyZWFkX21hbmFnZXJfcmVxdWVzdDsKCgoKZXh0
ZXJuIGludCBfX3B0aHJlYWRfbWFuYWdlcl9yZWFkZXI7CgoKCmV4dGVybiBjaGFyICpfX3B0aHJl
YWRfbWFuYWdlcl90aHJlYWRfYm9zOwpleHRlcm4gY2hhciAqX19wdGhyZWFkX21hbmFnZXJfdGhy
ZWFkX3RvczsKIyAyOTUgImludGVybmFscy5oIgpleHRlcm4gaW50IF9fcHRocmVhZF9leGl0X3Jl
cXVlc3RlZCwgX19wdGhyZWFkX2V4aXRfY29kZTsKCgoKZXh0ZXJuIHZvbGF0aWxlIGludCBfX3B0
aHJlYWRfdGhyZWFkc19kZWJ1ZzsKCgpleHRlcm4gdm9sYXRpbGUgdGRfdGhyX2V2ZW50c190IF9f
cHRocmVhZF90aHJlYWRzX2V2ZW50czsKCgpleHRlcm4gdm9sYXRpbGUgcHRocmVhZF9kZXNjciBf
X3B0aHJlYWRfbGFzdF9ldmVudDsKCgpleHRlcm4gaW50IF9fcHRocmVhZF9zbXBfa2VybmVsOwoK
CgpzdGF0aWMgaW5saW5lIHB0aHJlYWRfaGFuZGxlIHRocmVhZF9oYW5kbGUocHRocmVhZF90IGlk
KQp7CiAgcmV0dXJuICZfX3B0aHJlYWRfaGFuZGxlc1tpZCAlIDEwMjRdOwp9CgoKCnN0YXRpYyBp
bmxpbmUgaW50IGludmFsaWRfaGFuZGxlKHB0aHJlYWRfaGFuZGxlIGgsIHB0aHJlYWRfdCBpZCkK
ewogIHJldHVybiBoLT5oX2Rlc2NyID09ICgodm9pZCAqKTApIHx8IGgtPmhfZGVzY3ItPnBfdGlk
ICE9IGlkIHx8IGgtPmhfZGVzY3ItPnBfdGVybWluYXRlZDsKfQoKc3RhdGljIGlubGluZSBpbnQg
bm9uZXhpc3RpbmdfaGFuZGxlKHB0aHJlYWRfaGFuZGxlIGgsIHB0aHJlYWRfdCBpZCkKewogIHJl
dHVybiBoLT5oX2Rlc2NyID09ICgodm9pZCAqKTApIHx8IGgtPmhfZGVzY3ItPnBfdGlkICE9IGlk
Owp9CiMgMzc1ICJpbnRlcm5hbHMuaCIKZXh0ZXJuIHB0aHJlYWRfZGVzY3IgX19wdGhyZWFkX2Zp
bmRfc2VsZiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgpzdGF0aWMgaW5saW5lIHB0
aHJlYWRfZGVzY3IgdGhyZWFkX3NlbGYgKHZvaWQpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwpz
dGF0aWMgaW5saW5lIHB0aHJlYWRfZGVzY3IgdGhyZWFkX3NlbGYgKHZvaWQpCnsKCgoKICBjaGFy
ICpzcCA9IF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzICgwKTsKICBpZiAoc3AgPj0gX19wdGhyZWFk
X2luaXRpYWxfdGhyZWFkX2JvcykKICAgIHJldHVybiAmX19wdGhyZWFkX2luaXRpYWxfdGhyZWFk
OwogIGVsc2UgaWYgKHNwID49IF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZF9ib3MKICAgICAgICAg
ICAmJiBzcCA8IF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZF90b3MpCiAgICByZXR1cm4gJl9fcHRo
cmVhZF9tYW5hZ2VyX3RocmVhZDsKICBlbHNlIGlmIChfX3B0aHJlYWRfbm9uc3RhbmRhcmRfc3Rh
Y2tzKQogICAgcmV0dXJuIF9fcHRocmVhZF9maW5kX3NlbGYoKTsKICBlbHNlCgogICAgcmV0dXJu
IChwdGhyZWFkX2Rlc2NyKSgoKHVuc2lnbmVkIGxvbmcpc3AgfCAoKDIgKiAxMDI0ICogMTAyNCkt
MSkpKzEpIC0gMTsKCgoKCn0KIyA0NTEgImludGVybmFscy5oIgpleHRlcm4gdm9pZCBfX3B0aHJl
YWRfZG9fZXhpdCAodm9pZCAqcmV0dmFsLCBjaGFyICpjdXJyZW50ZnJhbWUpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwpleHRlcm4gdm9pZCBfX3B0aHJlYWRfZGVzdHJveV9z
cGVjaWZpY3MgKHZvaWQpOwpleHRlcm4gdm9pZCBfX3B0aHJlYWRfcGVyZm9ybV9jbGVhbnVwIChj
aGFyICpjdXJyZW50ZnJhbWUpOwpleHRlcm4gdm9pZCBfX3B0aHJlYWRfaW5pdF9tYXhfc3RhY2tz
aXplICh2b2lkKTsKZXh0ZXJuIGludCBfX3B0aHJlYWRfaW5pdGlhbGl6ZV9tYW5hZ2VyICh2b2lk
KTsKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX21lc3NhZ2UgKGNoYXIgKiBmbXQsIC4uLik7CmV4dGVy
biBpbnQgX19wdGhyZWFkX21hbmFnZXIgKHZvaWQgKnJlcWZkKTsKZXh0ZXJuIGludCBfX3B0aHJl
YWRfbWFuYWdlcl9ldmVudCAodm9pZCAqcmVxZmQpOwpleHRlcm4gdm9pZCBfX3B0aHJlYWRfbWFu
YWdlcl9zaWdoYW5kbGVyIChpbnQgc2lnKTsKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX3Jlc2V0X21h
aW5fdGhyZWFkICh2b2lkKTsKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX29uY2VfZm9ya19wcmVwYXJl
ICh2b2lkKTsKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX29uY2VfZm9ya19wYXJlbnQgKHZvaWQpOwpl
eHRlcm4gdm9pZCBfX3B0aHJlYWRfb25jZV9mb3JrX2NoaWxkICh2b2lkKTsKZXh0ZXJuIHZvaWQg
X19mbG9ja2ZpbGVsaXN0ICh2b2lkKTsKZXh0ZXJuIHZvaWQgX19mdW5sb2NrZmlsZWxpc3QgKHZv
aWQpOwpleHRlcm4gdm9pZCBfX2ZyZXNldGxvY2tmaWxlcyAodm9pZCk7CmV4dGVybiB2b2lkIF9f
cHRocmVhZF9tYW5hZ2VyX2FkanVzdF9wcmlvIChpbnQgdGhyZWFkX3ByaW8pOwpleHRlcm4gdm9p
ZCBfX3B0aHJlYWRfaW5pdGlhbGl6ZV9taW5pbWFsICh2b2lkKTsKCmV4dGVybiBpbnQgX19wdGhy
ZWFkX2F0dHJfc2V0Z3VhcmRzaXplIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fZ3VhcmRzaXplKTsKZXh0ZXJu
IGludCBfX3B0aHJlYWRfYXR0cl9nZXRndWFyZHNpemUgKGNvbnN0IHB0aHJlYWRfYXR0cl90ICpf
X2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9f
Z3VhcmRzaXplKTsKZXh0ZXJuIGludCBfX3B0aHJlYWRfYXR0cl9zZXRzdGFja2FkZHIgKHB0aHJl
YWRfYXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpfX3N0YWNrYWRkcik7CmV4dGVybiBpbnQgX19wdGhyZWFkX2F0dHJfZ2V0c3RhY2th
ZGRyIChjb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqKl9fc3RhY2thZGRyKTsKZXh0ZXJuIGludCBfX3B0aHJl
YWRfYXR0cl9zZXRzdGFja3NpemUgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGFja3NpemUpOwpleHRlcm4g
aW50IF9fcHRocmVhZF9hdHRyX2dldHN0YWNrc2l6ZSAoY29uc3QgcHRocmVhZF9hdHRyX3QgKl9f
YXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19z
dGFja3NpemUpOwpleHRlcm4gaW50IF9fcHRocmVhZF9hdHRyX3NldHN0YWNrIChwdGhyZWFkX2F0
dHJfdCAqX19hdHRyLCB2b2lkICpfX3N0YWNrYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fc3RhY2tzaXplKTsKZXh0ZXJuIGludCBfX3B0aHJlYWRfYXR0
cl9nZXRzdGFjayAoY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwgdm9pZCAqKl9fc3RhY2th
ZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fc3RhY2tz
aXplKTsKZXh0ZXJuIGludCBfX3B0aHJlYWRfZ2V0Y29uY3VycmVuY3kgKHZvaWQpOwpleHRlcm4g
aW50IF9fcHRocmVhZF9zZXRjb25jdXJyZW5jeSAoaW50IF9fbGV2ZWwpOwpleHRlcm4gaW50IF9f
cHRocmVhZF9tdXRleF90aW1lZGxvY2sgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9f
YWJzdGltZSk7CmV4dGVybiBpbnQgX19wdGhyZWFkX211dGV4YXR0cl9nZXRwc2hhcmVkIChjb25z
dCBwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgKl9fcHNoYXJlZCk7CmV4dGVybiBpbnQgX19wdGhyZWFkX211
dGV4YXR0cl9zZXRwc2hhcmVkIChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19wc2hhcmVkKTsKZXh0ZXJu
IGludCBfX3B0aHJlYWRfbXV0ZXhhdHRyX2dldHR5cGUgKGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRy
X3QgKl9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAq
X19raW5kKTsKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX2tpbGxfb3RoZXJfdGhyZWFkc19ucCAodm9p
ZCk7CgpleHRlcm4gdm9pZCBfX3B0aHJlYWRfcmVzdGFydF9vbGQocHRocmVhZF9kZXNjciB0aCk7
CmV4dGVybiB2b2lkIF9fcHRocmVhZF9zdXNwZW5kX29sZChwdGhyZWFkX2Rlc2NyIHNlbGYpOwpl
eHRlcm4gaW50IF9fcHRocmVhZF90aW1lZHN1c3BlbmRfb2xkKHB0aHJlYWRfZGVzY3Igc2VsZiwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICphYnMpOwoKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX3Jlc3Rh
cnRfbmV3KHB0aHJlYWRfZGVzY3IgdGgpOwpleHRlcm4gdm9pZCBfX3B0aHJlYWRfc3VzcGVuZF9u
ZXcocHRocmVhZF9kZXNjciBzZWxmKTsKZXh0ZXJuIGludCBfX3B0aHJlYWRfdGltZWRzdXNwZW5k
X25ldyhwdGhyZWFkX2Rlc2NyIHNlbGYsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqYWJzKTsKCmV4
dGVybiB2b2lkIF9fcHRocmVhZF93YWl0X2Zvcl9yZXN0YXJ0X3NpZ25hbChwdGhyZWFkX2Rlc2Ny
IHNlbGYpOwoKZXh0ZXJuIGludCBfX3B0aHJlYWRfeWllbGQgKHZvaWQpOwoKZXh0ZXJuIGludCBf
X3B0aHJlYWRfcndsb2NrX3RpbWVkcmRsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3Jlc3RyaWN0
IF9fcndsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19hYnN0aW1lKTsKZXh0ZXJuIGludCBfX3B0aHJlYWRfcndsb2NrX3Rp
bWVkd3Jsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3Jlc3RyaWN0IF9fcndsb2NrLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVj
ICpfX3Jlc3RyaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19h
YnN0aW1lKTsKZXh0ZXJuIGludCBfX3B0aHJlYWRfcndsb2NrYXR0cl9kZXN0cm95IChwdGhyZWFk
X3J3bG9ja2F0dHJfdCAqX19hdHRyKTsKCmV4dGVybiBpbnQgX19wdGhyZWFkX2JhcnJpZXJhdHRy
X2dldHBzaGFyZWQgKF9fY29uc3QgcHRocmVhZF9iYXJyaWVyYXR0cl90ICoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX2F0dHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBf
X3BzaGFyZWQpOwoKZXh0ZXJuIGludCBfX3B0aHJlYWRfc3Bpbl9sb2NrIChwdGhyZWFkX3NwaW5s
b2NrX3QgKl9fbG9jayk7CmV4dGVybiBpbnQgX19wdGhyZWFkX3NwaW5fdHJ5bG9jayAocHRocmVh
ZF9zcGlubG9ja190ICpfX2xvY2spOwpleHRlcm4gaW50IF9fcHRocmVhZF9zcGluX3VubG9jayAo
cHRocmVhZF9zcGlubG9ja190ICpfX2xvY2spOwpleHRlcm4gaW50IF9fcHRocmVhZF9zcGluX2lu
aXQgKHB0aHJlYWRfc3BpbmxvY2tfdCAqX19sb2NrLCBpbnQgX19wc2hhcmVkKTsKZXh0ZXJuIGlu
dCBfX3B0aHJlYWRfc3Bpbl9kZXN0cm95IChwdGhyZWFkX3NwaW5sb2NrX3QgKl9fbG9jayk7Cgpl
eHRlcm4gaW50IF9fcHRocmVhZF9jbG9ja19nZXR0aW1lIChocF90aW1pbmdfdCBmcmVxLCBzdHJ1
Y3QgdGltZXNwZWMgKnRwKTsKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX2Nsb2NrX3NldHRpbWUgKGhw
X3RpbWluZ190IG9mZnNldCk7CgoKCgpleHRlcm4gdm9pZCAoKl9fcHRocmVhZF9yZXN0YXJ0KShw
dGhyZWFkX2Rlc2NyKTsKZXh0ZXJuIHZvaWQgKCpfX3B0aHJlYWRfc3VzcGVuZCkocHRocmVhZF9k
ZXNjcik7CmV4dGVybiBpbnQgKCpfX3B0aHJlYWRfdGltZWRzdXNwZW5kKShwdGhyZWFkX2Rlc2Ny
LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKik7CgoKCmV4dGVybiBpbnQgX19saWJjX2Nsb3NlIChp
bnQgZmQpOwpleHRlcm4gaW50IF9fbGliY19uYW5vc2xlZXAgKGNvbnN0IHN0cnVjdCB0aW1lc3Bl
YyAqcmVxdWVzdGVkX3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRp
bWVzcGVjICpyZW1haW5pbmcpOwoKZXh0ZXJuIGludCBfX25ld19zZW1fcG9zdCAoc2VtX3QgKiBz
ZW0pOwpleHRlcm4gaW50IF9fbmV3X3NlbV9pbml0IChzZW1fdCAqX19zZW0sIGludCBfX3BzaGFy
ZWQsIHVuc2lnbmVkIGludCBfX3ZhbHVlKTsKZXh0ZXJuIGludCBfX25ld19zZW1fd2FpdCAoc2Vt
X3QgKl9fc2VtKTsKZXh0ZXJuIGludCBfX25ld19zZW1fdHJ5d2FpdCAoc2VtX3QgKl9fc2VtKTsK
ZXh0ZXJuIGludCBfX25ld19zZW1fZ2V0dmFsdWUgKHNlbV90ICpfX3Jlc3RyaWN0IF9fc2VtLCBp
bnQgKl9fcmVzdHJpY3QgX19zdmFsKTsKZXh0ZXJuIGludCBfX25ld19zZW1fZGVzdHJveSAoc2Vt
X3QgKl9fc2VtKTsKCgpleHRlcm4gaW50IF9fcHRocmVhZF9hdHRyX2luaXRfMl8xIChwdGhyZWFk
X2F0dHJfdCAqX19hdHRyKTsKZXh0ZXJuIGludCBfX3B0aHJlYWRfYXR0cl9pbml0XzJfMCAocHRo
cmVhZF9hdHRyX3QgKl9fYXR0cik7CmV4dGVybiBpbnQgX19wdGhyZWFkX2NyZWF0ZV8yXzEgKHB0
aHJlYWRfdCAqX19yZXN0cmljdCBfX3RocmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqKCpfX3N0YXJ0X3JvdXRpbmUpICh2b2lkICopLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX3Jlc3RyaWN0IF9fYXJnKTsKZXh0ZXJuIGlu
dCBfX3B0aHJlYWRfY3JlYXRlXzJfMCAocHRocmVhZF90ICpfX3Jlc3RyaWN0IHRocmVhZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKCpfX3N0YXJ0X3JvdXRp
bmUpICh2b2lkICopLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX3Jl
c3RyaWN0IGFyZyk7CgoKZXh0ZXJuIHZvaWQgX19saW51eHRocmVhZHNfY3JlYXRlX2V2ZW50ICh2
b2lkKTsKZXh0ZXJuIHZvaWQgX19saW51eHRocmVhZHNfZGVhdGhfZXZlbnQgKHZvaWQpOwpleHRl
cm4gdm9pZCBfX2xpbnV4dGhyZWFkc19yZWFwX2V2ZW50ICh2b2lkKTsKCgpleHRlcm4gdm9pZCBf
X3B0aHJlYWRfaW5pdGlhbGl6ZSAodm9pZCk7CiMgMzEgInB0aHJlYWQuYyIgMgojIDEgInNwaW5s
b2NrLmgiIDEKIyAxNSAic3BpbmxvY2suaCIKIyAxICIuLi9saW51eHRocmVhZHMvc3lzZGVwcy9w
dGhyZWFkL2JpdHMvaW5pdHNwaW4uaCIgMQojIDE2ICJzcGlubG9jay5oIiAyCiMgMzggInNwaW5s
b2NrLmgiCmV4dGVybiBpbnQgX19wdGhyZWFkX2hhc19jYXM7CmV4dGVybiBpbnQgX19wdGhyZWFk
X2NvbXBhcmVfYW5kX3N3YXAobG9uZyAqIHB0ciwgbG9uZyBvbGR2YWwsIGxvbmcgbmV3dmFsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqIHNwaW5sb2NrKTsKCnN0
YXRpYyBpbmxpbmUgaW50IGNvbXBhcmVfYW5kX3N3YXAobG9uZyAqIHB0ciwgbG9uZyBvbGR2YWws
IGxvbmcgbmV3dmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqIHNw
aW5sb2NrKQp7CiAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKF9fcHRocmVhZF9oYXNfY2FzLCAxKSkK
ICAgIHJldHVybiBfX2NvbXBhcmVfYW5kX3N3YXAocHRyLCBvbGR2YWwsIG5ld3ZhbCk7CiAgZWxz
ZQogICAgcmV0dXJuIF9fcHRocmVhZF9jb21wYXJlX2FuZF9zd2FwKHB0ciwgb2xkdmFsLCBuZXd2
YWwsIHNwaW5sb2NrKTsKfQojIDk1ICJzcGlubG9jay5oIgpleHRlcm4gdm9pZCBfX2F0dHJpYnV0
ZV9fICgocmVncGFybSAoMyksIHN0ZGNhbGwpKSBfX3B0aHJlYWRfbG9jayhzdHJ1Y3QgX3B0aHJl
YWRfZmFzdGxvY2sgKiBsb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdGhyZWFkX2Rlc2NyIHNlbGYpOwpleHRlcm4gaW50IF9fcHRocmVhZF91bmxvY2so
c3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrICpsb2NrKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3B0
aHJlYWRfaW5pdF9sb2NrKHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayAqIGxvY2spCnsKICBsb2Nr
LT5fX3N0YXR1cyA9IDA7CiAgbG9jay0+X19zcGlubG9jayA9IDA7Cn0KCnN0YXRpYyBpbmxpbmUg
aW50IF9fcHRocmVhZF90cnlsb2NrIChzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgKiBsb2NrKQp7
CgogIGlmICghX19wdGhyZWFkX2hhc19jYXMpCgoKICB7CiAgICByZXR1cm4gKHRlc3RhbmRzZXQo
JmxvY2stPl9fc3BpbmxvY2spID8gMTYgOiAwKTsKICB9CgoKCiAgZG8gewogICAgaWYgKGxvY2st
Pl9fc3RhdHVzICE9IDApIHJldHVybiAxNjsKICB9IHdoaWxlKCEgX19jb21wYXJlX2FuZF9zd2Fw
KCZsb2NrLT5fX3N0YXR1cywgMCwgMSkpOwogIHJldHVybiAwOwoKfQoKCgoKCmV4dGVybiB2b2lk
IF9fcHRocmVhZF9hbHRfbG9jayhzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgKiBsb2NrLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9kZXNjciBzZWxmKTsKCmV4dGVybiBp
bnQgX19wdGhyZWFkX2FsdF90aW1lZGxvY2soc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrICogbG9j
aywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0aHJlYWRfZGVzY3Igc2VsZiwgY29u
c3Qgc3RydWN0IHRpbWVzcGVjICphYnN0aW1lKTsKCmV4dGVybiB2b2lkIF9fcHRocmVhZF9hbHRf
dW5sb2NrKHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayAqbG9jayk7CgpzdGF0aWMgaW5saW5lIHZv
aWQgX19wdGhyZWFkX2FsdF9pbml0X2xvY2soc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrICogbG9j
aykKewogIGxvY2stPl9fc3RhdHVzID0gMDsKICBsb2NrLT5fX3NwaW5sb2NrID0gMDsKfQoKc3Rh
dGljIGlubGluZSBpbnQgX19wdGhyZWFkX2FsdF90cnlsb2NrIChzdHJ1Y3QgX3B0aHJlYWRfZmFz
dGxvY2sgKiBsb2NrKQp7CgogIGlmICghX19wdGhyZWFkX2hhc19jYXMpCgoKICB7CiAgICBpbnQg
cmVzID0gMTY7CgogICAgaWYgKHRlc3RhbmRzZXQoJmxvY2stPl9fc3BpbmxvY2spID09IDApCiAg
ICAgIHsKICAgICAgICBpZiAobG9jay0+X19zdGF0dXMgPT0gMCkKICAgICAgICAgIHsKICAgICAg
ICAgICAgbG9jay0+X19zdGF0dXMgPSAxOwogICAgICAgICAgICA7CiAgICAgICAgICAgIHJlcyA9
IDA7CiAgICAgICAgICB9CiAgICAgICAgbG9jay0+X19zcGlubG9jayA9IDA7CiAgICAgIH0KICAg
IHJldHVybiByZXM7CiAgfQoKCgogIGRvIHsKICAgIGlmIChsb2NrLT5fX3N0YXR1cyAhPSAwKSBy
ZXR1cm4gMTY7CiAgfSB3aGlsZSghIGNvbXBhcmVfYW5kX3N3YXAoJmxvY2stPl9fc3RhdHVzLCAw
LCAxLCAmbG9jay0+X19zcGlubG9jaykpOwogIHJldHVybiAwOwoKfQoKCgpzdGF0aWMgaW5saW5l
IGxvbmcgYXRvbWljX2luY3JlbWVudChzdHJ1Y3QgcHRocmVhZF9hdG9taWMgKnBhKQp7CiAgICBs
b25nIG9sZHZhbDsKCiAgICBkbyB7CiAgICAgICAgb2xkdmFsID0gcGEtPnBfY291bnQ7CiAgICB9
IHdoaWxlICghY29tcGFyZV9hbmRfc3dhcCgmcGEtPnBfY291bnQsIG9sZHZhbCwgb2xkdmFsICsg
MSwgJnBhLT5wX3NwaW5sb2NrKSk7CgogICAgcmV0dXJuIG9sZHZhbDsKfQoKCnN0YXRpYyBpbmxp
bmUgbG9uZyBhdG9taWNfZGVjcmVtZW50KHN0cnVjdCBwdGhyZWFkX2F0b21pYyAqcGEpCnsKICAg
IGxvbmcgb2xkdmFsOwoKICAgIGRvIHsKICAgICAgICBvbGR2YWwgPSBwYS0+cF9jb3VudDsKICAg
IH0gd2hpbGUgKCFjb21wYXJlX2FuZF9zd2FwKCZwYS0+cF9jb3VudCwgb2xkdmFsLCBvbGR2YWwg
LSAxLCAmcGEtPnBfc3BpbmxvY2spKTsKCiAgICByZXR1cm4gb2xkdmFsOwp9CgoKc3RhdGljIGlu
bGluZSB2b2lkCl9fcHRocmVhZF9zZXRfb3duX2V4dHJpY2F0ZV9pZiAocHRocmVhZF9kZXNjciBz
ZWxmLCBwdGhyZWFkX2V4dHJpY2F0ZV9pZiAqcGVpZikKewoKCgogIGlmIChwZWlmID09ICgodm9p
ZCAqKTApCiAgICAgIHx8IHNlbGYtPnBfY2FuY2Vsc3RhdGUgPT0gUFRIUkVBRF9DQU5DRUxfRU5B
QkxFKQogICAgewoKCgoKICAgICAgaWYgKHBlaWYgPT0gKCh2b2lkICopMCkpCiAgICAgICAgX19w
dGhyZWFkX2xvY2sgKHNlbGYtPnBfbG9jaywgc2VsZik7CiAgICAgIHNlbGYtPnBfZXh0cmljYXRl
ID0gKHBlaWYpOwogICAgICBpZiAocGVpZiA9PSAoKHZvaWQgKikwKSkKICAgICAgICBfX3B0aHJl
YWRfdW5sb2NrIChzZWxmLT5wX2xvY2spOwogICAgfQp9CiMgMzIgInB0aHJlYWQuYyIgMgojIDEg
InJlc3RhcnQuaCIgMQojIDE2ICJyZXN0YXJ0LmgiCiMgMSAiLi4vc3lzZGVwcy91bml4L3N5c3Yv
bGludXgva2VybmVsLWZlYXR1cmVzLmgiIDEKIyAxNyAicmVzdGFydC5oIiAyCgoKCnN0YXRpYyBp
bmxpbmUgdm9pZCByZXN0YXJ0KHB0aHJlYWRfZGVzY3IgdGgpCnsKCgogIF9fcHRocmVhZF9yZXN0
YXJ0X25ldyh0aCk7CgoKCn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzdXNwZW5kKHB0aHJlYWRfZGVz
Y3Igc2VsZikKewoKCiAgX19wdGhyZWFkX3dhaXRfZm9yX3Jlc3RhcnRfc2lnbmFsKHNlbGYpOwoK
Cgp9CgpzdGF0aWMgaW5saW5lIGludCB0aW1lZHN1c3BlbmQocHRocmVhZF9kZXNjciBzZWxmLAog
ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICphYnN0aW1lKQp7CgoKICByZXR1
cm4gX19wdGhyZWFkX3RpbWVkc3VzcGVuZF9uZXcoc2VsZiwgYWJzdGltZSk7CgoKCn0KIyAzMyAi
cHRocmVhZC5jIiAyCgoKCgoKZXh0ZXJuIHN0cnVjdCBfX3Jlc19zdGF0ZSBfcmVzOwoKCgoKCgoK
ZXh0ZXJuIGludCBfZXJybm87CmV4dGVybiBpbnQgX2hfZXJybm87CgoKCnN0cnVjdCBfcHRocmVh
ZF9kZXNjcl9zdHJ1Y3QgX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkID0gewogIHsKICAgIHsKICAg
ICAgJl9fcHRocmVhZF9pbml0aWFsX3RocmVhZAogICAgfQogIH0sCiAgJl9fcHRocmVhZF9pbml0
aWFsX3RocmVhZCwKICAmX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkLAogICgodm9pZCAqKTApLAog
ICgodm9pZCAqKTApLAogIDEwMjQsCiAgMCwKICAwLAogICZfX3B0aHJlYWRfaGFuZGxlc1swXS5o
X2xvY2ssCiAgMCwKICAoKHZvaWQgKikwKSwKICAoKHZvaWQgKikwKSwKICAwLAogIDAsCiAgMCwK
ICAoKHZvaWQgKikwKSwKICAwLAogICgodm9pZCAqKTApLAogICgodm9pZCAqKTApLAogIDAsCiAg
MCwKICAwLAogICZfZXJybm8sCiAgMCwKICAmX2hfZXJybm8sCiAgMCwKICAoKHZvaWQgKikwKSwK
ICAwLAogIHsgKHZvaWQgKigqKSAodm9pZCAqKSkgKCh2b2lkICopMCksICgodm9pZCAqKTApLCB7
ezAsIH19LCAwLCB7IDAgfSB9LAoKICB7KCh2b2lkICopMCl9LAogIHsoKHZvaWQgKikwKX0sCiAg
MSwKICAoKHZvaWQgKikwKSwKICAwLAogIDAsCiAgMCwKICB7e3swLCB9fSwgMCwgKCh2b2lkICop
MCl9LAogIHsgMCwgMCB9LAogIDAsCiAgMCwKICAwLAogICgodm9pZCAqKTApLAogICgodm9pZCAq
KTApLAogICgodm9pZCAqKTApLAogIDAKfTsKCgoKCgpzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3Ry
dWN0IF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCA9IHsKICB7CiAgICB7CiAgICAgICZfX3B0aHJl
YWRfbWFuYWdlcl90aHJlYWQKICAgIH0KICB9LAogICgodm9pZCAqKTApLAogICgodm9pZCAqKTAp
LAogICgodm9pZCAqKTApLAogICgodm9pZCAqKTApLAogIDAsCiAgMCwKICAwLAogICZfX3B0aHJl
YWRfaGFuZGxlc1sxXS5oX2xvY2ssCiAgMCwKICAoKHZvaWQgKikwKSwKICAoKHZvaWQgKikwKSwK
ICAwLAogIDAsCiAgMCwKICAoKHZvaWQgKikwKSwKICAwLAogICgodm9pZCAqKTApLAogICgodm9p
ZCAqKTApLAogIDAsCiAgMCwKICAwLAogICZfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQucF9lcnJu
bywKICAwLAogICgodm9pZCAqKTApLAogIDAsCiAgKCh2b2lkICopMCksCiAgMCwKICB7ICh2b2lk
ICooKikgKHZvaWQgKikpIF9fcHRocmVhZF9tYW5hZ2VyLCAoKHZvaWQgKikwKSwge3swLCB9fSwg
MCwgeyAwIH0gfSwKCiAgeygodm9pZCAqKTApfSwKICB7KCh2b2lkICopMCl9LAogIDAsCiAgKCh2
b2lkICopMCksCiAgMCwKICAxLAogIDAsCiAge3t7MCwgfX0sIDAsICgodm9pZCAqKTApfSwKICB7
IDAsIDAgfSwKICAwLAogIDAsCiAgMCwKICAoKHZvaWQgKikwKSwKICAoKHZvaWQgKikwKSwKICAo
KHZvaWQgKikwKSwKICAwCn07CgoKCgpwdGhyZWFkX2Rlc2NyIF9fcHRocmVhZF9tYWluX3RocmVh
ZCA9ICZfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQ7CgoKCgpjaGFyICpfX3B0aHJlYWRfaW5pdGlh
bF90aHJlYWRfYm9zOwoKCgoKaW50IF9fcHRocmVhZF9tYW5hZ2VyX3JlcXVlc3QgPSAtMTsKCgoK
aW50IF9fcHRocmVhZF9tYW5hZ2VyX3JlYWRlcjsKCgoKY2hhciAqX19wdGhyZWFkX21hbmFnZXJf
dGhyZWFkX2JvczsKY2hhciAqX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3RvczsKCgoKaW50IF9f
cHRocmVhZF9leGl0X3JlcXVlc3RlZDsKaW50IF9fcHRocmVhZF9leGl0X2NvZGU7CgoKc2l6ZV90
IF9fcHRocmVhZF9tYXhfc3RhY2tzaXplOwoKCmludCBfX3B0aHJlYWRfc21wX2tlcm5lbDsKIyAy
MDggInB0aHJlYWQuYyIKY29uc3QgaW50IF9fcHRocmVhZF90aHJlYWRzX21heCA9IDEwMjQ7CmNv
bnN0IGludCBfX3B0aHJlYWRfc2l6ZW9mX2hhbmRsZSA9IHNpemVvZihzdHJ1Y3QgcHRocmVhZF9o
YW5kbGVfc3RydWN0KTsKY29uc3QgaW50IF9fcHRocmVhZF9vZmZzZXRvZl9kZXNjciA9ICgoc2l6
ZV90KSAmKChzdHJ1Y3QgcHRocmVhZF9oYW5kbGVfc3RydWN0ICopMCktPmhfZGVzY3IpOwoKY29u
c3QgaW50IF9fcHRocmVhZF9vZmZzZXRvZl9waWQgPSAoKHNpemVfdCkgJigoc3RydWN0IF9wdGhy
ZWFkX2Rlc2NyX3N0cnVjdCAqKTApLT5wX3BpZCk7Cgpjb25zdCBpbnQgX19saW51eHRocmVhZHNf
cHRocmVhZF9zaXplb2ZfZGVzY3IKICA9IHNpemVvZihzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3Ry
dWN0KTsKCgoKc3RhdGljIHZvaWQgcHRocmVhZF9vbmV4aXRfcHJvY2VzcyhpbnQgcmV0Y29kZSwg
dm9pZCAqYXJnKTsKCgoKCnN0YXRpYyB2b2lkIHB0aHJlYWRfaGFuZGxlX3NpZ2NhbmNlbChpbnQg
c2lnKTsKc3RhdGljIHZvaWQgcHRocmVhZF9oYW5kbGVfc2lncmVzdGFydChpbnQgc2lnKTsKc3Rh
dGljIHZvaWQgcHRocmVhZF9oYW5kbGVfc2lnZGVidWcoaW50IHNpZyk7CiMgMjQ1ICJwdGhyZWFk
LmMiCnN0YXRpYyBpbnQgY3VycmVudF9ydG1pbjsKc3RhdGljIGludCBjdXJyZW50X3J0bWF4OwoK
CmludCBfX3B0aHJlYWRfc2lnX3Jlc3RhcnQgPSAzMjsKaW50IF9fcHRocmVhZF9zaWdfY2FuY2Vs
ID0gMzIgKyAxOwppbnQgX19wdGhyZWFkX3NpZ19kZWJ1ZyA9IDMyICsgMjsKCgoKCgoKc3RhdGlj
IGludCBydHNpZ3NfaW5pdGlhbGl6ZWQ7CgoKCgoKc3RhdGljIHZvaWQKaW5pdF9ydHNpZ3MgKHZv
aWQpCnsKIyAyODAgInB0aHJlYWQuYyIKICAgIHsKCiAgICAgIGN1cnJlbnRfcnRtaW4gPSAzMiAr
IDM7CiMgMjkyICJwdGhyZWFkLmMiCiAgICAgIGN1cnJlbnRfcnRtYXggPSAoNjQgLSAxKTsKICAg
IH0KCiAgcnRzaWdzX2luaXRpYWxpemVkID0gMTsKfQoKCgppbnQKX19saWJjX2N1cnJlbnRfc2ln
cnRtaW4gKHZvaWQpCnsKCiAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCFydHNpZ3NfaW5pdGlhbGl6
ZWQsIDApKQogICAgaW5pdF9ydHNpZ3MgKCk7CgogIHJldHVybiBjdXJyZW50X3J0bWluOwp9CgoK
aW50Cl9fbGliY19jdXJyZW50X3NpZ3J0bWF4ICh2b2lkKQp7CgogIGlmIChfX2J1aWx0aW5fZXhw
ZWN0ICghcnRzaWdzX2luaXRpYWxpemVkLCAwKSkKICAgIGluaXRfcnRzaWdzICgpOwoKICByZXR1
cm4gY3VycmVudF9ydG1heDsKfQoKCgoKaW50Cl9fbGliY19hbGxvY2F0ZV9ydHNpZyAoaW50IGhp
Z2gpCnsKCgoKICBpZiAoX19idWlsdGluX2V4cGVjdCAoIXJ0c2lnc19pbml0aWFsaXplZCwgMCkp
CiAgICBpbml0X3J0c2lncyAoKTsKICBpZiAoX19idWlsdGluX2V4cGVjdCAoY3VycmVudF9ydG1p
biA9PSAtMSwgMCkKICAgICAgfHwgX19idWlsdGluX2V4cGVjdCAoY3VycmVudF9ydG1pbiA+IGN1
cnJlbnRfcnRtYXgsIDApKQoKICAgIHJldHVybiAtMTsKCiAgcmV0dXJuIGhpZ2ggPyBjdXJyZW50
X3J0bWluKysgOiBjdXJyZW50X3J0bWF4LS07Cgp9CgoKZXh0ZXJuIGludCBfX3N5c2N0bCAoaW50
ICpuYW1lLCBpbnQgbmxlbiwgdm9pZCAqb2xkdmFsLCBzaXplX3QgKm9sZGxlbnAsCiAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKm5ld3ZhbCwgc2l6ZV90IG5ld2xlbik7CgoKCgpzdGF0aWMgaW50
CmlzX3NtcF9zeXN0ZW0gKHZvaWQpCnsKICBzdGF0aWMgY29uc3QgaW50IHN5c2N0bF9hcmdzW10g
PSB7IENUTF9LRVJOLCBLRVJOX1ZFUlNJT04gfTsKICBjaGFyIGJ1Zls1MTJdOwogIHNpemVfdCBy
ZXNsZW4gPSBzaXplb2YgKGJ1Zik7CgoKICBpZiAoX19zeXNjdGwgKChpbnQgKikgc3lzY3RsX2Fy
Z3MsCiAgICAgICAgICAgICAgICBzaXplb2YgKHN5c2N0bF9hcmdzKSAvIHNpemVvZiAoc3lzY3Rs
X2FyZ3NbMF0pLAogICAgICAgICAgICAgICAgYnVmLCAmcmVzbGVuLCAoKHZvaWQgKikwKSwgMCkg
PCAwKQogICAgewoKICAgICAgaW50IGZkID0gX19vcGVuICgiL3Byb2Mvc3lzL2tlcm5lbC92ZXJz
aW9uIiwgMDApOwogICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoZmQsIDApID09IC0xCiAgICAg
ICAgICB8fCAocmVzbGVuID0gX19yZWFkIChmZCwgYnVmLCBzaXplb2YgKGJ1ZikpKSA8PSAwKQoK
ICAgICAgICBidWZbMF0gPSAnXDAnOwoKICAgICAgX19jbG9zZSAoZmQpOwogICAgfQoKICByZXR1
cm4gKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiU01QIikgJiYgc2l6ZW9m
ICgoIlNNUCIpWzBdKSA9PSAxID8gKCgiU01QIilbMF0gPT0gJ1wwJyA/IGJ1ZiA6ICgoIlNNUCIp
WzFdID09ICdcMCcgPyAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgiU01Q
IilbMF0pID8gKCgoIlNNUCIpWzBdKSA9PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKGJ1
ZiwgKCJTTVAiKVswXSkgOiBfX3N0cmNocl9jIChidWYsICgoKCJTTVAiKVswXSkgJiAweGZmKSA8
PCA4KSkgOiBfX3N0cmNocl9nIChidWYsICgiU01QIilbMF0pKSkgOiBfX3N0cnN0cl9jZyAoYnVm
LCAiU01QIiwgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiU01QIikgPyBf
X2J1aWx0aW5fc3RybGVuICgiU01QIikgOiBfX3N0cmxlbl9nICgiU01QIikpKSkpKSA6IF9fc3Ry
c3RyX2cgKGJ1ZiwgIlNNUCIpKSkgIT0gKCh2b2lkICopMCk7Cn0KIyAzODEgInB0aHJlYWQuYyIK
c3RhdGljIHZvaWQgcHRocmVhZF9pbml0aWFsaXplKHZvaWQpIF9fYXR0cmlidXRlX18oKGNvbnN0
cnVjdG9yKSk7CiMgMzkwICJwdGhyZWFkLmMiCnZvaWQKX19wdGhyZWFkX2luaXRpYWxpemVfbWlu
aW1hbCh2b2lkKQp7CiMgNDAxICJwdGhyZWFkLmMiCn0KCgp2b2lkCl9fcHRocmVhZF9pbml0X21h
eF9zdGFja3NpemUodm9pZCkKewogIHN0cnVjdCBybGltaXQgbGltaXQ7CiAgc2l6ZV90IG1heF9z
dGFjazsKCiAgZ2V0cmxpbWl0KFJMSU1JVF9TVEFDSywgJmxpbWl0KTsKIyA0MjcgInB0aHJlYWQu
YyIKICBtYXhfc3RhY2sgPSAoMiAqIDEwMjQgKiAxMDI0KSAtIF9fZ2V0cGFnZXNpemUoKTsKCiAg
aWYgKGxpbWl0LnJsaW1fY3VyID4gbWF4X3N0YWNrKSB7CiAgICBsaW1pdC5ybGltX2N1ciA9IG1h
eF9zdGFjazsKICAgIHNldHJsaW1pdChSTElNSVRfU1RBQ0ssICZsaW1pdCk7CiAgfQoKICBfX3B0
aHJlYWRfbWF4X3N0YWNrc2l6ZSA9IG1heF9zdGFjazsKfQoKCnN0YXRpYyB2b2lkIHB0aHJlYWRf
aW5pdGlhbGl6ZSh2b2lkKQp7CiAgc3RydWN0IHNpZ2FjdGlvbiBzYTsKICBzaWdzZXRfdCBtYXNr
OwoKCiAgaWYgKF9fcHRocmVhZF9pbml0aWFsX3RocmVhZF9ib3MgIT0gKCh2b2lkICopMCkpIHJl
dHVybjsKCgogIF9fcHRocmVhZF9oYXNfY2FzID0gY29tcGFyZV9hbmRfc3dhcF9pc19hdmFpbGFi
bGUoKTsKCgoKCgoKCiAgX19wdGhyZWFkX2luaXRfbWF4X3N0YWNrc2l6ZSAoKTsKIyA0NjQgInB0
aHJlYWQuYyIKICBfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWRfYm9zID0KICAgIChjaGFyICopKCgo
bG9uZylfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcyAoMCkgLSAyICogKDIgKiAxMDI0ICogMTAyNCkp
ICYgfigoMiAqIDEwMjQgKiAxMDI0KSAtIDEpKTsKCgoKICBfX3B0aHJlYWRfaW5pdGlhbF90aHJl
YWQucF9waWQgPSBfX2dldHBpZCgpOwoKICBfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQucF9yZXNw
ID0gJl9yZXM7CgoKICBpbml0X3J0c2lncyAoKTsKCgoKCiAgc2EuX19zaWdhY3Rpb25faGFuZGxl
ci5zYV9oYW5kbGVyID0gcHRocmVhZF9oYW5kbGVfc2lncmVzdGFydDsKICBzaWdlbXB0eXNldCgm
c2Euc2FfbWFzayk7CiAgc2Euc2FfZmxhZ3MgPSAwOwogIF9fbGliY19zaWdhY3Rpb24oX19wdGhy
ZWFkX3NpZ19yZXN0YXJ0LCAmc2EsICgodm9pZCAqKTApKTsKICBzYS5fX3NpZ2FjdGlvbl9oYW5k
bGVyLnNhX2hhbmRsZXIgPSBwdGhyZWFkX2hhbmRsZV9zaWdjYW5jZWw7CgogIF9fbGliY19zaWdh
Y3Rpb24oX19wdGhyZWFkX3NpZ19jYW5jZWwsICZzYSwgKCh2b2lkICopMCkpOwogIGlmIChfX3B0
aHJlYWRfc2lnX2RlYnVnID4gMCkgewogICAgc2EuX19zaWdhY3Rpb25faGFuZGxlci5zYV9oYW5k
bGVyID0gcHRocmVhZF9oYW5kbGVfc2lnZGVidWc7CiAgICBzaWdlbXB0eXNldCgmc2Euc2FfbWFz
ayk7CgogICAgX19saWJjX3NpZ2FjdGlvbihfX3B0aHJlYWRfc2lnX2RlYnVnLCAmc2EsICgodm9p
ZCAqKTApKTsKICB9CgogIHNpZ2VtcHR5c2V0KCZtYXNrKTsKICBzaWdhZGRzZXQoJm1hc2ssIF9f
cHRocmVhZF9zaWdfcmVzdGFydCk7CiAgc2lncHJvY21hc2soMCwgJm1hc2ssICgodm9pZCAqKTAp
KTsKIyA1MDUgInB0aHJlYWQuYyIKICAgIF9fb25fZXhpdCAocHRocmVhZF9vbmV4aXRfcHJvY2Vz
cywgKCh2b2lkICopMCkpOwoKICBfX3B0aHJlYWRfc21wX2tlcm5lbCA9IGlzX3NtcF9zeXN0ZW0g
KCk7Cn0KCnZvaWQgX19wdGhyZWFkX2luaXRpYWxpemUodm9pZCkKewogIHB0aHJlYWRfaW5pdGlh
bGl6ZSgpOwp9CgppbnQgX19wdGhyZWFkX2luaXRpYWxpemVfbWFuYWdlcih2b2lkKQp7CiAgaW50
IG1hbmFnZXJfcGlwZVsyXTsKICBpbnQgcGlkOwogIHN0cnVjdCBwdGhyZWFkX3JlcXVlc3QgcmVx
dWVzdDsKCgoKCgoKCiAgaWYgKF9fcHRocmVhZF9tYXhfc3RhY2tzaXplID09IDApCiAgICBfX3B0
aHJlYWRfaW5pdF9tYXhfc3RhY2tzaXplICgpOwoKCiAgaWYgKF9fcHRocmVhZF9pbml0aWFsX3Ro
cmVhZF9ib3MgPT0gKCh2b2lkICopMCkpIHB0aHJlYWRfaW5pdGlhbGl6ZSgpOwoKICBfX3B0aHJl
YWRfbWFuYWdlcl90aHJlYWRfYm9zID0gbWFsbG9jKCgyICogKDFVTCA8PCAxMikgLSAzMikpOwog
IGlmIChfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfYm9zID09ICgodm9pZCAqKTApKSByZXR1cm4g
LTE7CiAgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3RvcyA9CiAgICBfX3B0aHJlYWRfbWFuYWdl
cl90aHJlYWRfYm9zICsgKDIgKiAoMVVMIDw8IDEyKSAtIDMyKTsKCiAgaWYgKHBpcGUobWFuYWdl
cl9waXBlKSA9PSAtMSkgewogICAgZnJlZShfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfYm9zKTsK
ICAgIHJldHVybiAtMTsKICB9CgogIHBpZCA9IDA7CiAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKF9f
cHRocmVhZF9pbml0aWFsX3RocmVhZC5wX3JlcG9ydF9ldmVudHMsIDApKQogICAgewoKCiAgICAg
IGludCBpZHggPSAoKChURF9DUkVBVEUpIC0gMVUpID4+IDUpOwogICAgICB1aW50MzJfdCBtYXNr
ID0gKDFVIDw8ICgoKFREX0NSRUFURSkgLSAxKSAmICgoMSA8PCA1KSAtIDEpKSk7CgogICAgICBp
ZiAoKG1hc2sgJiAoX19wdGhyZWFkX3RocmVhZHNfZXZlbnRzLmV2ZW50X2JpdHNbaWR4XQogICAg
ICAgICAgICAgICAgICAgfCBfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQucF9ldmVudGJ1Zi5ldmVu
dG1hc2suZXZlbnRfYml0c1tpZHhdKSkKICAgICAgICAgICE9IDApCiAgICAgICAgewogICAgICAg
ICAgX19wdGhyZWFkX2xvY2soX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkLnBfbG9jaywgKCh2b2lk
ICopMCkpOwojIDU2OSAicHRocmVhZC5jIgogICAgICAgICAgcGlkID0gX19jbG9uZShfX3B0aHJl
YWRfbWFuYWdlcl9ldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKiopIF9fcHRo
cmVhZF9tYW5hZ2VyX3RocmVhZF90b3MsCiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAx
MDAgfCAweDAwMDAwMjAwIHwgMHgwMDAwMDQwMCB8IDB4MDAwMDA4MDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICh2b2lkICopKGxvbmcpbWFuYWdlcl9waXBlWzBdKTsKCgogICAgICAgICAgaWYg
KHBpZCAhPSAtMSkKICAgICAgICAgICAgewoKCgoKICAgICAgICAgICAgICBfX3B0aHJlYWRfbWFu
YWdlcl90aHJlYWQucF9ldmVudGJ1Zi5ldmVudGRhdGEgPQogICAgICAgICAgICAgICAgJl9fcHRo
cmVhZF9tYW5hZ2VyX3RocmVhZDsKICAgICAgICAgICAgICBfX3B0aHJlYWRfbWFuYWdlcl90aHJl
YWQucF9ldmVudGJ1Zi5ldmVudG51bSA9IFREX0NSRUFURTsKICAgICAgICAgICAgICBfX3B0aHJl
YWRfbGFzdF9ldmVudCA9ICZfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQ7CiAgICAgICAgICAgICAg
X19wdGhyZWFkX21hbmFnZXJfdGhyZWFkLnBfdGlkID0gMiogMTAyNCArIDE7CiAgICAgICAgICAg
ICAgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkLnBfcGlkID0gcGlkOwoKCiAgICAgICAgICAgICAg
X19saW51eHRocmVhZHNfY3JlYXRlX2V2ZW50ICgpOwogICAgICAgICAgICB9CgoKICAgICAgICAg
IF9fcHRocmVhZF91bmxvY2soX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkLnBfbG9jayk7CiAgICAg
ICAgfQogICAgfQoKICBpZiAoX19idWlsdGluX2V4cGVjdCAocGlkLCAwKSA9PSAwKQogICAgewoj
IDYwOSAicHRocmVhZC5jIgogICAgICBwaWQgPSBfX2Nsb25lKF9fcHRocmVhZF9tYW5hZ2VyLCAo
dm9pZCAqKikgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3RvcywKICAgICAgICAgICAgICAgICAg
ICAweDAwMDAwMTAwIHwgMHgwMDAwMDIwMCB8IDB4MDAwMDA0MDAgfCAweDAwMDAwODAwLAogICAg
ICAgICAgICAgICAgICAgICh2b2lkICopKGxvbmcpbWFuYWdlcl9waXBlWzBdKTsKCiAgICB9CiAg
aWYgKF9fYnVpbHRpbl9leHBlY3QgKHBpZCwgMCkgPT0gLTEpIHsKICAgIGZyZWUoX19wdGhyZWFk
X21hbmFnZXJfdGhyZWFkX2Jvcyk7CiAgICBfX2xpYmNfY2xvc2UobWFuYWdlcl9waXBlWzBdKTsK
ICAgIF9fbGliY19jbG9zZShtYW5hZ2VyX3BpcGVbMV0pOwogICAgcmV0dXJuIC0xOwogIH0KICBf
X3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0ID0gbWFuYWdlcl9waXBlWzFdOwogIF9fcHRocmVhZF9t
YW5hZ2VyX3JlYWRlciA9IG1hbmFnZXJfcGlwZVswXTsKICBfX3B0aHJlYWRfbWFuYWdlcl90aHJl
YWQucF90aWQgPSAyKiAxMDI0ICsgMTsKICBfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQucF9waWQg
PSBwaWQ7CgogIGlmIChfX2J1aWx0aW5fZXhwZWN0IChfX3B0aHJlYWRfdGhyZWFkc19kZWJ1Zywg
MCkgJiYgX19wdGhyZWFkX3NpZ19kZWJ1ZyA+IDApCiAgICB7CiAgICAgIHJhaXNlKF9fcHRocmVh
ZF9zaWdfZGVidWcpOwoKCiAgICAgIF9fcHRocmVhZF93YWl0X2Zvcl9yZXN0YXJ0X3NpZ25hbCh0
aHJlYWRfc2VsZigpKTsKICAgIH0KCiAgcmVxdWVzdC5yZXFfa2luZCA9IFJFUV9ERUJVRzsKICAo
X19leHRlbnNpb25fXyAoeyBsb25nIGludCBfX3Jlc3VsdDsgZG8gX19yZXN1bHQgPSAobG9uZyBp
bnQpIChfX2xpYmNfd3JpdGUoX19wdGhyZWFkX21hbmFnZXJfcmVxdWVzdCwgKGNoYXIgKikgJnJl
cXVlc3QsIHNpemVvZihyZXF1ZXN0KSkpOyB3aGlsZSAoX19yZXN1bHQgPT0gLTFMICYmICgqX19l
cnJub19sb2NhdGlvbiAoKSkgPT0gNCk7IF9fcmVzdWx0OyB9KSk7CgogIHJldHVybiAwOwp9CgoK
CmludCBfX3B0aHJlYWRfY3JlYXRlXzJfMShwdGhyZWFkX3QgKnRocmVhZCwgY29uc3QgcHRocmVh
ZF9hdHRyX3QgKmF0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICogKCpzdGFydF9y
b3V0aW5lKSh2b2lkICopLCB2b2lkICphcmcpCnsKICBwdGhyZWFkX2Rlc2NyIHNlbGYgPSB0aHJl
YWRfc2VsZigpOwogIHN0cnVjdCBwdGhyZWFkX3JlcXVlc3QgcmVxdWVzdDsKICBpbnQgcmV0dmFs
OwogIGlmIChfX2J1aWx0aW5fZXhwZWN0IChfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0LCAwKSA8
IDApIHsKICAgIGlmIChfX3B0aHJlYWRfaW5pdGlhbGl6ZV9tYW5hZ2VyKCkgPCAwKSByZXR1cm4g
MTE7CiAgfQogIHJlcXVlc3QucmVxX3RocmVhZCA9IHNlbGY7CiAgcmVxdWVzdC5yZXFfa2luZCA9
IFJFUV9DUkVBVEU7CiAgcmVxdWVzdC5yZXFfYXJncy5jcmVhdGUuYXR0ciA9IGF0dHI7CiAgcmVx
dWVzdC5yZXFfYXJncy5jcmVhdGUuZm4gPSBzdGFydF9yb3V0aW5lOwogIHJlcXVlc3QucmVxX2Fy
Z3MuY3JlYXRlLmFyZyA9IGFyZzsKICBzaWdwcm9jbWFzaygyLCAoY29uc3Qgc2lnc2V0X3QgKikg
KCh2b2lkICopMCksCiAgICAgICAgICAgICAgJnJlcXVlc3QucmVxX2FyZ3MuY3JlYXRlLm1hc2sp
OwogIChfX2V4dGVuc2lvbl9fICh7IGxvbmcgaW50IF9fcmVzdWx0OyBkbyBfX3Jlc3VsdCA9IChs
b25nIGludCkgKF9fbGliY193cml0ZShfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0LCAoY2hhciAq
KSAmcmVxdWVzdCwgc2l6ZW9mKHJlcXVlc3QpKSk7IHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYg
KCpfX2Vycm5vX2xvY2F0aW9uICgpKSA9PSA0KTsgX19yZXN1bHQ7IH0pKTsKCiAgc3VzcGVuZChz
ZWxmKTsKICByZXR2YWwgPSBzZWxmLT5wX3JldGNvZGU7CiAgaWYgKF9fYnVpbHRpbl9leHBlY3Qg
KHJldHZhbCwgMCkgPT0gMCkKICAgICp0aHJlYWQgPSAocHRocmVhZF90KSBzZWxmLT5wX3JldHZh
bDsKICByZXR1cm4gcmV0dmFsOwp9CgpleHRlcm4gX190eXBlb2YgKF9fcHRocmVhZF9jcmVhdGVf
Ml8xKSBwdGhyZWFkX2NyZWF0ZSBfX2F0dHJpYnV0ZV9fICgod2VhaywgYWxpYXMgKCJfX3B0aHJl
YWRfY3JlYXRlXzJfMSIpKSk7OwojIDY5NyAicHRocmVhZC5jIgpwdGhyZWFkX3QgcHRocmVhZF9z
ZWxmKHZvaWQpCnsKICBwdGhyZWFkX2Rlc2NyIHNlbGYgPSB0aHJlYWRfc2VsZigpOwogIHJldHVy
biBzZWxmLT5wX3RpZDsKfQoKaW50IHB0aHJlYWRfZXF1YWwocHRocmVhZF90IHRocmVhZDEsIHB0
aHJlYWRfdCB0aHJlYWQyKQp7CiAgcmV0dXJuIHRocmVhZDEgPT0gdGhyZWFkMjsKfQoKCgoKCnB0
aHJlYWRfZGVzY3IgX19wdGhyZWFkX2ZpbmRfc2VsZih2b2lkKQp7CiAgY2hhciAqIHNwID0gX19i
dWlsdGluX2ZyYW1lX2FkZHJlc3MgKDApOwogIHB0aHJlYWRfaGFuZGxlIGg7CgoKCiAgaCA9IF9f
cHRocmVhZF9oYW5kbGVzICsgMjsKICB3aGlsZSAoISAoc3AgPD0gKGNoYXIgKikgaC0+aF9kZXNj
ciAmJiBzcCA+PSBoLT5oX2JvdHRvbSkpIGgrKzsKICByZXR1cm4gaC0+aF9kZXNjcjsKfQojIDc0
MyAicHRocmVhZC5jIgppbnQgcHRocmVhZF9zZXRzY2hlZHBhcmFtKHB0aHJlYWRfdCB0aHJlYWQs
IGludCBwb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNjaGVk
X3BhcmFtICpwYXJhbSkKewogIHB0aHJlYWRfaGFuZGxlIGhhbmRsZSA9IHRocmVhZF9oYW5kbGUo
dGhyZWFkKTsKICBwdGhyZWFkX2Rlc2NyIHRoOwoKICBfX3B0aHJlYWRfbG9jaygmaGFuZGxlLT5o
X2xvY2ssICgodm9pZCAqKTApKTsKICBpZiAoX19idWlsdGluX2V4cGVjdCAoaW52YWxpZF9oYW5k
bGUoaGFuZGxlLCB0aHJlYWQpLCAwKSkgewogICAgX19wdGhyZWFkX3VubG9jaygmaGFuZGxlLT5o
X2xvY2spOwogICAgcmV0dXJuIDM7CiAgfQogIHRoID0gaGFuZGxlLT5oX2Rlc2NyOwogIGlmIChf
X2J1aWx0aW5fZXhwZWN0IChfX3NjaGVkX3NldHNjaGVkdWxlcih0aC0+cF9waWQsIHBvbGljeSwg
cGFyYW0pID09IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAwKSkgewogICAgX19wdGhyZWFk
X3VubG9jaygmaGFuZGxlLT5oX2xvY2spOwogICAgcmV0dXJuICgqX19lcnJub19sb2NhdGlvbiAo
KSk7CiAgfQogIHRoLT5wX3ByaW9yaXR5ID0gcG9saWN5ID09IDAgPyAwIDogcGFyYW0tPl9fc2No
ZWRfcHJpb3JpdHk7CiAgX19wdGhyZWFkX3VubG9jaygmaGFuZGxlLT5oX2xvY2spOwogIGlmIChf
X3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0ID49IDApCiAgICBfX3B0aHJlYWRfbWFuYWdlcl9hZGp1
c3RfcHJpbyh0aC0+cF9wcmlvcml0eSk7CiAgcmV0dXJuIDA7Cn0KCmludCBwdGhyZWFkX2dldHNj
aGVkcGFyYW0ocHRocmVhZF90IHRocmVhZCwgaW50ICpwb2xpY3ksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSkKewogIHB0aHJlYWRfaGFuZGxlIGhh
bmRsZSA9IHRocmVhZF9oYW5kbGUodGhyZWFkKTsKICBpbnQgcGlkLCBwb2w7CgogIF9fcHRocmVh
ZF9sb2NrKCZoYW5kbGUtPmhfbG9jaywgKCh2b2lkICopMCkpOwogIGlmIChfX2J1aWx0aW5fZXhw
ZWN0IChpbnZhbGlkX2hhbmRsZShoYW5kbGUsIHRocmVhZCksIDApKSB7CiAgICBfX3B0aHJlYWRf
dW5sb2NrKCZoYW5kbGUtPmhfbG9jayk7CiAgICByZXR1cm4gMzsKICB9CiAgcGlkID0gaGFuZGxl
LT5oX2Rlc2NyLT5wX3BpZDsKICBfX3B0aHJlYWRfdW5sb2NrKCZoYW5kbGUtPmhfbG9jayk7CiAg
cG9sID0gX19zY2hlZF9nZXRzY2hlZHVsZXIocGlkKTsKICBpZiAoX19idWlsdGluX2V4cGVjdCAo
cG9sLCAwKSA9PSAtMSkgcmV0dXJuICgqX19lcnJub19sb2NhdGlvbiAoKSk7CiAgaWYgKF9fc2No
ZWRfZ2V0cGFyYW0ocGlkLCBwYXJhbSkgPT0gLTEpIHJldHVybiAoKl9fZXJybm9fbG9jYXRpb24g
KCkpOwogICpwb2xpY3kgPSBwb2w7CiAgcmV0dXJuIDA7Cn0KCmludCBfX3B0aHJlYWRfeWllbGQg
KHZvaWQpCnsKCiAgcmV0dXJuIHNjaGVkX3lpZWxkICgpOwp9CmV4dGVybiBfX3R5cGVvZiAoX19w
dGhyZWFkX3lpZWxkKSBwdGhyZWFkX3lpZWxkIF9fYXR0cmlidXRlX18gKCh3ZWFrLCBhbGlhcyAo
Il9fcHRocmVhZF95aWVsZCIpKSk7CgoKCnN0YXRpYyB2b2lkIHB0aHJlYWRfb25leGl0X3Byb2Nl
c3MoaW50IHJldGNvZGUsIHZvaWQgKmFyZykKewogIGlmIChfX2J1aWx0aW5fZXhwZWN0IChfX3B0
aHJlYWRfbWFuYWdlcl9yZXF1ZXN0LCAwKSA+PSAwKSB7CiAgICBzdHJ1Y3QgcHRocmVhZF9yZXF1
ZXN0IHJlcXVlc3Q7CiAgICBwdGhyZWFkX2Rlc2NyIHNlbGYgPSB0aHJlYWRfc2VsZigpOwoKICAg
IHJlcXVlc3QucmVxX3RocmVhZCA9IHNlbGY7CiAgICByZXF1ZXN0LnJlcV9raW5kID0gUkVRX1BS
T0NFU1NfRVhJVDsKICAgIHJlcXVlc3QucmVxX2FyZ3MuZXhpdC5jb2RlID0gcmV0Y29kZTsKICAg
IChfX2V4dGVuc2lvbl9fICh7IGxvbmcgaW50IF9fcmVzdWx0OyBkbyBfX3Jlc3VsdCA9IChsb25n
IGludCkgKF9fbGliY193cml0ZShfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0LCAoY2hhciAqKSAm
cmVxdWVzdCwgc2l6ZW9mKHJlcXVlc3QpKSk7IHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgKCpf
X2Vycm5vX2xvY2F0aW9uICgpKSA9PSA0KTsgX19yZXN1bHQ7IH0pKTsKCiAgICBzdXNwZW5kKHNl
bGYpOwoKCiAgICBpZiAoc2VsZiA9PSBfX3B0aHJlYWRfbWFpbl90aHJlYWQpCiAgICAgIHsKICAg
ICAgICB3YWl0cGlkKF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZC5wX3BpZCwgKCh2b2lkICopMCks
IDB4ODAwMDAwMDApOwoKCgogICAgICAgIF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZF9ib3MgPSBf
X3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfdG9zID0gKCh2b2lkICopMCk7CiAgICAgIH0KICB9Cn0K
IyA4MzkgInB0aHJlYWQuYyIKc3RhdGljIHZvaWQgcHRocmVhZF9oYW5kbGVfc2lncmVzdGFydChp
bnQgc2lnKQp7CiAgcHRocmVhZF9kZXNjciBzZWxmID0gdGhyZWFkX3NlbGYoKTsKICBzZWxmLT5w
X3NpZ25hbCA9IChzaWcpOwogIGlmIChzZWxmLT5wX3NpZ25hbF9qbXAgIT0gKCh2b2lkICopMCkp
CiAgICBzaWdsb25nam1wKCpzZWxmLT5wX3NpZ25hbF9qbXAsIDEpOwp9CgoKCgoKCnN0YXRpYyB2
b2lkIHB0aHJlYWRfaGFuZGxlX3NpZ2NhbmNlbChpbnQgc2lnKQp7CiAgcHRocmVhZF9kZXNjciBz
ZWxmID0gdGhyZWFkX3NlbGYoKTsKICBzaWdqbXBfYnVmICogam1wYnVmOwoKICBpZiAoc2VsZiA9
PSAmX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkKQogICAgewojIDg3NiAicHRocmVhZC5jIgogICAg
ICBfX3B0aHJlYWRfbWFuYWdlcl9zaWdoYW5kbGVyKHNpZyk7CiAgICAgIHJldHVybjsKCiAgICB9
CiAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKF9fcHRocmVhZF9leGl0X3JlcXVlc3RlZCwgMCkpIHsK
CgogICAgaWYgKHNlbGYgPT0gX19wdGhyZWFkX21haW5fdGhyZWFkKQogICAgICB3YWl0cGlkKF9f
cHRocmVhZF9tYW5hZ2VyX3RocmVhZC5wX3BpZCwgKCh2b2lkICopMCksIDB4ODAwMDAwMDApOwog
ICAgX2V4aXQoX19wdGhyZWFkX2V4aXRfY29kZSk7CiAgfQogIGlmIChfX2J1aWx0aW5fZXhwZWN0
IChzZWxmLT5wX2NhbmNlbGVkLCAwKQogICAgICAmJiBzZWxmLT5wX2NhbmNlbHN0YXRlID09IFBU
SFJFQURfQ0FOQ0VMX0VOQUJMRSkgewogICAgaWYgKHNlbGYtPnBfY2FuY2VsdHlwZSA9PSBQVEhS
RUFEX0NBTkNFTF9BU1lOQ0hST05PVVMpCiAgICAgIF9fcHRocmVhZF9kb19leGl0KCgodm9pZCAq
KSAtMSksIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzICgwKSk7CiAgICBqbXBidWYgPSBzZWxmLT5w
X2NhbmNlbF9qbXA7CiAgICBpZiAoam1wYnVmICE9ICgodm9pZCAqKTApKSB7CiAgICAgIHNlbGYt
PnBfY2FuY2VsX2ptcCA9ICgoKHZvaWQgKikwKSk7CiAgICAgIHNpZ2xvbmdqbXAoKmptcGJ1Ziwg
MSk7CiAgICB9CiAgfQp9CiMgOTA5ICJwdGhyZWFkLmMiCnN0YXRpYyB2b2lkIHB0aHJlYWRfaGFu
ZGxlX3NpZ2RlYnVnKGludCBzaWcpCnsKCn0KCgoKCgoKCnZvaWQgX19wdGhyZWFkX3Jlc2V0X21h
aW5fdGhyZWFkKHZvaWQpCnsKICBwdGhyZWFkX2Rlc2NyIHNlbGYgPSB0aHJlYWRfc2VsZigpOwog
IHN0cnVjdCBybGltaXQgbGltaXQ7CgogIGlmIChfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0ICE9
IC0xKSB7CgogICAgZnJlZShfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfYm9zKTsKICAgIF9fcHRo
cmVhZF9tYW5hZ2VyX3RocmVhZF9ib3MgPSBfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfdG9zID0g
KCh2b2lkICopMCk7CgogICAgX19saWJjX2Nsb3NlKF9fcHRocmVhZF9tYW5hZ2VyX3JlcXVlc3Qp
OwogICAgX19saWJjX2Nsb3NlKF9fcHRocmVhZF9tYW5hZ2VyX3JlYWRlcik7CiAgICBfX3B0aHJl
YWRfbWFuYWdlcl9yZXF1ZXN0ID0gX19wdGhyZWFkX21hbmFnZXJfcmVhZGVyID0gLTE7CiAgfQoK
CiAgc2VsZi0+cF9waWQgPSAoX19nZXRwaWQoKSk7CgogIF9fcHRocmVhZF9tYWluX3RocmVhZCA9
IHNlbGY7CiAgc2VsZi0+cF9uZXh0bGl2ZSA9IChzZWxmKTsKICBzZWxmLT5wX3ByZXZsaXZlID0g
KHNlbGYpOwoKICBzZWxmLT5wX2Vycm5vcCA9ICgmX2Vycm5vKTsKICBzZWxmLT5wX2hfZXJybm9w
ID0gKCZfaF9lcnJubyk7CiAgc2VsZi0+cF9yZXNwID0gKCZfcmVzKTsKCiAgaWYgKGdldHJsaW1p
dCAoUkxJTUlUX1NUQUNLLCAmbGltaXQpID09IDAKICAgICAgJiYgbGltaXQucmxpbV9jdXIgIT0g
bGltaXQucmxpbV9tYXgpIHsKICAgIGxpbWl0LnJsaW1fY3VyID0gbGltaXQucmxpbV9tYXg7CiAg
ICBzZXRybGltaXQoUkxJTUlUX1NUQUNLLCAmbGltaXQpOwogIH0KfQoKCgp2b2lkIF9fcHRocmVh
ZF9raWxsX290aGVyX3RocmVhZHNfbnAodm9pZCkKewogIHN0cnVjdCBzaWdhY3Rpb24gc2E7Cgog
IHB0aHJlYWRfb25leGl0X3Byb2Nlc3MoMCwgKCh2b2lkICopMCkpOwoKCiAgX19wdGhyZWFkX3Jl
c2V0X21haW5fdGhyZWFkKCk7CgoKCgogIHNpZ2VtcHR5c2V0KCZzYS5zYV9tYXNrKTsKICBzYS5z
YV9mbGFncyA9IDA7CiAgc2EuX19zaWdhY3Rpb25faGFuZGxlci5zYV9oYW5kbGVyID0gKChfX3Np
Z2hhbmRsZXJfdCkgMCk7CiAgX19saWJjX3NpZ2FjdGlvbihfX3B0aHJlYWRfc2lnX3Jlc3RhcnQs
ICZzYSwgKCh2b2lkICopMCkpOwogIF9fbGliY19zaWdhY3Rpb24oX19wdGhyZWFkX3NpZ19jYW5j
ZWwsICZzYSwgKCh2b2lkICopMCkpOwogIGlmIChfX3B0aHJlYWRfc2lnX2RlYnVnID4gMCkKICAg
IF9fbGliY19zaWdhY3Rpb24oX19wdGhyZWFkX3NpZ19kZWJ1ZywgJnNhLCAoKHZvaWQgKikwKSk7
Cn0KZXh0ZXJuIF9fdHlwZW9mIChfX3B0aHJlYWRfa2lsbF9vdGhlcl90aHJlYWRzX25wKSBwdGhy
ZWFkX2tpbGxfb3RoZXJfdGhyZWFkc19ucCBfX2F0dHJpYnV0ZV9fICgod2VhaywgYWxpYXMgKCJf
X3B0aHJlYWRfa2lsbF9vdGhlcl90aHJlYWRzX25wIikpKTsKCgpzdGF0aWMgaW50IGN1cnJlbnRf
bGV2ZWw7CgppbnQgX19wdGhyZWFkX3NldGNvbmN1cnJlbmN5KGludCBsZXZlbCkKewoKICBjdXJy
ZW50X2xldmVsID0gbGV2ZWw7CiAgcmV0dXJuIDA7Cn0KZXh0ZXJuIF9fdHlwZW9mIChfX3B0aHJl
YWRfc2V0Y29uY3VycmVuY3kpIHB0aHJlYWRfc2V0Y29uY3VycmVuY3kgX19hdHRyaWJ1dGVfXyAo
KHdlYWssIGFsaWFzICgiX19wdGhyZWFkX3NldGNvbmN1cnJlbmN5IikpKTsKCmludCBfX3B0aHJl
YWRfZ2V0Y29uY3VycmVuY3kodm9pZCkKewogIHJldHVybiBjdXJyZW50X2xldmVsOwp9CmV4dGVy
biBfX3R5cGVvZiAoX19wdGhyZWFkX2dldGNvbmN1cnJlbmN5KSBwdGhyZWFkX2dldGNvbmN1cnJl
bmN5IF9fYXR0cmlidXRlX18gKCh3ZWFrLCBhbGlhcyAoIl9fcHRocmVhZF9nZXRjb25jdXJyZW5j
eSIpKSk7CgoKCnZvaWQgX19wdGhyZWFkX3dhaXRfZm9yX3Jlc3RhcnRfc2lnbmFsKHB0aHJlYWRf
ZGVzY3Igc2VsZikKewogIHNpZ3NldF90IG1hc2s7CgogIHNpZ3Byb2NtYXNrKDIsICgodm9pZCAq
KTApLCAmbWFzayk7CiAgc2lnZGVsc2V0KCZtYXNrLCBfX3B0aHJlYWRfc2lnX3Jlc3RhcnQpOwog
IHNlbGYtPnBfc2lnbmFsID0gKDApOwogIGRvIHsKICAgIHNpZ3N1c3BlbmQoJm1hc2spOwogIH0g
d2hpbGUgKHNlbGYtPnBfc2lnbmFsICE9X19wdGhyZWFkX3NpZ19yZXN0YXJ0KTsKCiAgOwp9CiMg
MTEwOCAicHRocmVhZC5jIgp2b2lkIF9fcHRocmVhZF9yZXN0YXJ0X25ldyhwdGhyZWFkX2Rlc2Ny
IHRoKQp7CgoKCgogIDsKICBraWxsKHRoLT5wX3BpZCwgX19wdGhyZWFkX3NpZ19yZXN0YXJ0KTsK
fQoKCgoKaW50Cl9fcHRocmVhZF90aW1lZHN1c3BlbmRfbmV3KHB0aHJlYWRfZGVzY3Igc2VsZiwg
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICphYnN0aW1lKQp7CiAgc2lnc2V0X3QgdW5ibG9jaywgaW5p
dGlhbF9tYXNrOwogIGludCB3YXNfc2lnbmFsbGVkID0gMDsKICBzaWdqbXBfYnVmIGptcGJ1ZjsK
CiAgaWYgKF9fc2lnc2V0am1wIChqbXBidWYsIDEpID09IDApIHsKICAgIHNlbGYtPnBfc2lnbmFs
X2ptcCA9ICgmam1wYnVmKTsKICAgIHNlbGYtPnBfc2lnbmFsID0gKDApOwoKICAgIHNpZ2VtcHR5
c2V0KCZ1bmJsb2NrKTsKICAgIHNpZ2FkZHNldCgmdW5ibG9jaywgX19wdGhyZWFkX3NpZ19yZXN0
YXJ0KTsKICAgIHNpZ3Byb2NtYXNrKDEsICZ1bmJsb2NrLCAmaW5pdGlhbF9tYXNrKTsKCiAgICB3
aGlsZSAoMSkgewogICAgICBzdHJ1Y3QgdGltZXZhbCBub3c7CiAgICAgIHN0cnVjdCB0aW1lc3Bl
YyByZWx0aW1lOwoKCiAgICAgIF9fZ2V0dGltZW9mZGF5ICgmbm93LCAoKHZvaWQgKikwKSk7CiAg
ICAgIHJlbHRpbWUudHZfbnNlYyA9IGFic3RpbWUtPnR2X25zZWMgLSBub3cudHZfdXNlYyAqIDEw
MDA7CiAgICAgIHJlbHRpbWUudHZfc2VjID0gYWJzdGltZS0+dHZfc2VjIC0gbm93LnR2X3NlYzsK
ICAgICAgaWYgKHJlbHRpbWUudHZfbnNlYyA8IDApIHsKICAgICAgICByZWx0aW1lLnR2X25zZWMg
Kz0gMTAwMDAwMDAwMDsKICAgICAgICByZWx0aW1lLnR2X3NlYyAtPSAxOwogICAgICB9CgoKCiAg
ICAgIGlmIChyZWx0aW1lLnR2X3NlYyA8IDAgfHwgX19saWJjX25hbm9zbGVlcCgmcmVsdGltZSwg
KCh2b2lkICopMCkpID09IDApCiAgICAgICAgYnJlYWs7CiAgICB9CgoKICAgIHNpZ3Byb2NtYXNr
KDIsICZpbml0aWFsX21hc2ssICgodm9pZCAqKTApKTsKICAgIHdhc19zaWduYWxsZWQgPSAwOwog
IH0gZWxzZSB7CiAgICB3YXNfc2lnbmFsbGVkID0gMTsKICB9CiAgc2VsZi0+cF9zaWduYWxfam1w
ID0gKCgodm9pZCAqKTApKTsKIyAxMTczICJwdGhyZWFkLmMiCiAgOwogIHJldHVybiB3YXNfc2ln
bmFsbGVkOwp9CiMgMTIwMCAicHRocmVhZC5jIgpleHRlcm4gY29uc3QgaW50IF9fcHRocmVhZF9w
cm92aWRlX3dyYXBwZXJzOwpzdGF0aWMgY29uc3QgaW50ICpjb25zdCBfX3B0aHJlYWRfcmVxdWly
ZV93cmFwcGVycyA9CiAgJl9fcHRocmVhZF9wcm92aWRlX3dyYXBwZXJzOwpleHRlcm4gY29uc3Qg
aW50IF9fcHRocmVhZF9wcm92aWRlX2xvY2tmaWxlOwpzdGF0aWMgY29uc3QgaW50ICpjb25zdCBf
X3B0aHJlYWRfcmVxdWlyZV9sb2NrZmlsZSA9CiAgJl9fcHRocmVhZF9wcm92aWRlX2xvY2tmaWxl
Owo=
--Multipart_Sat__26_Oct_2002_13:24:27_+0000_081c8688
Content-Type: application/octet-stream;
name="pthread.s"
Content-Disposition: attachment;
filename="pthread.s"
Content-Transfer-Encoding: base64
CS5maWxlCSJwdGhyZWFkLmMiCi5nbG9ibCBfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQKCS5kYXRh
CgkuYWxpZ24gMzIKCS50eXBlCV9fcHRocmVhZF9pbml0aWFsX3RocmVhZCxAb2JqZWN0Cgkuc2l6
ZQlfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQsMTAyNApfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQ6
CgkubG9uZwlfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQKCS56ZXJvCTYwCgkubG9uZwlfX3B0aHJl
YWRfaW5pdGlhbF90aHJlYWQKCS5sb25nCV9fcHRocmVhZF9pbml0aWFsX3RocmVhZAoJLmxvbmcJ
MAoJLmxvbmcJMAoJLmxvbmcJMTAyNAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJX19wdGhyZWFk
X2hhbmRsZXMKCS5sb25nCTAKCS5sb25nCTAKCS5sb25nCTAKCS5ieXRlCTAKCS5ieXRlCTAKCS5i
eXRlCTAKCS56ZXJvCTEKCS5sb25nCTAKCS5sb25nCTAKCS5sb25nCTAKCS5sb25nCTAKCS5ieXRl
CTAKCS5ieXRlCTAKCS5ieXRlCTAKCS56ZXJvCTEKCS5sb25nCV9lcnJubwoJLmxvbmcJMAoJLmxv
bmcJX2hfZXJybm8KCS5sb25nCTAKCS5sb25nCTAKCS5ieXRlCTAKCS56ZXJvCTMKCS5sb25nCTAK
CS5sb25nCTAKCS5sb25nCTAKCS56ZXJvCTEyNAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJ
Lnplcm8JMTI0CgkubG9uZwkwCgkuemVybwk4CgkubG9uZwkxCgkubG9uZwkwCgkubG9uZwkwCgku
bG9uZwkwCgkubG9uZwkwCgkubG9uZwkwCgkuemVybwk0CgkubG9uZwkwCgkubG9uZwkwCgkubG9u
ZwkwCgkubG9uZwkwCgkuYnl0ZQkwCgkuYnl0ZQkwCgkuYnl0ZQkwCgkuemVybwkxCgkubG9uZwkw
CgkubG9uZwkwCgkubG9uZwkwCgkubG9uZwkwCgkuemVybwk1MjAKLmdsb2JsIF9fcHRocmVhZF9t
YW5hZ2VyX3RocmVhZAoJLmFsaWduIDMyCgkudHlwZQlfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQs
QG9iamVjdAoJLnNpemUJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkLDEwMjQKX19wdGhyZWFkX21h
bmFnZXJfdGhyZWFkOgoJLmxvbmcJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkCgkuemVybwk2MAoJ
LmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxv
bmcJMAoJLmxvbmcJX19wdGhyZWFkX2hhbmRsZXMrMTYKCS5sb25nCTAKCS5sb25nCTAKCS5sb25n
CTAKCS5ieXRlCTAKCS5ieXRlCTAKCS5ieXRlCTAKCS56ZXJvCTEKCS5sb25nCTAKCS5sb25nCTAK
CS5sb25nCTAKCS5sb25nCTAKCS5ieXRlCTAKCS5ieXRlCTAKCS5ieXRlCTAKCS56ZXJvCTEKCS5s
b25nCV9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCsxMzYKCS5sb25nCTAKCS5sb25nCTAKCS5sb25n
CTAKCS5sb25nCTAKCS5ieXRlCTAKCS56ZXJvCTMKCS5sb25nCV9fcHRocmVhZF9tYW5hZ2VyCgku
bG9uZwkwCgkubG9uZwkwCgkuemVybwkxMjQKCS5sb25nCTAKCS5sb25nCTAKCS5sb25nCTAKCS56
ZXJvCTEyNAoJLmxvbmcJMAoJLnplcm8JOAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxv
bmcJMQoJLmxvbmcJMAoJLmxvbmcJMAoJLnplcm8JNAoJLmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJ
MAoJLmxvbmcJMAoJLmJ5dGUJMAoJLmJ5dGUJMAoJLmJ5dGUJMAoJLnplcm8JMQoJLmxvbmcJMAoJ
LmxvbmcJMAoJLmxvbmcJMAoJLmxvbmcJMAoJLnplcm8JNTIwCi5nbG9ibCBfX3B0aHJlYWRfbWFp
bl90aHJlYWQKCS5hbGlnbiA0CgkudHlwZQlfX3B0aHJlYWRfbWFpbl90aHJlYWQsQG9iamVjdAoJ
LnNpemUJX19wdGhyZWFkX21haW5fdGhyZWFkLDQKX19wdGhyZWFkX21haW5fdGhyZWFkOgoJLmxv
bmcJX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkCi5nbG9ibCBfX3B0aHJlYWRfbWFuYWdlcl9yZXF1
ZXN0CgkuYWxpZ24gNAoJLnR5cGUJX19wdGhyZWFkX21hbmFnZXJfcmVxdWVzdCxAb2JqZWN0Cgku
c2l6ZQlfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0LDQKX19wdGhyZWFkX21hbmFnZXJfcmVxdWVz
dDoKCS5sb25nCS0xCi5nbG9ibCBfX3B0aHJlYWRfdGhyZWFkc19tYXgKCS5zZWN0aW9uCS5yb2Rh
dGEKCS5hbGlnbiA0CgkudHlwZQlfX3B0aHJlYWRfdGhyZWFkc19tYXgsQG9iamVjdAoJLnNpemUJ
X19wdGhyZWFkX3RocmVhZHNfbWF4LDQKX19wdGhyZWFkX3RocmVhZHNfbWF4OgoJLmxvbmcJMTAy
NAouZ2xvYmwgX19wdGhyZWFkX3NpemVvZl9oYW5kbGUKCS5hbGlnbiA0CgkudHlwZQlfX3B0aHJl
YWRfc2l6ZW9mX2hhbmRsZSxAb2JqZWN0Cgkuc2l6ZQlfX3B0aHJlYWRfc2l6ZW9mX2hhbmRsZSw0
Cl9fcHRocmVhZF9zaXplb2ZfaGFuZGxlOgoJLmxvbmcJMTYKLmdsb2JsIF9fcHRocmVhZF9vZmZz
ZXRvZl9kZXNjcgoJLmFsaWduIDQKCS50eXBlCV9fcHRocmVhZF9vZmZzZXRvZl9kZXNjcixAb2Jq
ZWN0Cgkuc2l6ZQlfX3B0aHJlYWRfb2Zmc2V0b2ZfZGVzY3IsNApfX3B0aHJlYWRfb2Zmc2V0b2Zf
ZGVzY3I6CgkubG9uZwk4Ci5nbG9ibCBfX3B0aHJlYWRfb2Zmc2V0b2ZfcGlkCgkuYWxpZ24gNAoJ
LnR5cGUJX19wdGhyZWFkX29mZnNldG9mX3BpZCxAb2JqZWN0Cgkuc2l6ZQlfX3B0aHJlYWRfb2Zm
c2V0b2ZfcGlkLDQKX19wdGhyZWFkX29mZnNldG9mX3BpZDoKCS5sb25nCTg0Ci5nbG9ibCBfX2xp
bnV4dGhyZWFkc19wdGhyZWFkX3NpemVvZl9kZXNjcgoJLmFsaWduIDQKCS50eXBlCV9fbGludXh0
aHJlYWRzX3B0aHJlYWRfc2l6ZW9mX2Rlc2NyLEBvYmplY3QKCS5zaXplCV9fbGludXh0aHJlYWRz
X3B0aHJlYWRfc2l6ZW9mX2Rlc2NyLDQKX19saW51eHRocmVhZHNfcHRocmVhZF9zaXplb2ZfZGVz
Y3I6CgkubG9uZwkxMDI0Ci5nbG9ibCBfX3B0aHJlYWRfc2lnX3Jlc3RhcnQKCS5kYXRhCgkuYWxp
Z24gNAoJLnR5cGUJX19wdGhyZWFkX3NpZ19yZXN0YXJ0LEBvYmplY3QKCS5zaXplCV9fcHRocmVh
ZF9zaWdfcmVzdGFydCw0Cl9fcHRocmVhZF9zaWdfcmVzdGFydDoKCS5sb25nCTMyCi5nbG9ibCBf
X3B0aHJlYWRfc2lnX2NhbmNlbAoJLmFsaWduIDQKCS50eXBlCV9fcHRocmVhZF9zaWdfY2FuY2Vs
LEBvYmplY3QKCS5zaXplCV9fcHRocmVhZF9zaWdfY2FuY2VsLDQKX19wdGhyZWFkX3NpZ19jYW5j
ZWw6CgkubG9uZwkzMwouZ2xvYmwgX19wdGhyZWFkX3NpZ19kZWJ1ZwoJLmFsaWduIDQKCS50eXBl
CV9fcHRocmVhZF9zaWdfZGVidWcsQG9iamVjdAoJLnNpemUJX19wdGhyZWFkX3NpZ19kZWJ1Zyw0
Cl9fcHRocmVhZF9zaWdfZGVidWc6CgkubG9uZwkzNAoJLnNlY3Rpb24JLnJvZGF0YQoJLmFsaWdu
IDQKCS50eXBlCXN5c2N0bF9hcmdzLjAsQG9iamVjdAoJLnNpemUJc3lzY3RsX2FyZ3MuMCw4CnN5
c2N0bF9hcmdzLjA6CgkubG9uZwkxCgkubG9uZwk0Cgkuc2VjdGlvbgkuY3RvcnMsImF3IixAcHJv
Z2JpdHMKCS5hbGlnbiA0CgkubG9uZwlwdGhyZWFkX2luaXRpYWxpemUKCS50ZXh0CgkuYWxpZ24g
MgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIF9fcHRocmVhZF9pbml0aWFsaXplX21hbmFnZXIKCS50
eXBlCV9fcHRocmVhZF9pbml0aWFsaXplX21hbmFnZXIsQGZ1bmN0aW9uCl9fcHRocmVhZF9pbml0
aWFsaXplX21hbmFnZXI6CglwdXNobAklZWJwCglwdXNobAklZWJ4CglzdWJsCSQxODAsICVlc3AK
CW1vdmwJX19wdGhyZWFkX21heF9zdGFja3NpemUsICVlYXgKCXRlc3RsCSVlYXgsICVlYXgKCWpl
CS5MNTQKLkwyOToKCW1vdmwJX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2JvcywgJWVheAoJdGVz
dGwJJWVheCwgJWVheAoJamUJLkw1NQouTDMyOgoJc3VibAkkMTIsICVlc3AKCXB1c2hsCSQ4MTYw
CgljYWxsCW1hbGxvYwoJb3JsCSQtMSwgJWVkeAoJYWRkbAkkMTYsICVlc3AKCW1vdmwJJWVheCwg
X19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2JvcwoJdGVzdGwJJWVheCwgJWVheAoJamUJLkwyOAoJ
c3VibAkkMTIsICVlc3AKCWFkZGwJJDgxNjAsICVlYXgKCW1vdmwJJWVheCwgX19wdGhyZWFkX21h
bmFnZXJfdGhyZWFkX3RvcwoJbGVhbAkxMiglZXNwKSwgJWVieAoJcHVzaGwJJWVieAoJY2FsbAlw
aXBlCglhZGRsCSQxNiwgJWVzcAoJaW5jbAklZWF4CglqZQkuTDU2Cgltb3ZsCV9fcHRocmVhZF9p
bml0aWFsX3RocmVhZCs0NTYsICVlZHgKCXhvcmwJJWVicCwgJWVicAoJdGVzdGwJJWVkeCwgJWVk
eAoJam5lCS5MNTcKLkwzNToKCXRlc3RsCSVlYnAsICVlYnAKCWpuZQkuTDM4Cgltb3ZsCSglZXNw
KSwgJWVheAoJcHVzaGwJJWVheAoJbW92bAlfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfdG9zLCAl
ZWF4CglwdXNobAkkMzg0MAoJcHVzaGwJJWVheAoJcHVzaGwJJF9fcHRocmVhZF9tYW5hZ2VyCglj
YWxsCV9fY2xvbmUKCWFkZGwJJDE2LCAlZXNwCgltb3ZsCSVlYXgsICVlYnAKLkwzODoKCWNtcGwJ
JC0xLCAlZWJwCglqZQkuTDU4Cgltb3ZsCTQoJWVieCksICVlYXgKCW1vdmwJJWVicCwgX19wdGhy
ZWFkX21hbmFnZXJfdGhyZWFkKzg0Cgltb3ZsCSVlYXgsIF9fcHRocmVhZF9tYW5hZ2VyX3JlcXVl
c3QKCW1vdmwJKCVlc3ApLCAlZWF4Cgltb3ZsCSVlYXgsIF9fcHRocmVhZF9tYW5hZ2VyX3JlYWRl
cgoJbW92bAlfX3B0aHJlYWRfdGhyZWFkc19kZWJ1ZywgJWVheAoJbW92bAkkMjA0OSwgX19wdGhy
ZWFkX21hbmFnZXJfdGhyZWFkKzgwCgl0ZXN0bAklZWF4LCAlZWF4CglqbmUJLkw1OQouTDQwOgoJ
bW92bAkkNSwgMjAoJWVzcCkKCWxlYWwJMTYoJWVzcCksICVlYnAKCS5wMmFsaWduIDQsLDcKLkw0
ODoKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJfcmVxdWVzdCwgJWVheAoJcHVzaGwJJWVkeAoJcHVz
aGwJJDE0OAoJcHVzaGwJJWVicAoJcHVzaGwJJWVheAoJY2FsbAlfX2xpYmNfd3JpdGUKCWFkZGwJ
JDE2LCAlZXNwCglpbmNsCSVlYXgKCWpuZQkuTDQ5CgljYWxsCV9fZXJybm9fbG9jYXRpb24KCWNt
cGwJJDQsICglZWF4KQoJamUJLkw0OAouTDQ5OgoJeG9ybAklZWR4LCAlZWR4Ci5MMjg6CglhZGRs
CSQxODAsICVlc3AKCW1vdmwJJWVkeCwgJWVheAoJcG9wbAklZWJ4Cglwb3BsCSVlYnAKCXJldAou
TDU5OgoJbW92bAlfX3B0aHJlYWRfc2lnX2RlYnVnLCAlZWF4Cgl0ZXN0bAklZWF4LCAlZWF4Cglq
bGUJLkw0MAoJc3VibAkkMTIsICVlc3AKCXB1c2hsCSVlYXgKCWNhbGwJcmFpc2UKCW1vdmwJJWVi
cCwgJWVheAoJYWRkbAkkMTYsICVlc3AKCWNtcGwJX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2Jv
cywgJWVicAoJamIJLkw0MQoJbW92bAkkX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkLCAlZWF4Ci5M
NDI6CglzdWJsCSQxMiwgJWVzcAoJcHVzaGwJJWVheAoJY2FsbAlfX3B0aHJlYWRfd2FpdF9mb3Jf
cmVzdGFydF9zaWduYWwKCWFkZGwJJDE2LCAlZXNwCglqbXAJLkw0MAouTDQxOgoJY21wbAlfX3B0
aHJlYWRfbWFuYWdlcl90aHJlYWRfYm9zLCAlZWJwCglqYgkuTDQ0CgljbXBsCV9fcHRocmVhZF9t
YW5hZ2VyX3RocmVhZF90b3MsICVlYnAKCWphZQkuTDQ0Cgltb3ZsCSRfX3B0aHJlYWRfbWFuYWdl
cl90aHJlYWQsICVlYXgKCWptcAkuTDQyCi5MNDQ6Cgltb3ZsCV9fcHRocmVhZF9ub25zdGFuZGFy
ZF9zdGFja3MsICVlYngKCXRlc3RsCSVlYngsICVlYngKCWplCS5MNDYKCWNhbGwJX19wdGhyZWFk
X2ZpbmRfc2VsZgoJam1wCS5MNDIKLkw0NjoKCW9ybAkkMjA5NzE1MSwgJWVheAoJc3VibAkkMTAy
MywgJWVheAoJam1wCS5MNDIKLkw1ODoKCXN1YmwJJDEyLCAlZXNwCgltb3ZsCV9fcHRocmVhZF9t
YW5hZ2VyX3RocmVhZF9ib3MsICVlYXgKCXB1c2hsCSVlYXgKCWNhbGwJZnJlZQoJcG9wbAklZWF4
Cgltb3ZsCTEyKCVlc3ApLCAlZWF4CglwdXNobAklZWF4CgljYWxsCV9fbGliY19jbG9zZQoJbW92
bAk0KCVlYngpLCAlZWR4Cglwb3BsCSVlYnAKCXB1c2hsCSVlZHgKCWNhbGwJX19saWJjX2Nsb3Nl
Ci5MNTM6CglvcmwJJC0xLCAlZWR4CglhZGRsCSQxNiwgJWVzcAoJam1wCS5MMjgKLkw1NzoKCW1v
dmwJX19wdGhyZWFkX3RocmVhZHNfZXZlbnRzLCAlZWF4Cgltb3ZsCV9fcHRocmVhZF9pbml0aWFs
X3RocmVhZCs0NjAsICVlY3gKCW9ybAklZWN4LCAlZWF4Cgl0ZXN0bAkkMTI4LCAlZWF4CglqZQku
TDM1Cgl4b3JsCSVlZHgsICVlZHgKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkKzkyLCAl
ZWF4CgljYWxsCV9fcHRocmVhZF9sb2NrCgltb3ZsCV9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZF90
b3MsICVlYnAKCW1vdmwJKCVlc3ApLCAlZWF4CglwdXNobAklZWF4CglwdXNobAkkMzg0MAoJcHVz
aGwJJWVicAoJcHVzaGwJJF9fcHRocmVhZF9tYW5hZ2VyX2V2ZW50CgljYWxsCV9fY2xvbmUKCWFk
ZGwJJDE2LCAlZXNwCgltb3ZsCSVlYXgsICVlYnAKCWNtcGwJJC0xLCAlZWF4CglqZQkuTDM3Cglt
b3ZsCSRfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQsIF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCs0
NzIKCW1vdmwJJDgsIF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCs0NjgKCW1vdmwJJF9fcHRocmVh
ZF9tYW5hZ2VyX3RocmVhZCwgX19wdGhyZWFkX2xhc3RfZXZlbnQKCW1vdmwJJDIwNDksIF9fcHRo
cmVhZF9tYW5hZ2VyX3RocmVhZCs4MAoJbW92bAklZWF4LCBfX3B0aHJlYWRfbWFuYWdlcl90aHJl
YWQrODQKCWNhbGwJX19saW51eHRocmVhZHNfY3JlYXRlX2V2ZW50Ci5MMzc6CglzdWJsCSQxMiwg
JWVzcAoJbW92bAlfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQrOTIsICVlYXgKCXB1c2hsCSVlYXgK
CWNhbGwJX19wdGhyZWFkX3VubG9jawoJYWRkbAkkMTYsICVlc3AKCWptcAkuTDM1Ci5MNTY6Cglz
dWJsCSQxMiwgJWVzcAoJbW92bAlfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfYm9zLCAlZWF4Cglw
dXNobAklZWF4CgljYWxsCWZyZWUKCWptcAkuTDUzCi5MNTU6CgljYWxsCXB0aHJlYWRfaW5pdGlh
bGl6ZQoJam1wCS5MMzIKLkw1NDoKCW1vdmwJJDIwOTcxNTIsICVlYnAKCXB1c2hsCSVlYXgKCXB1
c2hsCSVlYXgKCWxlYWwJMTYoJWVzcCksICVlYngKCXB1c2hsCSVlYngKCXB1c2hsCSQzCgljYWxs
CWdldHJsaW1pdAoJYWRkbAkkMTYsICVlc3AKCWNhbGwJX19nZXRwYWdlc2l6ZQoJc3VibAklZWF4
LCAlZWJwCgljbXBsCSVlYnAsIDgoJWVzcCkKCWphCS5MNjAKLkwzMDoKCW1vdmwJJWVicCwgX19w
dGhyZWFkX21heF9zdGFja3NpemUKCWptcAkuTDI5Ci5MNjA6Cgltb3ZsCSVlYnAsIDgoJWVzcCkK
CXB1c2hsCSVlYXgKCXB1c2hsCSVlYXgKCXB1c2hsCSVlYngKCXB1c2hsCSQzCgljYWxsCXNldHJs
aW1pdAoJYWRkbAkkMTYsICVlc3AKCWptcAkuTDMwCi5MZmUxOgoJLnNpemUJX19wdGhyZWFkX2lu
aXRpYWxpemVfbWFuYWdlciwuTGZlMS1fX3B0aHJlYWRfaW5pdGlhbGl6ZV9tYW5hZ2VyCgkuYWxp
Z24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIF9fcHRocmVhZF9jcmVhdGVfMl8xCgkudHlwZQlf
X3B0aHJlYWRfY3JlYXRlXzJfMSxAZnVuY3Rpb24KX19wdGhyZWFkX2NyZWF0ZV8yXzE6CglwdXNo
bAklZWJwCgltb3ZsCSVlYnAsICVlYXgKCXB1c2hsCSVlYngKCXN1YmwJJDE2NCwgJWVzcAoJY21w
bAlfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWRfYm9zLCAlZWJwCglqYgkuTDYyCgltb3ZsCSRfX3B0
aHJlYWRfaW5pdGlhbF90aHJlYWQsICVlYngKLkw2MzoKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJf
cmVxdWVzdCwgJWVheAoJdGVzdGwJJWVheCwgJWVheAoJanMJLkw3OAouTDY5OgoJbW92bAkxODAo
JWVzcCksICVlYXgKCW1vdmwJJWVieCwgKCVlc3ApCgltb3ZsCSVlYXgsIDgoJWVzcCkKCW1vdmwJ
MTg0KCVlc3ApLCAlZWF4Cgltb3ZsCSVlYXgsIDEyKCVlc3ApCgltb3ZsCTE4OCglZXNwKSwgJWVh
eAoJbW92bAklZWF4LCAxNiglZXNwKQoJbW92bAkkMCwgNCglZXNwKQoJcHVzaGwJJWVheAoJbGVh
bAkyNCglZXNwKSwgJWVkeAoJcHVzaGwJJWVkeAoJcHVzaGwJJDAKCXB1c2hsCSQyCgljYWxsCXNp
Z3Byb2NtYXNrCglhZGRsCSQxNiwgJWVzcAoJbW92bAklZXNwLCAlZWJwCgkucDJhbGlnbiA0LCw3
Ci5MNzE6CglwdXNobAklZWF4Cgltb3ZsCV9fcHRocmVhZF9tYW5hZ2VyX3JlcXVlc3QsICVlYXgK
CXB1c2hsCSQxNDgKCXB1c2hsCSVlYnAKCXB1c2hsCSVlYXgKCWNhbGwJX19saWJjX3dyaXRlCglh
ZGRsCSQxNiwgJWVzcAoJaW5jbAklZWF4CglqbmUJLkw3MgoJY2FsbAlfX2Vycm5vX2xvY2F0aW9u
CgljbXBsCSQ0LCAoJWVheCkKCWplCS5MNzEKLkw3MjoKCXN1YmwJJDEyLCAlZXNwCglwdXNobAkl
ZWJ4CgljYWxsCV9fcHRocmVhZF93YWl0X2Zvcl9yZXN0YXJ0X3NpZ25hbAoJbW92bAkxMTYoJWVi
eCksICVlY3gKCWFkZGwJJDE2LCAlZXNwCgl0ZXN0bAklZWN4LCAlZWN4CglqbmUJLkw3NwoJbW92
bAkxNzYoJWVzcCksICVlYXgKCW1vdmwJMTEyKCVlYngpLCAlZWJwCgltb3ZsCSVlYnAsICglZWF4
KQouTDc3OgoJbW92bAklZWN4LCAlZWR4Ci5MNjE6CglhZGRsCSQxNjQsICVlc3AKCW1vdmwJJWVk
eCwgJWVheAoJcG9wbAklZWJ4Cglwb3BsCSVlYnAKCXJldAouTDc4OgoJY2FsbAlfX3B0aHJlYWRf
aW5pdGlhbGl6ZV9tYW5hZ2VyCgltb3ZsCSQxMSwgJWVkeAoJdGVzdGwJJWVheCwgJWVheAoJam5z
CS5MNjkKCWptcAkuTDYxCgkucDJhbGlnbiA0LCw3Ci5MNjI6CgljbXBsCV9fcHRocmVhZF9tYW5h
Z2VyX3RocmVhZF9ib3MsICVlYnAKCWpiCS5MNjUKCWNtcGwJX19wdGhyZWFkX21hbmFnZXJfdGhy
ZWFkX3RvcywgJWVicAoJamFlCS5MNjUKCW1vdmwJJF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCwg
JWVieAoJam1wCS5MNjMKLkw2NToKCW1vdmwJX19wdGhyZWFkX25vbnN0YW5kYXJkX3N0YWNrcywg
JWVkeAoJdGVzdGwJJWVkeCwgJWVkeAoJamUJLkw2NwoJY2FsbAlfX3B0aHJlYWRfZmluZF9zZWxm
Cgltb3ZsCSVlYXgsICVlYngKCWptcAkuTDYzCi5MNjc6CglvcmwJJDIwOTcxNTEsICVlYXgKCWxl
YWwJLTEwMjMoJWVheCksICVlYngKCWptcAkuTDYzCi5MZmUyOgoJLnNpemUJX19wdGhyZWFkX2Ny
ZWF0ZV8yXzEsLkxmZTItX19wdGhyZWFkX2NyZWF0ZV8yXzEKCS53ZWFrCXB0aHJlYWRfY3JlYXRl
Cgkuc2V0CXB0aHJlYWRfY3JlYXRlLF9fcHRocmVhZF9jcmVhdGVfMl8xCgkuYWxpZ24gMgoJLnAy
YWxpZ24gNCwsMTUKLmdsb2JsIF9fcHRocmVhZF9maW5kX3NlbGYKCS50eXBlCV9fcHRocmVhZF9m
aW5kX3NlbGYsQGZ1bmN0aW9uCl9fcHRocmVhZF9maW5kX3NlbGY6CglwdXNobAklZWJwCgltb3Zs
CSVlYnAsICVlY3gKCW1vdmwJJF9fcHRocmVhZF9oYW5kbGVzKzMyLCAlZWR4CgljbXBsCV9fcHRo
cmVhZF9oYW5kbGVzKzQwLCAlZWJwCglqYmUJLkw4NwoJLnAyYWxpZ24gNCwsNwouTDgzOgoJYWRk
bAkkMTYsICVlZHgKCW1vdmwJOCglZWR4KSwgJWVheAoJY21wbAklZWF4LCAlZWN4CglqYQkuTDgz
CgljbXBsCTEyKCVlZHgpLCAlZWN4CglqYgkuTDgzCi5MODU6Cglwb3BsCSVlYnAKCXJldAouTDg3
OgoJY21wbAlfX3B0aHJlYWRfaGFuZGxlcys0NCwgJWVicAoJamIJLkw4MwoJbW92bAlfX3B0aHJl
YWRfaGFuZGxlcys0MCwgJWVheAoJam1wCS5MODUKLkxmZTM6Cgkuc2l6ZQlfX3B0aHJlYWRfZmlu
ZF9zZWxmLC5MZmUzLV9fcHRocmVhZF9maW5kX3NlbGYKCS53ZWFrCXB0aHJlYWRfeWllbGQKCS5z
ZXQJcHRocmVhZF95aWVsZCxfX3B0aHJlYWRfeWllbGQKCS5hbGlnbiAyCgkucDJhbGlnbiA0LCwx
NQoJLnR5cGUJcHRocmVhZF9oYW5kbGVfc2lnY2FuY2VsLEBmdW5jdGlvbgpwdGhyZWFkX2hhbmRs
ZV9zaWdjYW5jZWw6CglwdXNobAklZWJwCglwdXNobAklZWN4CglwdXNobAklZWN4Cgltb3ZsCTE2
KCVlc3ApLCAlZWJwCgltb3ZsCSVlYnAsICVlYXgKCWNtcGwJX19wdGhyZWFkX2luaXRpYWxfdGhy
ZWFkX2JvcywgJWVicAoJamIJLkw4OQoJbW92bAkkX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkLCAl
ZWF4Ci5MOTA6CgljbXBsCSRfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQsICVlYXgKCWplCS5MMTAy
Cgltb3ZsCV9fcHRocmVhZF9leGl0X3JlcXVlc3RlZCwgJWVjeAoJdGVzdGwJJWVjeCwgJWVjeAoJ
am5lCS5MMTAzCgljbXBiCSQwLCAxMzAoJWVheCkKCWpuZQkuTDEwNAouTDg4OgoJcG9wbAklZWJw
Cglwb3BsCSVlYXgKCXBvcGwJJWVicAoJcmV0Ci5MMTA0OgoJY21wYgkkMCwgMTI4KCVlYXgpCglq
bmUJLkw4OAoJY21wYgkkMSwgMTI5KCVlYXgpCglqZQkuTDEwNQoJbW92bAkxMDQoJWVheCksICVl
ZHgKCXRlc3RsCSVlZHgsICVlZHgKCWplCS5MODgKCWptcAkuTDEwNgoJLnAyYWxpZ24gNCwsNwou
TDEwMzoKCWNtcGwJX19wdGhyZWFkX21haW5fdGhyZWFkLCAlZWF4CglqZQkuTDEwNwouTDk4OgoJ
c3VibAkkMTIsICVlc3AKCW1vdmwJX19wdGhyZWFkX2V4aXRfY29kZSwgJWVheAoJcHVzaGwJJWVh
eAoJY2FsbAlfZXhpdAouTDEwNzoKCXB1c2hsCSVlYXgKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJf
dGhyZWFkKzg0LCAlZWF4CglwdXNobAkkLTIxNDc0ODM2NDgKCXB1c2hsCSQwCglwdXNobAklZWF4
CgljYWxsCXdhaXRwaWQKCWFkZGwJJDE2LCAlZXNwCglqbXAJLkw5OAouTDEwMjoKCW1vdmwJJWVi
cCwgMTYoJWVzcCkKCXBvcGwJJWVjeAoJcG9wbAklZWJwCglwb3BsCSVlYnAKCWptcAlfX3B0aHJl
YWRfbWFuYWdlcl9zaWdoYW5kbGVyCgkucDJhbGlnbiA0LCw3Ci5MODk6CgljbXBsCV9fcHRocmVh
ZF9tYW5hZ2VyX3RocmVhZF9ib3MsICVlYnAKCWpiCS5MOTIKCWNtcGwJX19wdGhyZWFkX21hbmFn
ZXJfdGhyZWFkX3RvcywgJWVicAoJamFlCS5MOTIKCW1vdmwJJF9fcHRocmVhZF9tYW5hZ2VyX3Ro
cmVhZCwgJWVheAoJam1wCS5MOTAKCS5wMmFsaWduIDQsLDcKLkw5MjoKCW1vdmwJX19wdGhyZWFk
X25vbnN0YW5kYXJkX3N0YWNrcywgJWVjeAoJdGVzdGwJJWVjeCwgJWVjeAoJamUJLkw5NAoJY2Fs
bAlfX3B0aHJlYWRfZmluZF9zZWxmCglqbXAJLkw5MAoJLnAyYWxpZ24gNCwsNwouTDk0OgoJb3Js
CSQyMDk3MTUxLCAlZWF4CglzdWJsCSQxMDIzLCAlZWF4CglqbXAJLkw5MAouTDEwNToKCXB1c2hs
CSVlYXgKCXB1c2hsCSVlYXgKCXB1c2hsCSVlYnAKCXB1c2hsCSQtMQoJY2FsbAlfX3B0aHJlYWRf
ZG9fZXhpdAouTDEwNjoKCW1vdmwJJDAsIDEwNCglZWF4KQoJcHVzaGwJJWVheAoJcHVzaGwJJWVh
eAoJcHVzaGwJJDEKCXB1c2hsCSVlZHgKCWNhbGwJc2lnbG9uZ2ptcAouTGZlNDoKCS5zaXplCXB0
aHJlYWRfaGFuZGxlX3NpZ2NhbmNlbCwuTGZlNC1wdGhyZWFkX2hhbmRsZV9zaWdjYW5jZWwKCS53
ZWFrCXB0aHJlYWRfa2lsbF9vdGhlcl90aHJlYWRzX25wCgkuc2V0CXB0aHJlYWRfa2lsbF9vdGhl
cl90aHJlYWRzX25wLF9fcHRocmVhZF9raWxsX290aGVyX3RocmVhZHNfbnAKCS53ZWFrCXB0aHJl
YWRfc2V0Y29uY3VycmVuY3kKCS5zZXQJcHRocmVhZF9zZXRjb25jdXJyZW5jeSxfX3B0aHJlYWRf
c2V0Y29uY3VycmVuY3kKCS53ZWFrCXB0aHJlYWRfZ2V0Y29uY3VycmVuY3kKCS5zZXQJcHRocmVh
ZF9nZXRjb25jdXJyZW5jeSxfX3B0aHJlYWRfZ2V0Y29uY3VycmVuY3kKCS5hbGlnbiAyCgkucDJh
bGlnbiA0LCwxNQouZ2xvYmwgX19wdGhyZWFkX3dhaXRfZm9yX3Jlc3RhcnRfc2lnbmFsCgkudHlw
ZQlfX3B0aHJlYWRfd2FpdF9mb3JfcmVzdGFydF9zaWduYWwsQGZ1bmN0aW9uCl9fcHRocmVhZF93
YWl0X2Zvcl9yZXN0YXJ0X3NpZ25hbDoKCXB1c2hsCSVlc2kKCXB1c2hsCSVlYngKCXN1YmwJJDEz
NiwgJWVzcAoJbGVhbAk0KCVlc3ApLCAlZWJ4Cgltb3ZsCTE0OCglZXNwKSwgJWVzaQoJcHVzaGwJ
JWVieAoJcHVzaGwJJDAKCXB1c2hsCSQyCgljYWxsCXNpZ3Byb2NtYXNrCglwb3BsCSVlYXgKCXBv
cGwJJWVkeAoJbW92bAlfX3B0aHJlYWRfc2lnX3Jlc3RhcnQsICVlYXgKCXB1c2hsCSVlYXgKCXB1
c2hsCSVlYngKCWNhbGwJc2lnZGVsc2V0CglhZGRsCSQxNiwgJWVzcAoJbW92bAkkMCwgOTYoJWVz
aSkKCS5wMmFsaWduIDQsLDcKLkwxMDk6CglzdWJsCSQxMiwgJWVzcAoJcHVzaGwJJWVieAoJY2Fs
bAlzaWdzdXNwZW5kCgltb3ZsCV9fcHRocmVhZF9zaWdfcmVzdGFydCwgJWVheAoJYWRkbAkkMTYs
ICVlc3AKCWNtcGwJJWVheCwgOTYoJWVzaSkKCWpuZQkuTDEwOQoJYWRkbAkkMTMyLCAlZXNwCglw
b3BsCSVlYngKCXBvcGwJJWVzaQoJcmV0Ci5MZmU1OgoJLnNpemUJX19wdGhyZWFkX3dhaXRfZm9y
X3Jlc3RhcnRfc2lnbmFsLC5MZmU1LV9fcHRocmVhZF93YWl0X2Zvcl9yZXN0YXJ0X3NpZ25hbAoJ
LmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Ci5nbG9ibCBfX3B0aHJlYWRfdGltZWRzdXNwZW5kX25l
dwoJLnR5cGUJX19wdGhyZWFkX3RpbWVkc3VzcGVuZF9uZXcsQGZ1bmN0aW9uCl9fcHRocmVhZF90
aW1lZHN1c3BlbmRfbmV3OgoJcHVzaGwJJWVicAoJcHVzaGwJJWVkaQoJcHVzaGwJJWVzaQoJcHVz
aGwJJWVieAoJc3VibAkkNDUyLCAlZXNwCglwdXNobAkkMQoJbGVhbAkyOCglZXNwKSwgJWVkeAoJ
cHVzaGwJJWVkeAoJY2FsbAlfX3NpZ3NldGptcAoJYWRkbAkkMTYsICVlc3AKCXRlc3RsCSVlYXgs
ICVlYXgKCWplCS5MMTIzCgltb3ZsCSQxLCAlZWF4Ci5MMTIyOgoJbW92bAk0NjQoJWVzcCksICVl
YngKCW1vdmwJJDAsIDEwMCglZWJ4KQoJYWRkbAkkNDQ0LCAlZXNwCglwb3BsCSVlYngKCXBvcGwJ
JWVzaQoJcG9wbAklZWRpCglwb3BsCSVlYnAKCXJldAoJLnAyYWxpZ24gNCwsNwouTDEyMzoKCW1v
dmwJNDY0KCVlc3ApLCAlZWN4CglsZWFsCTE2KCVlc3ApLCAlZWJ4CglzdWJsCSQxMiwgJWVzcAoJ
bW92bAklZWJ4LCAxMDAoJWVjeCkKCWxlYWwJMzE2KCVlc3ApLCAlZXNpCgltb3ZsCSQwLCA5Nigl
ZWN4KQoJcHVzaGwJJWVzaQoJY2FsbAlzaWdlbXB0eXNldAoJcG9wbAklZWF4Cglwb3BsCSVlZHgK
CW1vdmwJX19wdGhyZWFkX3NpZ19yZXN0YXJ0LCAlZWF4CglwdXNobAklZWF4CglwdXNobAklZXNp
CgljYWxsCXNpZ2FkZHNldAoJYWRkbAkkMTIsICVlc3AKCWxlYWwJMTgwKCVlc3ApLCAlZWR4Cglw
dXNobAklZWR4CglwdXNobAklZXNpCglwdXNobAkkMQoJY2FsbAlzaWdwcm9jbWFzawoJYWRkbAkk
MTYsICVlc3AKCW1vdmwJJWVzcCwgJWVzaQoJbGVhbAk4KCVlc3ApLCAlZWJ4CgkucDJhbGlnbiA0
LCw3Ci5MMTIxOgoJcHVzaGwJJWVheAoJcHVzaGwJJWVheAoJcHVzaGwJJDAKCXB1c2hsCSVlYngK
CWNhbGwJX19nZXR0aW1lb2ZkYXkKCW1vdmwJNDg0KCVlc3ApLCAlZWJwCgltb3ZsCTI4KCVlc3Ap
LCAlZWF4CglsZWFsCSglZWF4LCVlYXgsNCksICVlZGkKCW1vdmwJMjQoJWVzcCksICVlYXgKCWxl
YWwJKCVlZGksJWVkaSw0KSwgJWVkeAoJbGVhbAkoJWVkeCwlZWR4LDQpLCAlZWN4Cgltb3ZsCTQo
JWVicCksICVlZHgKCXNhbGwJJDMsICVlY3gKCXN1YmwJJWVjeCwgJWVkeAoJbW92bAkoJWVicCks
ICVlY3gKCXN1YmwJJWVheCwgJWVjeAoJbW92bAklZWR4LCAyMCglZXNwKQoJbW92bAklZWN4LCAx
NiglZXNwKQoJYWRkbAkkMTYsICVlc3AKCXRlc3RsCSVlZHgsICVlZHgKCWpzCS5MMTI0Ci5MMTE4
OgoJbW92bAkoJWVzcCksICVlYXgKCXRlc3RsCSVlYXgsICVlYXgKCWpzCS5MMTE2CglwdXNobAkl
ZWRpCglwdXNobAklZWRpCglwdXNobAkkMAoJcHVzaGwJJWVzaQoJY2FsbAlfX2xpYmNfbmFub3Ns
ZWVwCglhZGRsCSQxNiwgJWVzcAoJdGVzdGwJJWVheCwgJWVheAoJam5lCS5MMTIxCi5MMTE2OgoJ
cHVzaGwJJWVjeAoJcHVzaGwJJDAKCWxlYWwJMTg0KCVlc3ApLCAlZXNpCglwdXNobAklZXNpCglw
dXNobAkkMgoJY2FsbAlzaWdwcm9jbWFzawoJYWRkbAkkMTYsICVlc3AKCXhvcmwJJWVheCwgJWVh
eAoJam1wCS5MMTIyCgkucDJhbGlnbiA0LCw3Ci5MMTI0OgoJbGVhbAkxMDAwMDAwMDAwKCVlZHgp
LCAlZWRpCglsZWFsCS0xKCVlY3gpLCAlZWJwCgltb3ZsCSVlZGksIDQoJWVzcCkKCW1vdmwJJWVi
cCwgKCVlc3ApCglqbXAJLkwxMTgKLkxmZTY6Cgkuc2l6ZQlfX3B0aHJlYWRfdGltZWRzdXNwZW5k
X25ldywuTGZlNi1fX3B0aHJlYWRfdGltZWRzdXNwZW5kX25ldwoJLnNlY3Rpb24JLnJvZGF0YQoJ
LmFsaWduIDQKCS50eXBlCV9fcHRocmVhZF9yZXF1aXJlX3dyYXBwZXJzLEBvYmplY3QKCS5zaXpl
CV9fcHRocmVhZF9yZXF1aXJlX3dyYXBwZXJzLDQKX19wdGhyZWFkX3JlcXVpcmVfd3JhcHBlcnM6
CgkubG9uZwlfX3B0aHJlYWRfcHJvdmlkZV93cmFwcGVycwoJLmFsaWduIDQKCS50eXBlCV9fcHRo
cmVhZF9yZXF1aXJlX2xvY2tmaWxlLEBvYmplY3QKCS5zaXplCV9fcHRocmVhZF9yZXF1aXJlX2xv
Y2tmaWxlLDQKX19wdGhyZWFkX3JlcXVpcmVfbG9ja2ZpbGU6CgkubG9uZwlfX3B0aHJlYWRfcHJv
dmlkZV9sb2NrZmlsZQoJLnRleHQKCS5hbGlnbiAyCgkucDJhbGlnbiA0LCwxNQouZ2xvYmwgX19s
aWJjX2N1cnJlbnRfc2lncnRtaW4KCS50eXBlCV9fbGliY19jdXJyZW50X3NpZ3J0bWluLEBmdW5j
dGlvbgpfX2xpYmNfY3VycmVudF9zaWdydG1pbjoKCW1vdmwJcnRzaWdzX2luaXRpYWxpemVkLCAl
ZWF4Cgl0ZXN0bAklZWF4LCAlZWF4CglqZQkuTDQ4NAouTDQ4MjoKCW1vdmwJY3VycmVudF9ydG1p
biwgJWVheAoJcmV0Ci5MNDg0OgoJbW92bAkkMzUsIGN1cnJlbnRfcnRtaW4KCW1vdmwJJDYzLCBj
dXJyZW50X3J0bWF4Cgltb3ZsCSQxLCBydHNpZ3NfaW5pdGlhbGl6ZWQKCWptcAkuTDQ4MgouTGZl
NzoKCS5zaXplCV9fbGliY19jdXJyZW50X3NpZ3J0bWluLC5MZmU3LV9fbGliY19jdXJyZW50X3Np
Z3J0bWluCgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIF9fbGliY19jdXJyZW50X3Np
Z3J0bWF4CgkudHlwZQlfX2xpYmNfY3VycmVudF9zaWdydG1heCxAZnVuY3Rpb24KX19saWJjX2N1
cnJlbnRfc2lncnRtYXg6Cgltb3ZsCXJ0c2lnc19pbml0aWFsaXplZCwgJWVheAoJdGVzdGwJJWVh
eCwgJWVheAoJamUJLkw0ODgKLkw0ODY6Cgltb3ZsCWN1cnJlbnRfcnRtYXgsICVlYXgKCXJldAou
TDQ4ODoKCW1vdmwJJDM1LCBjdXJyZW50X3J0bWluCgltb3ZsCSQ2MywgY3VycmVudF9ydG1heAoJ
bW92bAkkMSwgcnRzaWdzX2luaXRpYWxpemVkCglqbXAJLkw0ODYKLkxmZTg6Cgkuc2l6ZQlfX2xp
YmNfY3VycmVudF9zaWdydG1heCwuTGZlOC1fX2xpYmNfY3VycmVudF9zaWdydG1heAoJLmFsaWdu
IDIKCS5wMmFsaWduIDQsLDE1Ci5nbG9ibCBfX2xpYmNfYWxsb2NhdGVfcnRzaWcKCS50eXBlCV9f
bGliY19hbGxvY2F0ZV9ydHNpZyxAZnVuY3Rpb24KX19saWJjX2FsbG9jYXRlX3J0c2lnOgoJbW92
bAlydHNpZ3NfaW5pdGlhbGl6ZWQsICVlYXgKCXRlc3RsCSVlYXgsICVlYXgKCWplCS5MNDk2Ci5M
NDkwOgoJbW92bAljdXJyZW50X3J0bWluLCAlZWF4CgljbXBsCSQtMSwgJWVheAoJamUJLkw0OTMK
CW1vdmwJY3VycmVudF9ydG1heCwgJWVkeAoJY21wbAklZWR4LCAlZWF4CglqZwkuTDQ5MwoJbW92
bAk0KCVlc3ApLCAlZWN4Cgl0ZXN0bAklZWN4LCAlZWN4CglqZQkuTDQ5NAoJbGVhbAkxKCVlYXgp
LCAlZWN4Cgltb3ZsCSVlYXgsICVlZHgKCW1vdmwJJWVjeCwgY3VycmVudF9ydG1pbgouTDQ5NToK
CW1vdmwJJWVkeCwgJWVheAoJcmV0CgkucDJhbGlnbiA0LCw3Ci5MNDk0OgoJbGVhbAktMSglZWR4
KSwgJWVjeAoJbW92bAklZWN4LCBjdXJyZW50X3J0bWF4CglqbXAJLkw0OTUKCS5wMmFsaWduIDQs
LDcKLkw0OTM6CglvcmwJJC0xLCAlZWF4CglyZXQKLkw0OTY6Cgltb3ZsCSQzNSwgY3VycmVudF9y
dG1pbgoJbW92bAkkNjMsIGN1cnJlbnRfcnRtYXgKCW1vdmwJJDEsIHJ0c2lnc19pbml0aWFsaXpl
ZAoJam1wCS5MNDkwCi5MZmU5OgoJLnNpemUJX19saWJjX2FsbG9jYXRlX3J0c2lnLC5MZmU5LV9f
bGliY19hbGxvY2F0ZV9ydHNpZwoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Cgkud2VhawlfX3B0
aHJlYWRfaW5pdGlhbGl6ZV9taW5pbWFsCgkudHlwZQlfX3B0aHJlYWRfaW5pdGlhbGl6ZV9taW5p
bWFsLEBmdW5jdGlvbgpfX3B0aHJlYWRfaW5pdGlhbGl6ZV9taW5pbWFsOgoJcmV0Ci5MZmUxMDoK
CS5zaXplCV9fcHRocmVhZF9pbml0aWFsaXplX21pbmltYWwsLkxmZTEwLV9fcHRocmVhZF9pbml0
aWFsaXplX21pbmltYWwKCS5hbGlnbiAyCgkucDJhbGlnbiA0LCwxNQouZ2xvYmwgX19wdGhyZWFk
X2luaXRfbWF4X3N0YWNrc2l6ZQoJLnR5cGUJX19wdGhyZWFkX2luaXRfbWF4X3N0YWNrc2l6ZSxA
ZnVuY3Rpb24KX19wdGhyZWFkX2luaXRfbWF4X3N0YWNrc2l6ZToKCXB1c2hsCSVlc2kKCXB1c2hs
CSVlYngKCW1vdmwJJDIwOTcxNTIsICVlYngKCXN1YmwJJDI4LCAlZXNwCglsZWFsCTE2KCVlc3Ap
LCAlZXNpCglwdXNobAklZXNpCglwdXNobAkkMwoJY2FsbAlnZXRybGltaXQKCWNhbGwJX19nZXRw
YWdlc2l6ZQoJYWRkbAkkMTYsICVlc3AKCXN1YmwJJWVheCwgJWVieAoJY21wbAklZWJ4LCA4KCVl
c3ApCglqYQkuTDUxNgouTDUxNToKCW1vdmwJJWVieCwgX19wdGhyZWFkX21heF9zdGFja3NpemUK
CWFkZGwJJDIwLCAlZXNwCglwb3BsCSVlYngKCXBvcGwJJWVzaQoJcmV0CgkucDJhbGlnbiA0LCw3
Ci5MNTE2OgoJbW92bAklZWJ4LCA4KCVlc3ApCglwdXNobAklZWF4CglwdXNobAklZWF4CglwdXNo
bAklZXNpCglwdXNobAkkMwoJY2FsbAlzZXRybGltaXQKCWFkZGwJJDE2LCAlZXNwCglqbXAJLkw1
MTUKLkxmZTExOgoJLnNpemUJX19wdGhyZWFkX2luaXRfbWF4X3N0YWNrc2l6ZSwuTGZlMTEtX19w
dGhyZWFkX2luaXRfbWF4X3N0YWNrc2l6ZQoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Cgkud2Vh
awlfX3B0aHJlYWRfaW5pdGlhbGl6ZQoJLnR5cGUJX19wdGhyZWFkX2luaXRpYWxpemUsQGZ1bmN0
aW9uCl9fcHRocmVhZF9pbml0aWFsaXplOgoJam1wCXB0aHJlYWRfaW5pdGlhbGl6ZQouTGZlMTI6
Cgkuc2l6ZQlfX3B0aHJlYWRfaW5pdGlhbGl6ZSwuTGZlMTItX19wdGhyZWFkX2luaXRpYWxpemUK
CS5hbGlnbiAyCgkucDJhbGlnbiA0LCwxNQouZ2xvYmwgcHRocmVhZF9zZWxmCgkudHlwZQlwdGhy
ZWFkX3NlbGYsQGZ1bmN0aW9uCnB0aHJlYWRfc2VsZjoKCXB1c2hsCSVlYnAKCXB1c2hsCSVlYXgK
CXB1c2hsCSVlYXgKCW1vdmwJJWVicCwgJWVheAoJY21wbAlfX3B0aHJlYWRfaW5pdGlhbF90aHJl
YWRfYm9zLCAlZWJwCglqYgkuTDUxOQoJbW92bAkkX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkLCAl
ZWF4Ci5MNTIwOgoJbW92bAk4MCglZWF4KSwgJWVheAoJcG9wbAklZWR4Cglwb3BsCSVlY3gKCXBv
cGwJJWVicAoJcmV0CgkucDJhbGlnbiA0LCw3Ci5MNTE5OgoJY21wbAlfX3B0aHJlYWRfbWFuYWdl
cl90aHJlYWRfYm9zLCAlZWJwCglqYgkuTDUyMgoJY21wbAlfX3B0aHJlYWRfbWFuYWdlcl90aHJl
YWRfdG9zLCAlZWJwCglqYWUJLkw1MjIKCW1vdmwJJF9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZCwg
JWVheAoJam1wCS5MNTIwCgkucDJhbGlnbiA0LCw3Ci5MNTIyOgoJbW92bAlfX3B0aHJlYWRfbm9u
c3RhbmRhcmRfc3RhY2tzLCAlZWR4Cgl0ZXN0bAklZWR4LCAlZWR4CglqZQkuTDUyNAoJY2FsbAlf
X3B0aHJlYWRfZmluZF9zZWxmCglqbXAJLkw1MjAKCS5wMmFsaWduIDQsLDcKLkw1MjQ6CglvcmwJ
JDIwOTcxNTEsICVlYXgKCXN1YmwJJDEwMjMsICVlYXgKCWptcAkuTDUyMAouTGZlMTM6Cgkuc2l6
ZQlwdGhyZWFkX3NlbGYsLkxmZTEzLXB0aHJlYWRfc2VsZgoJLmFsaWduIDIKCS5wMmFsaWduIDQs
LDE1Ci5nbG9ibCBwdGhyZWFkX2VxdWFsCgkudHlwZQlwdGhyZWFkX2VxdWFsLEBmdW5jdGlvbgpw
dGhyZWFkX2VxdWFsOgoJbW92bAk4KCVlc3ApLCAlZWF4CgljbXBsCSVlYXgsIDQoJWVzcCkKCXNl
dGUJJWFsCglhbmRsCSQyNTUsICVlYXgKCXJldAouTGZlMTQ6Cgkuc2l6ZQlwdGhyZWFkX2VxdWFs
LC5MZmUxNC1wdGhyZWFkX2VxdWFsCgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIHB0
aHJlYWRfc2V0c2NoZWRwYXJhbQoJLnR5cGUJcHRocmVhZF9zZXRzY2hlZHBhcmFtLEBmdW5jdGlv
bgpwdGhyZWFkX3NldHNjaGVkcGFyYW06CglwdXNobAklZWJwCglwdXNobAklZWRpCglwdXNobAkl
ZXNpCglwdXNobAklZWJ4CglzdWJsCSQxMiwgJWVzcAoJbW92bAkzMiglZXNwKSwgJWVzaQoJbW92
bAkzNiglZXNwKSwgJWVkaQoJbW92bAklZXNpLCAlZWR4Cgltb3ZsCTQwKCVlc3ApLCAlZWJwCglh
bmRsCSQxMDIzLCAlZWR4CglzYWxsCSQ0LCAlZWR4CglsZWFsCV9fcHRocmVhZF9oYW5kbGVzKCVl
ZHgpLCAlZWJ4Cgl4b3JsCSVlZHgsICVlZHgKCW1vdmwJJWVieCwgJWVheAoJY2FsbAlfX3B0aHJl
YWRfbG9jawoJbW92bAk4KCVlYngpLCAlZWF4Cgl4b3JsCSVlZHgsICVlZHgKCXRlc3RsCSVlYXgs
ICVlYXgKCWplCS5MNTMxCgljbXBsCSVlc2ksIDgwKCVlYXgpCglqZQkuTDUzOAouTDUzMToKCW1v
dmwJJDEsICVlZHgKLkw1MzI6Cgl0ZXN0bAklZWR4LCAlZWR4CglqbmUJLkw1MzkKCW1vdmwJOCgl
ZWJ4KSwgJWVzaQoJcHVzaGwJJWVheAoJcHVzaGwJJWVicAoJcHVzaGwJJWVkaQoJbW92bAk4NCgl
ZXNpKSwgJWVheAoJcHVzaGwJJWVheAoJY2FsbAlfX3NjaGVkX3NldHNjaGVkdWxlcgoJYWRkbAkk
MTYsICVlc3AKCWluY2wJJWVheAoJamUJLkw1NDAKCXhvcmwJJWVheCwgJWVheAoJdGVzdGwJJWVk
aSwgJWVkaQoJamUJLkw1MzUKCW1vdmwJKCVlYnApLCAlZWF4Ci5MNTM1OgoJc3VibAkkMTIsICVl
c3AKCW1vdmwJJWVheCwgODgoJWVzaSkKCXB1c2hsCSVlYngKCWNhbGwJX19wdGhyZWFkX3VubG9j
awoJbW92bAlfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0LCAlZWF4CglhZGRsCSQxNiwgJWVzcAoJ
dGVzdGwJJWVheCwgJWVheAoJanMJLkw1MzYKCXN1YmwJJDEyLCAlZXNwCgltb3ZsCTg4KCVlc2kp
LCAlZWF4CglwdXNobAklZWF4CgljYWxsCV9fcHRocmVhZF9tYW5hZ2VyX2FkanVzdF9wcmlvCglh
ZGRsCSQxNiwgJWVzcAouTDUzNjoKCXhvcmwJJWVheCwgJWVheAouTDUyNzoKCWFkZGwJJDEyLCAl
ZXNwCglwb3BsCSVlYngKCXBvcGwJJWVzaQoJcG9wbAklZWRpCglwb3BsCSVlYnAKCXJldAouTDU0
MDoKCXN1YmwJJDEyLCAlZXNwCglwdXNobAklZWJ4CgljYWxsCV9fcHRocmVhZF91bmxvY2sKCWNh
bGwJX19lcnJub19sb2NhdGlvbgoJbW92bAkoJWVheCksICVlYXgKLkw1Mzc6CglhZGRsCSQxNiwg
JWVzcAoJam1wCS5MNTI3Ci5MNTM5OgoJc3VibAkkMTIsICVlc3AKCXB1c2hsCSVlYngKCWNhbGwJ
X19wdGhyZWFkX3VubG9jawoJbW92bAkkMywgJWVheAoJam1wCS5MNTM3CgkucDJhbGlnbiA0LCw3
Ci5MNTM4OgoJY21wYgkkMCwgMTA4KCVlYXgpCglqZQkuTDUzMgoJam1wCS5MNTMxCi5MZmUxNToK
CS5zaXplCXB0aHJlYWRfc2V0c2NoZWRwYXJhbSwuTGZlMTUtcHRocmVhZF9zZXRzY2hlZHBhcmFt
CgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIHB0aHJlYWRfZ2V0c2NoZWRwYXJhbQoJ
LnR5cGUJcHRocmVhZF9nZXRzY2hlZHBhcmFtLEBmdW5jdGlvbgpwdGhyZWFkX2dldHNjaGVkcGFy
YW06CglwdXNobAklZXNpCglwdXNobAklZWJ4CglwdXNobAklZWF4Cgltb3ZsCTE2KCVlc3ApLCAl
ZXNpCgltb3ZsCSVlc2ksICVlZHgKCWFuZGwJJDEwMjMsICVlZHgKCXNhbGwJJDQsICVlZHgKCWxl
YWwJX19wdGhyZWFkX2hhbmRsZXMoJWVkeCksICVlYngKCXhvcmwJJWVkeCwgJWVkeAoJbW92bAkl
ZWJ4LCAlZWF4CgljYWxsCV9fcHRocmVhZF9sb2NrCgltb3ZsCTgoJWVieCksICVlYXgKCXhvcmwJ
JWVkeCwgJWVkeAoJdGVzdGwJJWVheCwgJWVheAoJamUJLkw1NDUKCWNtcGwJJWVzaSwgODAoJWVh
eCkKCWplCS5MNTUwCi5MNTQ1OgoJbW92bAkkMSwgJWVkeAouTDU0NjoKCXRlc3RsCSVlZHgsICVl
ZHgKCWpuZQkuTDU1MQoJc3VibAkkMTIsICVlc3AKCW1vdmwJOCglZWJ4KSwgJWVheAoJbW92bAk4
NCglZWF4KSwgJWVzaQoJcHVzaGwJJWVieAoJY2FsbAlfX3B0aHJlYWRfdW5sb2NrCgltb3ZsCSVl
c2ksICglZXNwKQoJY2FsbAlfX3NjaGVkX2dldHNjaGVkdWxlcgoJYWRkbAkkMTYsICVlc3AKCW1v
dmwJJWVheCwgJWVieAoJY21wbAkkLTEsICVlYXgKCWplCS5MNTQ5CglwdXNobAklZWF4CglwdXNo
bAklZWF4Cgltb3ZsCTMyKCVlc3ApLCAlZWF4CglwdXNobAklZWF4CglwdXNobAklZXNpCgljYWxs
CV9fc2NoZWRfZ2V0cGFyYW0KCWFkZGwJJDE2LCAlZXNwCglpbmNsCSVlYXgKCWplCS5MNTQ5Cglt
b3ZsCTIwKCVlc3ApLCAlZWF4Cgltb3ZsCSVlYngsICglZWF4KQoJeG9ybAklZWF4LCAlZWF4Ci5M
NTQxOgoJcG9wbAklZWR4Cglwb3BsCSVlYngKCXBvcGwJJWVzaQoJcmV0CgkucDJhbGlnbiA0LCw3
Ci5MNTQ5OgoJY2FsbAlfX2Vycm5vX2xvY2F0aW9uCgltb3ZsCSglZWF4KSwgJWVheAoJam1wCS5M
NTQxCi5MNTUxOgoJc3VibAkkMTIsICVlc3AKCXB1c2hsCSVlYngKCWNhbGwJX19wdGhyZWFkX3Vu
bG9jawoJYWRkbAkkMTYsICVlc3AKCW1vdmwJJDMsICVlYXgKCWptcAkuTDU0MQoJLnAyYWxpZ24g
NCwsNwouTDU1MDoKCWNtcGIJJDAsIDEwOCglZWF4KQoJamUJLkw1NDYKCWptcAkuTDU0NQouTGZl
MTY6Cgkuc2l6ZQlwdGhyZWFkX2dldHNjaGVkcGFyYW0sLkxmZTE2LXB0aHJlYWRfZ2V0c2NoZWRw
YXJhbQoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Ci5nbG9ibCBfX3B0aHJlYWRfeWllbGQKCS50
eXBlCV9fcHRocmVhZF95aWVsZCxAZnVuY3Rpb24KX19wdGhyZWFkX3lpZWxkOgoJam1wCXNjaGVk
X3lpZWxkCi5MZmUxNzoKCS5zaXplCV9fcHRocmVhZF95aWVsZCwuTGZlMTctX19wdGhyZWFkX3lp
ZWxkCgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2JsIF9fcHRocmVhZF9yZXNldF9tYWlu
X3RocmVhZAoJLnR5cGUJX19wdGhyZWFkX3Jlc2V0X21haW5fdGhyZWFkLEBmdW5jdGlvbgpfX3B0
aHJlYWRfcmVzZXRfbWFpbl90aHJlYWQ6CglwdXNobAklZWJwCgltb3ZsCSVlYnAsICVlYXgKCXB1
c2hsCSVlY3gKCXB1c2hsCSVlY3gKCWNtcGwJX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2Jvcywg
JWVicAoJamIJLkw1ODAKCW1vdmwJJF9fcHRocmVhZF9pbml0aWFsX3RocmVhZCwgJWVicAouTDU4
MToKCWNtcGwJJC0xLCBfX3B0aHJlYWRfbWFuYWdlcl9yZXF1ZXN0CglqZQkuTDU4NwoJc3VibAkk
MTIsICVlc3AKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2JvcywgJWVheAoJcHVzaGwJ
JWVheAoJY2FsbAlmcmVlCglwb3BsCSVlYXgKCW1vdmwJX19wdGhyZWFkX21hbmFnZXJfcmVxdWVz
dCwgJWVheAoJcHVzaGwJJWVheAoJbW92bAkkMCwgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3Rv
cwoJbW92bAkkMCwgX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2JvcwoJY2FsbAlfX2xpYmNfY2xv
c2UKCXBvcGwJJWVheAoJbW92bAlfX3B0aHJlYWRfbWFuYWdlcl9yZWFkZXIsICVlYXgKCXB1c2hs
CSVlYXgKCWNhbGwJX19saWJjX2Nsb3NlCglhZGRsCSQxNiwgJWVzcAoJbW92bAkkLTEsIF9fcHRo
cmVhZF9tYW5hZ2VyX3JlYWRlcgoJbW92bAkkLTEsIF9fcHRocmVhZF9tYW5hZ2VyX3JlcXVlc3QK
Lkw1ODc6CgljYWxsCV9fZ2V0cGlkCgltb3ZsCSVlYnAsIF9fcHRocmVhZF9tYWluX3RocmVhZAoJ
bW92bAkkX2Vycm5vLCAxMzIoJWVicCkKCW1vdmwJJWVheCwgODQoJWVicCkKCW1vdmwJJWVicCwg
NjQoJWVicCkKCW1vdmwJJWVicCwgNjgoJWVicCkKCW1vdmwJJF9oX2Vycm5vLCAxNDAoJWVicCkK
CW1vdmwJJF9yZXMsIDUwNCglZWJwKQoJcHVzaGwJJWVicAoJcHVzaGwJJWVicAoJbGVhbAk4KCVl
c3ApLCAlZWJwCglwdXNobAklZWJwCglwdXNobAkkMwoJY2FsbAlnZXRybGltaXQKCWFkZGwJJDE2
LCAlZXNwCgl0ZXN0bAklZWF4LCAlZWF4CglqbmUJLkw1NzkKCW1vdmwJNCglZXNwKSwgJWVheAoJ
Y21wbAklZWF4LCAoJWVzcCkKCWplCS5MNTc5Cgltb3ZsCSVlYXgsICglZXNwKQoJcHVzaGwJJWVj
eAoJcHVzaGwJJWVjeAoJcHVzaGwJJWVicAoJcHVzaGwJJDMKCWNhbGwJc2V0cmxpbWl0CglhZGRs
CSQxNiwgJWVzcAouTDU3OToKCXBvcGwJJWVheAoJcG9wbAklZWR4Cglwb3BsCSVlYnAKCXJldAoJ
LnAyYWxpZ24gNCwsNwouTDU4MDoKCWNtcGwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2Jvcywg
JWVicAoJamIJLkw1ODMKCWNtcGwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3RvcywgJWVicAoJ
amFlCS5MNTgzCgltb3ZsCSRfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQsICVlYnAKCWptcAkuTDU4
MQoJLnAyYWxpZ24gNCwsNwouTDU4MzoKCW1vdmwJX19wdGhyZWFkX25vbnN0YW5kYXJkX3N0YWNr
cywgJWVjeAoJdGVzdGwJJWVjeCwgJWVjeAoJamUJLkw1ODUKCWNhbGwJX19wdGhyZWFkX2ZpbmRf
c2VsZgoJbW92bAklZWF4LCAlZWJwCglqbXAJLkw1ODEKCS5wMmFsaWduIDQsLDcKLkw1ODU6Cglv
cmwJJDIwOTcxNTEsICVlYXgKCWxlYWwJLTEwMjMoJWVheCksICVlYnAKCWptcAkuTDU4MQouTGZl
MTg6Cgkuc2l6ZQlfX3B0aHJlYWRfcmVzZXRfbWFpbl90aHJlYWQsLkxmZTE4LV9fcHRocmVhZF9y
ZXNldF9tYWluX3RocmVhZAoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Ci5nbG9ibCBfX3B0aHJl
YWRfa2lsbF9vdGhlcl90aHJlYWRzX25wCgkudHlwZQlfX3B0aHJlYWRfa2lsbF9vdGhlcl90aHJl
YWRzX25wLEBmdW5jdGlvbgpfX3B0aHJlYWRfa2lsbF9vdGhlcl90aHJlYWRzX25wOgoJcHVzaGwJ
JWVieAoJc3VibAkkMTYwLCAlZXNwCglwdXNobAkkMAoJcHVzaGwJJDAKCWNhbGwJcHRocmVhZF9v
bmV4aXRfcHJvY2VzcwoJY2FsbAlfX3B0aHJlYWRfcmVzZXRfbWFpbl90aHJlYWQKCXBvcGwJJWVh
eAoJbGVhbAkxNiglZXNwKSwgJWVkeAoJbGVhbAkxMiglZXNwKSwgJWVieAoJcHVzaGwJJWVkeAoJ
Y2FsbAlzaWdlbXB0eXNldAoJbW92bAlfX3B0aHJlYWRfc2lnX3Jlc3RhcnQsICVlYXgKCW1vdmwJ
JDAsIDE0OCglZXNwKQoJbW92bAkkMCwgMTYoJWVzcCkKCWFkZGwJJDEyLCAlZXNwCglwdXNobAkk
MAoJcHVzaGwJJWVieAoJcHVzaGwJJWVheAoJY2FsbAlfX2xpYmNfc2lnYWN0aW9uCgltb3ZsCV9f
cHRocmVhZF9zaWdfY2FuY2VsLCAlZWF4CglhZGRsCSQxMiwgJWVzcAoJcHVzaGwJJDAKCXB1c2hs
CSVlYngKCXB1c2hsCSVlYXgKCWNhbGwJX19saWJjX3NpZ2FjdGlvbgoJYWRkbAkkMTYsICVlc3AK
CW1vdmwJX19wdGhyZWFkX3NpZ19kZWJ1ZywgJWVheAoJdGVzdGwJJWVheCwgJWVheAoJamxlCS5M
NTg5CglwdXNobAklZWR4CglwdXNobAkkMAoJcHVzaGwJJWVieAoJcHVzaGwJJWVheAoJY2FsbAlf
X2xpYmNfc2lnYWN0aW9uCglhZGRsCSQxNiwgJWVzcAouTDU4OToKCWFkZGwJJDE1MiwgJWVzcAoJ
cG9wbAklZWJ4CglyZXQKLkxmZTE5OgoJLnNpemUJX19wdGhyZWFkX2tpbGxfb3RoZXJfdGhyZWFk
c19ucCwuTGZlMTktX19wdGhyZWFkX2tpbGxfb3RoZXJfdGhyZWFkc19ucAoJLmFsaWduIDIKCS5w
MmFsaWduIDQsLDE1Ci5nbG9ibCBfX3B0aHJlYWRfc2V0Y29uY3VycmVuY3kKCS50eXBlCV9fcHRo
cmVhZF9zZXRjb25jdXJyZW5jeSxAZnVuY3Rpb24KX19wdGhyZWFkX3NldGNvbmN1cnJlbmN5OgoJ
bW92bAk0KCVlc3ApLCAlZWF4Cgltb3ZsCSVlYXgsIGN1cnJlbnRfbGV2ZWwKCXhvcmwJJWVheCwg
JWVheAoJcmV0Ci5MZmUyMDoKCS5zaXplCV9fcHRocmVhZF9zZXRjb25jdXJyZW5jeSwuTGZlMjAt
X19wdGhyZWFkX3NldGNvbmN1cnJlbmN5CgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKLmdsb2Js
IF9fcHRocmVhZF9nZXRjb25jdXJyZW5jeQoJLnR5cGUJX19wdGhyZWFkX2dldGNvbmN1cnJlbmN5
LEBmdW5jdGlvbgpfX3B0aHJlYWRfZ2V0Y29uY3VycmVuY3k6Cgltb3ZsCWN1cnJlbnRfbGV2ZWws
ICVlYXgKCXJldAouTGZlMjE6Cgkuc2l6ZQlfX3B0aHJlYWRfZ2V0Y29uY3VycmVuY3ksLkxmZTIx
LV9fcHRocmVhZF9nZXRjb25jdXJyZW5jeQoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1Ci5nbG9i
bCBfX3B0aHJlYWRfcmVzdGFydF9uZXcKCS50eXBlCV9fcHRocmVhZF9yZXN0YXJ0X25ldyxAZnVu
Y3Rpb24KX19wdGhyZWFkX3Jlc3RhcnRfbmV3OgoJc3VibAkkMjAsICVlc3AKCW1vdmwJX19wdGhy
ZWFkX3NpZ19yZXN0YXJ0LCAlZWF4CglwdXNobAklZWF4Cgltb3ZsCTI4KCVlc3ApLCAlZWF4Cglt
b3ZsCTg0KCVlYXgpLCAlZWF4CglwdXNobAklZWF4CgljYWxsCWtpbGwKCWFkZGwJJDI4LCAlZXNw
CglyZXQKLkxmZTIyOgoJLnNpemUJX19wdGhyZWFkX3Jlc3RhcnRfbmV3LC5MZmUyMi1fX3B0aHJl
YWRfcmVzdGFydF9uZXcKCS5jb21tCV9fcHRocmVhZF9pbml0aWFsX3RocmVhZF9ib3MsNCw0Cgku
Y29tbQlfX3B0aHJlYWRfbWFuYWdlcl9yZWFkZXIsNCw0CgkuY29tbQlfX3B0aHJlYWRfbWFuYWdl
cl90aHJlYWRfYm9zLDQsNAoJLmNvbW0JX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3Rvcyw0LDQK
CS5jb21tCV9fcHRocmVhZF9leGl0X3JlcXVlc3RlZCw0LDQKCS5jb21tCV9fcHRocmVhZF9leGl0
X2NvZGUsNCw0CgkuY29tbQlfX3B0aHJlYWRfc21wX2tlcm5lbCw0LDQKCS5jb21tCV9fcHRocmVh
ZF9tYXhfc3RhY2tzaXplLDQsNAoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1CgkudHlwZQlwdGhy
ZWFkX29uZXhpdF9wcm9jZXNzLEBmdW5jdGlvbgpwdGhyZWFkX29uZXhpdF9wcm9jZXNzOgoJcHVz
aGwJJWVicAoJcHVzaGwJJWVieAoJc3VibAkkMTY0LCAlZXNwCgltb3ZsCV9fcHRocmVhZF9tYW5h
Z2VyX3JlcXVlc3QsICVlYXgKCXRlc3RsCSVlYXgsICVlYXgKCWpzCS5MNTUzCgltb3ZsCSVlYnAs
ICVlYXgKCWNtcGwJX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2JvcywgJWVicAoJamIJLkw1NTUK
CW1vdmwJJF9fcHRocmVhZF9pbml0aWFsX3RocmVhZCwgJWVieAouTDU1NjoKCW1vdmwJMTc2KCVl
c3ApLCAlZWF4Cgltb3ZsCSVlYngsICglZXNwKQoJbW92bAkkMiwgNCglZXNwKQoJbW92bAklZWF4
LCA4KCVlc3ApCgltb3ZsCSVlc3AsICVlYnAKCS5wMmFsaWduIDQsLDcKLkw1NjI6Cgltb3ZsCV9f
cHRocmVhZF9tYW5hZ2VyX3JlcXVlc3QsICVlYXgKCXB1c2hsCSVlY3gKCXB1c2hsCSQxNDgKCXB1
c2hsCSVlYnAKCXB1c2hsCSVlYXgKCWNhbGwJX19saWJjX3dyaXRlCglhZGRsCSQxNiwgJWVzcAoJ
aW5jbAklZWF4CglqbmUJLkw1NjMKCWNhbGwJX19lcnJub19sb2NhdGlvbgoJY21wbAkkNCwgKCVl
YXgpCglqZQkuTDU2MgouTDU2MzoKCXN1YmwJJDEyLCAlZXNwCglwdXNobAklZWJ4CgljYWxsCV9f
cHRocmVhZF93YWl0X2Zvcl9yZXN0YXJ0X3NpZ25hbAoJYWRkbAkkMTYsICVlc3AKCWNtcGwJX19w
dGhyZWFkX21haW5fdGhyZWFkLCAlZWJ4CglqZQkuTDU5NAouTDU1MzoKCWFkZGwJJDE2NCwgJWVz
cAoJcG9wbAklZWJ4Cglwb3BsCSVlYnAKCXJldAouTDU5NDoKCXB1c2hsCSVlYXgKCW1vdmwJX19w
dGhyZWFkX21hbmFnZXJfdGhyZWFkKzg0LCAlZWF4CglwdXNobAkkLTIxNDc0ODM2NDgKCXB1c2hs
CSQwCglwdXNobAklZWF4CgljYWxsCXdhaXRwaWQKCWFkZGwJJDE2LCAlZXNwCgltb3ZsCSQwLCBf
X3B0aHJlYWRfbWFuYWdlcl90aHJlYWRfdG9zCgltb3ZsCSQwLCBfX3B0aHJlYWRfbWFuYWdlcl90
aHJlYWRfYm9zCglqbXAJLkw1NTMKLkw1NTU6CgljbXBsCV9fcHRocmVhZF9tYW5hZ2VyX3RocmVh
ZF9ib3MsICVlYnAKCWpiCS5MNTU4CgljbXBsCV9fcHRocmVhZF9tYW5hZ2VyX3RocmVhZF90b3Ms
ICVlYnAKCWphZQkuTDU1OAoJbW92bAkkX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkLCAlZWJ4Cglq
bXAJLkw1NTYKLkw1NTg6Cgltb3ZsCV9fcHRocmVhZF9ub25zdGFuZGFyZF9zdGFja3MsICVlZHgK
CXRlc3RsCSVlZHgsICVlZHgKCWplCS5MNTYwCgljYWxsCV9fcHRocmVhZF9maW5kX3NlbGYKCW1v
dmwJJWVheCwgJWVieAoJam1wCS5MNTU2Ci5MNTYwOgoJb3JsCSQyMDk3MTUxLCAlZWF4CglsZWFs
CS0xMDIzKCVlYXgpLCAlZWJ4CglqbXAJLkw1NTYKLkxmZTIzOgoJLnNpemUJcHRocmVhZF9vbmV4
aXRfcHJvY2VzcywuTGZlMjMtcHRocmVhZF9vbmV4aXRfcHJvY2VzcwoJLmxvY2FsCWN1cnJlbnRf
cnRtaW4KCS5jb21tCWN1cnJlbnRfcnRtaW4sNCw0CgkubG9jYWwJY3VycmVudF9ydG1heAoJLmNv
bW0JY3VycmVudF9ydG1heCw0LDQKCS5sb2NhbAlydHNpZ3NfaW5pdGlhbGl6ZWQKCS5jb21tCXJ0
c2lnc19pbml0aWFsaXplZCw0LDQKCS5zZWN0aW9uCS5yb2RhdGEuc3RyMS4xLCJhTVMiLEBwcm9n
Yml0cywxCi5MQzE6Cgkuc3RyaW5nCSJTTVAiCi5MQzA6Cgkuc3RyaW5nCSIvcHJvYy9zeXMva2Vy
bmVsL3ZlcnNpb24iCgkudGV4dAoJLmFsaWduIDIKCS5wMmFsaWduIDQsLDE1CgkudHlwZQlwdGhy
ZWFkX2luaXRpYWxpemUsQGZ1bmN0aW9uCnB0aHJlYWRfaW5pdGlhbGl6ZToKCXB1c2hsCSVlYnAK
CXB1c2hsCSVlZGkKCXB1c2hsCSVlc2kKCXB1c2hsCSVlYngKCXN1YmwJJDgxMiwgJWVzcAoJbW92
bAlfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWRfYm9zLCAlZWF4Cgl0ZXN0bAklZWF4LCAlZWF4Cglq
ZQkuTDU5NQouTDE6CglhZGRsCSQ4MTIsICVlc3AKCXBvcGwJJWVieAoJcG9wbAklZXNpCglwb3Bs
CSVlZGkKCXBvcGwJJWVicAoJcmV0CgkucDJhbGlnbiA0LCw3Ci5MNTk1OgojQVBQCglwdXNoZmw7
IHBvcGwgJWVieAojTk9fQVBQCgltb3ZsCSVlYngsICVlc2kKCXhvcmwJJDI2MjE0NCwgJWVzaQoj
QVBQCglwdXNobCAlZXNpOyBwb3BmbAoJcHVzaGZsOyBwb3BsICVlY3gKI05PX0FQUAoJeG9ybAkl
ZWJ4LCAlZWN4CglhbmRsCSQyNjIxNDQsICVlY3gKI0FQUAoJcHVzaGwgJWVieDsgcG9wZmwKI05P
X0FQUAoJdGVzdGwJJWVjeCwgJWVjeAoJcHVzaGwJJWVheAoJbW92bAkkMjA5NzE1MiwgJWVieAoJ
cHVzaGwJJWVheAoJbGVhbAkxNiglZXNwKSwgJWVzaQoJc2V0bmUJJWRsCglwdXNobAklZXNpCglh
bmRsCSQyNTUsICVlZHgKCXB1c2hsCSQzCgltb3ZsCSVlZHgsIF9fcHRocmVhZF9oYXNfY2FzCglj
YWxsCWdldHJsaW1pdAoJYWRkbAkkMTYsICVlc3AKCWNhbGwJX19nZXRwYWdlc2l6ZQoJc3VibAkl
ZWF4LCAlZWJ4CgljbXBsCSVlYngsIDgoJWVzcCkKCWphCS5MNTk2Ci5MODoKCWxlYWwJLTQxOTQz
MDQoJWVicCksICVlZGkKCW1vdmwJJWVieCwgX19wdGhyZWFkX21heF9zdGFja3NpemUKCWFuZGwJ
JC0yMDk3MTUyLCAlZWRpCgltb3ZsCSVlZGksIF9fcHRocmVhZF9pbml0aWFsX3RocmVhZF9ib3MK
CWNhbGwJX19nZXRwaWQKCW1vdmwJJHB0aHJlYWRfaGFuZGxlX3NpZ3Jlc3RhcnQsIDY1NiglZXNw
KQoJc3VibAkkMTIsICVlc3AKCW1vdmwJJWVheCwgX19wdGhyZWFkX2luaXRpYWxfdGhyZWFkKzg0
Cgltb3ZsCSRfcmVzLCBfX3B0aHJlYWRfaW5pdGlhbF90aHJlYWQrNTA0CglsZWFsCTY3MiglZXNw
KSwgJWVzaQoJbGVhbAk2NjgoJWVzcCksICVlYngKCXB1c2hsCSVlc2kKCW1vdmwJJDM1LCBjdXJy
ZW50X3J0bWluCgltb3ZsCSQ2MywgY3VycmVudF9ydG1heAoJbW92bAkkMSwgcnRzaWdzX2luaXRp
YWxpemVkCgljYWxsCXNpZ2VtcHR5c2V0Cgltb3ZsCV9fcHRocmVhZF9zaWdfcmVzdGFydCwgJWVh
eAoJbW92bAkkMCwgODA0KCVlc3ApCglhZGRsCSQxMiwgJWVzcAoJcHVzaGwJJDAKCXB1c2hsCSVl
YngKCXB1c2hsCSVlYXgKCWNhbGwJX19saWJjX3NpZ2FjdGlvbgoJbW92bAlfX3B0aHJlYWRfc2ln
X2NhbmNlbCwgJWVheAoJbW92bAkkcHRocmVhZF9oYW5kbGVfc2lnY2FuY2VsLCA2NzIoJWVzcCkK
CWFkZGwJJDEyLCAlZXNwCglwdXNobAkkMAoJcHVzaGwJJWVieAoJcHVzaGwJJWVheAoJY2FsbAlf
X2xpYmNfc2lnYWN0aW9uCgltb3ZsCV9fcHRocmVhZF9zaWdfZGVidWcsICVlYXgKCWFkZGwJJDE2
LCAlZXNwCgl0ZXN0bAklZWF4LCAlZWF4CglqbGUJLkwxMQoJbW92bAkkcHRocmVhZF9oYW5kbGVf
c2lnZGVidWcsIDY1NiglZXNwKQoJc3VibAkkMTIsICVlc3AKCXB1c2hsCSVlc2kKCWNhbGwJc2ln
ZW1wdHlzZXQKCW1vdmwJX19wdGhyZWFkX3NpZ19kZWJ1ZywgJWVheAoJYWRkbAkkMTIsICVlc3AK
CXB1c2hsCSQwCglwdXNobAklZWJ4CglwdXNobAklZWF4CgljYWxsCV9fbGliY19zaWdhY3Rpb24K
CWFkZGwJJDE2LCAlZXNwCi5MMTE6CglzdWJsCSQxMiwgJWVzcAoJbGVhbAk1NDAoJWVzcCksICVl
YngKCXB1c2hsCSVlYngKCWNhbGwJc2lnZW1wdHlzZXQKCW1vdmwJX19wdGhyZWFkX3NpZ19yZXN0
YXJ0LCAlZWF4Cglwb3BsCSVlZGkKCXBvcGwJJWVicAoJcHVzaGwJJWVheAoJcHVzaGwJJWVieAoJ
Y2FsbAlzaWdhZGRzZXQKCWFkZGwJJDEyLCAlZXNwCglwdXNobAkkMAoJcHVzaGwJJWVieAoJcHVz
aGwJJDAKCWNhbGwJc2lncHJvY21hc2sKCXBvcGwJJWVjeAoJcG9wbAklZWJ4CglwdXNobAkkMAoJ
cHVzaGwJJHB0aHJlYWRfb25leGl0X3Byb2Nlc3MKCWNhbGwJX19vbl9leGl0Cglwb3BsCSVlYXgK
CXBvcGwJJWVkeAoJbW92bAkkNTEyLCAxMiglZXNwKQoJcHVzaGwJJDAKCXB1c2hsCSQwCglsZWFs
CTIwKCVlc3ApLCAlZWJwCglwdXNobAklZWJwCglsZWFsCTM2KCVlc3ApLCAlZXNpCglwdXNobAkl
ZXNpCglwdXNobAkkMgoJcHVzaGwJJHN5c2N0bF9hcmdzLjAKCWNhbGwJX19zeXNjdGwKCWFkZGwJ
JDMyLCAlZXNwCgl0ZXN0bAklZWF4LCAlZWF4CglqcwkuTDU5NwouTDE3OgoJbW92bAkkLkxDMSwg
JWVkeAojQVBQCgljbGQKMToKCW1vdmwJJWVkeCwlZWRpCgltb3ZsCSVlc2ksJWVheAoJbW92bAkk
MywlZWN4CglyZXBlOyBjbXBzYgoJamUJMmYKCWNtcGIJJDAsLTEoJWVzaSkKCWxlYWwJMSglZWF4
KSwlZXNpCglqbmUJMWIKCXhvcmwJJWVheCwlZWF4CjI6CiNOT19BUFAKCXRlc3RsCSVlYXgsICVl
YXgKCXNldG5lCSVkbAoJYW5kbAkkMjU1LCAlZWR4Cgltb3ZsCSVlZHgsIF9fcHRocmVhZF9zbXBf
a2VybmVsCglqbXAJLkwxCi5MNTk3OgoJcHVzaGwJJWVheAoJcHVzaGwJJWVheAoJcHVzaGwJJDAK
CXB1c2hsCSQuTEMwCgljYWxsCV9fb3BlbgoJYWRkbAkkMTYsICVlc3AKCW1vdmwJJWVheCwgJWVi
eAoJY21wbAkkLTEsICVlYXgKCWplCS5MMTQKCXB1c2hsCSVlYXgKCXB1c2hsCSQ1MTIKCXB1c2hs
CSVlc2kKCXB1c2hsCSVlYngKCWNhbGwJX19yZWFkCglhZGRsCSQxNiwgJWVzcAoJdGVzdGwJJWVh
eCwgJWVheAoJbW92bAklZWF4LCA0KCVlc3ApCglqbmUJLkwxMwouTDE0OgoJbW92YgkkMCwgMTYo
JWVzcCkKLkwxMzoKCXN1YmwJJDEyLCAlZXNwCglwdXNobAklZWJ4CgljYWxsCV9fY2xvc2UKCWFk
ZGwJJDE2LCAlZXNwCglqbXAJLkwxNwouTDU5NjoKCW1vdmwJJWVieCwgOCglZXNwKQoJcHVzaGwJ
JWVheAoJcHVzaGwJJWVheAoJcHVzaGwJJWVzaQoJcHVzaGwJJDMKCWNhbGwJc2V0cmxpbWl0Cglh
ZGRsCSQxNiwgJWVzcAoJam1wCS5MOAouTGZlMjQ6Cgkuc2l6ZQlwdGhyZWFkX2luaXRpYWxpemUs
LkxmZTI0LXB0aHJlYWRfaW5pdGlhbGl6ZQoJLmxvY2FsCWN1cnJlbnRfbGV2ZWwKCS5jb21tCWN1
cnJlbnRfbGV2ZWwsNCw0CgkuYWxpZ24gMgoJLnAyYWxpZ24gNCwsMTUKCS50eXBlCXB0aHJlYWRf
aGFuZGxlX3NpZ3Jlc3RhcnQsQGZ1bmN0aW9uCnB0aHJlYWRfaGFuZGxlX3NpZ3Jlc3RhcnQ6Cglw
dXNobAklZWJwCgltb3ZsCSVlYnAsICVlYXgKCXB1c2hsCSVlY3gKCXB1c2hsCSVlY3gKCWNtcGwJ
X19wdGhyZWFkX2luaXRpYWxfdGhyZWFkX2JvcywgJWVicAoJamIJLkw1NzAKCW1vdmwJJF9fcHRo
cmVhZF9pbml0aWFsX3RocmVhZCwgJWVkeAouTDU3MToKCW1vdmwJMTYoJWVzcCksICVlYXgKCW1v
dmwJJWVheCwgOTYoJWVkeCkKCW1vdmwJMTAwKCVlZHgpLCAlZWF4Cgl0ZXN0bAklZWF4LCAlZWF4
CglqbmUJLkw1OTgKCXBvcGwJJWVjeAoJcG9wbAklZWJwCglwb3BsCSVlYnAKCXJldAoJLnAyYWxp
Z24gNCwsNwouTDU3MDoKCWNtcGwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX2JvcywgJWVicAoJ
amIJLkw1NzMKCWNtcGwJX19wdGhyZWFkX21hbmFnZXJfdGhyZWFkX3RvcywgJWVicAoJamFlCS5M
NTczCgltb3ZsCSRfX3B0aHJlYWRfbWFuYWdlcl90aHJlYWQsICVlZHgKCWptcAkuTDU3MQoJLnAy
YWxpZ24gNCwsNwouTDU3MzoKCW1vdmwJX19wdGhyZWFkX25vbnN0YW5kYXJkX3N0YWNrcywgJWVj
eAoJdGVzdGwJJWVjeCwgJWVjeAoJamUJLkw1NzUKCWNhbGwJX19wdGhyZWFkX2ZpbmRfc2VsZgoJ
bW92bAklZWF4LCAlZWR4CglqbXAJLkw1NzEKCS5wMmFsaWduIDQsLDcKLkw1NzU6CglvcmwJJDIw
OTcxNTEsICVlYXgKCWxlYWwJLTEwMjMoJWVheCksICVlZHgKCWptcAkuTDU3MQouTDU5ODoKCXB1
c2hsCSVlYXgKCXB1c2hsCSVlYXgKCXB1c2hsCSQxCgltb3ZsCTEwMCglZWR4KSwgJWVheAoJcHVz
aGwJJWVheAoJY2FsbAlzaWdsb25nam1wCi5MZmUyNToKCS5zaXplCXB0aHJlYWRfaGFuZGxlX3Np
Z3Jlc3RhcnQsLkxmZTI1LXB0aHJlYWRfaGFuZGxlX3NpZ3Jlc3RhcnQKCS5hbGlnbiAyCgkucDJh
bGlnbiA0LCwxNQoJLnR5cGUJcHRocmVhZF9oYW5kbGVfc2lnZGVidWcsQGZ1bmN0aW9uCnB0aHJl
YWRfaGFuZGxlX3NpZ2RlYnVnOgoJcmV0Ci5MZmUyNjoKCS5zaXplCXB0aHJlYWRfaGFuZGxlX3Np
Z2RlYnVnLC5MZmUyNi1wdGhyZWFkX2hhbmRsZV9zaWdkZWJ1ZwoJLmlkZW50CSJHQ0M6IChHTlUp
IDMuMiIK
--Multipart_Sat__26_Oct_2002_13:24:27_+0000_081c8688--
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: other/8335: problems with __builtin_frame_address when -fomit-frame-pointer used
@ 2002-10-25 13:43 rth
0 siblings, 0 replies; 5+ messages in thread
From: rth @ 2002-10-25 13:43 UTC (permalink / raw)
To: davmac, gcc-bugs, gcc-prs, nobody
Synopsis: problems with __builtin_frame_address when -fomit-frame-pointer used
State-Changed-From-To: open->feedback
State-Changed-By: rth
State-Changed-When: Fri Oct 25 13:43:12 2002
State-Changed-Why:
Describe "doesn't work correctly".
The result should be the address of the stack frame, with or
without a frame pointer. The frame is at a known offset from
the stack pointer, after all.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8335
^ permalink raw reply [flat|nested] 5+ messages in thread
* other/8335: problems with __builtin_frame_address when -fomit-frame-pointer used
@ 2002-10-23 23:56 davmac
0 siblings, 0 replies; 5+ messages in thread
From: davmac @ 2002-10-23 23:56 UTC (permalink / raw)
To: gcc-gnats
>Number: 8335
>Category: other
>Synopsis: problems with __builtin_frame_address when -fomit-frame-pointer used
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: unassigned
>State: open
>Class: change-request
>Submitter-Id: net
>Arrival-Date: Wed Oct 23 23:56:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Davin McCall
>Release: 3.2
>Organization:
>Environment:
i686-pc-linux-gnu running linux 2.4.18. gcc version 3.2 (and 3.1.1, others not checked)
>Description:
When using -fomit-frame-pointer option, the builtin function
__builtin_frame_address doesn't always work correctly (at
least with a 0 argument).
This is something of a no-brainer anyway seeing as one
probably shouldn't request the frame address when one has
explicitly requested no frame pointers, but I couldn't find
any reference in the documentation which mentioned this; I
should think, in any case, that the compiler should give an
error or at least a warning when an attempt to use
__builtin_frame_address with -fomit-frame-pointer.
As an alternative, any function which uses the builtin could
be forced to have a frame generated, OR at least an attempt
to return a meaningful or "near-enough" value (such as %esp)
could be made.
I assume that this is just an oversight, however if it is
actually a bug I can provide a preprocessed source file
which reproduces it (if needed).
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2002-11-06 10:36 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-06 2:36 other/8335: problems with __builtin_frame_address when -fomit-frame-pointer used Davin McCall
-- strict thread matches above, loose matches on Subject: below --
2002-10-25 20:26 Davin McCall
2002-10-25 20:16 Davin McCall
2002-10-25 13:43 rth
2002-10-23 23:56 davmac
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).