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).