public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: other/10584: bootstraping with -finstrument-functions as an extra CFLAG
@ 2003-05-10 20:06 Andrew Pinski
  0 siblings, 0 replies; 3+ messages in thread
From: Andrew Pinski @ 2003-05-10 20:06 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR other/10584; it has been noted by GNATS.

From: Andrew Pinski <pinskia@physics.uc.edu>
To: Dara Hazeghi <dhazeghi@yahoo.com>
Cc: Andrew Pinski <pinskia@physics.uc.edu>, gcc-gnats@gcc.gnu.org
Subject: Re: other/10584: bootstraping with -finstrument-functions as an extra CFLAG
Date: Sat, 10 May 2003 15:58:47 -0400

 In fact it worked at least till gcc version 3.4 20030417  
 (experimental), this was the last time I was able to make with  
 -finstrument-functions as an extra CFLAG.
 
 Thanks,
 Andrew Pinski
 
 
 On Saturday, May 10, 2003, at 15:44 US/Eastern, Dara Hazeghi wrote:
 
 > http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit- 
 > trail&database=gcc&pr=10584
 >
 > Hello,
 >
 > this worked fine on 3.2.3 and 3.3 branch, so I guess that makes this a  
 > 3.4 regression (admittedly -finstrument-functions does more, but  
 > still...)
 >
 > Dara
 >
 >
 >
 


^ permalink raw reply	[flat|nested] 3+ messages in thread
* Re: other/10584: bootstraping with -finstrument-functions as an extra CFLAG
@ 2003-05-10 19:46 Dara Hazeghi
  0 siblings, 0 replies; 3+ messages in thread
From: Dara Hazeghi @ 2003-05-10 19:46 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR other/10584; it has been noted by GNATS.

From: Dara Hazeghi <dhazeghi@yahoo.com>
To: gcc-gnats@gcc.gnu.org, pinskia@physics.uc.edu
Cc:  
Subject: Re: other/10584: bootstraping with -finstrument-functions as an extra CFLAG
Date: Sat, 10 May 2003 12:44:47 -0700

 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit- 
 trail&database=gcc&pr=10584
 
 Hello,
 
 this worked fine on 3.2.3 and 3.3 branch, so I guess that makes this a  
 3.4 regression (admittedly -finstrument-functions does more, but  
 still...)
 
 Dara
 


^ permalink raw reply	[flat|nested] 3+ messages in thread
* other/10584: bootstraping with -finstrument-functions as an extra CFLAG
@ 2003-05-01 17:46 pinskia
  0 siblings, 0 replies; 3+ messages in thread
From: pinskia @ 2003-05-01 17:46 UTC (permalink / raw)
  To: gcc-gnats


>Number:         10584
>Category:       other
>Synopsis:       bootstraping with -finstrument-functions as an extra CFLAG
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu May 01 17:46:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Andrew Pinski
>Release:        gcc version 3.4 20030430 (experimental) and GNU C version 3.4 20030501 (experimental)
>Organization:
>Environment:
powerpc-apple-darwin6.5 and i686-pc-linux-gnu
>Description:
gcc -c -O2 -finstrument-functions c-pretty-print.i:

/Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c: In function `pp_c_exclusive_or_expression':
/Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c:966: internal compiler error: in copy_insn_list, at integrate.c:1707
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

Some debugging information:
(gdb) p map->block_map.data.tree[0]
$6 = (union tree_node *) 0x14cb9c0
(gdb) p debug_tree(map->block_map.data.tree[0])
 <block 0x14cb9c0 used
    abstract_origin <function_decl 0x12ce2a0 pp_c_and_expression
        type <function_type 0x126bb60 type <void_type 0xe3d7e0 void>
            DI
            size <integer_cst 0xe35678 constant 64>
            unit size <integer_cst 0xe358d0 constant 8>
            align 64 symtab 0 alias set -1
            arg-types <tree_list 0x126c648 value <pointer_type 0x126ba10 c_pretty_printer>
                chain <tree_list 0x126c660 value <pointer_type 0xf46e70 tree>
                    chain <tree_list 0x126c678 value <void_type 0xe3d7e0 void>>>>
            pointer_to_this <pointer_type 0x126bbd0>>
        addressable used nothrow static inline defer-output SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 963
       
        arguments <parm_decl 0xee0310 ppi type <pointer_type 0x126ba10 c_pretty_printer>
            unsigned used weak SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 961
            size <integer_cst 0xe35918 constant 32>
            unit size <integer_cst 0xe35978 constant 4>
            align 32 context <function_decl 0x12ce2a0 pp_c_and_expression> result <pointer_type 0x126ba10 c_pretty_printer> initial <pointer_type 0x126ba10 c_pretty_printer>
            (reg/v/f:SI 118 [ ppi ]) arg-type <pointer_type 0x126ba10 c_pretty_printer> arg-type-as-written <pointer_type 0x126ba10 c_pretty_printer>
            incoming-rtl (reg:SI 3 r3 [ ppi ]) chain <parm_decl 0xee0380 e>>
        result <result_decl 0xee02a0 type <void_type 0xe3d7e0 void>
            VOID file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 961
            align 8 context <function_decl 0x12ce2a0 pp_c_and_expression>> initial <block 0x100e480>
        (mem:SI (symbol_ref:SI ("!T__pp_c_and_expression") <function_decl 0x12ce2a0 pp_c_and_expression>) [0 S4 A8])
        saved-insns 0x141f800
        chain <function_decl 0x12ce0e0 pp_c_equality_expression type <function_type 0x126bb60>
            addressable used nothrow static inline defer-output SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 940
            arguments <parm_decl 0xedeaf0 ppi> result <result_decl 0xedea10> initial <block 0x100e3f0>
            (mem:SI (symbol_ref:SI ("!T__pp_c_equality_expression") <function_decl 0x12ce0e0 pp_c_equality_expression>) [0 S4 A8])
            saved-insns 0x141f400 chain <function_decl 0x12ccee0 pp_c_relational_expression>>>>
$7 = void
(gdb) p insn
$8 = 0x14bade0
(gdb) p debug_rtx(insn)
(note 13 28 14 0x100e480 NOTE_INSN_BLOCK_BEG)
$9 = void
(gdb) p insn.fld[4].rttree
$10 = 0x100e480
(gdb) p debug_tree(insn.fld[4].rttree)
 <block 0x100e480 asm_written used
    supercontext <function_decl 0x12ce2a0 pp_c_and_expression
        type <function_type 0x126bb60 type <void_type 0xe3d7e0 void>
            DI
            size <integer_cst 0xe35678 constant 64>
            unit size <integer_cst 0xe358d0 constant 8>
            align 64 symtab 0 alias set -1
            arg-types <tree_list 0x126c648 value <pointer_type 0x126ba10 c_pretty_printer>
                chain <tree_list 0x126c660 value <pointer_type 0xf46e70 tree>
                    chain <tree_list 0x126c678 value <void_type 0xe3d7e0 void>>>>
            pointer_to_this <pointer_type 0x126bbd0>>
        addressable used nothrow static inline defer-output SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 963
       
        arguments <parm_decl 0xee0310 ppi type <pointer_type 0x126ba10 c_pretty_printer>
            unsigned used weak SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 961
            size <integer_cst 0xe35918 constant 32>
            unit size <integer_cst 0xe35978 constant 4>
            align 32 context <function_decl 0x12ce2a0 pp_c_and_expression> result <pointer_type 0x126ba10 c_pretty_printer> initial <pointer_type 0x126ba10 c_pretty_printer>
            (reg/v/f:SI 118 [ ppi ]) arg-type <pointer_type 0x126ba10 c_pretty_printer> arg-type-as-written <pointer_type 0x126ba10 c_pretty_printer>
            incoming-rtl (reg:SI 3 r3 [ ppi ]) chain <parm_decl 0xee0380 e>>
        result <result_decl 0xee02a0 type <void_type 0xe3d7e0 void>
            VOID file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 961
            align 8 context <function_decl 0x12ce2a0 pp_c_and_expression>> initial <block 0x100e480>
        (mem:SI (symbol_ref:SI ("!T__pp_c_and_expression") <function_decl 0x12ce2a0 pp_c_and_expression>) [0 S4 A8])
        saved-insns 0x141f800
        chain <function_decl 0x12ce0e0 pp_c_equality_expression type <function_type 0x126bb60>
            addressable used nothrow static inline defer-output SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 940
            arguments <parm_decl 0xedeaf0 ppi> result <result_decl 0xedea10> initial <block 0x100e3f0>
            (mem:SI (symbol_ref:SI ("!T__pp_c_equality_expression") <function_decl 0x12ce0e0 pp_c_equality_expression>) [0 S4 A8])
            saved-insns 0x141f400 chain <function_decl 0x12ccee0 pp_c_relational_expression>>>>
$11 = void
(gdb) p map->block_map->elements_used
$12 = 1
>How-To-Repeat:
gcc -c -O2 -finstrument-functions c-pretty-print.i
>Fix:
Unknown
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="c-pretty-print.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="c-pretty-print.i"

IyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9j
LXByZXR0eS1wcmludC5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4iCiMg
MSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvYy1w
cmV0dHktcHJpbnQuYyIKIyAyMiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9m
c2YvZ2NjL3NyYy9nY2MvYy1wcmV0dHktcHJpbnQuYyIKIyAxICJjb25maWcuaCIgMQojIDEgImF1
dG8taG9zdC5oIiAxCiMgMiAiY29uZmlnLmgiIDIKCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv
bi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9pbmNsdWRlL2Fuc2lkZWNsLmgiIDEKIyA0ICJjb25m
aWcuaCIgMgojIDIzICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mv
c3JjL2djYy9jLXByZXR0eS1wcmludC5jIiAyCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w
aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiIDEKIyAyOCAiL1ZvbHVtZXMvVUZT
X1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiCiMgMSAiL1Zv
bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2Vy
cGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDQzICIvVm9s
dW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJw
Yy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3RkYXJnLmgiIDMgNAp0eXBlZGVmIF9fYnVp
bHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDEwNSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv
bi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41
LzMuNC9pbmNsdWRlL3N0ZGFyZy5oIiAzIDQKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0
OwojIDI5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj
Yy9zeXN0ZW0uaCIgMgojIDQyICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz
Zi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr
aWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTUxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr
aWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2lu
Y2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIGludCBwdHJkaWZmX3Q7CiMgMjEzICIvVm9sdW1l
cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1h
cHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIGxvbmcgdW5z
aWduZWQgaW50IHNpemVfdDsKIyAzMjUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9m
c2Ytbm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVk
ZS9zdGRkZWYuaCIgMyA0CnR5cGVkZWYgaW50IHdjaGFyX3Q7CiMgNDMgIi9Wb2x1bWVzL1VGU19Q
YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIiAyCgoKIyAxICIv
Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93
ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3RkaW8uaCIgMSAzIDQKIyA3MyAiL1Zv
bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2Vy
cGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMgNAojIDEgIi9Wb2x1bWVz
L1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Ytbm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFw
cGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzIDQKIyA3NSAiL1ZvbHVt
ZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMt
YXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL2FwcGxlYXBpb3B0cy5oIiAxIDMgNAojIDc2ICIvVm9sdW1lcy9VRlNfUGFydGl0
aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42
LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lz
L2NkZWZzLmgiIDEgMyA0CiMgNzkgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Yt
bm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVzLmgiIDEg
MyA0CiMgMzAgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVzLmgiIDMgNAojIDEgIi91c3IvaW5j
bHVkZS9wcGMvdHlwZXMuaCIgMSAzIDQKIyA2OSAiL3Vzci9pbmNsdWRlL3BwYy90eXBlcy5oIiAz
IDQKdHlwZWRlZiBzaWduZWQgY2hhciBpbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2lu
dDhfdDsKdHlwZWRlZiBzaG9ydCBpbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfaW50
MTZfdDsKdHlwZWRlZiBpbnQgaW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90
Owp0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2NF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1
X2ludDY0X3Q7Cgp0eXBlZGVmIGludDMyX3QgcmVnaXN0ZXJfdDsKCnR5cGVkZWYgbG9uZyBpbnQg
aW50cHRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWludHB0cl90OwojIDMxICIvdXNy
L2luY2x1ZGUvbWFjaGluZS90eXBlcy5oIiAyIDMgNAojIDgyICIvVm9sdW1lcy9VRlNfUGFydGl0
aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42
LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgojIDEgIi91c3IvaW5jbHVkZS9tYWNo
aW5lL2Fuc2kuaCIgMSAzIDQKIyAzMyAiL3Vzci9pbmNsdWRlL21hY2hpbmUvYW5zaS5oIiAzIDQK
IyAxICIvdXNyL2luY2x1ZGUvcHBjL2Fuc2kuaCIgMSAzIDQKIyA5MiAiL3Vzci9pbmNsdWRlL3Bw
Yy9hbnNpLmgiIDMgNAp0eXBlZGVmIHVuaW9uIHsKIGNoYXIgX19tYnN0YXRlOFsxMjhdOwogbG9u
ZyBsb25nIF9tYnN0YXRlTDsKfSBfX21ic3RhdGVfdDsKIyAzNCAiL3Vzci9pbmNsdWRlL21hY2hp
bmUvYW5zaS5oIiAyIDMgNAojIDg0ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNm
LW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUv
c3lzL3R5cGVzLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvZW5kaWFuLmgiIDEg
MyA0CiMgMzAgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIiAzIDQKIyAxICIvdXNyL2lu
Y2x1ZGUvcHBjL2VuZGlhbi5oIiAxIDMgNAojIDgxICIvdXNyL2luY2x1ZGUvcHBjL2VuZGlhbi5o
IiAzIDQKCnVuc2lnbmVkIGxvbmcgaHRvbmwgKHVuc2lnbmVkIGxvbmcpOwp1bnNpZ25lZCBzaG9y
dCBodG9ucyAodW5zaWduZWQgc2hvcnQpOwp1bnNpZ25lZCBsb25nIG50b2hsICh1bnNpZ25lZCBs
b25nKTsKdW5zaWduZWQgc2hvcnQgbnRvaHMgKHVuc2lnbmVkIHNob3J0KTsKCiMgMzEgIi91c3Iv
aW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIiAyIDMgNAojIDg1ICIvVm9sdW1lcy9VRlNfUGFydGl0
aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42
LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IHVfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVk
IGludCB1X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CgoKdHlwZWRlZiB1X2lu
dDY0X3QgdV9xdWFkX3Q7CnR5cGVkZWYgaW50NjRfdCBxdWFkX3Q7CnR5cGVkZWYgcXVhZF90ICog
cWFkZHJfdDsKCnR5cGVkZWYgY2hhciAqIGNhZGRyX3Q7CnR5cGVkZWYgaW50MzJfdCBkYWRkcl90
Owp0eXBlZGVmIGludDMyX3QgZGV2X3Q7CnR5cGVkZWYgdV9pbnQzMl90IGZpeHB0X3Q7CnR5cGVk
ZWYgdV9pbnQzMl90IGdpZF90Owp0eXBlZGVmIHVfaW50MzJfdCBpbl9hZGRyX3Q7CnR5cGVkZWYg
dV9pbnQxNl90IGluX3BvcnRfdDsKdHlwZWRlZiB1X2ludDMyX3QgaW5vX3Q7CnR5cGVkZWYgbG9u
ZyBrZXlfdDsKdHlwZWRlZiB1X2ludDE2X3QgbW9kZV90Owp0eXBlZGVmIHVfaW50MTZfdCBubGlu
a190Owp0eXBlZGVmIHF1YWRfdCBvZmZfdDsKdHlwZWRlZiBpbnQzMl90IHBpZF90Owp0eXBlZGVm
IHF1YWRfdCBybGltX3Q7CnR5cGVkZWYgaW50MzJfdCBzZWdzel90Owp0eXBlZGVmIGludDMyX3Qg
c3dibGtfdDsKdHlwZWRlZiB1X2ludDMyX3QgdWlkX3Q7CiMgMTI2ICIvVm9sdW1lcy9VRlNfUGFy
dGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3
aW42LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
Y2xvY2tfdDsKIyAxNDAgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Ytbm9jaGVj
ay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMyA0CnR5cGVkZWYgaW50IHNzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgdGltZV90Owoj
IDE1OSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2Mt
bGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQK
dHlwZWRlZiBpbnQzMl90IGZkX21hc2s7CgoKCgoKCnR5cGVkZWYgc3RydWN0IGZkX3NldCB7CiBm
ZF9tYXNrIGZkc19iaXRzWygoKDEwMjQpICsgKCgoc2l6ZW9mKGZkX21hc2spICogOCkpIC0gMSkp
IC8gKChzaXplb2YoZmRfbWFzaykgKiA4KSkpXTsKfSBmZF9zZXQ7CiMgMTk1ICIvVm9sdW1lcy9V
RlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBs
ZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNApzdHJ1Y3QgX3B0aHJlYWRf
aGFuZGxlcl9yZWMKewogdm9pZCAoKnJvdXRpbmUpKHZvaWQgKik7CiB2b2lkICphcmc7CiBzdHJ1
Y3QgX3B0aHJlYWRfaGFuZGxlcl9yZWMgKm5leHQ7Cn07CiMgMjE1ICIvVm9sdW1lcy9VRlNfUGFy
dGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3
aW42LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBfb3BhcXVl
X3B0aHJlYWRfdCB7IGxvbmcgc2lnOyBzdHJ1Y3QgX3B0aHJlYWRfaGFuZGxlcl9yZWMgKmNsZWFu
dXBfc3RhY2s7IGNoYXIgb3BhcXVlWzU5Nl07fSAqcHRocmVhZF90OwoKdHlwZWRlZiBzdHJ1Y3Qg
X29wYXF1ZV9wdGhyZWFkX2F0dHJfdCB7IGxvbmcgc2lnOyBjaGFyIG9wYXF1ZVszNl07IH0gcHRo
cmVhZF9hdHRyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfb3BhcXVlX3B0aHJlYWRfbXV0ZXhhdHRyX3Qg
eyBsb25nIHNpZzsgY2hhciBvcGFxdWVbOF07IH0gcHRocmVhZF9tdXRleGF0dHJfdDsKCnR5cGVk
ZWYgc3RydWN0IF9vcGFxdWVfcHRocmVhZF9tdXRleF90IHsgbG9uZyBzaWc7IGNoYXIgb3BhcXVl
WzQwXTsgfSBwdGhyZWFkX211dGV4X3Q7Cgp0eXBlZGVmIHN0cnVjdCBfb3BhcXVlX3B0aHJlYWRf
Y29uZGF0dHJfdCB7IGxvbmcgc2lnOyBjaGFyIG9wYXF1ZVs0XTsgfSBwdGhyZWFkX2NvbmRhdHRy
X3Q7Cgp0eXBlZGVmIHN0cnVjdCBfb3BhcXVlX3B0aHJlYWRfY29uZF90IHsgbG9uZyBzaWc7IGNo
YXIgb3BhcXVlWzI0XTsgfSBwdGhyZWFkX2NvbmRfdDsKCnR5cGVkZWYgc3RydWN0IF9vcGFxdWVf
cHRocmVhZF9yd2xvY2thdHRyX3QgeyBsb25nIHNpZzsgY2hhciBvcGFxdWVbMTJdOyB9IHB0aHJl
YWRfcndsb2NrYXR0cl90OwoKdHlwZWRlZiBzdHJ1Y3QgX29wYXF1ZV9wdGhyZWFkX3J3bG9ja190
IHsgbG9uZyBzaWc7IGNoYXIgb3BhcXVlWzEyNF07IH0gcHRocmVhZF9yd2xvY2tfdDsKCnR5cGVk
ZWYgc3RydWN0IHsgbG9uZyBzaWc7IGNoYXIgb3BhcXVlWzRdOyB9IHB0aHJlYWRfb25jZV90OwoK
Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcHRocmVhZF9rZXlfdDsKIyA3NCAiL1ZvbHVtZXMvVUZT
X1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUt
ZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgMTAwICIvVm9sdW1lcy9VRlNf
UGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1k
YXJ3aW42LjUvMy40L2luY2x1ZGUvc3RkaW8uaCIgMyA0CnR5cGVkZWYgb2ZmX3QgZnBvc190Owoj
IDExNiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2Mt
bGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMgNApzdHJ1
Y3QgX19zYnVmIHsKIHVuc2lnbmVkIGNoYXIgKl9iYXNlOwogaW50IF9zaXplOwp9OwojIDE0NyAi
L1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bv
d2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMgNAp0eXBlZGVmIHN0
cnVjdCBfX3NGSUxFIHsKIHVuc2lnbmVkIGNoYXIgKl9wOwogaW50IF9yOwogaW50IF93Owogc2hv
cnQgX2ZsYWdzOwogc2hvcnQgX2ZpbGU7CiBzdHJ1Y3QgX19zYnVmIF9iZjsKIGludCBfbGJmc2l6
ZTsKCgogdm9pZCAqX2Nvb2tpZTsKIGludCAoKl9jbG9zZSkgKHZvaWQgKik7CiBpbnQgKCpfcmVh
ZCkgKHZvaWQgKiwgY2hhciAqLCBpbnQpOwogZnBvc190ICgqX3NlZWspICh2b2lkICosIGZwb3Nf
dCwgaW50KTsKIGludCAoKl93cml0ZSkgKHZvaWQgKiwgY29uc3QgY2hhciAqLCBpbnQpOwoKCiBz
dHJ1Y3QgX19zYnVmIF91YjsKIHVuc2lnbmVkIGNoYXIgKl91cDsKIGludCBfdXI7CgoKIHVuc2ln
bmVkIGNoYXIgX3VidWZbM107CiB1bnNpZ25lZCBjaGFyIF9uYnVmWzFdOwoKCiBzdHJ1Y3QgX19z
YnVmIF9sYjsKCgogaW50IF9ibGtzaXplOwogZnBvc190IF9vZmZzZXQ7Cn0gRklMRTsKCgpleHRl
cm4gRklMRSBfX3NGW107CgojIDI1MCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2Zz
Zi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRl
L3N0ZGlvLmgiIDMgNAoKdm9pZCBjbGVhcmVyciAoRklMRSAqKTsKaW50IGZjbG9zZSAoRklMRSAq
KTsKaW50IGZlb2YgKEZJTEUgKik7CmludCBmZXJyb3IgKEZJTEUgKik7CmludCBmZmx1c2ggKEZJ
TEUgKik7CmludCBmZ2V0YyAoRklMRSAqKTsKaW50IGZnZXRwb3MgKEZJTEUgKiwgZnBvc190ICop
OwpjaGFyICpmZ2V0cyAoY2hhciAqLCBpbnQsIEZJTEUgKik7CkZJTEUgKmZvcGVuIChjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKik7CmludCBmcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwg
Li4uKTsKaW50IGZwdXRjIChpbnQsIEZJTEUgKik7CmludCBmcHV0cyAoY29uc3QgY2hhciAqLCBG
SUxFICopOwpzaXplX3QgZnJlYWQgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CkZJ
TEUgKmZyZW9wZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwppbnQgZnNj
YW5mIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IGZzZWVrIChGSUxFICosIGxvbmcs
IGludCk7CmludCBmc2V0cG9zIChGSUxFICosIGNvbnN0IGZwb3NfdCAqKTsKbG9uZyBmdGVsbCAo
RklMRSAqKTsKc2l6ZV90IGZ3cml0ZSAoY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklM
RSAqKTsKaW50IGdldGMgKEZJTEUgKik7CmludCBnZXRjaGFyICh2b2lkKTsKY2hhciAqZ2V0cyAo
Y2hhciAqKTsKCmV4dGVybiBjb25zdCBpbnQgc3lzX25lcnI7CmV4dGVybiBjb25zdCBjaGFyICpj
b25zdCBzeXNfZXJybGlzdFtdOwoKdm9pZCBwZXJyb3IgKGNvbnN0IGNoYXIgKik7CmludCBwcmlu
dGYgKGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IHB1dGMgKGludCwgRklMRSAqKTsKaW50IHB1dGNo
YXIgKGludCk7CmludCBwdXRzIChjb25zdCBjaGFyICopOwppbnQgcmVtb3ZlIChjb25zdCBjaGFy
ICopOwppbnQgcmVuYW1lIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CnZvaWQgcmV3aW5k
IChGSUxFICopOwppbnQgc2NhbmYgKGNvbnN0IGNoYXIgKiwgLi4uKTsKdm9pZCBzZXRidWYgKEZJ
TEUgKiwgY2hhciAqKTsKaW50IHNldHZidWYgKEZJTEUgKiwgY2hhciAqLCBpbnQsIHNpemVfdCk7
CmludCBzcHJpbnRmIChjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IHNzY2FuZiAoY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CkZJTEUgKnRtcGZpbGUgKHZvaWQpOwpjaGFy
ICp0bXBuYW0gKGNoYXIgKik7CmludCB1bmdldGMgKGludCwgRklMRSAqKTsKaW50IHZmcHJpbnRm
IChGSUxFICosIGNvbnN0IGNoYXIgKiwgX19idWlsdGluX3ZhX2xpc3QpOwppbnQgdnByaW50ZiAo
Y29uc3QgY2hhciAqLCBfX2J1aWx0aW5fdmFfbGlzdCk7CmludCB2c3ByaW50ZiAoY2hhciAqLCBj
b25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KTsKaW50IGFzcHJpbnRmIChjaGFyICoqLCBj
b25zdCBjaGFyICosIC4uLik7CmludCB2YXNwcmludGYgKGNoYXIgKiosIGNvbnN0IGNoYXIgKiwg
X19idWlsdGluX3ZhX2xpc3QpOwoKIyAzMDcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tp
YS9mc2Ytbm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5j
bHVkZS9zdGRpby5oIiAzIDQKCmNoYXIgKmN0ZXJtaWQgKGNoYXIgKik7CkZJTEUgKmZkb3BlbiAo
aW50LCBjb25zdCBjaGFyICopOwppbnQgZmlsZW5vIChGSUxFICopOwoKCgoKCgoKCmNoYXIgKmZn
ZXRsbiAoRklMRSAqLCBzaXplX3QgKik7CmludCBmcHVyZ2UgKEZJTEUgKik7CmludCBmc2Vla28g
KEZJTEUgKiwgZnBvc190LCBpbnQpOwpmcG9zX3QgZnRlbGxvIChGSUxFICopOwppbnQgZ2V0dyAo
RklMRSAqKTsKaW50IHBjbG9zZSAoRklMRSAqKTsKRklMRSAqcG9wZW4gKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqKTsKaW50IHB1dHcgKGludCwgRklMRSAqKTsKdm9pZCBzZXRidWZmZXIgKEZJ
TEUgKiwgY2hhciAqLCBpbnQpOwppbnQgc2V0bGluZWJ1ZiAoRklMRSAqKTsKY2hhciAqdGVtcG5h
bSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgc25wcmludGYgKGNoYXIgKiwgc2l6
ZV90LCBjb25zdCBjaGFyICosIC4uLik7CmludCB2c25wcmludGYgKGNoYXIgKiwgc2l6ZV90LCBj
b25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KTsKaW50IHZzY2FuZiAoY29uc3QgY2hhciAq
LCBfX2J1aWx0aW5fdmFfbGlzdCk7CmludCB2c3NjYW5mIChjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKiwgX19idWlsdGluX3ZhX2xpc3QpOwpGSUxFICp6b3BlbiAoY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICosIGludCk7CgojIDM0NCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2Zz
Zi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRl
L3N0ZGlvLmgiIDMgNAppbnQgdmZzY2FuZihGSUxFICosIGNvbnN0IGNoYXIgKiwgX19idWlsdGlu
X3ZhX2xpc3QpIF9fYXNtX18gKCJfIiAiX19zdmZzY2FuZiIpOwoKCgoKCkZJTEUgKmZ1bm9wZW4g
KGNvbnN0IHZvaWQgKiwgaW50ICgqKSh2b2lkICosIGNoYXIgKiwgaW50KSwgaW50ICgqKSh2b2lk
ICosIGNvbnN0IGNoYXIgKiwgaW50KSwgZnBvc190ICgqKSh2b2lkICosIGZwb3NfdCwgaW50KSwg
aW50ICgqKSh2b2lkICopKTsKCgoKCgoKCgoKCgoKCmludCBfX3NyZ2V0IChGSUxFICopOwppbnQg
X19zdmZzY2FuZiAoRklMRSAqLCBjb25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KTsKaW50
IF9fc3didWYgKGludCwgRklMRSAqKTsKCgoKCgoKCgpzdGF0aWMgX19pbmxpbmUgaW50IF9fc3B1
dGMoaW50IF9jLCBGSUxFICpfcCkgewogaWYgKC0tX3AtPl93ID49IDAgfHwgKF9wLT5fdyA+PSBf
cC0+X2xiZnNpemUgJiYgKGNoYXIpX2MgIT0gJ1xuJykpCiAgcmV0dXJuICgqX3AtPl9wKysgPSBf
Yyk7CiBlbHNlCiAgcmV0dXJuIChfX3N3YnVmKF9jLCBfcCkpOwp9CiMgNDYgIi9Wb2x1bWVzL1VG
U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIiAyCiMgMTEw
ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0
ZW0uaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3Jj
L2luY2x1ZGUvc2FmZS1jdHlwZS5oIiAxCiMgNDQgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGlu
c2tpYS9zcmMvZnNmL2djYy9zcmMvaW5jbHVkZS9zYWZlLWN0eXBlLmgiCmVudW0gewoKICBfc2No
X2lzYmxhbmsgPSAweDAwMDEsCiAgX3NjaF9pc2NudHJsID0gMHgwMDAyLAogIF9zY2hfaXNkaWdp
dCA9IDB4MDAwNCwKICBfc2NoX2lzbG93ZXIgPSAweDAwMDgsCiAgX3NjaF9pc3ByaW50ID0gMHgw
MDEwLAogIF9zY2hfaXNwdW5jdCA9IDB4MDAyMCwKICBfc2NoX2lzc3BhY2UgPSAweDAwNDAsCiAg
X3NjaF9pc3VwcGVyID0gMHgwMDgwLAogIF9zY2hfaXN4ZGlnaXQgPSAweDAxMDAsCgoKICBfc2No
X2lzaWRzdCA9IDB4MDIwMCwKICBfc2NoX2lzdnNwID0gMHgwNDAwLAogIF9zY2hfaXNudnNwID0g
MHgwODAwLAoKCiAgX3NjaF9pc2FscGhhID0gX3NjaF9pc3VwcGVyfF9zY2hfaXNsb3dlciwKICBf
c2NoX2lzYWxudW0gPSBfc2NoX2lzYWxwaGF8X3NjaF9pc2RpZ2l0LAogIF9zY2hfaXNpZG51bSA9
IF9zY2hfaXNpZHN0fF9zY2hfaXNkaWdpdCwKICBfc2NoX2lzZ3JhcGggPSBfc2NoX2lzYWxudW18
X3NjaF9pc3B1bmN0LAogIF9zY2hfaXNjcHBzcCA9IF9zY2hfaXN2c3B8X3NjaF9pc252c3AsCiAg
X3NjaF9pc2Jhc2ljID0gX3NjaF9pc3ByaW50fF9zY2hfaXNjcHBzcAoKfTsKCgpleHRlcm4gY29u
c3QgdW5zaWduZWQgc2hvcnQgX3NjaF9pc3RhYmxlWzI1Nl07CiMgOTcgIi9Wb2x1bWVzL1VGU19Q
YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvaW5jbHVkZS9zYWZlLWN0eXBlLmgiCmV4
dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIF9zY2hfdG91cHBlclsyNTZdOwpleHRlcm4gY29uc3Qg
dW5zaWduZWQgY2hhciBfc2NoX3RvbG93ZXJbMjU2XTsKIyAxMTEgIi9Wb2x1bWVzL1VGU19QYXJ0
aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIiAyCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2Vycm5vLmgiIDEgMyA0CiMgMjIgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzIDQK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL2Vycm5vLmgiIDEgMyA0CiMgNjggIi91c3IvaW5jbHVkZS9z
eXMvZXJybm8uaCIgMyA0CgpleHRlcm4gaW50ICogX19lcnJvciAodm9pZCk7CgoKIyAyMyAiL3Vz
ci9pbmNsdWRlL2Vycm5vLmgiIDIgMyA0CiMgMTE1ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3Bp
bnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIgMgojIDEyNSAiL1ZvbHVtZXMvVUZT
X1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiCiMgMSAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAxIDMgNAojIDcyICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMg
NAoKdm9pZCAqbWVtY2hyIChjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKaW50IG1lbWNtcCAo
Y29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgKm1lbWNweSAodm9pZCAq
LCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgKm1lbW1vdmUgKHZvaWQgKiwgY29uc3Qgdm9p
ZCAqLCBzaXplX3QpOwp2b2lkICptZW1zZXQgKHZvaWQgKiwgaW50LCBzaXplX3QpOwpjaGFyICpz
dHJjYXQgKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RyY2hyIChjb25zdCBjaGFyICos
IGludCk7CmludCBzdHJjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IHN0cmNv
bGwgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RyY3B5IChjaGFyICosIGNv
bnN0IGNoYXIgKik7CnNpemVfdCBzdHJjc3BuIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7
CmNoYXIgKnN0cmVycm9yIChpbnQpOwpzaXplX3Qgc3RybGVuIChjb25zdCBjaGFyICopOwpjaGFy
ICpzdHJuY2F0IChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKaW50IHN0cm5jbXAgKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpzdHJuY3B5IChjaGFyICos
IGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3RycGJyayAoY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICopOwpjaGFyICpzdHJyY2hyIChjb25zdCBjaGFyICosIGludCk7CnNpemVfdCBzdHJz
cG4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3Ryc3RyIChjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cnRvayAoY2hhciAqLCBjb25zdCBjaGFyICopOwpz
aXplX3Qgc3RyeGZybSAoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CgoKCmludCBiY21w
IChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKdm9pZCBiY29weSAoY29uc3Qg
dm9pZCAqLCB2b2lkICosIHNpemVfdCk7CnZvaWQgYnplcm8gKHZvaWQgKiwgc2l6ZV90KTsKaW50
IGZmcyAoaW50KTsKY2hhciAqaW5kZXggKGNvbnN0IGNoYXIgKiwgaW50KTsKdm9pZCAqbWVtY2Nw
eSAodm9pZCAqLCBjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKY2hhciAqcmluZGV4IChjb25z
dCBjaGFyICosIGludCk7CmludCBzdHJjYXNlY21wIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
Kik7CmNoYXIgKnN0cmR1cCAoY29uc3QgY2hhciAqKTsKc2l6ZV90IHN0cmxjYXQgKGNoYXIgKiwg
Y29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3Qgc3RybGNweSAoY2hhciAqLCBjb25zdCBjaGFy
ICosIHNpemVfdCk7CnZvaWQgc3RybW9kZSAoaW50LCBjaGFyICopOwppbnQgc3RybmNhc2VjbXAg
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpzdHJzZXAgKGNoYXIg
KiosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cnRva19yIChjaGFyICosIGNvbnN0IGNoYXIgKiwg
Y2hhciAqKik7CnZvaWQgc3dhYiAoY29uc3Qgdm9pZCAqLCB2b2lkICosIHNpemVfdCk7CgoKIyAx
MjYgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5
c3RlbS5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCIgMSAzIDQKIyAxMjcgIi9Wb2x1
bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIiAy
CiMgMTM4ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj
Yy9zeXN0ZW0uaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hl
Y2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3RkbGli
LmgiIDEgMyA0CiMgODQgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Ytbm9jaGVj
ay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9zdGRsaWIu
aCIgMyA0CnR5cGVkZWYgaW50IHJ1bmVfdDsKIyA5OSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w
aW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMu
NC9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewogaW50IHF1b3Q7CiBpbnQg
cmVtOwp9IGRpdl90OwoKdHlwZWRlZiBzdHJ1Y3QgewogbG9uZyBxdW90OwogbG9uZyByZW07Cn0g
bGRpdl90OwojIDExOCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNr
L2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGxpYi5o
IiAzIDQKZXh0ZXJuIGludCBfX21iX2N1cl9tYXg7CgoKCgoKIHZvaWQKICBhYm9ydCAodm9pZCk7
CiBpbnQKICBhYnMgKGludCk7CmludCBhdGV4aXQgKHZvaWQgKCopKHZvaWQpKTsKZG91YmxlIGF0
b2YgKGNvbnN0IGNoYXIgKik7CmludCBhdG9pIChjb25zdCBjaGFyICopOwpsb25nIGF0b2wgKGNv
bnN0IGNoYXIgKik7CnZvaWQgKmJzZWFyY2ggKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBz
aXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKdm9p
ZCAqY2FsbG9jIChzaXplX3QsIHNpemVfdCk7CiBkaXZfdAogIGRpdiAoaW50LCBpbnQpOwogdm9p
ZAogIGV4aXQgKGludCk7CnZvaWQgZnJlZSAodm9pZCAqKTsKY2hhciAqZ2V0ZW52IChjb25zdCBj
aGFyICopOwogbG9uZwogIGxhYnMgKGxvbmcpOwogbGRpdl90CiAgbGRpdiAobG9uZywgbG9uZyk7
CnZvaWQgKm1hbGxvYyAoc2l6ZV90KTsKdm9pZCBxc29ydCAodm9pZCAqLCBzaXplX3QsIHNpemVf
dCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKaW50IHJhbmQgKHZvaWQp
Owp2b2lkICpyZWFsbG9jICh2b2lkICosIHNpemVfdCk7CnZvaWQgc3JhbmQgKHVuc2lnbmVkKTsK
ZG91YmxlIHN0cnRvZCAoY29uc3QgY2hhciAqLCBjaGFyICoqKTsKbG9uZyBzdHJ0b2wgKGNvbnN0
IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKdW5zaWduZWQgbG9uZwogIHN0cnRvdWwgKGNvbnN0IGNo
YXIgKiwgY2hhciAqKiwgaW50KTsKaW50IHN5c3RlbSAoY29uc3QgY2hhciAqKTsKCgppbnQgbWJs
ZW4gKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICosIGNv
bnN0IGNoYXIgKiwgc2l6ZV90KTsKaW50IHdjdG9tYiAoY2hhciAqLCB3Y2hhcl90KTsKaW50IG1i
dG93YyAod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CnNpemVfdCB3Y3N0b21icyAo
Y2hhciAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CgoKaW50IHB1dGVudiAoY29uc3QgY2hh
ciAqKTsKaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CgoKCmRv
dWJsZSBkcmFuZDQ4ICh2b2lkKTsKZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0WzNdKTsK
bG9uZyBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydFszXSk7CnZvaWQgbGNvbmc0OCAodW5zaWduZWQg
c2hvcnRbN10pOwpsb25nIGxyYW5kNDggKHZvaWQpOwpsb25nIG1yYW5kNDggKHZvaWQpOwpsb25n
IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0WzNdKTsKdW5zaWduZWQgc2hvcnQKICpzZWVkNDggKHVu
c2lnbmVkIHNob3J0WzNdKTsKdm9pZCBzcmFuZDQ4IChsb25nKTsKCnZvaWQgKmFsbG9jYSAoc2l6
ZV90KTsKCnVfaW50MzJfdAogIGFyYzRyYW5kb20gKHZvaWQpOwp2b2lkIGFyYzRyYW5kb21fYWRk
cmFuZG9tICh1bnNpZ25lZCBjaGFyICpkYXQsIGludCBkYXRsZW4pOwp2b2lkIGFyYzRyYW5kb21f
c3RpciAodm9pZCk7CmNoYXIgKmdldGJzaXplIChpbnQgKiwgbG9uZyAqKTsKY2hhciAqY2dldGNh
cCAoY2hhciAqLCBjaGFyICosIGludCk7CmludCBjZ2V0Y2xvc2UgKHZvaWQpOwppbnQgY2dldGVu
dCAoY2hhciAqKiwgY2hhciAqKiwgY2hhciAqKTsKaW50IGNnZXRmaXJzdCAoY2hhciAqKiwgY2hh
ciAqKik7CmludCBjZ2V0bWF0Y2ggKGNoYXIgKiwgY2hhciAqKTsKaW50IGNnZXRuZXh0IChjaGFy
ICoqLCBjaGFyICoqKTsKaW50IGNnZXRudW0gKGNoYXIgKiwgY2hhciAqLCBsb25nICopOwppbnQg
Y2dldHNldCAoY2hhciAqKTsKaW50IGNnZXRzdHIgKGNoYXIgKiwgY2hhciAqLCBjaGFyICoqKTsK
aW50IGNnZXR1c3RyIChjaGFyICosIGNoYXIgKiwgY2hhciAqKik7CgppbnQgZGFlbW9uIChpbnQs
IGludCk7CmNoYXIgKmRldm5hbWUgKGludCwgaW50KTsKaW50IGdldGxvYWRhdmcgKGRvdWJsZSBb
XSwgaW50KTsKCmxvbmcgYTY0bCAoY29uc3QgY2hhciAqKTsKY2hhciAqbDY0YSAobG9uZyk7Cgpj
aGFyICpncm91cF9mcm9tX2dpZCAodW5zaWduZWQgbG9uZywgaW50KTsKaW50IGhlYXBzb3J0ICh2
b2lkICosIHNpemVfdCwgc2l6ZV90LCBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAq
KSk7CgpjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGxvbmcsIGNoYXIgKiwgbG9uZyk7CmludCBt
ZXJnZXNvcnQgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGludCAoKikoY29uc3Qgdm9pZCAqLCBj
b25zdCB2b2lkICopKTsKCmludCByYWRpeHNvcnQgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiosIGlu
dCwgY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCk7CgppbnQgc3JhZGl4c29ydCAoY29u
c3QgdW5zaWduZWQgY2hhciAqKiwgaW50LCBjb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVk
KTsKCmludCByYW5kX3IgKHVuc2lnbmVkICopOwpsb25nIHJhbmRvbSAodm9pZCk7CnZvaWQgKnJl
YWxsb2NmICh2b2lkICosIHNpemVfdCk7CmNoYXIgKnJlYWxwYXRoIChjb25zdCBjaGFyICosIGNo
YXIgcmVzb2x2ZWRfcGF0aFtdKTsKY2hhciAqc2V0c3RhdGUgKGNoYXIgKik7CnZvaWQgc3JhbmRv
bSAodW5zaWduZWQgbG9uZyk7CmNoYXIgKnVzZXJfZnJvbV91aWQgKHVuc2lnbmVkIGxvbmcsIGlu
dCk7Cgpsb25nIGxvbmcKICBzdHJ0b2xsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKdW5z
aWduZWQgbG9uZyBsb25nCiAgc3RydG91bGwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwps
b25nIGxvbmcKICBzdHJ0b3EgKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKdW5zaWduZWQg
bG9uZyBsb25nCiAgc3RydG91cSAoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwoKdm9pZCB1
bnNldGVudiAoY29uc3QgY2hhciAqKTsKCgojIDEzOSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w
aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiIDIKIyAxNjEgIi9Wb2x1bWVzL1VG
U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIgojIDEgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMSAzIDQKIyA3MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
IDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAxIDMgNAojIDczICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDIgMyA0CiMgOTEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cgogdm9p
ZAogIF9leGl0IChpbnQpOwppbnQgYWNjZXNzIChjb25zdCBjaGFyICosIGludCk7CnVuc2lnbmVk
IGludCBhbGFybSAodW5zaWduZWQgaW50KTsKaW50IGNoZGlyIChjb25zdCBjaGFyICopOwppbnQg
Y2hvd24gKGNvbnN0IGNoYXIgKiwgdWlkX3QsIGdpZF90KTsKaW50IGNsb3NlIChpbnQpOwpzaXpl
X3QgY29uZnN0ciAoaW50LCBjaGFyICosIHNpemVfdCk7CmludCBkdXAgKGludCk7CmludCBkdXAy
IChpbnQsIGludCk7CmludCBleGVjbCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7
CmludCBleGVjbGUgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZXhlY2xw
IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IGV4ZWN2IChjb25zdCBjaGFy
ICosIGNoYXIgKiBjb25zdCAqKTsKaW50IGV4ZWN2ZSAoY29uc3QgY2hhciAqLCBjaGFyICogY29u
c3QgKiwgY2hhciAqIGNvbnN0ICopOwppbnQgZXhlY3ZwIChjb25zdCBjaGFyICosIGNoYXIgKiBj
b25zdCAqKTsKcGlkX3QgZm9yayAodm9pZCk7CmxvbmcgZnBhdGhjb25mIChpbnQsIGludCk7CmNo
YXIgKmdldGN3ZCAoY2hhciAqLCBzaXplX3QpOwpnaWRfdCBnZXRlZ2lkICh2b2lkKTsKdWlkX3Qg
Z2V0ZXVpZCAodm9pZCk7CmdpZF90IGdldGdpZCAodm9pZCk7CmludCBnZXRncm91cHMgKGludCwg
Z2lkX3QgW10pOwpjaGFyICpnZXRsb2dpbiAodm9pZCk7CnBpZF90IGdldHBncnAgKHZvaWQpOwpw
aWRfdCBnZXRwaWQgKHZvaWQpOwpwaWRfdCBnZXRwcGlkICh2b2lkKTsKdWlkX3QgZ2V0dWlkICh2
b2lkKTsKaW50IGlzYXR0eSAoaW50KTsKaW50IGxpbmsgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsKb2ZmX3QgbHNlZWsgKGludCwgb2ZmX3QsIGludCk7CmxvbmcgcGF0aGNvbmYgKGNvbnN0
IGNoYXIgKiwgaW50KTsKaW50IHBhdXNlICh2b2lkKTsKaW50IHBpcGUgKGludCAqKTsKc3NpemVf
dCByZWFkIChpbnQsIHZvaWQgKiwgc2l6ZV90KTsKaW50IHJtZGlyIChjb25zdCBjaGFyICopOwpp
bnQgc2V0Z2lkIChnaWRfdCk7CmludCBzZXRwZ2lkIChwaWRfdCwgcGlkX3QpOwpwaWRfdCBzZXRz
aWQgKHZvaWQpOwppbnQgc2V0dWlkICh1aWRfdCk7CnVuc2lnbmVkIGludCBzbGVlcCAodW5zaWdu
ZWQgaW50KTsKbG9uZyBzeXNjb25mIChpbnQpOwpwaWRfdCB0Y2dldHBncnAgKGludCk7CmludCB0
Y3NldHBncnAgKGludCwgcGlkX3QpOwpjaGFyICp0dHluYW1lIChpbnQpOwppbnQgdW5saW5rIChj
b25zdCBjaGFyICopOwpzc2l6ZV90IHdyaXRlIChpbnQsIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsK
CmV4dGVybiBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0aW5kLCBvcHRlcnIsIG9wdG9wdCwg
b3B0cmVzZXQ7CmludCBnZXRvcHQgKGludCwgY2hhciAqIGNvbnN0IFtdLCBjb25zdCBjaGFyICop
OwoKCgpzdHJ1Y3QgdGltZXZhbDsKCmludCBhY2N0IChjb25zdCBjaGFyICopOwppbnQgYXN5bmNf
ZGFlbW9uICh2b2lkKTsKY2hhciAqYnJrIChjb25zdCBjaGFyICopOwppbnQgY2hyb290IChjb25z
dCBjaGFyICopOwpjaGFyICpjcnlwdCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQg
ZGVzX2NpcGhlciAoY29uc3QgY2hhciAqLCBjaGFyICosIGxvbmcsIGludCk7CmludCBkZXNfc2V0
a2V5IChjb25zdCBjaGFyICprZXkpOwppbnQgZW5jcnlwdCAoY2hhciAqLCBpbnQpOwp2b2lkIGVu
ZHVzZXJzaGVsbCAodm9pZCk7CmludCBleGVjdCAoY29uc3QgY2hhciAqLCBjaGFyICogY29uc3Qg
KiwgY2hhciAqIGNvbnN0ICopOwppbnQgZmNoZGlyIChpbnQpOwppbnQgZmNob3duIChpbnQsIGlu
dCwgaW50KTsKY2hhciAqZmZsYWdzdG9zdHIgKHVfbG9uZyk7CmludCBmc3luYyAoaW50KTsKaW50
IGZ0cnVuY2F0ZSAoaW50LCBvZmZfdCk7CmludCBnZXRkdGFibGVzaXplICh2b2lkKTsKaW50IGdl
dGdyb3VwbGlzdCAoY29uc3QgY2hhciAqLCBpbnQsIGludCAqLCBpbnQgKik7CmxvbmcgZ2V0aG9z
dGlkICh2b2lkKTsKaW50IGdldGhvc3RuYW1lIChjaGFyICosIGludCk7Cm1vZGVfdCBnZXRtb2Rl
IChjb25zdCB2b2lkICosIG1vZGVfdCk7CiBpbnQKICBnZXRwYWdlc2l6ZSAodm9pZCk7CmNoYXIg
KmdldHBhc3MgKGNvbnN0IGNoYXIgKik7CmludCBnZXRwZ2lkIChwaWRfdCBfcGlkKTsKaW50IGdl
dHNpZCAocGlkX3QgX3BpZCk7CmNoYXIgKmdldHVzZXJzaGVsbCAodm9pZCk7CmNoYXIgKmdldHdk
IChjaGFyICopOwppbnQgaW5pdGdyb3VwcyAoY29uc3QgY2hhciAqLCBpbnQpOwppbnQgaXJ1c2Vy
b2sgKHVuc2lnbmVkIGxvbmcsIGludCwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQg
aXNzZXR1Z2lkICh2b2lkKTsKY2hhciAqbWtkdGVtcCAoY2hhciAqKTsKaW50IG1rbm9kIChjb25z
dCBjaGFyICosIG1vZGVfdCwgZGV2X3QpOwppbnQgbWtzdGVtcCAoY2hhciAqKTsKaW50IG1rc3Rl
bXBzIChjaGFyICosIGludCk7CmNoYXIgKm1rdGVtcCAoY2hhciAqKTsKaW50IG5mc3N2YyAoaW50
LCB2b2lkICopOwppbnQgbmljZSAoaW50KTsKc3NpemVfdCBwcmVhZCAoaW50LCB2b2lkICosIHNp
emVfdCwgb2ZmX3QpOwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDEgMyA0CiMgNjIg
Ii91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwu
aCIgMSAzIDQKIyA3MiAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CiMgMSAiL3Vzci9p
bmNsdWRlL21hY2hpbmUvc2lnbmFsLmgiIDEgMyA0CiMgMjcgIi91c3IvaW5jbHVkZS9tYWNoaW5l
L3NpZ25hbC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvcHBjL3NpZ25hbC5oIiAxIDMgNAojIDMy
ICIvdXNyL2luY2x1ZGUvcHBjL3NpZ25hbC5oIiAzIDQKdHlwZWRlZiBpbnQgc2lnX2F0b21pY190
OwojIDUwICIvdXNyL2luY2x1ZGUvcHBjL3NpZ25hbC5oIiAzIDQKdHlwZWRlZiBlbnVtIHsKIFJF
R1NfU0FWRURfTk9ORSwKIFJFR1NfU0FWRURfQ0FMTEVSLAoKCiBSRUdTX1NBVkVEX0FMTAp9IHJl
Z3Nfc2F2ZWRfdDsKIyA2NiAiL3Vzci9pbmNsdWRlL3BwYy9zaWduYWwuaCIgMyA0CnN0cnVjdCBz
aWdjb250ZXh0IHsKICAgIGludCBzY19vbnN0YWNrOwogICAgaW50IHNjX21hc2s7CiBpbnQgc2Nf
aXI7CiAgICBpbnQgc2NfcHN3OwogICAgaW50IHNjX3NwOwogdm9pZCAqc2NfcmVnczsKfTsKIyAy
OCAiL3Vzci9pbmNsdWRlL21hY2hpbmUvc2lnbmFsLmgiIDIgMyA0CiMgNzMgIi91c3IvaW5jbHVk
ZS9zeXMvc2lnbmFsLmgiIDIgMyA0CiMgMTM0ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAz
IDQKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2lnc2V0X3Q7Cgp1bmlvbiBzaWd2YWwgewoKIGludCBz
aWd2YWxfaW50Owogdm9pZCAqc2lndmFsX3B0cjsKfTsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9f
c2lnaW5mbyB7CiBpbnQgc2lfc2lnbm87CiBpbnQgc2lfZXJybm87CiBpbnQgc2lfY29kZTsKIGlu
dCBzaV9waWQ7CiB1bnNpZ25lZCBpbnQgc2lfdWlkOwogaW50IHNpX3N0YXR1czsKIHZvaWQgKnNp
X2FkZHI7CiB1bmlvbiBzaWd2YWwgc2lfdmFsdWU7CiBsb25nIHNpX2JhbmQ7CiBpbnQgcGFkWzdd
Owp9IHNpZ2luZm9fdDsKIyAyMDggIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAp1bmlv
biBfX3NpZ2FjdGlvbl91IHsKIHZvaWQgKCpfX3NhX2hhbmRsZXIpKGludCk7CiB2b2lkICgqX19z
YV9zaWdhY3Rpb24pKGludCwgc3RydWN0IF9fc2lnaW5mbyAqLAogICAgICAgICB2b2lkICopOwp9
OwoKCnN0cnVjdCBfX3NpZ2FjdGlvbiB7CiB1bmlvbiBfX3NpZ2FjdGlvbl91IF9fc2lnYWN0aW9u
X3U7CiB2b2lkICgqc2FfdHJhbXApKHZvaWQgKiwgaW50LCBpbnQsIHNpZ2luZm9fdCAqLCB2b2lk
ICopOwogc2lnc2V0X3Qgc2FfbWFzazsKIGludCBzYV9mbGFnczsKfTsKCgoKCnN0cnVjdCBzaWdh
Y3Rpb24gewogdW5pb24gX19zaWdhY3Rpb25fdSBfX3NpZ2FjdGlvbl91Owogc2lnc2V0X3Qgc2Ff
bWFzazsKIGludCBzYV9mbGFnczsKfTsKIyAyNjMgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgi
IDMgNAp0eXBlZGVmIHZvaWQgKCpzaWdfdCkgKGludCk7CgoKCgpzdHJ1Y3Qgc2lnYWx0c3RhY2sg
ewogY2hhciAqc3Nfc3A7CiBpbnQgc3Nfc2l6ZTsKIGludCBzc19mbGFnczsKfTsKCnR5cGVkZWYg
c3RydWN0IHNpZ2FsdHN0YWNrIHN0YWNrX3Q7CiMgMjg1ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25h
bC5oIiAzIDQKc3RydWN0IHNpZ3ZlYyB7CiB2b2lkICgqc3ZfaGFuZGxlcikoaW50KTsKIGludCBz
dl9tYXNrOwogaW50IHN2X2ZsYWdzOwp9OwojIDMwMyAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwu
aCIgMyA0CnN0cnVjdCBzaWdzdGFjayB7CiBjaGFyICpzc19zcDsKIGludCBzc19vbnN0YWNrOwp9
OwojIDMzNiAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0Cgp2b2lkICgqc2lnbmFsIChp
bnQsIHZvaWQgKCopIChpbnQpKSkgKGludCk7CgojIDYzICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgi
IDIgMyA0CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHN5c19zaWduYW1lWzMyXTsKZXh0ZXJu
IGNvbnN0IGNoYXIgKmNvbnN0IHN5c19zaWdsaXN0WzMyXTsKCgoKaW50IHJhaXNlIChpbnQpOwoK
aW50IGtpbGwgKHBpZF90LCBpbnQpOwppbnQgc2lnYWN0aW9uIChpbnQsIGNvbnN0IHN0cnVjdCBz
aWdhY3Rpb24gKiwgc3RydWN0IHNpZ2FjdGlvbiAqKTsKaW50IHNpZ2FkZHNldCAoc2lnc2V0X3Qg
KiwgaW50KTsKaW50IHNpZ2RlbHNldCAoc2lnc2V0X3QgKiwgaW50KTsKaW50IHNpZ2VtcHR5c2V0
IChzaWdzZXRfdCAqKTsKaW50IHNpZ2ZpbGxzZXQgKHNpZ3NldF90ICopOwppbnQgc2lnaXNtZW1i
ZXIgKGNvbnN0IHNpZ3NldF90ICosIGludCk7CmludCBzaWdwZW5kaW5nIChzaWdzZXRfdCAqKTsK
aW50IHNpZ3Byb2NtYXNrIChpbnQsIGNvbnN0IHNpZ3NldF90ICosIHNpZ3NldF90ICopOwppbnQg
c2lnc3VzcGVuZCAoY29uc3Qgc2lnc2V0X3QgKik7CgppbnQga2lsbHBnIChwaWRfdCwgaW50KTsK
aW50IHNpZ2Jsb2NrIChpbnQpOwppbnQgc2lnaW50ZXJydXB0IChpbnQsIGludCk7CmludCBzaWdo
b2xkIChpbnQpOwppbnQgc2lncmVsc2UgKGludCk7CmludCBzaWdwYXVzZSAoaW50KTsKaW50IHNp
Z3JldHVybiAoc3RydWN0IHNpZ2NvbnRleHQgKik7CmludCBzaWdzZXRtYXNrIChpbnQpOwppbnQg
c2lndmVjIChpbnQsIHN0cnVjdCBzaWd2ZWMgKiwgc3RydWN0IHNpZ3ZlYyAqKTsKdm9pZCBwc2ln
bmFsICh1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKik7CgoKCiMgMTkxICIvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDIgMyA0CgppbnQgcHJvZmlsIChjaGFyICosIGludCwgaW50LCBpbnQpOwpzc2l6
ZV90IHB3cml0ZSAoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCwgb2ZmX3QpOwppbnQgcmNtZCAo
Y2hhciAqKiwgaW50LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBp
bnQgKik7CgpjaGFyICpyZV9jb21wIChjb25zdCBjaGFyICopOwppbnQgcmVfZXhlYyAoY29uc3Qg
Y2hhciAqKTsKaW50IHJlYWRsaW5rIChjb25zdCBjaGFyICosIGNoYXIgKiwgaW50KTsKaW50IHJl
Ym9vdCAoaW50KTsKaW50IHJldm9rZSAoY29uc3QgY2hhciAqKTsKaW50IHJyZXN2cG9ydCAoaW50
ICopOwppbnQgcnVzZXJvayAoY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqKTsKY2hhciAqc2JyayAoaW50KTsKaW50IHNlbGVjdCAoaW50LCBmZF9zZXQgKiwgZmRf
c2V0ICosIGZkX3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKaW50IHNldGVnaWQgKGdpZF90KTsK
aW50IHNldGV1aWQgKHVpZF90KTsKaW50IHNldGdyb3VwcyAoaW50LCBjb25zdCBnaWRfdCAqKTsK
dm9pZCBzZXRob3N0aWQgKGxvbmcpOwppbnQgc2V0aG9zdG5hbWUgKGNvbnN0IGNoYXIgKiwgaW50
KTsKaW50IHNldGtleSAoY29uc3QgY2hhciAqKTsKaW50IHNldGxvZ2luIChjb25zdCBjaGFyICop
Owp2b2lkICpzZXRtb2RlIChjb25zdCBjaGFyICopOwppbnQgc2V0cGdycCAocGlkX3QgcGlkLCBw
aWRfdCBwZ3JwKTsKaW50IHNldHJlZ2lkIChnaWRfdCwgZ2lkX3QpOwppbnQgc2V0cmV1aWQgKHVp
ZF90LCB1aWRfdCk7CmludCBzZXRyZ2lkIChnaWRfdCk7CmludCBzZXRydWlkICh1aWRfdCk7CnZv
aWQgc2V0dXNlcnNoZWxsICh2b2lkKTsKaW50IHN0cnRvZmZsYWdzIChjaGFyICoqLCB1X2xvbmcg
KiwgdV9sb25nICopOwppbnQgc3dhcG9uIChjb25zdCBjaGFyICopOwppbnQgc3ltbGluayAoY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwp2b2lkIHN5bmMgKHZvaWQpOwppbnQgc3lzY2FsbCAo
aW50LCAuLi4pOwppbnQgdHJ1bmNhdGUgKGNvbnN0IGNoYXIgKiwgb2ZmX3QpOwppbnQgdHR5c2xv
dCAodm9pZCk7CnVuc2lnbmVkIGludCB1YWxhcm0gKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50
KTsKaW50IHVud2hpdGVvdXQgKGNvbnN0IGNoYXIgKik7CmludCB1c2xlZXAgKHVuc2lnbmVkIGlu
dCk7CnZvaWQgKnZhbGxvYyAoc2l6ZV90KTsKcGlkX3QgdmZvcmsgKHZvaWQpOwoKZXh0ZXJuIGNo
YXIgKnN1Ym9wdGFyZzsKaW50IGdldHN1Ym9wdCAoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNo
YXIgKiopOwoKCmludCBnZXRhdHRybGlzdCAoY29uc3QgY2hhciosdm9pZCosdm9pZCosc2l6ZV90
LHVuc2lnbmVkIGxvbmcpOwppbnQgc2V0YXR0cmxpc3QgKGNvbnN0IGNoYXIqLHZvaWQqLHZvaWQq
LHNpemVfdCx1bnNpZ25lZCBsb25nKTsKaW50IGV4Y2hhbmdlZGF0YSAoY29uc3QgY2hhciosY29u
c3QgY2hhciosdW5zaWduZWQgbG9uZyk7CmludCBjaGVja3VzZXJhY2Nlc3MgKGNvbnN0IGNoYXIq
LHVpZF90LGdpZF90KixpbnQsaW50LHVuc2lnbmVkIGxvbmcpOwppbnQgZ2V0ZGlyZW50cmllc2F0
dHIgKGludCx2b2lkKix2b2lkKixzaXplX3QsdW5zaWduZWQgbG9uZyosdW5zaWduZWQgbG9uZyos
dW5zaWduZWQgbG9uZyosdW5zaWduZWQgbG9uZyk7CmludCBzZWFyY2hmcyAoY29uc3QgY2hhcios
dm9pZCosdm9pZCosdW5zaWduZWQgbG9uZyx1bnNpZ25lZCBsb25nLHZvaWQqKTsKCmludCBmc2N0
bCAoY29uc3QgY2hhciAqLHVuc2lnbmVkIGxvbmcsdm9pZCosdW5zaWduZWQgbG9uZyk7CgoKCgoj
IDE2MiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mv
c3lzdGVtLmgiIDIKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDEgMyA0CiMgODgg
Ii91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNs
aW1pdHMuaCIgMSAzIDQKIyA4OSAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAyIDMgNAojIDEw
MiAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGlu
ZS9wYXJhbS5oIiAxIDMgNAojIDMwICIvdXNyL2luY2x1ZGUvbWFjaGluZS9wYXJhbS5oIiAzIDQK
IyAxICIvdXNyL2luY2x1ZGUvcHBjL3BhcmFtLmgiIDEgMyA0CiMgMzEgIi91c3IvaW5jbHVkZS9t
YWNoaW5lL3BhcmFtLmgiIDIgMyA0CiMgMTAzICIvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDIg
MyA0CiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmgiIDEgMyA0CgoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvcHBjL2xpbWl0cy5oIiAxIDMgNAojIDcgIi91c3IvaW5jbHVkZS9tYWNoaW5l
L2xpbWl0cy5oIiAyIDMgNAojIDEwNCAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAyIDMgNAoj
IDE2NiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mv
c3lzdGVtLmgiIDIKCgoKCgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Yt
bm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9s
aW1pdHMuaCIgMSAzIDQKIyAxMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1u
b2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL2xp
bWl0cy5oIiAzIDQKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hl
Y2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3lzbGlt
aXRzLmgiIDEgMyA0CgoKCgoKCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2Zz
Zi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRl
L2xpbWl0cy5oIiAxIDMgNAojIDEyMiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2Zz
Zi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRl
L2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CiMgMTIzICIv
Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93
ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgOCAiL1Zv
bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2Vy
cGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMgNAojIDEyICIv
Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93
ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgMTcyICIv
Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0ZW0u
aCIgMgoKCgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z
cmMvZ2NjL2h3aW50LmgiIDEKIyAzMyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny
Yy9mc2YvZ2NjL3NyYy9nY2MvaHdpbnQuaCIKaW50IGZmc2wgKGxvbmcpOwoKCgppbnQgZmZzbGwg
KGxvbmcgbG9uZyk7CiMgMTc2ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz
Zi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIgMgojIDIwNCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w
aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy90aW1lLmgiIDEgMyA0CiMgNjggIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKc3RydWN0
IHRpbWV2YWwgewogaW50MzJfdCB0dl9zZWM7CiBpbnQzMl90IHR2X3VzZWM7Cn07CgoKCgoKCnN0
cnVjdCB0aW1lc3BlYyB7CiB0aW1lX3QgdHZfc2VjOwogaW50MzJfdCB0dl9uc2VjOwp9OwojIDkz
ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1lem9uZSB7CiBpbnQgdHpf
bWludXRlc3dlc3Q7CiBpbnQgdHpfZHN0dGltZTsKfTsKIyAxNDEgIi91c3IvaW5jbHVkZS9zeXMv
dGltZS5oIiAzIDQKc3RydWN0IGl0aW1lcnZhbCB7CiBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZh
bDsKIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwoKCgoKc3RydWN0IGNsb2NraW5mbyB7CiBp
bnQgaHo7CiBpbnQgdGljazsKIGludCB0aWNrYWRqOwogaW50IHN0YXRoejsKIGludCBwcm9maHo7
Cn07CiMgMTc0ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMSAzIDQKIyA5NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CnN0cnVjdCB0bSB7
CiBpbnQgdG1fc2VjOwogaW50IHRtX21pbjsKIGludCB0bV9ob3VyOwogaW50IHRtX21kYXk7CiBp
bnQgdG1fbW9uOwogaW50IHRtX3llYXI7CiBpbnQgdG1fd2RheTsKIGludCB0bV95ZGF5OwogaW50
IHRtX2lzZHN0OwogbG9uZyB0bV9nbXRvZmY7CiBjaGFyICp0bV96b25lOwp9OwojIDExNSAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBjaGFyICp0em5hbWVbXTsKCgoKY2hhciAqYXNj
dGltZSAoY29uc3Qgc3RydWN0IHRtICopOwpjbG9ja190IGNsb2NrICh2b2lkKTsKY2hhciAqY3Rp
bWUgKGNvbnN0IHRpbWVfdCAqKTsKZG91YmxlIGRpZmZ0aW1lICh0aW1lX3QsIHRpbWVfdCk7CnN0
cnVjdCB0bSAqZ210aW1lIChjb25zdCB0aW1lX3QgKik7CnN0cnVjdCB0bSAqbG9jYWx0aW1lIChj
b25zdCB0aW1lX3QgKik7CnRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqKTsKc2l6ZV90IHN0cmZ0
aW1lIChjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdG0gKik7CnRp
bWVfdCB0aW1lICh0aW1lX3QgKik7CgoKdm9pZCB0enNldCAodm9pZCk7CgoKCmNoYXIgKmFzY3Rp
bWVfciAoY29uc3Qgc3RydWN0IHRtICosIGNoYXIgKik7CmNoYXIgKmN0aW1lX3IgKGNvbnN0IHRp
bWVfdCAqLCBjaGFyICopOwpzdHJ1Y3QgdG0gKmdtdGltZV9yIChjb25zdCB0aW1lX3QgKiwgc3Ry
dWN0IHRtICopOwpzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yIChjb25zdCB0aW1lX3QgKiwgc3RydWN0
IHRtICopOwpjaGFyICpzdHJwdGltZSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHN0cnVj
dCB0bSAqKTsKY2hhciAqdGltZXpvbmUgKGludCwgaW50KTsKdm9pZCB0enNldHdhbGwgKHZvaWQp
Owp0aW1lX3QgdGltZWxvY2FsIChzdHJ1Y3QgdG0gKiBjb25zdCk7CnRpbWVfdCB0aW1lZ20gKHN0
cnVjdCB0bSAqIGNvbnN0KTsKCgoKaW50IG5hbm9zbGVlcCAoY29uc3Qgc3RydWN0IHRpbWVzcGVj
ICosIHN0cnVjdCB0aW1lc3BlYyAqKTsKCgojIDE3NSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgi
IDIgMyA0CgoKCgoKaW50IGFkanRpbWUgKGNvbnN0IHN0cnVjdCB0aW1ldmFsICosIHN0cnVjdCB0
aW1ldmFsICopOwppbnQgZnV0aW1lcyAoaW50LCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKTsKaW50
IGdldGl0aW1lciAoaW50LCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgZ2V0dGltZW9mZGF5IChz
dHJ1Y3QgdGltZXZhbCAqLCBzdHJ1Y3QgdGltZXpvbmUgKik7CmludCBzZXRpdGltZXIgKGludCwg
Y29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgc2V0dGlt
ZW9mZGF5IChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqLCBjb25zdCBzdHJ1Y3QgdGltZXpvbmUgKik7
CmludCB1dGltZXMgKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRpbWV2YWwgKik7CgojIDIw
NSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lz
dGVtLmgiIDIKIyAyMTcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2dj
Yy9zcmMvZ2NjL3N5c3RlbS5oIgojIDEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAxIDMgNAojIDIy
ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5o
IiAxIDMgNAojIDIxMiAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAzIDQKc3RydWN0IGZsb2Nr
IHsKIG9mZl90IGxfc3RhcnQ7CiBvZmZfdCBsX2xlbjsKIHBpZF90IGxfcGlkOwogc2hvcnQgbF90
eXBlOwogc2hvcnQgbF93aGVuY2U7Cn07CgoKCgoKCnN0cnVjdCByYWR2aXNvcnkgewogICAgICAg
b2ZmX3QgcmFfb2Zmc2V0OwogICAgICAgaW50IHJhX2NvdW50Owp9OwojIDI0MSAiL3Vzci9pbmNs
dWRlL3N5cy9mY250bC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgZnN0b3JlIHsKIHVfaW50MzJfdCBm
c3RfZmxhZ3M7CiBpbnQgZnN0X3Bvc21vZGU7CiBvZmZfdCBmc3Rfb2Zmc2V0Owogb2ZmX3QgZnN0
X2xlbmd0aDsKIG9mZl90IGZzdF9ieXRlc2FsbG9jOwp9IGZzdG9yZV90OwoKCgp0eXBlZGVmIHN0
cnVjdCBmYm9vdHN0cmFwdHJhbnNmZXIgewogIG9mZl90IGZidF9vZmZzZXQ7CiAgc2l6ZV90IGZi
dF9sZW5ndGg7CiAgdm9pZCAqZmJ0X2J1ZmZlcjsKfSBmYm9vdHN0cmFwdHJhbnNmZXJfdDsKIyAy
NzMgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CnN0cnVjdCBsb2cycGh5cyB7CiB1X2lu
dDMyX3QgbDJwX2ZsYWdzOwogb2ZmX3QgbDJwX2NvbnRpZ2J5dGVzOwogb2ZmX3QgbDJwX2Rldm9m
ZnNldDsKfTsKIyAyODcgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CgppbnQgb3BlbiAo
Y29uc3QgY2hhciAqLCBpbnQsIC4uLik7CmludCBjcmVhdCAoY29uc3QgY2hhciAqLCBtb2RlX3Qp
OwppbnQgZmNudGwgKGludCwgaW50LCAuLi4pOwoKaW50IGZsb2NrIChpbnQsIGludCk7CgoKIyAy
MyAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDIgMyA0CiMgMjE4ICIvVm9sdW1lcy9VRlNfUGFydGl0
aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIgMgojIDI1NSAiL1ZvbHVt
ZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDEgMyA0CiMgMTIyICIvdXNyL2luY2x1ZGUvc3lz
L3dhaXQuaCIgMyA0CnVuaW9uIHdhaXQgewogaW50IHdfc3RhdHVzOwoKCgogc3RydWN0IHsKCgoK
CgoKCiAgdW5zaWduZWQgaW50IHdfRmlsbGVyOjE2LAogICAgd19SZXRjb2RlOjgsCiAgICB3X0Nv
cmVkdW1wOjEsCiAgICB3X1Rlcm1zaWc6NzsKCiB9IHdfVDsKCgoKCgogc3RydWN0IHsKCgoKCgoK
ICB1bnNpZ25lZCBpbnQgd19GaWxsZXI6MTYsCiAgICB3X1N0b3BzaWc6OCwKICAgIHdfU3RvcHZh
bDo4OwoKIH0gd19TOwp9OwojIDE3MiAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMgNAoKc3Ry
dWN0IHJ1c2FnZTsKCnBpZF90IHdhaXQgKGludCAqKTsKcGlkX3Qgd2FpdHBpZCAocGlkX3QsIGlu
dCAqLCBpbnQpOwoKcGlkX3Qgd2FpdDMgKGludCAqLCBpbnQsIHN0cnVjdCBydXNhZ2UgKik7CnBp
ZF90IHdhaXQ0IChwaWRfdCwgaW50ICosIGludCwgc3RydWN0IHJ1c2FnZSAqKTsKCgojIDI1NiAi
L1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVt
LmgiIDIKIyAzNDIgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z
cmMvZ2NjL3N5c3RlbS5oIgpleHRlcm4gY29uc3QgY2hhciAqc3Ryc2lnbmFsIChpbnQpOwojIDM5
MiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lz
dGVtLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDEgMyA0CiMgNzAgIi91c3IvaW5j
bHVkZS9zeXMvc3RhdC5oIiAzIDQKc3RydWN0IG9zdGF0IHsKIHVfaW50MTZfdCBzdF9kZXY7CiBp
bm9fdCBzdF9pbm87CiBtb2RlX3Qgc3RfbW9kZTsKIG5saW5rX3Qgc3Rfbmxpbms7CiB1X2ludDE2
X3Qgc3RfdWlkOwogdV9pbnQxNl90IHN0X2dpZDsKIHVfaW50MTZfdCBzdF9yZGV2OwogaW50MzJf
dCBzdF9zaXplOwogc3RydWN0IHRpbWVzcGVjIHN0X2F0aW1lc3BlYzsKIHN0cnVjdCB0aW1lc3Bl
YyBzdF9tdGltZXNwZWM7CiBzdHJ1Y3QgdGltZXNwZWMgc3RfY3RpbWVzcGVjOwogaW50MzJfdCBz
dF9ibGtzaXplOwogaW50MzJfdCBzdF9ibG9ja3M7CiB1X2ludDMyX3Qgc3RfZmxhZ3M7CiB1X2lu
dDMyX3Qgc3RfZ2VuOwp9OwoKCnN0cnVjdCBzdGF0IHsKIGRldl90IHN0X2RldjsKIGlub190IHN0
X2lubzsKIG1vZGVfdCBzdF9tb2RlOwogbmxpbmtfdCBzdF9ubGluazsKIHVpZF90IHN0X3VpZDsK
IGdpZF90IHN0X2dpZDsKIGRldl90IHN0X3JkZXY7Cgogc3RydWN0IHRpbWVzcGVjIHN0X2F0aW1l
c3BlYzsKIHN0cnVjdCB0aW1lc3BlYyBzdF9tdGltZXNwZWM7CiBzdHJ1Y3QgdGltZXNwZWMgc3Rf
Y3RpbWVzcGVjOwojIDEwOSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNAogb2ZmX3Qgc3Rf
c2l6ZTsKIGludDY0X3Qgc3RfYmxvY2tzOwogdV9pbnQzMl90IHN0X2Jsa3NpemU7CiB1X2ludDMy
X3Qgc3RfZmxhZ3M7CiB1X2ludDMyX3Qgc3RfZ2VuOwogaW50MzJfdCBzdF9sc3BhcmU7CiBpbnQ2
NF90IHN0X3FzcGFyZVsyXTsKfTsKIyAyMTggIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQK
CmludCBjaG1vZCAoY29uc3QgY2hhciAqLCBtb2RlX3QpOwppbnQgZnN0YXQgKGludCwgc3RydWN0
IHN0YXQgKik7CmludCBta2RpciAoY29uc3QgY2hhciAqLCBtb2RlX3QpOwppbnQgbWtmaWZvIChj
b25zdCBjaGFyICosIG1vZGVfdCk7CmludCBzdGF0IChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0
ICopOwptb2RlX3QgdW1hc2sgKG1vZGVfdCk7CgppbnQgY2hmbGFncyAoY29uc3QgY2hhciAqLCB1
X2xvbmcpOwppbnQgZmNoZmxhZ3MgKGludCwgdV9sb25nKTsKaW50IGZjaG1vZCAoaW50LCBtb2Rl
X3QpOwppbnQgbHN0YXQgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQgKik7CgoKIyAzOTMgIi9W
b2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5o
IiAyCiMgNTAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3Jj
L2djYy9zeXN0ZW0uaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz
Zi9nY2Mvc3JjL2luY2x1ZGUvbGliaWJlcnR5LmgiIDEKIyA0NiAiL1ZvbHVtZXMvVUZTX1BhcnRp
dGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9pbmNsdWRlL2xpYmliZXJ0eS5oIgojIDEgIi9W
b2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Ytbm9jaGVjay9saWIvZ2NjLWxpYi9wb3dl
cnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyA0NyAiL1Zv
bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9pbmNsdWRlL2xpYmli
ZXJ0eS5oIiAyCgoKCgoKCgpleHRlcm4gY2hhciAqKmJ1aWxkYXJndiAoY29uc3QgY2hhciAqKSBf
X2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCBmcmVlYXJndiAoY2hh
ciAqKik7CgoKCgpleHRlcm4gY2hhciAqKmR1cGFyZ3YgKGNoYXIgKiopIF9fYXR0cmlidXRlX18g
KChfX21hbGxvY19fKSk7CiMgNzggIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMv
ZnNmL2djYy9zcmMvaW5jbHVkZS9saWJpYmVydHkuaCIKZXh0ZXJuIGNoYXIgKmJhc2VuYW1lIChj
b25zdCBjaGFyICopOwoKCgoKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKmxiYXNlbmFtZSAoY29uc3Qg
Y2hhciAqKTsKCgoKZXh0ZXJuIGNoYXIgKmxyZWFscGF0aCAoY29uc3QgY2hhciAqKTsKCgoKCgpl
eHRlcm4gY2hhciAqY29uY2F0IChjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKF9f
bWFsbG9jX18pKTsKIyAxMDUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNm
L2djYy9zcmMvaW5jbHVkZS9saWJpYmVydHkuaCIKZXh0ZXJuIGNoYXIgKnJlY29uY2F0IChjaGFy
ICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoK
CmV4dGVybiB1bnNpZ25lZCBsb25nIGNvbmNhdF9sZW5ndGggKGNvbnN0IGNoYXIgKiwgLi4uKTsK
CgoKCgoKZXh0ZXJuIGNoYXIgKmNvbmNhdF9jb3B5IChjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4u
KTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNvbmNhdF9jb3B5MiAoY29uc3QgY2hhciAqLCAuLi4pOwoK
CgpleHRlcm4gY2hhciAqbGliaWJlcnR5X2NvbmNhdF9wdHI7CiMgMTQxICIvVm9sdW1lcy9VRlNf
UGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvbGliaWJlcnR5LmgiCmV4
dGVybiBpbnQgZmRtYXRjaCAoaW50IGZkMSwgaW50IGZkMik7CgoKCgpleHRlcm4gY2hhciAqIGdl
dHB3ZCAodm9pZCk7CgoKCmV4dGVybiBsb25nIGdldF9ydW5fdGltZSAodm9pZCk7CgoKCgpleHRl
cm4gY2hhciAqbWFrZV9yZWxhdGl2ZV9wcmVmaXggKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICopOwoKCgoKZXh0ZXJuIGNoYXIgKmNob29zZV90ZW1wX2Jhc2UgKHZvaWQp
IF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4dGVybiBjaGFyICptYWtlX3RlbXBf
ZmlsZSAoY29uc3QgY2hhciAqKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRl
cm4gY29uc3QgY2hhciAqc3BhY2VzIChpbnQgY291bnQpOwoKCgoKZXh0ZXJuIGludCBlcnJub19t
YXggKHZvaWQpOwoKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKnN0cmVycm5vIChpbnQpOwoKCgpleHRl
cm4gaW50IHN0cnRvZXJybm8gKGNvbnN0IGNoYXIgKik7CgoKCmV4dGVybiBjaGFyICp4c3RyZXJy
b3IgKGludCk7CgoKCgpleHRlcm4gaW50IHNpZ25vX21heCAodm9pZCk7CiMgMjAzICIvVm9sdW1l
cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvbGliaWJlcnR5
LmgiCmV4dGVybiBjb25zdCBjaGFyICpzdHJzaWdubyAoaW50KTsKCgoKZXh0ZXJuIGludCBzdHJ0
b3NpZ25vIChjb25zdCBjaGFyICopOwoKCgpleHRlcm4gaW50IHhhdGV4aXQgKHZvaWQgKCpmbikg
KHZvaWQpKTsKCgoKZXh0ZXJuIHZvaWQgeGV4aXQgKGludCBzdGF0dXMpIF9fYXR0cmlidXRlX18g
KChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIHZvaWQgeG1hbGxvY19zZXRfcHJvZ3JhbV9uYW1l
IChjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHhtYWxsb2NfZmFpbGVkIChzaXplX3QpIF9f
YXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgpleHRlcm4gdm9pZCAqIHhtYWxsb2Mg
KHNpemVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gdm9pZCAq
IHhyZWFsbG9jICh2b2lkICosIHNpemVfdCk7CgoKCgpleHRlcm4gdm9pZCAqIHhjYWxsb2MgKHNp
emVfdCwgc2l6ZV90KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gY2hh
ciAqeHN0cmR1cCAoY29uc3QgY2hhciAqKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoK
CgpleHRlcm4gdm9pZCAqIHhtZW1kdXAgKGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QpIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKZXh0ZXJuIGRvdWJsZSBwaHlzbWVtX3RvdGFs
ICh2b2lkKTsKZXh0ZXJuIGRvdWJsZSBwaHlzbWVtX2F2YWlsYWJsZSAodm9pZCk7CgoKCgoKZXh0
ZXJuIGNvbnN0IGNoYXIgX2hleF92YWx1ZVsyNTZdOwpleHRlcm4gdm9pZCBoZXhfaW5pdCAodm9p
ZCk7CiMgMjc0ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3Jj
L2luY2x1ZGUvbGliaWJlcnR5LmgiCmV4dGVybiBpbnQgcGV4ZWN1dGUgKGNvbnN0IGNoYXIgKiwg
Y2hhciAqIGNvbnN0ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICoqLCBjaGFy
ICoqLCBpbnQpOwoKCgoKZXh0ZXJuIGludCBwd2FpdCAoaW50LCBpbnQgKiwgaW50KTsKCgoKCgpl
eHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1
dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9ubnVsbF9fICgyKSkpOwojIDMwNCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny
Yy9mc2YvZ2NjL3NyYy9pbmNsdWRlL2xpYmliZXJ0eS5oIgpleHRlcm4gdm9pZCAqIENfYWxsb2Nh
IChzaXplX3QpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgNTAyICIvVm9sdW1lcy9V
RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIgMgojIDEg
Ii9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvaW5jbHVkZS9z
eW1jYXQuaCIgMQojIDUwMyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv
Z2NjL3NyYy9nY2Mvc3lzdGVtLmgiIDIKIyA1NjEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGlu
c2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0
aXRpb24vcGluc2tpYS9mc2Ytbm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndp
bjYuNS8zLjQvaW5jbHVkZS9zdGRib29sLmgiIDEgMyA0CiMgNTYyICIvVm9sdW1lcy9VRlNfUGFy
dGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIgMgojIDI0ICIvVm9s
dW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLXByZXR0eS1w
cmludC5jIiAyCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2Nj
L3NyYy9nY2MvY29yZXR5cGVzLmgiIDEKIyA0MCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5z
a2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvY29yZXR5cGVzLmgiCnN0cnVjdCBydHhfZGVmOwp0eXBl
ZGVmIHN0cnVjdCBydHhfZGVmICpydHg7CnN0cnVjdCBydHZlY19kZWY7CnR5cGVkZWYgc3RydWN0
IHJ0dmVjX2RlZiAqcnR2ZWM7CnVuaW9uIHRyZWVfbm9kZTsKdHlwZWRlZiB1bmlvbiB0cmVlX25v
ZGUgKnRyZWU7CgoKCgoKc3RydWN0IGNwcF9yZWFkZXI7CiMgMjUgIi9Wb2x1bWVzL1VGU19QYXJ0
aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtcHJldHR5LXByaW50LmMiIDIKIyAx
ICJ0bS5oIiAxCgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2dj
Yy9zcmMvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgiIDEKIyAxMTcgIi9Wb2x1bWVzL1VGU19Q
YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAw
LmgiCmV4dGVybiBpbnQgdGFyZ2V0X2ZsYWdzOwojIDMzNCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv
bi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIKZW51
bSBwcm9jZXNzb3JfdHlwZQogewogICBQUk9DRVNTT1JfUklPUzEsCiAgIFBST0NFU1NPUl9SSU9T
MiwKICAgUFJPQ0VTU09SX1JTNjRBLAogICBQUk9DRVNTT1JfTVBDQ09SRSwKICAgUFJPQ0VTU09S
X1BQQzQwMywKICAgUFJPQ0VTU09SX1BQQzQwNSwKICAgUFJPQ0VTU09SX1BQQzQ0MCwKICAgUFJP
Q0VTU09SX1BQQzYwMSwKICAgUFJPQ0VTU09SX1BQQzYwMywKICAgUFJPQ0VTU09SX1BQQzYwNCwK
ICAgUFJPQ0VTU09SX1BQQzYwNGUsCiAgIFBST0NFU1NPUl9QUEM2MjAsCiAgIFBST0NFU1NPUl9Q
UEM2MzAsCiAgIFBST0NFU1NPUl9QUEM3NTAsCiAgIFBST0NFU1NPUl9QUEM3NDAwLAogICBQUk9D
RVNTT1JfUFBDNzQ1MCwKICAgUFJPQ0VTU09SX1BQQzg1NDAsCiAgIFBST0NFU1NPUl9QT1dFUjQK
fTsKCmV4dGVybiBlbnVtIHByb2Nlc3Nvcl90eXBlIHJzNjAwMF9jcHU7CiMgNDA3ICIvVm9sdW1l
cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jb25maWcvcnM2MDAw
L3JzNjAwMC5oIgpzdHJ1Y3QgcnM2MDAwX2NwdV9zZWxlY3QKewogIGNvbnN0IGNoYXIgKnN0cmlu
ZzsKICBjb25zdCBjaGFyICpuYW1lOwogIGludCBzZXRfdHVuZV9wOwogIGludCBzZXRfYXJjaF9w
Owp9OwoKZXh0ZXJuIHN0cnVjdCByczYwMDBfY3B1X3NlbGVjdCByczYwMDBfc2VsZWN0W107CgoK
ZXh0ZXJuIGNvbnN0IGNoYXIgKnJzNjAwMF9kZWJ1Z19uYW1lOwpleHRlcm4gY29uc3QgY2hhciAq
cnM2MDAwX2FiaV9zdHJpbmc7CmV4dGVybiBpbnQgcnM2MDAwX2RlYnVnX3N0YWNrOwpleHRlcm4g
aW50IHJzNjAwMF9kZWJ1Z19hcmc7CgoKCgpleHRlcm4gY29uc3QgY2hhciAqcnM2MDAwX3RyYWNl
YmFja19uYW1lOwoKCgpleHRlcm4gY29uc3QgY2hhciAqcnM2MDAwX2xvbmdfZG91YmxlX3NpemVf
c3RyaW5nOwpleHRlcm4gaW50IHJzNjAwMF9sb25nX2RvdWJsZV90eXBlX3NpemU7CmV4dGVybiBp
bnQgcnM2MDAwX2FsdGl2ZWNfYWJpOwpleHRlcm4gaW50IHJzNjAwMF9zcGVfYWJpOwpleHRlcm4g
aW50IHJzNjAwMF9pc2VsOwpleHRlcm4gaW50IHJzNjAwMF9zcGU7CmV4dGVybiBpbnQgcnM2MDAw
X2Zsb2F0X2dwcnM7CmV4dGVybiBjb25zdCBjaGFyICpyczYwMDBfZmxvYXRfZ3Byc19zdHJpbmc7
CmV4dGVybiBjb25zdCBjaGFyICpyczYwMDBfaXNlbF9zdHJpbmc7CmV4dGVybiBjb25zdCBjaGFy
ICpyczYwMDBfc3BlX3N0cmluZzsKZXh0ZXJuIGNvbnN0IGNoYXIgKnJzNjAwMF9hbHRpdmVjX3Zy
c2F2ZV9zdHJpbmc7CmV4dGVybiBpbnQgcnM2MDAwX2FsdGl2ZWNfdnJzYXZlOwpleHRlcm4gY29u
c3QgY2hhciAqcnM2MDAwX2xvbmdjYWxsX3N3aXRjaDsKZXh0ZXJuIGludCByczYwMDBfZGVmYXVs
dF9sb25nX2NhbGxzOwojIDk5OSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9m
c2YvZ2NjL3NyYy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIKZXh0ZXJuIGludCByczYwMDBf
YnJhbmNoX2Nvc3Q7CmV4dGVybiBjb25zdCBjaGFyICpyczYwMDBfYnJhbmNoX2Nvc3Rfc3RyaW5n
OwojIDExMzkgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMv
Z2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgiCmVudW0gcmVnX2NsYXNzCnsKICBOT19SRUdTLAog
IEJBU0VfUkVHUywKICBHRU5FUkFMX1JFR1MsCiAgRkxPQVRfUkVHUywKICBBTFRJVkVDX1JFR1Ms
CiAgVlJTQVZFX1JFR1MsCiAgVlNDUl9SRUdTLAogIFNQRV9BQ0NfUkVHUywKICBTUEVGU0NSX1JF
R1MsCiAgTk9OX1NQRUNJQUxfUkVHUywKICBNUV9SRUdTLAogIExJTktfUkVHUywKICBDVFJfUkVH
UywKICBMSU5LX09SX0NUUl9SRUdTLAogIFNQRUNJQUxfUkVHUywKICBTUEVDX09SX0dFTl9SRUdT
LAogIENSMF9SRUdTLAogIENSX1JFR1MsCiAgTk9OX0ZMT0FUX1JFR1MsCiAgWEVSX1JFR1MsCiAg
QUxMX1JFR1MsCiAgTElNX1JFR19DTEFTU0VTCn07CiMgMTM5NyAiL1ZvbHVtZXMvVUZTX1BhcnRp
dGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIK
ZW51bSByczYwMDBfYWJpIHsKICBBQklfTk9ORSwKICBBQklfQUlYLAogIEFCSV9WNCwKICBBQklf
REFSV0lOCn07CgpleHRlcm4gZW51bSByczYwMDBfYWJpIHJzNjAwMF9jdXJyZW50X2FiaTsKCgp0
eXBlZGVmIHN0cnVjdCByczYwMDBfc3RhY2sgewogIGludCBmaXJzdF9ncF9yZWdfc2F2ZTsKICBp
bnQgZmlyc3RfZnBfcmVnX3NhdmU7CiAgaW50IGZpcnN0X2FsdGl2ZWNfcmVnX3NhdmU7CiAgaW50
IGxyX3NhdmVfcDsKICBpbnQgY3Jfc2F2ZV9wOwogIHVuc2lnbmVkIGludCB2cnNhdmVfbWFzazsK
ICBpbnQgdG9jX3NhdmVfcDsKICBpbnQgcHVzaF9wOwogIGludCBjYWxsc19wOwogIGVudW0gcnM2
MDAwX2FiaSBhYmk7CiAgaW50IGdwX3NhdmVfb2Zmc2V0OwogIGludCBmcF9zYXZlX29mZnNldDsK
ICBpbnQgYWx0aXZlY19zYXZlX29mZnNldDsKICBpbnQgbHJfc2F2ZV9vZmZzZXQ7CiAgaW50IGNy
X3NhdmVfb2Zmc2V0OwogIGludCB2cnNhdmVfc2F2ZV9vZmZzZXQ7CiAgaW50IHNwZV9ncF9zYXZl
X29mZnNldDsKICBpbnQgdG9jX3NhdmVfb2Zmc2V0OwogIGludCB2YXJhcmdzX3NhdmVfb2Zmc2V0
OwogIGludCBlaHJkX29mZnNldDsKICBpbnQgcmVnX3NpemU7CiAgaW50IHZhcmFyZ3Nfc2l6ZTsK
ICBpbnQgdmFyc19zaXplOwogIGludCBwYXJtX3NpemU7CiAgaW50IHNhdmVfc2l6ZTsKICBpbnQg
Zml4ZWRfc2l6ZTsKICBpbnQgZ3Bfc2l6ZTsKICBpbnQgZnBfc2l6ZTsKICBpbnQgYWx0aXZlY19z
aXplOwogIGludCBjcl9zaXplOwogIGludCBscl9zaXplOwogIGludCB2cnNhdmVfc2l6ZTsKICBp
bnQgYWx0aXZlY19wYWRkaW5nX3NpemU7CgogIGludCBzcGVfZ3Bfc2l6ZTsKICBpbnQgc3BlX3Bh
ZGRpbmdfc2l6ZTsKICBpbnQgdG9jX3NpemU7CiAgaW50IHRvdGFsX3NpemU7CiAgaW50IHNwZV82
NGJpdF9yZWdzX3VzZWQ7Cn0gcnM2MDAwX3N0YWNrX3Q7CiMgMTY3OCAiL1ZvbHVtZXMvVUZTX1Bh
cnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAu
aCIKdHlwZWRlZiBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbgp7CgogIGludCBzeXN2X3ZhcmFyZ3Nf
cDsKCiAgaW50IHJhX25lZWRzX2Z1bGxfZnJhbWU7CgogIGludCBpbnNuX2NoYWluX3NjYW5uZWRf
cDsKfSBtYWNoaW5lX2Z1bmN0aW9uOwojIDE3MDYgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGlu
c2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgiCnR5cGVkZWYg
c3RydWN0IHJzNjAwMF9hcmdzCnsKICBpbnQgd29yZHM7CiAgaW50IGZyZWdubzsKICBpbnQgdnJl
Z25vOwogIGludCBuYXJnc19wcm90b3R5cGU7CiAgaW50IG9yaWdfbmFyZ3M7CiAgaW50IHByb3Rv
dHlwZTsKICBpbnQgY2FsbF9jb29raWU7CiAgaW50IHN5c3ZfZ3JlZ25vOwp9IENVTVVMQVRJVkVf
QVJHUzsKIyAyMzg1ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mv
c3JjL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5oIgpleHRlcm4gcnR4IHJzNjAwMF9jb21wYXJl
X29wMDsKZXh0ZXJuIHJ0eCByczYwMDBfY29tcGFyZV9vcDE7CmV4dGVybiBpbnQgcnM2MDAwX2Nv
bXBhcmVfZnBfcDsKIyAyNDAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz
Zi9nY2Mvc3JjL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5oIgpleHRlcm4gaW50IHRvY19pbml0
aWFsaXplZDsKIyAyNTAzICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n
Y2Mvc3JjL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5oIgpleHRlcm4gY2hhciByczYwMDBfcmVn
X25hbWVzW11bOF07CiMgMjgxNSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9m
c2YvZ2NjL3NyYy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIKZXh0ZXJuIGludCBmbGFnX3Bp
YzsKZXh0ZXJuIGludCBvcHRpbWl6ZTsKZXh0ZXJuIGludCBmbGFnX2V4cGVuc2l2ZV9vcHRpbWl6
YXRpb25zOwpleHRlcm4gaW50IGZyYW1lX3BvaW50ZXJfbmVlZGVkOwoKZW51bSByczYwMDBfYnVp
bHRpbnMKewoKICBBTFRJVkVDX0JVSUxUSU5fU1RfSU5URVJOQUxfNHNpLAogIEFMVElWRUNfQlVJ
TFRJTl9MRF9JTlRFUk5BTF80c2ksCiAgQUxUSVZFQ19CVUlMVElOX1NUX0lOVEVSTkFMXzhoaSwK
ICBBTFRJVkVDX0JVSUxUSU5fTERfSU5URVJOQUxfOGhpLAogIEFMVElWRUNfQlVJTFRJTl9TVF9J
TlRFUk5BTF8xNnFpLAogIEFMVElWRUNfQlVJTFRJTl9MRF9JTlRFUk5BTF8xNnFpLAogIEFMVElW
RUNfQlVJTFRJTl9TVF9JTlRFUk5BTF80c2YsCiAgQUxUSVZFQ19CVUlMVElOX0xEX0lOVEVSTkFM
XzRzZiwKICBBTFRJVkVDX0JVSUxUSU5fVkFERFVCTSwKICBBTFRJVkVDX0JVSUxUSU5fVkFERFVI
TSwKICBBTFRJVkVDX0JVSUxUSU5fVkFERFVXTSwKICBBTFRJVkVDX0JVSUxUSU5fVkFEREZQLAog
IEFMVElWRUNfQlVJTFRJTl9WQUREQ1VXLAogIEFMVElWRUNfQlVJTFRJTl9WQUREVUJTLAogIEFM
VElWRUNfQlVJTFRJTl9WQUREU0JTLAogIEFMVElWRUNfQlVJTFRJTl9WQUREVUhTLAogIEFMVElW
RUNfQlVJTFRJTl9WQUREU0hTLAogIEFMVElWRUNfQlVJTFRJTl9WQUREVVdTLAogIEFMVElWRUNf
QlVJTFRJTl9WQUREU1dTLAogIEFMVElWRUNfQlVJTFRJTl9WQU5ELAogIEFMVElWRUNfQlVJTFRJ
Tl9WQU5EQywKICBBTFRJVkVDX0JVSUxUSU5fVkFWR1VCLAogIEFMVElWRUNfQlVJTFRJTl9WQVZH
U0IsCiAgQUxUSVZFQ19CVUlMVElOX1ZBVkdVSCwKICBBTFRJVkVDX0JVSUxUSU5fVkFWR1NILAog
IEFMVElWRUNfQlVJTFRJTl9WQVZHVVcsCiAgQUxUSVZFQ19CVUlMVElOX1ZBVkdTVywKICBBTFRJ
VkVDX0JVSUxUSU5fVkNGVVgsCiAgQUxUSVZFQ19CVUlMVElOX1ZDRlNYLAogIEFMVElWRUNfQlVJ
TFRJTl9WQ1RTWFMsCiAgQUxUSVZFQ19CVUlMVElOX1ZDVFVYUywKICBBTFRJVkVDX0JVSUxUSU5f
VkNNUEJGUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVUIsCiAgQUxUSVZFQ19CVUlMVElOX1ZD
TVBFUVVILAogIEFMVElWRUNfQlVJTFRJTl9WQ01QRVFVVywKICBBTFRJVkVDX0JVSUxUSU5fVkNN
UEVRRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZDTVBHRUZQLAogIEFMVElWRUNfQlVJTFRJTl9WQ01Q
R1RVQiwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUU0IsCiAgQUxUSVZFQ19CVUlMVElOX1ZDTVBH
VFVILAogIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RTSCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdU
VVcsCiAgQUxUSVZFQ19CVUlMVElOX1ZDTVBHVFNXLAogIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RG
UCwKICBBTFRJVkVDX0JVSUxUSU5fVkVYUFRFRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZMT0dFRlAs
CiAgQUxUSVZFQ19CVUlMVElOX1ZNQURERlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZNQVhVQiwKICBB
TFRJVkVDX0JVSUxUSU5fVk1BWFNCLAogIEFMVElWRUNfQlVJTFRJTl9WTUFYVUgsCiAgQUxUSVZF
Q19CVUlMVElOX1ZNQVhTSCwKICBBTFRJVkVDX0JVSUxUSU5fVk1BWFVXLAogIEFMVElWRUNfQlVJ
TFRJTl9WTUFYU1csCiAgQUxUSVZFQ19CVUlMVElOX1ZNQVhGUCwKICBBTFRJVkVDX0JVSUxUSU5f
Vk1IQUREU0hTLAogIEFMVElWRUNfQlVJTFRJTl9WTUhSQUREU0hTLAogIEFMVElWRUNfQlVJTFRJ
Tl9WTUxBRERVSE0sCiAgQUxUSVZFQ19CVUlMVElOX1ZNUkdIQiwKICBBTFRJVkVDX0JVSUxUSU5f
Vk1SR0hILAogIEFMVElWRUNfQlVJTFRJTl9WTVJHSFcsCiAgQUxUSVZFQ19CVUlMVElOX1ZNUkdM
QiwKICBBTFRJVkVDX0JVSUxUSU5fVk1SR0xILAogIEFMVElWRUNfQlVJTFRJTl9WTVJHTFcsCiAg
QUxUSVZFQ19CVUlMVElOX1ZNU1VNVUJNLAogIEFMVElWRUNfQlVJTFRJTl9WTVNVTU1CTSwKICBB
TFRJVkVDX0JVSUxUSU5fVk1TVU1VSE0sCiAgQUxUSVZFQ19CVUlMVElOX1ZNU1VNU0hNLAogIEFM
VElWRUNfQlVJTFRJTl9WTVNVTVVIUywKICBBTFRJVkVDX0JVSUxUSU5fVk1TVU1TSFMsCiAgQUxU
SVZFQ19CVUlMVElOX1ZNSU5VQiwKICBBTFRJVkVDX0JVSUxUSU5fVk1JTlNCLAogIEFMVElWRUNf
QlVJTFRJTl9WTUlOVUgsCiAgQUxUSVZFQ19CVUlMVElOX1ZNSU5TSCwKICBBTFRJVkVDX0JVSUxU
SU5fVk1JTlVXLAogIEFMVElWRUNfQlVJTFRJTl9WTUlOU1csCiAgQUxUSVZFQ19CVUlMVElOX1ZN
SU5GUCwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTEVVQiwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTEVT
QiwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTEVVSCwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTEVTSCwK
ICBBTFRJVkVDX0JVSUxUSU5fVk1VTE9VQiwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTE9TQiwKICBB
TFRJVkVDX0JVSUxUSU5fVk1VTE9VSCwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTE9TSCwKICBBTFRJ
VkVDX0JVSUxUSU5fVk5NU1VCRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZOT1IsCiAgQUxUSVZFQ19C
VUlMVElOX1ZPUiwKICBBTFRJVkVDX0JVSUxUSU5fVlNFTF80U0ksCiAgQUxUSVZFQ19CVUlMVElO
X1ZTRUxfNFNGLAogIEFMVElWRUNfQlVJTFRJTl9WU0VMXzhISSwKICBBTFRJVkVDX0JVSUxUSU5f
VlNFTF8xNlFJLAogIEFMVElWRUNfQlVJTFRJTl9WUEVSTV80U0ksCiAgQUxUSVZFQ19CVUlMVElO
X1ZQRVJNXzRTRiwKICBBTFRJVkVDX0JVSUxUSU5fVlBFUk1fOEhJLAogIEFMVElWRUNfQlVJTFRJ
Tl9WUEVSTV8xNlFJLAogIEFMVElWRUNfQlVJTFRJTl9WUEtVSFVNLAogIEFMVElWRUNfQlVJTFRJ
Tl9WUEtVV1VNLAogIEFMVElWRUNfQlVJTFRJTl9WUEtQWCwKICBBTFRJVkVDX0JVSUxUSU5fVlBL
VUhTUywKICBBTFRJVkVDX0JVSUxUSU5fVlBLU0hTUywKICBBTFRJVkVDX0JVSUxUSU5fVlBLVVdT
UywKICBBTFRJVkVDX0JVSUxUSU5fVlBLU1dTUywKICBBTFRJVkVDX0JVSUxUSU5fVlBLVUhVUywK
ICBBTFRJVkVDX0JVSUxUSU5fVlBLU0hVUywKICBBTFRJVkVDX0JVSUxUSU5fVlBLVVdVUywKICBB
TFRJVkVDX0JVSUxUSU5fVlBLU1dVUywKICBBTFRJVkVDX0JVSUxUSU5fVlJFRlAsCiAgQUxUSVZF
Q19CVUlMVElOX1ZSRklNLAogIEFMVElWRUNfQlVJTFRJTl9WUkZJTiwKICBBTFRJVkVDX0JVSUxU
SU5fVlJGSVAsCiAgQUxUSVZFQ19CVUlMVElOX1ZSRklaLAogIEFMVElWRUNfQlVJTFRJTl9WUkxC
LAogIEFMVElWRUNfQlVJTFRJTl9WUkxILAogIEFMVElWRUNfQlVJTFRJTl9WUkxXLAogIEFMVElW
RUNfQlVJTFRJTl9WUlNRUlRFRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZTTEIsCiAgQUxUSVZFQ19C
VUlMVElOX1ZTTEgsCiAgQUxUSVZFQ19CVUlMVElOX1ZTTFcsCiAgQUxUSVZFQ19CVUlMVElOX1ZT
TCwKICBBTFRJVkVDX0JVSUxUSU5fVlNMTywKICBBTFRJVkVDX0JVSUxUSU5fVlNQTFRCLAogIEFM
VElWRUNfQlVJTFRJTl9WU1BMVEgsCiAgQUxUSVZFQ19CVUlMVElOX1ZTUExUVywKICBBTFRJVkVD
X0JVSUxUSU5fVlNQTFRJU0IsCiAgQUxUSVZFQ19CVUlMVElOX1ZTUExUSVNILAogIEFMVElWRUNf
QlVJTFRJTl9WU1BMVElTVywKICBBTFRJVkVDX0JVSUxUSU5fVlNSQiwKICBBTFRJVkVDX0JVSUxU
SU5fVlNSSCwKICBBTFRJVkVDX0JVSUxUSU5fVlNSVywKICBBTFRJVkVDX0JVSUxUSU5fVlNSQUIs
CiAgQUxUSVZFQ19CVUlMVElOX1ZTUkFILAogIEFMVElWRUNfQlVJTFRJTl9WU1JBVywKICBBTFRJ
VkVDX0JVSUxUSU5fVlNSLAogIEFMVElWRUNfQlVJTFRJTl9WU1JPLAogIEFMVElWRUNfQlVJTFRJ
Tl9WU1VCVUJNLAogIEFMVElWRUNfQlVJTFRJTl9WU1VCVUhNLAogIEFMVElWRUNfQlVJTFRJTl9W
U1VCVVdNLAogIEFMVElWRUNfQlVJTFRJTl9WU1VCRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJD
VVcsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJVQlMsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJTQlMs
CiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJVSFMsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJTSFMsCiAg
QUxUSVZFQ19CVUlMVElOX1ZTVUJVV1MsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJTV1MsCiAgQUxU
SVZFQ19CVUlMVElOX1ZTVU00VUJTLAogIEFMVElWRUNfQlVJTFRJTl9WU1VNNFNCUywKICBBTFRJ
VkVDX0JVSUxUSU5fVlNVTTRTSFMsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVU0yU1dTLAogIEFMVElW
RUNfQlVJTFRJTl9WU1VNU1dTLAogIEFMVElWRUNfQlVJTFRJTl9WWE9SLAogIEFMVElWRUNfQlVJ
TFRJTl9WU0xET0lfMTZRSSwKICBBTFRJVkVDX0JVSUxUSU5fVlNMRE9JXzhISSwKICBBTFRJVkVD
X0JVSUxUSU5fVlNMRE9JXzRTSSwKICBBTFRJVkVDX0JVSUxUSU5fVlNMRE9JXzRTRiwKICBBTFRJ
VkVDX0JVSUxUSU5fVlVQS0hTQiwKICBBTFRJVkVDX0JVSUxUSU5fVlVQS0hQWCwKICBBTFRJVkVD
X0JVSUxUSU5fVlVQS0hTSCwKICBBTFRJVkVDX0JVSUxUSU5fVlVQS0xTQiwKICBBTFRJVkVDX0JV
SUxUSU5fVlVQS0xQWCwKICBBTFRJVkVDX0JVSUxUSU5fVlVQS0xTSCwKICBBTFRJVkVDX0JVSUxU
SU5fTVRWU0NSLAogIEFMVElWRUNfQlVJTFRJTl9NRlZTQ1IsCiAgQUxUSVZFQ19CVUlMVElOX0RT
U0FMTCwKICBBTFRJVkVDX0JVSUxUSU5fRFNTLAogIEFMVElWRUNfQlVJTFRJTl9MVlNMLAogIEFM
VElWRUNfQlVJTFRJTl9MVlNSLAogIEFMVElWRUNfQlVJTFRJTl9EU1RULAogIEFMVElWRUNfQlVJ
TFRJTl9EU1RTVCwKICBBTFRJVkVDX0JVSUxUSU5fRFNUU1RULAogIEFMVElWRUNfQlVJTFRJTl9E
U1QsCiAgQUxUSVZFQ19CVUlMVElOX0xWRUJYLAogIEFMVElWRUNfQlVJTFRJTl9MVkVIWCwKICBB
TFRJVkVDX0JVSUxUSU5fTFZFV1gsCiAgQUxUSVZFQ19CVUlMVElOX0xWWEwsCiAgQUxUSVZFQ19C
VUlMVElOX0xWWCwKICBBTFRJVkVDX0JVSUxUSU5fU1RWWCwKICBBTFRJVkVDX0JVSUxUSU5fU1RW
RUJYLAogIEFMVElWRUNfQlVJTFRJTl9TVFZFSFgsCiAgQUxUSVZFQ19CVUlMVElOX1NUVkVXWCwK
ICBBTFRJVkVDX0JVSUxUSU5fU1RWWEwsCiAgQUxUSVZFQ19CVUlMVElOX1ZDTVBCRlBfUCwKICBB
TFRJVkVDX0JVSUxUSU5fVkNNUEVRRlBfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVUJfUCwK
ICBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVUhfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVVdf
UCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdFRlBfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdU
RlBfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUU0JfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNN
UEdUU0hfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUU1dfUCwKICBBTFRJVkVDX0JVSUxUSU5f
VkNNUEdUVUJfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUVUhfUCwKICBBTFRJVkVDX0JVSUxU
SU5fVkNNUEdUVVdfUCwKICBBTFRJVkVDX0JVSUxUSU5fQUJTU19WNFNJLAogIEFMVElWRUNfQlVJ
TFRJTl9BQlNTX1Y4SEksCiAgQUxUSVZFQ19CVUlMVElOX0FCU1NfVjE2UUksCiAgQUxUSVZFQ19C
VUlMVElOX0FCU19WNFNJLAogIEFMVElWRUNfQlVJTFRJTl9BQlNfVjRTRiwKICBBTFRJVkVDX0JV
SUxUSU5fQUJTX1Y4SEksCiAgQUxUSVZFQ19CVUlMVElOX0FCU19WMTZRSQoKICAsIFNQRV9CVUlM
VElOX0VWQUREVywKICBTUEVfQlVJTFRJTl9FVkFORCwKICBTUEVfQlVJTFRJTl9FVkFOREMsCiAg
U1BFX0JVSUxUSU5fRVZESVZXUywKICBTUEVfQlVJTFRJTl9FVkRJVldVLAogIFNQRV9CVUlMVElO
X0VWRVFWLAogIFNQRV9CVUlMVElOX0VWRlNBREQsCiAgU1BFX0JVSUxUSU5fRVZGU0RJViwKICBT
UEVfQlVJTFRJTl9FVkZTTVVMLAogIFNQRV9CVUlMVElOX0VWRlNTVUIsCiAgU1BFX0JVSUxUSU5f
RVZMRERYLAogIFNQRV9CVUlMVElOX0VWTERIWCwKICBTUEVfQlVJTFRJTl9FVkxEV1gsCiAgU1BF
X0JVSUxUSU5fRVZMSEhFU1BMQVRYLAogIFNQRV9CVUlMVElOX0VWTEhIT1NTUExBVFgsCiAgU1BF
X0JVSUxUSU5fRVZMSEhPVVNQTEFUWCwKICBTUEVfQlVJTFRJTl9FVkxXSEVYLAogIFNQRV9CVUlM
VElOX0VWTFdIT1NYLAogIFNQRV9CVUlMVElOX0VWTFdIT1VYLAogIFNQRV9CVUlMVElOX0VWTFdI
U1BMQVRYLAogIFNQRV9CVUlMVElOX0VWTFdXU1BMQVRYLAogIFNQRV9CVUlMVElOX0VWTUVSR0VI
SSwKICBTUEVfQlVJTFRJTl9FVk1FUkdFSElMTywKICBTUEVfQlVJTFRJTl9FVk1FUkdFTE8sCiAg
U1BFX0JVSUxUSU5fRVZNRVJHRUxPSEksCiAgU1BFX0JVSUxUSU5fRVZNSEVHU01GQUEsCiAgU1BF
X0JVSUxUSU5fRVZNSEVHU01GQU4sCiAgU1BFX0JVSUxUSU5fRVZNSEVHU01JQUEsCiAgU1BFX0JV
SUxUSU5fRVZNSEVHU01JQU4sCiAgU1BFX0JVSUxUSU5fRVZNSEVHVU1JQUEsCiAgU1BFX0JVSUxU
SU5fRVZNSEVHVU1JQU4sCiAgU1BFX0JVSUxUSU5fRVZNSEVTTUYsCiAgU1BFX0JVSUxUSU5fRVZN
SEVTTUZBLAogIFNQRV9CVUlMVElOX0VWTUhFU01GQUFXLAogIFNQRV9CVUlMVElOX0VWTUhFU01G
QU5XLAogIFNQRV9CVUlMVElOX0VWTUhFU01JLAogIFNQRV9CVUlMVElOX0VWTUhFU01JQSwKICBT
UEVfQlVJTFRJTl9FVk1IRVNNSUFBVywKICBTUEVfQlVJTFRJTl9FVk1IRVNNSUFOVywKICBTUEVf
QlVJTFRJTl9FVk1IRVNTRiwKICBTUEVfQlVJTFRJTl9FVk1IRVNTRkEsCiAgU1BFX0JVSUxUSU5f
RVZNSEVTU0ZBQVcsCiAgU1BFX0JVSUxUSU5fRVZNSEVTU0ZBTlcsCiAgU1BFX0JVSUxUSU5fRVZN
SEVTU0lBQVcsCiAgU1BFX0JVSUxUSU5fRVZNSEVTU0lBTlcsCiAgU1BFX0JVSUxUSU5fRVZNSEVV
TUksCiAgU1BFX0JVSUxUSU5fRVZNSEVVTUlBLAogIFNQRV9CVUlMVElOX0VWTUhFVU1JQUFXLAog
IFNQRV9CVUlMVElOX0VWTUhFVU1JQU5XLAogIFNQRV9CVUlMVElOX0VWTUhFVVNJQUFXLAogIFNQ
RV9CVUlMVElOX0VWTUhFVVNJQU5XLAogIFNQRV9CVUlMVElOX0VWTUhPR1NNRkFBLAogIFNQRV9C
VUlMVElOX0VWTUhPR1NNRkFOLAogIFNQRV9CVUlMVElOX0VWTUhPR1NNSUFBLAogIFNQRV9CVUlM
VElOX0VWTUhPR1NNSUFOLAogIFNQRV9CVUlMVElOX0VWTUhPR1VNSUFBLAogIFNQRV9CVUlMVElO
X0VWTUhPR1VNSUFOLAogIFNQRV9CVUlMVElOX0VWTUhPU01GLAogIFNQRV9CVUlMVElOX0VWTUhP
U01GQSwKICBTUEVfQlVJTFRJTl9FVk1IT1NNRkFBVywKICBTUEVfQlVJTFRJTl9FVk1IT1NNRkFO
VywKICBTUEVfQlVJTFRJTl9FVk1IT1NNSSwKICBTUEVfQlVJTFRJTl9FVk1IT1NNSUEsCiAgU1BF
X0JVSUxUSU5fRVZNSE9TTUlBQVcsCiAgU1BFX0JVSUxUSU5fRVZNSE9TTUlBTlcsCiAgU1BFX0JV
SUxUSU5fRVZNSE9TU0YsCiAgU1BFX0JVSUxUSU5fRVZNSE9TU0ZBLAogIFNQRV9CVUlMVElOX0VW
TUhPU1NGQUFXLAogIFNQRV9CVUlMVElOX0VWTUhPU1NGQU5XLAogIFNQRV9CVUlMVElOX0VWTUhP
U1NJQUFXLAogIFNQRV9CVUlMVElOX0VWTUhPU1NJQU5XLAogIFNQRV9CVUlMVElOX0VWTUhPVU1J
LAogIFNQRV9CVUlMVElOX0VWTUhPVU1JQSwKICBTUEVfQlVJTFRJTl9FVk1IT1VNSUFBVywKICBT
UEVfQlVJTFRJTl9FVk1IT1VNSUFOVywKICBTUEVfQlVJTFRJTl9FVk1IT1VTSUFBVywKICBTUEVf
QlVJTFRJTl9FVk1IT1VTSUFOVywKICBTUEVfQlVJTFRJTl9FVk1XSFNNRiwKICBTUEVfQlVJTFRJ
Tl9FVk1XSFNNRkEsCiAgU1BFX0JVSUxUSU5fRVZNV0hTTUksCiAgU1BFX0JVSUxUSU5fRVZNV0hT
TUlBLAogIFNQRV9CVUlMVElOX0VWTVdIU1NGLAogIFNQRV9CVUlMVElOX0VWTVdIU1NGQSwKICBT
UEVfQlVJTFRJTl9FVk1XSFVNSSwKICBTUEVfQlVJTFRJTl9FVk1XSFVNSUEsCiAgU1BFX0JVSUxU
SU5fRVZNV0xTTUlBQVcsCiAgU1BFX0JVSUxUSU5fRVZNV0xTTUlBTlcsCiAgU1BFX0JVSUxUSU5f
RVZNV0xTU0lBQVcsCiAgU1BFX0JVSUxUSU5fRVZNV0xTU0lBTlcsCiAgU1BFX0JVSUxUSU5fRVZN
V0xVTUksCiAgU1BFX0JVSUxUSU5fRVZNV0xVTUlBLAogIFNQRV9CVUlMVElOX0VWTVdMVU1JQUFX
LAogIFNQRV9CVUlMVElOX0VWTVdMVU1JQU5XLAogIFNQRV9CVUlMVElOX0VWTVdMVVNJQUFXLAog
IFNQRV9CVUlMVElOX0VWTVdMVVNJQU5XLAogIFNQRV9CVUlMVElOX0VWTVdTTUYsCiAgU1BFX0JV
SUxUSU5fRVZNV1NNRkEsCiAgU1BFX0JVSUxUSU5fRVZNV1NNRkFBLAogIFNQRV9CVUlMVElOX0VW
TVdTTUZBTiwKICBTUEVfQlVJTFRJTl9FVk1XU01JLAogIFNQRV9CVUlMVElOX0VWTVdTTUlBLAog
IFNQRV9CVUlMVElOX0VWTVdTTUlBQSwKICBTUEVfQlVJTFRJTl9FVk1XU01JQU4sCiAgU1BFX0JV
SUxUSU5fRVZNV0hTU0ZBQSwKICBTUEVfQlVJTFRJTl9FVk1XU1NGLAogIFNQRV9CVUlMVElOX0VW
TVdTU0ZBLAogIFNQRV9CVUlMVElOX0VWTVdTU0ZBQSwKICBTUEVfQlVJTFRJTl9FVk1XU1NGQU4s
CiAgU1BFX0JVSUxUSU5fRVZNV1VNSSwKICBTUEVfQlVJTFRJTl9FVk1XVU1JQSwKICBTUEVfQlVJ
TFRJTl9FVk1XVU1JQUEsCiAgU1BFX0JVSUxUSU5fRVZNV1VNSUFOLAogIFNQRV9CVUlMVElOX0VW
TkFORCwKICBTUEVfQlVJTFRJTl9FVk5PUiwKICBTUEVfQlVJTFRJTl9FVk9SLAogIFNQRV9CVUlM
VElOX0VWT1JDLAogIFNQRV9CVUlMVElOX0VWUkxXLAogIFNQRV9CVUlMVElOX0VWU0xXLAogIFNQ
RV9CVUlMVElOX0VWU1JXUywKICBTUEVfQlVJTFRJTl9FVlNSV1UsCiAgU1BFX0JVSUxUSU5fRVZT
VEREWCwKICBTUEVfQlVJTFRJTl9FVlNUREhYLAogIFNQRV9CVUlMVElOX0VWU1REV1gsCiAgU1BF
X0JVSUxUSU5fRVZTVFdIRVgsCiAgU1BFX0JVSUxUSU5fRVZTVFdIT1gsCiAgU1BFX0JVSUxUSU5f
RVZTVFdXRVgsCiAgU1BFX0JVSUxUSU5fRVZTVFdXT1gsCiAgU1BFX0JVSUxUSU5fRVZTVUJGVywK
ICBTUEVfQlVJTFRJTl9FVlhPUiwKICBTUEVfQlVJTFRJTl9FVkFCUywKICBTUEVfQlVJTFRJTl9F
VkFERFNNSUFBVywKICBTUEVfQlVJTFRJTl9FVkFERFNTSUFBVywKICBTUEVfQlVJTFRJTl9FVkFE
RFVNSUFBVywKICBTUEVfQlVJTFRJTl9FVkFERFVTSUFBVywKICBTUEVfQlVJTFRJTl9FVkNOVExT
VywKICBTUEVfQlVJTFRJTl9FVkNOVExaVywKICBTUEVfQlVJTFRJTl9FVkVYVFNCLAogIFNQRV9C
VUlMVElOX0VWRVhUU0gsCiAgU1BFX0JVSUxUSU5fRVZGU0FCUywKICBTUEVfQlVJTFRJTl9FVkZT
Q0ZTRiwKICBTUEVfQlVJTFRJTl9FVkZTQ0ZTSSwKICBTUEVfQlVJTFRJTl9FVkZTQ0ZVRiwKICBT
UEVfQlVJTFRJTl9FVkZTQ0ZVSSwKICBTUEVfQlVJTFRJTl9FVkZTQ1RTRiwKICBTUEVfQlVJTFRJ
Tl9FVkZTQ1RTSSwKICBTUEVfQlVJTFRJTl9FVkZTQ1RTSVosCiAgU1BFX0JVSUxUSU5fRVZGU0NU
VUYsCiAgU1BFX0JVSUxUSU5fRVZGU0NUVUksCiAgU1BFX0JVSUxUSU5fRVZGU0NUVUlaLAogIFNQ
RV9CVUlMVElOX0VWRlNOQUJTLAogIFNQRV9CVUlMVElOX0VWRlNORUcsCiAgU1BFX0JVSUxUSU5f
RVZNUkEsCiAgU1BFX0JVSUxUSU5fRVZORUcsCiAgU1BFX0JVSUxUSU5fRVZSTkRXLAogIFNQRV9C
VUlMVElOX0VWU1VCRlNNSUFBVywKICBTUEVfQlVJTFRJTl9FVlNVQkZTU0lBQVcsCiAgU1BFX0JV
SUxUSU5fRVZTVUJGVU1JQUFXLAogIFNQRV9CVUlMVElOX0VWU1VCRlVTSUFBVywKICBTUEVfQlVJ
TFRJTl9FVkFERElXLAogIFNQRV9CVUlMVElOX0VWTERELAogIFNQRV9CVUlMVElOX0VWTERILAog
IFNQRV9CVUlMVElOX0VWTERXLAogIFNQRV9CVUlMVElOX0VWTEhIRVNQTEFULAogIFNQRV9CVUlM
VElOX0VWTEhIT1NTUExBVCwKICBTUEVfQlVJTFRJTl9FVkxISE9VU1BMQVQsCiAgU1BFX0JVSUxU
SU5fRVZMV0hFLAogIFNQRV9CVUlMVElOX0VWTFdIT1MsCiAgU1BFX0JVSUxUSU5fRVZMV0hPVSwK
ICBTUEVfQlVJTFRJTl9FVkxXSFNQTEFULAogIFNQRV9CVUlMVElOX0VWTFdXU1BMQVQsCiAgU1BF
X0JVSUxUSU5fRVZSTFdJLAogIFNQRV9CVUlMVElOX0VWU0xXSSwKICBTUEVfQlVJTFRJTl9FVlNS
V0lTLAogIFNQRV9CVUlMVElOX0VWU1JXSVUsCiAgU1BFX0JVSUxUSU5fRVZTVERELAogIFNQRV9C
VUlMVElOX0VWU1RESCwKICBTUEVfQlVJTFRJTl9FVlNURFcsCiAgU1BFX0JVSUxUSU5fRVZTVFdI
RSwKICBTUEVfQlVJTFRJTl9FVlNUV0hPLAogIFNQRV9CVUlMVElOX0VWU1RXV0UsCiAgU1BFX0JV
SUxUSU5fRVZTVFdXTywKICBTUEVfQlVJTFRJTl9FVlNVQklGVywKCgogIFNQRV9CVUlMVElOX0VW
Q01QRVEsCiAgU1BFX0JVSUxUSU5fRVZDTVBHVFMsCiAgU1BFX0JVSUxUSU5fRVZDTVBHVFUsCiAg
U1BFX0JVSUxUSU5fRVZDTVBMVFMsCiAgU1BFX0JVSUxUSU5fRVZDTVBMVFUsCiAgU1BFX0JVSUxU
SU5fRVZGU0NNUEVRLAogIFNQRV9CVUlMVElOX0VWRlNDTVBHVCwKICBTUEVfQlVJTFRJTl9FVkZT
Q01QTFQsCiAgU1BFX0JVSUxUSU5fRVZGU1RTVEVRLAogIFNQRV9CVUlMVElOX0VWRlNUU1RHVCwK
ICBTUEVfQlVJTFRJTl9FVkZTVFNUTFQsCgoKICBTUEVfQlVJTFRJTl9FVlNFTF9DTVBFUSwKICBT
UEVfQlVJTFRJTl9FVlNFTF9DTVBHVFMsCiAgU1BFX0JVSUxUSU5fRVZTRUxfQ01QR1RVLAogIFNQ
RV9CVUlMVElOX0VWU0VMX0NNUExUUywKICBTUEVfQlVJTFRJTl9FVlNFTF9DTVBMVFUsCiAgU1BF
X0JVSUxUSU5fRVZTRUxfRlNDTVBFUSwKICBTUEVfQlVJTFRJTl9FVlNFTF9GU0NNUEdULAogIFNQ
RV9CVUlMVElOX0VWU0VMX0ZTQ01QTFQsCiAgU1BFX0JVSUxUSU5fRVZTRUxfRlNUU1RFUSwKICBT
UEVfQlVJTFRJTl9FVlNFTF9GU1RTVEdULAogIFNQRV9CVUlMVElOX0VWU0VMX0ZTVFNUTFQsCgog
IFNQRV9CVUlMVElOX0VWU1BMQVRGSSwKICBTUEVfQlVJTFRJTl9FVlNQTEFUSSwKICBTUEVfQlVJ
TFRJTl9FVk1XSFNTTUFBLAogIFNQRV9CVUlMVElOX0VWTVdIU01GQUEsCiAgU1BFX0JVSUxUSU5f
RVZNV0hTTUlBQSwKICBTUEVfQlVJTFRJTl9FVk1XSFVTSUFBLAogIFNQRV9CVUlMVElOX0VWTVdI
VU1JQUEsCiAgU1BFX0JVSUxUSU5fRVZNV0hTU0ZBTiwKICBTUEVfQlVJTFRJTl9FVk1XSFNTSUFO
LAogIFNQRV9CVUlMVElOX0VWTVdIU01GQU4sCiAgU1BFX0JVSUxUSU5fRVZNV0hTTUlBTiwKICBT
UEVfQlVJTFRJTl9FVk1XSFVTSUFOLAogIFNQRV9CVUlMVElOX0VWTVdIVU1JQU4sCiAgU1BFX0JV
SUxUSU5fRVZNV0hHU1NGQUEsCiAgU1BFX0JVSUxUSU5fRVZNV0hHU01GQUEsCiAgU1BFX0JVSUxU
SU5fRVZNV0hHU01JQUEsCiAgU1BFX0JVSUxUSU5fRVZNV0hHVU1JQUEsCiAgU1BFX0JVSUxUSU5f
RVZNV0hHU1NGQU4sCiAgU1BFX0JVSUxUSU5fRVZNV0hHU01GQU4sCiAgU1BFX0JVSUxUSU5fRVZN
V0hHU01JQU4sCiAgU1BFX0JVSUxUSU5fRVZNV0hHVU1JQU4sCiAgU1BFX0JVSUxUSU5fTVRTUEVG
U0NSLAogIFNQRV9CVUlMVElOX01GU1BFRlNDUiwKICBTUEVfQlVJTFRJTl9CUklOQwp9OwojIDMg
InRtLmgiIDIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mv
c3JjL2djYy9jb25maWcvZGFyd2luLmgiIDEKIyA3MTUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24v
cGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2NvbmZpZy9kYXJ3aW4uaCIKZW51bSBtYWNob3Bp
Y19hZGRyX2NsYXNzIHsKICBNQUNIT1BJQ19VTkRFRklORUQsCiAgTUFDSE9QSUNfREVGSU5FRF9E
QVRBLAogIE1BQ0hPUElDX1VOREVGSU5FRF9EQVRBLAogIE1BQ0hPUElDX0RFRklORURfRlVOQ1RJ
T04sCiAgTUFDSE9QSUNfVU5ERUZJTkVEX0ZVTkNUSU9OCn07CiMgNCAidG0uaCIgMgojIDEgIi9W
b2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2NvbmZpZy9y
czYwMDAvZGFyd2luLmgiIDEKIyA1ICJ0bS5oIiAyCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv
bi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvZGVmYXVsdHMuaCIgMQojIDYgInRtLmgiIDIK
CgojIDEgImluc24tY29uc3RhbnRzLmgiIDEKIyA5ICJ0bS5oIiAyCiMgMSAiaW5zbi1mbGFncy5o
IiAxCiMgNDU1ICJpbnNuLWZsYWdzLmgiCmV4dGVybiBydHggZ2VuX2V4dGVuZHFpZGkyIChydHgs
IHJ0eCk7CmV4dGVybiBydHggZ2VuX2V4dGVuZHFpc2kyX3BwYyAocnR4LCBydHgpOwpleHRlcm4g
cnR4IGdlbl9leHRlbmRxaWhpMl9wcGMgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWRkc2kz
X2hpZ2ggKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9lcXZzaTMgKHJ0eCwgcnR4LCBy
dHgpOwpleHRlcm4gcnR4IGdlbl9lcXZkaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdl
bl9vbmVfY21wbHNpMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX2Fic3Np
Ml9pc2VsIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fYWJzc2kyX2lzZWwo
YSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBi
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpleHRlcm4gcnR4
IGdlbl9hYnNzaTJfbm9wb3dlciAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9uZWdzaTIgKHJ0
eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY2x6c2kyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu
X211bHNpM19tcSAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX211bHNpM19ub19tcSAo
cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3VkaXZzaTNfbXEgKHJ0eCwgcnR4LCBydHgp
OwpleHRlcm4gcnR4IGdlbl9kaXZzaTNfbXEgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdl
bl9tdWxoX2NhbGwgKHZvaWQpOwpleHRlcm4gcnR4IGdlbl9tdWxsX2NhbGwgKHZvaWQpOwpleHRl
cm4gcnR4IGdlbl9kaXZzc19jYWxsICh2b2lkKTsKZXh0ZXJuIHJ0eCBnZW5fZGl2dXNfY2FsbCAo
dm9pZCk7CmV4dGVybiBydHggZ2VuX3F1b3NzX2NhbGwgKHZvaWQpOwpleHRlcm4gcnR4IGdlbl9x
dW91c19jYWxsICh2b2lkKTsKZXh0ZXJuIHJ0eCBnZW5faW5zdnNpIChydHgsIHJ0eCwgcnR4LCBy
dHgpOwpleHRlcm4gcnR4IGdlbl9pbnN2ZGkgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy
dHggZ2VuX2V4dHp2c2kgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2V4dHp2
ZGkgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3JvdGxzaTMgKHJ0eCwgcnR4
LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hc2hsc2kzX3Bvd2VyIChydHgsIHJ0eCwgcnR4KTsKZXh0
ZXJuIHJ0eCBnZW5fYXNobHNpM19ub19wb3dlciAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX2xzaHJzaTNfcG93ZXIgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9sc2hyc2kz
X25vX3Bvd2VyIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYXNocnNpM19wb3dlciAo
cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FzaHJzaTNfbm9fcG93ZXIgKHJ0eCwgcnR4
LCBydHgpOwpleHRlcm4gcnR4IGdlbl9leHRlbmRzZmRmMiAocnR4LCBydHgpOwpleHRlcm4gcnR4
IGdlbl90cnVuY2Rmc2YyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2F1eF90cnVuY2Rmc2Yy
IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5faXNlbF9zaWduZWQgKHJ0eCwg
cnR4LCBydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9pc2VsX3NpZ25l
ZChhLCBiLCBjLCBkLCBlKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBkIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CiAgICAgcnR4IGUgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl
dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5faXNlbF91bnNpZ25lZCAocnR4LCBy
dHgsIHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX2lzZWxfdW5zaWdu
ZWQoYSwgYiwgYywgZCwgZSkKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggZCBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwogICAgIHJ0eCBlIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy
ZXR1cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9uZWdkZjIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fYWJzZGYyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FkZGRmMyAocnR4LCBydHgsIHJ0
eCk7CmV4dGVybiBydHggZ2VuX3N1YmRmMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu
X211bGRmMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2RpdmRmMyAocnR4LCBydHgs
IHJ0eCk7CmV4dGVybiBydHggZ2VuX3NxcnRkZjIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5f
ZmN0aXd6IChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Zsb2F0ZGlkZjIgKHJ0eCwgcnR4KTsK
ZXh0ZXJuIHJ0eCBnZW5fZmxvYXRzaWRmX3BwYzY0IChydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCk7
CmV4dGVybiBydHggZ2VuX2Zsb2F0dW5zc2lkZl9wcGM2NCAocnR4LCBydHgsIHJ0eCwgcnR4LCBy
dHgpOwpleHRlcm4gcnR4IGdlbl9maXhfdHJ1bmNkZmRpMiAocnR4LCBydHgpOwpleHRlcm4gcnR4
IGdlbl9mbG9hdGRpc2YyX2ludGVybmFsMSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tdWxz
aWRpM19tcSAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3VtdWxzaWRpM19tcSAocnR4
LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtdWxzaTNfaGlnaHBhcnRfbXEgKHJ0eCwgcnR4
LCBydHgpOwpleHRlcm4gcnR4IGdlbl91bXVsc2kzX2hpZ2hwYXJ0X21xIChydHgsIHJ0eCwgcnR4
KTsKZXh0ZXJuIHJ0eCBnZW5fYXNobGRpM19wb3dlciAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy
dHggZ2VuX2xzaHJkaTNfcG93ZXIgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hc2hy
ZGkzX3Bvd2VyIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYXNocmRpM19ub19wb3dl
ciAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX29uZV9jbXBsZGkyIChydHgsIHJ0eCk7
CmV4dGVybiBydHggZ2VuX2Fic2RpMiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9jbHpkaTIg
KHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fbXVsZGkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJu
IHJ0eCBnZW5fc211bGRpM19oaWdocGFydCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu
X3VtdWxkaTNfaGlnaHBhcnQgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl91ZGl2ZGkz
IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fcm90bGRpMyAocnR4LCBydHgsIHJ0eCk7
CmV4dGVybiBydHggZ2VuX2FzaGxkaTNfaW50ZXJuYWw1IChydHgsIHJ0eCwgcnR4LCBydHgpOwpl
eHRlcm4gcnR4IGdlbl9hc2hsZGkzX2ludGVybmFsOCAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0
ZXJuIHJ0eCBnZW5fYW5kZGkzIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4
IGdlbl9lbGZfaGlnaCAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX2VsZl9o
aWdoKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBy
dHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGlj
IF9faW5saW5lX18gcnR4IGdlbl9lbGZfbG93IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s
aW5lX18gcnR4Cmdlbl9lbGZfbG93KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog
ICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpl
eHRlcm4gcnR4IGdlbl9tYWNob19oaWdoIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21hY2hv
X2xvdyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnNpX2xvdyAocnR4LCBydHgs
IHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnNpX2xvd19zdCAocnR4LCBydHgsIHJ0eCk7CmV4dGVy
biBydHggZ2VuX21vdmRmX2xvdyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdmRm
X2xvd19zdCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnNmX2xvdyAocnR4LCBy
dHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnNmX2xvd19zdCAocnR4LCBydHgsIHJ0eCk7CnN0
YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fZXh0ZW5kZGZ0ZjIgKHJ0eCwgcnR4KTsKc3RhdGljIF9f
aW5saW5lX18gcnR4Cmdlbl9leHRlbmRkZnRmMihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fZXh0ZW5kc2Z0ZjIg
KHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9leHRlbmRzZnRmMihhLCBiKQog
ICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9f
IHJ0eCBnZW5fdHJ1bmN0ZmRmMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2Vu
X3RydW5jdGZkZjIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK
fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3RydW5jdGZzZjIgKHJ0eCwgcnR4KTsKc3RhdGlj
IF9faW5saW5lX18gcnR4Cmdlbl90cnVuY3Rmc2YyKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1
dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9mbG9hdGRpdGYy
IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fZmxvYXRkaXRmMihhLCBiKQog
ICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9f
IHJ0eCBnZW5fZmxvYXRzaXRmMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2Vu
X2Zsb2F0c2l0ZjIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK
fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX2ZpeF90cnVuY3RmZGkyIChydHgsIHJ0eCk7CnN0
YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fZml4X3RydW5jdGZkaTIoYSwgYikKICAgICBydHggYSBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX2Zp
eF90cnVuY3Rmc2kyIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fZml4X3Ry
dW5jdGZzaTIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog
ICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz
dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX25lZ3RmMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxp
bmVfXyBydHgKZ2VuX25lZ3RmMihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl
dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fYWJzdGYyIChydHgsIHJ0eCk7CnN0
YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fYWJzdGYyKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1
dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwp7CiAgcmV0dXJuIDA7Cn0KZXh0ZXJuIHJ0eCBnZW5fbW92ZGlfdXBkYXRlIChydHgsIHJ0
eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3ZzaV91cGRhdGUgKHJ0eCwgcnR4LCBydHgs
IHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fbG9hZF90b2NfYWl4X3NpIChydHgpOwpz
dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX2xvYWRfdG9jX2FpeF9zaShhKQogICAgIHJ0eCBhIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxp
bmVfXyBydHggZ2VuX2xvYWRfdG9jX2FpeF9kaSAocnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4
Cmdlbl9sb2FkX3RvY19haXhfZGkoYSkKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVz
ZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9sb2FkX3Rv
Y192NF9waWNfc2kgKHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fbG9hZF90b2NfdjRf
cGljX3NpKGEpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl
dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fbG9hZF90b2NfdjRfUElDXzEgKHJ0
eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9sb2FkX3RvY192NF9QSUNfMShhLCBi
KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eCBnZW5fbG9hZF90b2NfdjRfUElDXzFiIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f
aW5saW5lX18gcnR4Cmdlbl9sb2FkX3RvY192NF9QSUNfMWIoYSwgYiwgYykKICAgICBydHggYSBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewog
IHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fbG9hZF90b2NfdjRfUElDXzIg
KHJ0eCwgcnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fbG9hZF90b2Nf
djRfUElDXzIoYSwgYiwgYywgZCkKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggZCBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0KZXh0ZXJuIHJ0eCBnZW5fbG9hZF9tYWNob19w
aWNiYXNlIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21hY2hvX2NvcnJlY3RfcGljIChydHgs
IHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9ibG9ja2FnZSAodm9pZCk7CnN0YXRpYyBf
X2lubGluZV9fIHJ0eCBnZW5fbW92ZV9mcm9tX0NSX292X2JpdCAocnR4LCBydHgpOwpzdGF0aWMg
X19pbmxpbmVfXyBydHgKZ2VuX21vdmVfZnJvbV9DUl9vdl9iaXQoYSwgYikKICAgICBydHggYSBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9qdW1wIChydHgpOwpl
eHRlcm4gcnR4IGdlbl9yZXR1cm4gKHZvaWQpOwpleHRlcm4gcnR4IGdlbl9pbmRpcmVjdF9qdW1w
c2kgKHJ0eCk7CmV4dGVybiBydHggZ2VuX2luZGlyZWN0X2p1bXBkaSAocnR4KTsKZXh0ZXJuIHJ0
eCBnZW5fbm9wICh2b2lkKTsKZXh0ZXJuIHJ0eCBnZW5fdHJhcCAodm9pZCk7CmV4dGVybiBydHgg
Z2VuX21vdmVzaV9mcm9tX2NyIChydHgpOwpleHRlcm4gcnR4IGdlbl9zdGFja190aWUgKHJ0eCk7
CmV4dGVybiBydHggZ2VuX2VoX3NldF9scl9zaSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZWhfc2V0
X2xyX2RpIChydHgpOwpleHRlcm4gcnR4IGdlbl9wcmVmZXRjaCAocnR4LCBydHgsIHJ0eCk7CmV4
dGVybiBydHggZ2VuX2FsdGl2ZWNfbHZ4XzRzaSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9h
bHRpdmVjX2x2eF84aGkgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19sdnhfMTZx
aSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2x2eF80c2YgKHJ0eCwgcnR4KTsK
ZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19zdHZ4XzRzaSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdl
bl9hbHRpdmVjX3N0dnhfOGhpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfc3R2
eF8xNnFpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfc3R2eF80c2YgKHJ0eCwg
cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZ2V0X3Zyc2F2ZV9pbnRlcm5hbCAocnR4KTsKZXh0ZXJuIHJ0
eCBnZW5fYWRkdjE2cWkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWRkdjhoaTMg
KHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hZGR2NHNpMyAocnR4LCBydHgsIHJ0eCk7
CmV4dGVybiBydHggZ2VuX2FkZHY0c2YzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5f
YWx0aXZlY192YWRkY3V3IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192
YWRkdWJzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192YWRkc2JzIChy
dHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192YWRkdWhzIChydHgsIHJ0eCwg
cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192YWRkc2hzIChydHgsIHJ0eCwgcnR4KTsKZXh0
ZXJuIHJ0eCBnZW5fYWx0aXZlY192YWRkdXdzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fYWx0aXZlY192YWRkc3dzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYW5kdjRz
aTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZhbmRjIChydHgsIHJ0
eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192YXZndWIgKHJ0eCwgcnR4LCBydHgpOwpl
eHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZhdmdzYiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX2FsdGl2ZWNfdmF2Z3VoIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZl
Y192YXZnc2ggKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Zhdmd1dyAo
cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdmF2Z3N3IChydHgsIHJ0eCwg
cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192Y21wYmZwIChydHgsIHJ0eCwgcnR4KTsKZXh0
ZXJuIHJ0eCBnZW5fYWx0aXZlY192Y21wZXF1YiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX2FsdGl2ZWNfdmNtcGVxdWggKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRp
dmVjX3ZjbXBlcXV3IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192Y21w
ZXFmcCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdmNtcGdlZnAgKHJ0
eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZjbXBndHViIChydHgsIHJ0eCwg
cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192Y21wZ3RzYiAocnR4LCBydHgsIHJ0eCk7CmV4
dGVybiBydHggZ2VuX2FsdGl2ZWNfdmNtcGd0dWggKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4
IGdlbl9hbHRpdmVjX3ZjbXBndHNoIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0
aXZlY192Y21wZ3R1dyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdmNt
cGd0c3cgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZjbXBndGZwIChy
dHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192bWFkZGZwIChydHgsIHJ0eCwg
cnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZubXN1YmZwIChydHgsIHJ0eCwgcnR4
LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Ztc3VtdWJtIChydHgsIHJ0eCwgcnR4LCBy
dHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Ztc3VtbWJtIChydHgsIHJ0eCwgcnR4LCBydHgp
OwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Ztc3VtdWhtIChydHgsIHJ0eCwgcnR4LCBydHgpOwpl
eHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Ztc3Vtc2htIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRl
cm4gcnR4IGdlbl9hbHRpdmVjX3Ztc3VtdWhzIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4g
cnR4IGdlbl9hbHRpdmVjX3Ztc3Vtc2hzIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4
IGdlbl91bWF4djE2cWkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc21heHYxNnFp
MyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3VtYXh2OGhpMyAocnR4LCBydHgsIHJ0
eCk7CmV4dGVybiBydHggZ2VuX3NtYXh2OGhpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX3VtYXh2NHNpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtYXh2NHNpMyAo
cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtYXh2NHNmMyAocnR4LCBydHgsIHJ0eCk7
CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm1oYWRkc2hzIChydHgsIHJ0eCwgcnR4LCBydHgpOwpl
eHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZtaHJhZGRzaHMgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4
dGVybiBydHggZ2VuX2FsdGl2ZWNfdm1sYWRkdWhtIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRl
cm4gcnR4IGdlbl9hbHRpdmVjX3ZtcmdoYiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu
X2FsdGl2ZWNfdm1yZ2hoIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192
bXJnaHcgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZtcmdsYiAocnR4
LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm1yZ2xoIChydHgsIHJ0eCwgcnR4
KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192bXJnbHcgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4g
cnR4IGdlbl91bWludjE2cWkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc21pbnYx
NnFpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3VtaW52OGhpMyAocnR4LCBydHgs
IHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtaW52OGhpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy
dHggZ2VuX3VtaW52NHNpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtaW52NHNp
MyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtaW52NHNmMyAocnR4LCBydHgsIHJ0
eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm11bGV1YiAocnR4LCBydHgsIHJ0eCk7CmV4dGVy
biBydHggZ2VuX2FsdGl2ZWNfdm11bGVzYiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu
X2FsdGl2ZWNfdm11bGV1aCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNf
dm11bGVzaCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm11bG91YiAo
cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm11bG9zYiAocnR4LCBydHgs
IHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm11bG91aCAocnR4LCBydHgsIHJ0eCk7CmV4
dGVybiBydHggZ2VuX2FsdGl2ZWNfdm11bG9zaCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX2FsdGl2ZWNfdm5vciAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2lvcnY0c2kz
IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cGt1aHVtIChydHgsIHJ0
eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cGt1d3VtIChydHgsIHJ0eCwgcnR4KTsK
ZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cGtweCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX2FsdGl2ZWNfdnBrdWhzcyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2
ZWNfdnBrc2hzcyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnBrdXdz
cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnBrc3dzcyAocnR4LCBy
dHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnBrdWh1cyAocnR4LCBydHgsIHJ0eCk7
CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnBrc2h1cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy
dHggZ2VuX2FsdGl2ZWNfdnBrdXd1cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Fs
dGl2ZWNfdnBrc3d1cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnJs
YiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnJsaCAocnR4LCBydHgs
IHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnJsdyAocnR4LCBydHgsIHJ0eCk7CmV4dGVy
biBydHggZ2VuX2FsdGl2ZWNfdnNsYiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Fs
dGl2ZWNfdnNsaCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnNsdyAo
cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnNsd192NHNmIChydHgsIHJ0
eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192c2wgKHJ0eCwgcnR4LCBydHgpOwpleHRl
cm4gcnR4IGdlbl9hbHRpdmVjX3ZzbG8gKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9h
bHRpdmVjX3ZzcmIgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Zzcmgg
KHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzcncgKHJ0eCwgcnR4LCBy
dHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzcmFiIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJu
IHJ0eCBnZW5fYWx0aXZlY192c3JhaCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Fs
dGl2ZWNfdnNyYXcgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzciAo
cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnNybyAocnR4LCBydHgsIHJ0
eCk7CmV4dGVybiBydHggZ2VuX3N1YnYxNnFpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX3N1YnY4aGkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc3VidjRzaTMgKHJ0
eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9zdWJ2NHNmMyAocnR4LCBydHgsIHJ0eCk7CmV4
dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1YmN1dyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX2FsdGl2ZWNfdnN1YnVicyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2
ZWNfdnN1YnNicyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1YnVo
cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1YnNocyAocnR4LCBy
dHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1YnV3cyAocnR4LCBydHgsIHJ0eCk7
CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1YnN3cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy
dHggZ2VuX2FsdGl2ZWNfdnN1bTR1YnMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9h
bHRpdmVjX3ZzdW00c2JzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192
c3VtNHNocyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1bTJzd3Mg
KHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzdW1zd3MgKHJ0eCwgcnR4
LCBydHgpOwpleHRlcm4gcnR4IGdlbl94b3J2NHNpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy
dHggZ2VuX3hvcnY4aGkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5feG9ydjE2cWkz
IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192c3BsdGIgKHJ0eCwgcnR4
LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzcGx0aCAocnR4LCBydHgsIHJ0eCk7CmV4
dGVybiBydHggZ2VuX2FsdGl2ZWNfdnNwbHR3IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fYWx0aXZlY192c3BsdGlzYiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Zz
cGx0aXNoIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnNwbHRpc3cgKHJ0eCwg
cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192c3BsdGlzd192NHNmIChydHgsIHJ0eCk7CmV4
dGVybiBydHggZ2VuX2Z0cnVuY3Y0c2YyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2
ZWNfdnBlcm1fNHNpIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVj
X3ZwZXJtXzRzZiAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192
cGVybV84aGkgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnBl
cm1fMTZxaSAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cmZp
cCAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZyZmluIChydHgsIHJ0eCk7CmV4
dGVybiBydHggZ2VuX2FsdGl2ZWNfdnJmaW0gKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0
aXZlY192Y2Z1eCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdmNmc3gg
KHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZjdHV4cyAocnR4LCBydHgs
IHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdmN0c3hzIChydHgsIHJ0eCwgcnR4KTsKZXh0
ZXJuIHJ0eCBnZW5fYWx0aXZlY192bG9nZWZwIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Fs
dGl2ZWNfdmV4cHRlZnAgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cnNxcnRl
ZnAgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cmVmcCAocnR4LCBydHgpOwpl
eHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzZWxfNHNpIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRl
cm4gcnR4IGdlbl9hbHRpdmVjX3ZzZWxfNHNmIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4g
cnR4IGdlbl9hbHRpdmVjX3ZzZWxfOGhpIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4
IGdlbl9hbHRpdmVjX3ZzZWxfMTZxaSAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fYWx0aXZlY192c2xkb2lfNHNpIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdl
bl9hbHRpdmVjX3ZzbGRvaV80c2YgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu
X2FsdGl2ZWNfdnNsZG9pXzhoaSAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5f
YWx0aXZlY192c2xkb2lfMTZxaSAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5f
YWx0aXZlY192dXBraHNiIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnVwa2hw
eCAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Z1cGtoc2ggKHJ0eCwgcnR4KTsK
ZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192dXBrbHNiIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu
X2FsdGl2ZWNfdnVwa2xweCAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Z1cGts
c2ggKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19wcmVkaWNhdGVfdjRzaSAocnR4
LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19wcmVkaWNhdGVfdjRzZiAo
cnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19wcmVkaWNhdGVfdjho
aSAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19wcmVkaWNhdGVf
djE2cWkgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfbXR2c2Ny
IChydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX21mdnNjciAocnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fYWx0aXZlY19kc3NhbGwgKHZvaWQpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2RzcyAocnR4
KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19kc3QgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4
IGdlbl9hbHRpdmVjX2RzdHQgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVj
X2RzdHN0IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19kc3RzdHQgKHJ0
eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2x2c2wgKHJ0eCwgcnR4LCBydHgp
OwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2x2c3IgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4
IGdlbl9hbHRpdmVjX2x2ZWJ4IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZl
Y19sdmVoeCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfbHZld3ggKHJ0
eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2x2eGwgKHJ0eCwgcnR4LCBydHgp
OwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2x2eCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX2FsdGl2ZWNfc3R2eCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNf
c3R2eGwgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3N0dmVieCAocnR4
LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfc3R2ZWh4IChydHgsIHJ0eCwgcnR4
KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19zdHZld3ggKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4g
cnR4IGdlbl9hYnN2MTZxaTIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWJzdjhoaTIgKHJ0
eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWJzdjRzaTIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fYWJzdjRzZjIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19hYnNzX3YxNnFp
IChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfYWJzc192OGhpIChydHgsIHJ0eCk7
CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfYWJzc192NHNpIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eCBnZW5fc3BlX2Vmc2N0dWl6IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f
IHJ0eApnZW5fc3BlX2Vmc2N0dWl6KGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAg
cmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZml4dW5zc2ZzaTIgKHJ0
eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZml4dW5zc2ZzaTIoYSwgYikK
ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf
XyBydHggZ2VuX3NwZV9maXhfdHJ1bmNzZnNpMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVf
XyBydHgKZ2VuX3NwZV9maXhfdHJ1bmNzZnNpMihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2Zsb2F0dW5z
c2lzZjIgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZmxvYXR1bnNz
aXNmMihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg
cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRp
YyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2Zsb2F0c2lzZjIgKHJ0eCwgcnR4KTsKc3RhdGljIF9f
aW5saW5lX18gcnR4Cmdlbl9zcGVfZmxvYXRzaXNmMihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2YWJz
IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2YWJzKGEsIGIpCiAg
ICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18g
cnR4IGdlbl9zcGVfZXZhbmRjIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4
Cmdlbl9zcGVfZXZhbmRjKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51
c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0
eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMg
X19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmFuZCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eApnZW5fc3BlX2V2YW5kKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK
fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmNtcGVxIChydHgsIHJ0eCwgcnR4KTsK
c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZjbXBlcShhLCBiLCBjKQogICAgIHJ0eCBh
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7
CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZjbXBndHMgKHJ0
eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmNtcGd0cyhhLCBi
LCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z
cGVfZXZjbXBndHUgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw
ZV9ldmNtcGd0dShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s
aW5lX18gcnR4IGdlbl9zcGVfZXZjbXBsdHMgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxp
bmVfXyBydHgKZ2VuX3NwZV9ldmNtcGx0cyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7
Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZjbXBsdHUgKHJ0eCwgcnR4LCBydHgp
OwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmNtcGx0dShhLCBiLCBjKQogICAgIHJ0
eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
Owp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZmc2NtcGVx
IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc2NtcGVx
KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBy
dHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHgg
Z2VuX3NwZV9ldmZzY21wZ3QgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgK
Z2VuX3NwZV9ldmZzY21wZ3QoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg
cnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRp
YyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNjbXBsdCAocnR4LCBydHgsIHJ0eCk7CnN0YXRp
YyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2ZnNjbXBsdChhLCBiLCBjKQogICAgIHJ0eCBhIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAg
cmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZmc3RzdGVxIChydHgs
IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc3RzdGVxKGEsIGIs
IGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3Nw
ZV9ldmZzdHN0Z3QgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw
ZV9ldmZzdHN0Z3QoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnN0c3RsdCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eApnZW5fc3BlX2V2ZnN0c3RsdChhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJu
IDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZjbnRsc3cgKHJ0eCwgcnR4KTsK
c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZjbnRsc3coYSwgYikKICAgICBydHggYSBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3Nw
ZV9ldmNudGx6dyAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmNu
dGx6dyhhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg
cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRp
YyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZXF2IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f
aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZlcXYoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw
Owp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZXh0c2IgKHJ0eCwgcnR4KTsKc3Rh
dGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZleHRzYihhLCBiKQogICAgIHJ0eCBhIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51
c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2
ZXh0c2ggKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZleHRzaChh
LCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eCBnZW5fc3BlX2V2bGhoZXNwbGF0IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f
aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZsaGhlc3BsYXQoYSwgYiwgYykKICAgICBydHggYSBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl
dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bGhoZXNwbGF0eCAocnR4
LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bGhoZXNwbGF0eChh
LCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4
IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdl
bl9zcGVfZXZsaGhvc3NwbGF0IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4
Cmdlbl9zcGVfZXZsaGhvc3NwbGF0KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog
ICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz
dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmxoaG9zc3BsYXR4IChydHgsIHJ0eCwgcnR4
KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZsaGhvc3NwbGF0eChhLCBiLCBjKQog
ICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVz
ZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZs
aGhvdXNwbGF0IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf
ZXZsaGhvdXNwbGF0KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p
bmxpbmVfXyBydHggZ2VuX3NwZV9ldmxoaG91c3BsYXR4IChydHgsIHJ0eCwgcnR4KTsKc3RhdGlj
IF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZsaGhvdXNwbGF0eChhLCBiLCBjKQogICAgIHJ0eCBh
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7
CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZsd2hzcGxhdCAo
cnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bHdoc3BsYXQo
YSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0
eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBn
ZW5fc3BlX2V2bHdoc3BsYXR4IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4
Cmdlbl9zcGVfZXZsd2hzcGxhdHgoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg
ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0
YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bHd3c3BsYXQgKHJ0eCwgcnR4LCBydHgpOwpz
dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmx3d3NwbGF0KGEsIGIsIGMpCiAgICAgcnR4
IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmx3d3NwbGF0
eCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bHd3c3Bs
YXR4KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg
ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy
dHggZ2VuX3NwZV9ldm1lcmdlaGkgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy
dHgKZ2VuX3NwZV9ldm1lcmdlaGkoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg
ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0
YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWVyZ2VoaWxvIChydHgsIHJ0eCwgcnR4KTsK
c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtZXJnZWhpbG8oYSwgYiwgYykKICAgICBy
dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWVyZ2Vs
byAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWVyZ2Vs
byhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg
cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4
IGdlbl9zcGVfZXZtZXJnZWxvaGkgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy
dHgKZ2VuX3NwZV9ldm1lcmdlbG9oaShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK
ICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0K
c3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZuYW5kIChydHgsIHJ0eCwgcnR4KTsKc3Rh
dGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZuYW5kKGEsIGIsIGMpCiAgICAgcnR4IGEgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy
ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm5lZyAocnR4LCBydHgp
OwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm5lZyhhLCBiKQogICAgIHJ0eCBhIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3Bl
X2V2bm9yIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZu
b3IoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg
IHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1
dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0
eCBnZW5fc3BlX2V2b3JjIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdl
bl9zcGVfZXZvcmMoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eCBnZW5fc3BlX2V2b3IgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVf
XyBydHgKZ2VuX3NwZV9ldm9yKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg
IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0
aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnJsd2kgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMg
X19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnJsd2koYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy
biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2cmx3IChydHgsIHJ0eCwgcnR4
KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZybHcoYSwgYiwgYykKICAgICBydHgg
YSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK
ewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2cm5kdyAocnR4
LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnJuZHcoYSwgYikKICAgICBy
dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHgg
Z2VuX3NwZV9ldnNlbCAocnR4LCBydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4
Cmdlbl9zcGVfZXZzZWwoYSwgYiwgYywgZCkKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg
cnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggZCBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4
IGdlbl9zcGVfZXZzZWxfZnMgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f
IHJ0eApnZW5fc3BlX2V2c2VsX2ZzKGEsIGIsIGMsIGQpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGQgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eCBnZW5fc3BlX2V2c2x3aSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f
IHJ0eApnZW5fc3BlX2V2c2x3aShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg
ICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3Rh
dGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZzbHcgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMg
X19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnNsdyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJu
IDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZzcndpcyAocnR4LCBydHgsIHJ0
eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2c3J3aXMoYSwgYiwgYykKICAgICBy
dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2c3J3aXUg
KHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnNyd2l1KGEs
IGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg
YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu
X3NwZV9ldnNyd3MgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw
ZV9ldnNyd3MoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eCBnZW5fc3BlX2V2c3J3dSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f
IHJ0eApnZW5fc3BlX2V2c3J3dShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg
ICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3Rh
dGljIF9faW5saW5lX18gcnR4IGdlbl94b3J2MnNpMyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBf
X2lubGluZV9fIHJ0eApnZW5feG9ydjJzaTMoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw
Owp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5feG9ydjRoaTMgKHJ0eCwgcnR4LCBydHgpOwpz
dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3hvcnY0aGkzKGEsIGIsIGMpCiAgICAgcnR4IGEgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy
ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3hvcnYxZGkzIChydHgsIHJ0eCwg
cnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl94b3J2MWRpMyhhLCBiLCBjKQogICAgIHJ0
eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
Owp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZmc2FicyAo
cnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmZzYWJzKGEsIGIpCiAg
ICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18g
cnR4IGdlbl9zcGVfZXZmc2FkZCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0
eApnZW5fc3BlX2V2ZnNhZGQoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg
cnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRp
YyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNjZnNmIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eApnZW5fc3BlX2V2ZnNjZnNmKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
Owp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZmc2Nmc2kg
KHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc2Nmc2koYSwgYikK
ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf
XyBydHggZ2VuX3NwZV9ldmZzY2Z1ZiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgK
Z2VuX3NwZV9ldmZzY2Z1ZihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy
biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNjZnVpIChydHgsIHJ0eCk7
CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2ZnNjZnVpKGEsIGIpCiAgICAgcnR4IGEg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z
cGVfZXZmc2N0c2YgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZm
c2N0c2YoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg
IHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0
aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmZzY3RzaSAocnR4LCBydHgpOwpzdGF0aWMgX19p
bmxpbmVfXyBydHgKZ2VuX3NwZV9ldmZzY3RzaShhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNjdHNp
eiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmZzY3RzaXooYSwg
YikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxp
bmVfXyBydHggZ2VuX3NwZV9ldmZzY3R1ZiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy
dHgKZ2VuX3NwZV9ldmZzY3R1ZihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl
dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNjdHVpIChydHgsIHJ0
eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2ZnNjdHVpKGEsIGIpCiAgICAgcnR4
IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdl
bl9zcGVfZXZmc2N0dWl6IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl
X2V2ZnNjdHVpeihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9
CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNkaXYgKHJ0eCwgcnR4LCBydHgpOwpz
dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmZzZGl2KGEsIGIsIGMpCiAgICAgcnR4IGEg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsK
ICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmZzbXVsIChydHgs
IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc211bChhLCBiLCBj
KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVf
ZXZmc25hYnMgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc25h
YnMoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0
eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMg
X19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmZzbmVnIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eApnZW5fc3BlX2V2ZnNuZWcoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsK
ICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmZzc3ViIChydHgs
IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc3N1YihhLCBiLCBj
KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVf
ZXZsZGQgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmxk
ZChhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg
cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4
IGdlbl9zcGVfZXZsZGR4IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdl
bl9zcGVfZXZsZGR4KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p
bmxpbmVfXyBydHggZ2VuX3NwZV9ldmxkaCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eApnZW5fc3BlX2V2bGRoKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog
ICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz
dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmxkaHggKHJ0eCwgcnR4LCBydHgpOwpzdGF0
aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmxkaHgoYSwgYiwgYykKICAgICBydHggYSBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl
dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bGR3IChydHgsIHJ0eCwg
cnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZsZHcoYSwgYiwgYykKICAgICBy
dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bGR3eCAo
cnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bGR3eChhLCBi
LCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z
cGVfZXZsd2hlIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf
ZXZsd2hlKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK
ICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf
XyBydHggZ2VuX3NwZV9ldmx3aGV4IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18g
cnR4Cmdlbl9zcGVfZXZsd2hleChhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg
ICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3Rh
dGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZsd2hvcyAocnR4LCBydHgsIHJ0eCk7CnN0YXRp
YyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bHdob3MoYSwgYiwgYykKICAgICBydHggYSBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl
dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bHdob3N4IChydHgsIHJ0
eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZsd2hvc3goYSwgYiwgYykK
ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51
c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2
bHdob3UgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmx3
aG91KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg
ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy
dHggZ2VuX3NwZV9ldmx3aG91eCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0
eApnZW5fc3BlX2V2bHdob3V4KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg
IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0
aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9icmluYyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBf
X2lubGluZV9fIHJ0eApnZW5fc3BlX2JyaW5jKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1
dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4g
MDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZWdzbWZhYSAocnR4LCBydHgs
IHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlZ3NtZmFhKGEsIGIsIGMp
CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l
dm1oZWdzbWZhbiAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl
X2V2bWhlZ3NtZmFuKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p
bmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZWdzbWlhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBf
X2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlZ3NtaWFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy
ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZWdzbWlhbiAocnR4
LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlZ3NtaWFuKGEs
IGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg
YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu
X3NwZV9ldm1oZWd1bWlhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApn
ZW5fc3BlX2V2bWhlZ3VtaWFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg
IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0
aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZWd1bWlhbiAocnR4LCBydHgsIHJ0eCk7CnN0
YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlZ3VtaWFuKGEsIGIsIGMpCiAgICAgcnR4
IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXNtZmFh
dyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlc21m
YWF3KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg
ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy
dHggZ2VuX3NwZV9ldm1oZXNtZmFudyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f
IHJ0eApnZW5fc3BlX2V2bWhlc21mYW53KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK
fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXNtZmEgKHJ0eCwgcnR4LCBydHgp
OwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1oZXNtZmEoYSwgYiwgYykKICAgICBy
dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhlc21m
IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaGVzbWYo
YSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0
eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBn
ZW5fc3BlX2V2bWhlc21pYWF3IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4
Cmdlbl9zcGVfZXZtaGVzbWlhYXcoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg
ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0
YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhlc21pYW53IChydHgsIHJ0eCwgcnR4KTsK
c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaGVzbWlhbncoYSwgYiwgYykKICAgICBy
dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhlc21p
YSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlc21p
YShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg
cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4
IGdlbl9zcGVfZXZtaGVzbWkgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgK
Z2VuX3NwZV9ldm1oZXNtaShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBy
dHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGlj
IF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaGVzc2ZhYXcgKHJ0eCwgcnR4LCBydHgpOwpzdGF0
aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1oZXNzZmFhdyhhLCBiLCBjKQogICAgIHJ0eCBh
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7
CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaGVzc2Zhbncg
KHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1oZXNzZmFu
dyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg
cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4
IGdlbl9zcGVfZXZtaGVzc2ZhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4
Cmdlbl9zcGVfZXZtaGVzc2ZhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg
IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0
aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXNzZiAocnR4LCBydHgsIHJ0eCk7CnN0YXRp
YyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlc3NmKGEsIGIsIGMpCiAgICAgcnR4IGEgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy
ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXNzaWFhdyAocnR4
LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlc3NpYWF3KGEs
IGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg
YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu
X3NwZV9ldm1oZXNzaWFudyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApn
ZW5fc3BlX2V2bWhlc3NpYW53KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg
IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0
aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXVtaWFhdyAocnR4LCBydHgsIHJ0eCk7CnN0
YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhldW1pYWF3KGEsIGIsIGMpCiAgICAgcnR4
IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXVtaWFu
dyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhldW1p
YW53KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg
ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy
dHggZ2VuX3NwZV9ldm1oZXVtaWEgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy
dHgKZ2VuX3NwZV9ldm1oZXVtaWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg
ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0
YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhldW1pIChydHgsIHJ0eCwgcnR4KTsKc3Rh
dGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaGV1bWkoYSwgYiwgYykKICAgICBydHggYSBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewog
IHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhldXNpYWF3IChy
dHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaGV1c2lhYXco
YSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0
eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBn
ZW5fc3BlX2V2bWhldXNpYW53IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4
Cmdlbl9zcGVfZXZtaGV1c2lhbncoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg
ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0
YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvZ3NtZmFhIChydHgsIHJ0eCwgcnR4KTsK
c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9nc21mYWEoYSwgYiwgYykKICAgICBy
dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvZ3Nt
ZmFuIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9n
c21mYW4oYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog
ICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9f
IHJ0eCBnZW5fc3BlX2V2bWhvZ3NtaWFhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5l
X18gcnR4Cmdlbl9zcGVfZXZtaG9nc21pYWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw
Owp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvZ3NtaWFuIChydHgsIHJ0eCwg
cnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9nc21pYW4oYSwgYiwgYykK
ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51
c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2
bWhvZ3VtaWFhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf
ZXZtaG9ndW1pYWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvZ3VtaWFuIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f
aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9ndW1pYW4oYSwgYiwgYykKICAgICBydHggYSBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl
dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvc21mYWF3IChydHgs
IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9zbWZhYXcoYSwg
YiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBi
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5f
c3BlX2V2bWhvc21mYW53IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdl
bl9zcGVfZXZtaG9zbWZhbncoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg
cnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRp
YyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvc21mYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRp
YyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhvc21mYShhLCBiLCBjKQogICAgIHJ0eCBhIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAg
cmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaG9zbWYgKHJ0eCwg
cnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1ob3NtZihhLCBiLCBj
KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVf
ZXZtaG9zbWlhYXcgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw
ZV9ldm1ob3NtaWFhdyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg
YyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9f
aW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaG9zbWlhbncgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMg
X19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1ob3NtaWFudyhhLCBiLCBjKQogICAgIHJ0eCBhIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAg
cmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaG9zbWlhIChydHgs
IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9zbWlhKGEsIGIs
IGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3Nw
ZV9ldm1ob3NtaSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl
X2V2bWhvc21pKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxp
bmVfXyBydHggZ2VuX3NwZV9ldm1ob3NzZmFhdyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eApnZW5fc3BlX2V2bWhvc3NmYWF3KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVz
ZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1
cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1ob3NzZmFudyAocnR4LCBy
dHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhvc3NmYW53KGEsIGIs
IGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChf
X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3Nw
ZV9ldm1ob3NzZmEgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw
ZV9ldm1ob3NzZmEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvc3NmIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s
aW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9zc2YoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw
Owp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvc3NpYWF3IChydHgsIHJ0eCwg
cnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9zc2lhYXcoYSwgYiwgYykK
ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51
c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2
bWhvc3NpYW53IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf
ZXZtaG9zc2lhbncoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvdW1pYWF3IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f
aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG91bWlhYXcoYSwgYiwgYykKICAgICBydHggYSBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl
dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvdW1pYW53IChydHgs
IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG91bWlhbncoYSwg
YiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBi
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5f
c3BlX2V2bWhvdW1pYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5f
c3BlX2V2bWhvdW1pYShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg
YyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9f
aW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaG91bWkgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19p
bmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1ob3VtaShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJu
IDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaG91c2lhYXcgKHJ0eCwgcnR4
LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1ob3VzaWFhdyhhLCBiLCBj
KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVf
ZXZtaG91c2lhbncgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw
ZV9ldm1ob3VzaWFudyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg
YyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9f
aW5saW5lX18gcnR4IGdlbl9zcGVfZXZtbWxzc2ZhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f
aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtbWxzc2ZhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVz
ZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1
cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1tbHNzZiAocnR4LCBydHgs
IHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bW1sc3NmKGEsIGIsIGMpCiAg
ICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13
aHNtZmEgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13
aHNtZmEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog
ICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9f
IHJ0eCBnZW5fc3BlX2V2bXdoc21mIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18g
cnR4Cmdlbl9zcGVfZXZtd2hzbWYoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg
ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0
YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdoc21pYSAocnR4LCBydHgsIHJ0eCk7CnN0
YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoc21pYShhLCBiLCBjKQogICAgIHJ0eCBh
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7
CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzbWkgKHJ0
eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHNtaShhLCBi
LCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z
cGVfZXZtd2hzc2ZhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9z
cGVfZXZtd2hzc2ZhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p
bmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aHVzaWFuIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f
aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtd2h1c2lhbihhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51
c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0
dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzc2YgKHJ0eCwgcnR4
LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHNzZihhLCBiLCBjKQog
ICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVz
ZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZt
d2h1bWlhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZt
d2h1bWlhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK
ICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf
XyBydHggZ2VuX3NwZV9ldm13aHVtaSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f
IHJ0eApnZW5fc3BlX2V2bXdodW1pKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog
ICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz
dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13bHNtaWFhdyAocnR4LCBydHgsIHJ0eCk7
CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdsc21pYWF3KGEsIGIsIGMpCiAgICAg
cnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13bHNt
aWFudyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXds
c21pYW53KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK
ICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf
XyBydHggZ2VuX3NwZV9ldm13bHNzaWFhdyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eApnZW5fc3BlX2V2bXdsc3NpYWF3KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1
dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4g
MDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13bHNzaWFudyAocnR4LCBydHgs
IHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdsc3NpYW53KGEsIGIsIGMp
CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l
dm13bHVtaWFhdyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl
X2V2bXdsdW1pYWF3KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p
bmxpbmVfXyBydHggZ2VuX3NwZV9ldm13bHVtaWFudyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBf
X2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdsdW1pYW53KGEsIGIsIGMpCiAgICAgcnR4IGEgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy
ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13bHVtaWEgKHJ0eCwg
cnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13bHVtaWEoYSwgYiwg
YykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3Bl
X2V2bXdsdW1pIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf
ZXZtd2x1bWkoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eCBnZW5fc3BlX2V2bXdsdXNpYWF3IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s
aW5lX18gcnR4Cmdlbl9zcGVfZXZtd2x1c2lhYXcoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy
biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdsdXNpYW53IChydHgsIHJ0
eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtd2x1c2lhbncoYSwgYiwg
YykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3Bl
X2V2bXdzbWZhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl
X2V2bXdzbWZhYShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s
aW5lX18gcnR4IGdlbl9zcGVfZXZtd3NtZmFuIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s
aW5lX18gcnR4Cmdlbl9zcGVfZXZtd3NtZmFuKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1
dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4g
MDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13c21mYSAocnR4LCBydHgsIHJ0
eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdzbWZhKGEsIGIsIGMpCiAgICAg
cnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13c21m
IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtd3NtZihh
LCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4
IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdl
bl9zcGVfZXZtd3NtaWFhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdl
bl9zcGVfZXZtd3NtaWFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51
c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0
eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMg
X19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13c21pYW4gKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMg
X19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13c21pYW4oYSwgYiwgYykKICAgICBydHggYSBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl
dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdzbWlhIChydHgsIHJ0
eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtd3NtaWEoYSwgYiwgYykK
ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51
c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2
bXdzbWkgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13
c21pKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg
ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy
dHggZ2VuX3NwZV9ldm13c3NmYWEgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy
dHgKZ2VuX3NwZV9ldm13c3NmYWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg
ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0
YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdzc2ZhbiAocnR4LCBydHgsIHJ0eCk7CnN0
YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdzc2ZhbihhLCBiLCBjKQogICAgIHJ0eCBh
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7
CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtd3NzZmEgKHJ0
eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13c3NmYShhLCBi
LCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z
cGVfZXZtd3NzZiAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl
X2V2bXdzc2YoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eCBnZW5fc3BlX2V2bXd1bWlhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eApnZW5fc3BlX2V2bXd1bWlhYShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7
Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtd3VtaWFuIChydHgsIHJ0eCwgcnR4
KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtd3VtaWFuKGEsIGIsIGMpCiAgICAg
cnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13dW1p
YSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXd1bWlh
KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBy
dHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHgg
Z2VuX3NwZV9ldm13dW1pIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdl
bl9zcGVfZXZtd3VtaShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg
YyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9f
aW5saW5lX18gcnR4IGdlbl9zcGVfZXZhZGR3IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s
aW5lX18gcnR4Cmdlbl9zcGVfZXZhZGR3KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK
fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmFkZHVzaWFhdyAocnR4LCBydHgpOwpz
dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmFkZHVzaWFhdyhhLCBiKQogICAgIHJ0eCBh
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5f
c3BlX2V2YWRkdW1pYWF3IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl
X2V2YWRkdW1pYWF3KGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7
Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZhZGRzc2lhYXcgKHJ0eCwgcnR4KTsK
c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZhZGRzc2lhYXcoYSwgYikKICAgICBydHgg
YSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu
X3NwZV9ldmFkZHNtaWFhdyAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw
ZV9ldmFkZHNtaWFhdyhhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw
Owp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2YWRkaXcgKHJ0eCwgcnR4LCBydHgp
OwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmFkZGl3KGEsIGIsIGMpCiAgICAgcnR4
IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN1YmlmdyAo
cnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2c3ViaWZ3KGEs
IGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg
YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu
X3NwZV9ldnN1YmZ3IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9z
cGVfZXZzdWJmdyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s
aW5lX18gcnR4IGdlbl9zcGVfZXZzdWJmdXNpYWF3IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eApnZW5fc3BlX2V2c3ViZnVzaWFhdyhhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2c3ViZnVt
aWFhdyAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnN1YmZ1bWlh
YXcoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0
eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMg
X19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN1YmZzc2lhYXcgKHJ0eCwgcnR4KTsKc3RhdGljIF9f
aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZzdWJmc3NpYWF3KGEsIGIpCiAgICAgcnR4IGEgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVz
ZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZz
dWJmc21pYWF3IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2c3Vi
ZnNtaWFhdyhhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg
ICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0
YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXJhIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eApnZW5fc3BlX2V2bXJhKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7
CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZkaXZ3cyAocnR4
LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2ZGl2d3MoYSwgYiwg
YykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3Bl
X2V2ZGl2d3UgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9l
dmRpdnd1KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK
ICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0
cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf
XyBydHggZ2VuX3NwZV9ldnNwbGF0ZmkgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4
Cmdlbl9zcGVfZXZzcGxhdGZpKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51
c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0
dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZzcGxhdGkgKHJ0eCwgcnR4
KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZzcGxhdGkoYSwgYikKICAgICBydHgg
YSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu
X3NwZV9ldnN0ZGQgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw
ZV9ldnN0ZGQoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eCBnZW5fc3BlX2V2c3RkZHggKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVf
XyBydHgKZ2VuX3NwZV9ldnN0ZGR4KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog
ICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz
dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN0ZGggKHJ0eCwgcnR4LCBydHgpOwpzdGF0
aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnN0ZGgoYSwgYiwgYykKICAgICBydHggYSBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl
dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2c3RkaHggKHJ0eCwgcnR4
LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnN0ZGh4KGEsIGIsIGMpCiAg
ICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN0
ZHcgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnN0ZHco
YSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0
eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBn
ZW5fc3BlX2V2c3Rkd3ggKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2Vu
X3NwZV9ldnN0ZHd4KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p
bmxpbmVfXyBydHggZ2VuX3NwZV9ldnN0d2hlIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s
aW5lX18gcnR4Cmdlbl9zcGVfZXZzdHdoZShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p
KTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7
Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZzdHdoZXggKHJ0eCwgcnR4LCBydHgp
OwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnN0d2hleChhLCBiLCBjKQogICAgIHJ0
eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
Owp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZzdHdobyAo
cnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2c3R3aG8oYSwg
YiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBi
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAo
KF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5f
c3BlX2V2c3R3aG94IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9z
cGVfZXZzdHdob3goYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eCBnZW5fc3BlX2V2c3R3d2UgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxp
bmVfXyBydHgKZ2VuX3NwZV9ldnN0d3dlKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK
fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN0d3dleCAocnR4LCBydHgsIHJ0eCk7
CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2c3R3d2V4KGEsIGIsIGMpCiAgICAgcnR4
IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN0d3dvIChy
dHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZzdHd3byhhLCBi
LCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z
cGVfZXZzdHd3b3ggKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw
ZV9ldnN0d3dveChhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s
aW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzc2ZhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoc3NmYWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy
biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdoc3NtYWEgKHJ0eCwgcnR4
LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHNzbWFhKGEsIGIsIGMp
CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l
dm13aHNtZmFhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf
ZXZtd2hzbWZhYShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s
aW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzbWlhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoc21pYWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy
biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdodXNpYWEgKHJ0eCwgcnR4
LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHVzaWFhKGEsIGIsIGMp
CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l
dm13aHVtaWFhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf
ZXZtd2h1bWlhYShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s
aW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzc2ZhbiAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoc3NmYW4oYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy
biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdoc3NpYW4gKHJ0eCwgcnR4
LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHNzaWFuKGEsIGIsIGMp
CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l
dm13aHNtZmFuIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf
ZXZtd2hzbWZhbihhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s
aW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzbWlhbiAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoc21pYW4oYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy
biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdodW1pYW4gKHJ0eCwgcnR4
LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHVtaWFuKGEsIGIsIGMp
CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l
dm13aGdzc2ZhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl
X2V2bXdoZ3NzZmFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p
bmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aGdzbWZhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBf
X2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoZ3NtZmFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy
ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aGdzbWlhYSAocnR4
LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoZ3NtaWFhKGEs
IGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg
YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu
X3NwZV9ldm13aGd1bWlhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApn
ZW5fc3BlX2V2bXdoZ3VtaWFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg
IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0
aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aGdzc2ZhbiAocnR4LCBydHgsIHJ0eCk7CnN0
YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoZ3NzZmFuKGEsIGIsIGMpCiAgICAgcnR4
IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aGdzbWZh
biAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoZ3Nt
ZmFuKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg
ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy
dHggZ2VuX3NwZV9ldm13aGdzbWlhbiAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f
IHJ0eApnZW5fc3BlX2V2bXdoZ3NtaWFuKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK
fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aGd1bWlhbiAocnR4LCBydHgsIHJ0
eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoZ3VtaWFuKGEsIGIsIGMpCiAg
ICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJp
YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9tdHNw
ZWZzY3IgKHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX210c3BlZnNjcihhKQog
ICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz
dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9tZnNwZWZzY3IgKHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eApnZW5fc3BlX21mc3BlZnNjcihhKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18g
KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu
X2NtcHNmZXFfZ3ByIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9j
bXBzZmVxX2dwcihhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s
aW5lX18gcnR4IGdlbl90c3RzZmVxX2dwciAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu
ZV9fIHJ0eApnZW5fdHN0c2ZlcV9ncHIoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9
CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fY21wc2ZndF9ncHIgKHJ0eCwgcnR4LCBydHgpOwpz
dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX2NtcHNmZ3RfZ3ByKGEsIGIsIGMpCiAgICAgcnR4IGEg
X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsK
ICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3RzdHNmZ3RfZ3ByIChydHgs
IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl90c3RzZmd0X2dwcihhLCBiLCBj
KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191
bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9jbXBz
Zmx0X2dwciAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fY21wc2Zs
dF9ncHIoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog
ICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9f
IHJ0eCBnZW5fdHN0c2ZsdF9ncHIgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy
dHgKZ2VuX3RzdHNmbHRfZ3ByKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg
IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpleHRl
cm4gcnR4IGdlbl96ZXJvX2V4dGVuZHFpZGkyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3pl
cm9fZXh0ZW5kaGlkaTIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZXh0ZW5kaGlkaTIgKHJ0
eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5femVyb19leHRlbmRzaWRpMiAocnR4LCBydHgpOwpleHRl
cm4gcnR4IGdlbl9leHRlbmRzaWRpMiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl96ZXJvX2V4
dGVuZHFpc2kyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2V4dGVuZHFpc2kyIChydHgsIHJ0
eCk7CmV4dGVybiBydHggZ2VuX2V4dGVuZHFpc2kyX3Bvd2VyIChydHgsIHJ0eCk7CmV4dGVybiBy
dHggZ2VuX2V4dGVuZHFpc2kyX25vX3Bvd2VyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3pl
cm9fZXh0ZW5kcWloaTIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZXh0ZW5kcWloaTIgKHJ0
eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZXh0ZW5kcWloaTJfcG93ZXIgKHJ0eCwgcnR4KTsKZXh0
ZXJuIHJ0eCBnZW5fZXh0ZW5kcWloaTJfbm9fcG93ZXIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5femVyb19leHRlbmRoaXNpMiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9leHRlbmRoaXNp
MiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hZGRzaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRl
cm4gcnR4IGdlbl9zdWJzaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9zbWluc2kz
IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc21heHNpMyAocnR4LCBydHgsIHJ0eCk7
CmV4dGVybiBydHggZ2VuX3VtaW5zaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl91
bWF4c2kzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWJzc2kyIChydHgsIHJ0eCk7
CmV4dGVybiBydHggZ2VuX2N0enNpMiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9mZnNzaTIg
KHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fbXVsc2kzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJu
IHJ0eCBnZW5fZGl2bW9kc2k0IChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl91
ZGl2c2kzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZGl2c2kzIChydHgsIHJ0eCwg
cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fbW9kc2kzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fdWRpdm1vZHNpNF9ub3JtYWwgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu
X3VkaXZtb2RzaTRfdGVzdHMgKHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fdWRpdm1vZHNpNCAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5faW9yc2kz
IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5feG9yc2kzIChydHgsIHJ0eCwgcnR4KTsK
ZXh0ZXJuIHJ0eCBnZW5faW5zdiAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5f
ZXh0enYgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FzaGxzaTMgKHJ0eCwg
cnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9sc2hyc2kzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJu
IHJ0eCBnZW5fYXNocnNpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX25lZ3NmMiAo
cnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hYnNzZjIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fYWRkc2YzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc3Vic2YzIChydHgsIHJ0
eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fbXVsc2YzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0
eCBnZW5fZGl2c2YzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc3FydHNmMiAocnR4
LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tYXhzZjMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4
IGdlbl9taW5zZjMgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX21v
dnNpY2MgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fbW92
c2ljYyhhLCBiLCBjLCBkKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBkIF9fYXR0cmlidXRlX18gKChfX3Vu
dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9tb3ZzZmNjIChydHgsIHJ0
eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tYXhkZjMgKHJ0eCwgcnR4LCBydHgpOwpleHRl
cm4gcnR4IGdlbl9taW5kZjMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3ZkZmNj
IChydHgsIHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX2ZpeHVuc3Nm
c2kyIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fZml4dW5zc2ZzaTIoYSwg
YikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxp
bmVfXyBydHggZ2VuX2ZpeF90cnVuY3Nmc2kyIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f
IHJ0eApnZW5fZml4X3RydW5jc2ZzaTIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo
X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsK
ICByZXR1cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9mbG9hdHNpZGYyIChydHgsIHJ0eCk7CnN0YXRp
YyBfX2lubGluZV9fIHJ0eCBnZW5fZmxvYXR1bnNzaXNmMiAocnR4LCBydHgpOwpzdGF0aWMgX19p
bmxpbmVfXyBydHgKZ2VuX2Zsb2F0dW5zc2lzZjIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CnsKICByZXR1cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9mbG9hdHVuc3NpZGYyIChydHgsIHJ0
eCk7CmV4dGVybiBydHggZ2VuX2ZpeF90cnVuY2Rmc2kyIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lu
bGluZV9fIHJ0eCBnZW5fZmxvYXRzaXNmMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy
dHgKZ2VuX2Zsb2F0c2lzZjIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVz
ZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1
cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9mbG9hdGRpc2YyIChydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX2Zsb2F0ZGlzZjJfaW50ZXJuYWwyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX211bHNp
ZGkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fdW11bHNpZGkzIChydHgsIHJ0eCwg
cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc211bHNpM19oaWdocGFydCAocnR4LCBydHgsIHJ0eCk7CmV4
dGVybiBydHggZ2VuX3VtdWxzaTNfaGlnaHBhcnQgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4
IGdlbl9hZGRkaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9zdWJkaTMgKHJ0eCwg
cnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9uZWdkaTIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fY3R6ZGkyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Zmc2RpMiAocnR4LCBydHgpOwpl
eHRlcm4gcnR4IGdlbl9kaXZkaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb2Rk
aTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hc2hsZGkzIChydHgsIHJ0eCwgcnR4
KTsKZXh0ZXJuIHJ0eCBnZW5fbHNocmRpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu
X2FzaHJkaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9pb3JkaTMgKHJ0eCwgcnR4
LCBydHgpOwpleHRlcm4gcnR4IGdlbl94b3JkaTMgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19p
bmxpbmVfXyBydHggZ2VuX21vdnNpX2dvdCAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy
dHgKZ2VuX21vdnNpX2dvdChhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl
ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy
biAwOwp9CmV4dGVybiBydHggZ2VuX21vdnNpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21v
dmhpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnFpIChydHgsIHJ0eCk7CmV4dGVybiBy
dHggZ2VuX21vdmNjIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnNmIChydHgsIHJ0eCk7
CmV4dGVybiBydHggZ2VuX21vdmRmIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBn
ZW5fbW92dGYgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9tb3Z0ZihhLCBi
KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h
dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CmV4dGVybiBydHggZ2Vu
X21vdmRpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnRpIChydHgsIHJ0eCk7CmV4dGVy
biBydHggZ2VuX2xvYWRfbXVsdGlwbGUgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9z
dG9yZV9tdWx0aXBsZSAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnN0cnNpIChy
dHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3ZzdHJzaV84cmVnIChydHgsIHJ0
eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3ZzdHJzaV82cmVnIChydHgsIHJ0eCwgcnR4
LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3ZzdHJzaV80cmVnIChydHgsIHJ0eCwgcnR4LCBydHgp
OwpleHRlcm4gcnR4IGdlbl9tb3ZzdHJzaV8ycmVnIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRl
cm4gcnR4IGdlbl9tb3ZzdHJzaV8xcmVnIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4
IGdlbl9hbGxvY2F0ZV9zdGFjayAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9zYXZlX3N0YWNr
X2Z1bmN0aW9uIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3Jlc3RvcmVfc3RhY2tfZnVuY3Rp
b24gKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fcmVzdG9yZV9zdGFja19ibG9jayAocnR4LCBy
dHgpOwpleHRlcm4gcnR4IGdlbl9zYXZlX3N0YWNrX25vbmxvY2FsIChydHgsIHJ0eCk7CmV4dGVy
biBydHggZ2VuX3Jlc3RvcmVfc3RhY2tfbm9ubG9jYWwgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIgKHJ0eCk7CmV4dGVybiBydHggZ2VuX2NhbGxfaW5k
aXJlY3RfYWl4MzIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY2FsbF9pbmRpcmVjdF9haXg2
NCAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9jYWxsX3ZhbHVlX2luZGlyZWN0X2FpeDMyIChy
dHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY2FsbF92YWx1ZV9pbmRpcmVjdF9haXg2NCAo
cnR4LCBydHgsIHJ0eCk7CgpleHRlcm4gcnR4IGdlbl9jYWxsIChydHgsIHJ0eCwgcnR4KTsKCmV4
dGVybiBydHggZ2VuX2NhbGxfdmFsdWUgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX3VudHlwZWRfY2FsbCAocnR4LCBydHgsIHJ0eCk7CgpleHRlcm4gcnR4IGdlbl9zaWJjYWxs
IChydHgsIHJ0eCwgcnR4LCBydHgpOwoKZXh0ZXJuIHJ0eCBnZW5fc2liY2FsbF92YWx1ZSAocnR4
LCBydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9zaWJjYWxsX2VwaWxvZ3VlICh2
b2lkKTsKZXh0ZXJuIHJ0eCBnZW5fY21wc2kgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY21w
ZGkgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY21wc2YgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0
eCBnZW5fY21wZGYgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9jbXB0ZiAo
cnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX2NtcHRmKGEsIGIpCiAgICAgcnR4
IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0KZXh0ZXJuIHJ0eCBnZW5fYmVxIChydHgp
OwpleHRlcm4gcnR4IGdlbl9ibmUgKHJ0eCk7CmV4dGVybiBydHggZ2VuX2JnZSAocnR4KTsKZXh0
ZXJuIHJ0eCBnZW5fYmd0IChydHgpOwpleHRlcm4gcnR4IGdlbl9ibGUgKHJ0eCk7CmV4dGVybiBy
dHggZ2VuX2JsdCAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYmdldSAocnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fYmd0dSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYmxldSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5f
Ymx0dSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYnVub3JkZXJlZCAocnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fYm9yZGVyZWQgKHJ0eCk7CmV4dGVybiBydHggZ2VuX2J1bmVxIChydHgpOwpleHRlcm4gcnR4
IGdlbl9idW5nZSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYnVuZ3QgKHJ0eCk7CmV4dGVybiBydHgg
Z2VuX2J1bmxlIChydHgpOwpleHRlcm4gcnR4IGdlbl9idW5sdCAocnR4KTsKZXh0ZXJuIHJ0eCBn
ZW5fYmx0Z3QgKHJ0eCk7CmV4dGVybiBydHggZ2VuX3NlcSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5f
c25lIChydHgpOwpleHRlcm4gcnR4IGdlbl9zZ3QgKHJ0eCk7CmV4dGVybiBydHggZ2VuX3NsdCAo
cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc2dlIChydHgpOwpleHRlcm4gcnR4IGdlbl9zbGUgKHJ0eCk7
CmV4dGVybiBydHggZ2VuX3NndHUgKHJ0eCk7CmV4dGVybiBydHggZ2VuX3NsdHUgKHJ0eCk7CmV4
dGVybiBydHggZ2VuX3NnZXUgKHJ0eCk7CmV4dGVybiBydHggZ2VuX3NsZXUgKHJ0eCk7CmV4dGVy
biBydHggZ2VuX2luZGlyZWN0X2p1bXAgKHJ0eCk7CmV4dGVybiBydHggZ2VuX3RhYmxlanVtcCAo
cnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl90YWJsZWp1bXBzaSAocnR4LCBydHgpOwpleHRlcm4g
cnR4IGdlbl90YWJsZWp1bXBkaSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9kb2xvb3BfZW5k
IChydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2N0cnNpIChydHgsIHJ0
eCk7CmV4dGVybiBydHggZ2VuX2N0cmRpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2NvbmRp
dGlvbmFsX3RyYXAgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fcHJvbG9ndWUgKHZvaWQpOwpl
eHRlcm4gcnR4IGdlbl9lcGlsb2d1ZSAodm9pZCk7CmV4dGVybiBydHggZ2VuX21vdnNpX3RvX2Ny
X29uZSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9laF9yZXR1cm4gKHJ0eCwgcnR4KTsKZXh0
ZXJuIHJ0eCBnZW5fbW92djRzaSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3Z2OGhpIChy
dHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnYxNnFpIChydHgsIHJ0eCk7CmV4dGVybiBydHgg
Z2VuX21vdnY0c2YgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fbXVsdjRzZjMgKHJ0eCwgcnR4
LCBydHgpOwpleHRlcm4gcnR4IGdlbl9jcjZfdGVzdF9mb3JfemVybyAocnR4KTsKZXh0ZXJuIHJ0
eCBnZW5fY3I2X3Rlc3RfZm9yX3plcm9fcmV2ZXJzZSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY3I2
X3Rlc3RfZm9yX2x0IChydHgpOwpleHRlcm4gcnR4IGdlbl9jcjZfdGVzdF9mb3JfbHRfcmV2ZXJz
ZSAocnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9tb3Z2MnNpIChydHgsIHJ0eCk7CnN0
YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fbW92djJzaShhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmli
dXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk
X18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fbW92djFkaSAo
cnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX21vdnYxZGkoYSwgYikKICAgICBy
dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl
X18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHgg
Z2VuX21vdnY0aGkgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9tb3Z2NGhp
KGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg
YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9f
aW5saW5lX18gcnR4IGdlbl9tb3Z2MnNmIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0
eApnZW5fbW92djJzZihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw
Owp9CiMgMTAgInRtLmgiIDIKIyAyNiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny
Yy9mc2YvZ2NjL3NyYy9nY2MvYy1wcmV0dHktcHJpbnQuYyIgMgojIDEgIi9Wb2x1bWVzL1VGU19Q
YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3JlYWwuaCIgMQojIDI1ICIvVm9s
dW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9yZWFsLmgiCiMg
MSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvbWFj
aG1vZGUuaCIgMQojIDI5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n
Y2Mvc3JjL2djYy9tYWNobW9kZS5oIgplbnVtIG1hY2hpbmVfbW9kZSB7CiMgMSAiL1ZvbHVtZXMv
VUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvbWFjaG1vZGUuZGVmIiAx
CiMgNzQgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2Nj
L21hY2htb2RlLmRlZiIKVk9JRG1vZGUsCgpCSW1vZGUsClFJbW9kZSwKSEltb2RlLApTSW1vZGUs
CkRJbW9kZSwKVEltb2RlLApPSW1vZGUsCgoKCgpQUUltb2RlLApQSEltb2RlLApQU0ltb2RlLApQ
REltb2RlLAoKUUZtb2RlLApIRm1vZGUsClRRRm1vZGUsClNGbW9kZSwKREZtb2RlLApYRm1vZGUs
ClRGbW9kZSwKCgpRQ21vZGUsCkhDbW9kZSwKU0Ntb2RlLApEQ21vZGUsClhDbW9kZSwKVENtb2Rl
LAoKQ1FJbW9kZSwKQ0hJbW9kZSwKQ1NJbW9kZSwKQ0RJbW9kZSwKQ1RJbW9kZSwKQ09JbW9kZSwK
CgoKCgpWMURJbW9kZSwKVjJRSW1vZGUsClYySEltb2RlLApWMlNJbW9kZSwKVjJESW1vZGUsCgpW
NFFJbW9kZSwKVjRISW1vZGUsClY0U0ltb2RlLApWNERJbW9kZSwKClY4UUltb2RlLApWOEhJbW9k
ZSwKVjhTSW1vZGUsClY4REltb2RlLAoKVjE2UUltb2RlLAoKVjJIRm1vZGUsClYyU0Ztb2RlLApW
MkRGbW9kZSwKClY0SEZtb2RlLApWNFNGbW9kZSwKVjRERm1vZGUsCgpWOEhGbW9kZSwKVjhTRm1v
ZGUsClY4REZtb2RlLApWMTZTRm1vZGUsCgoKCkJMS21vZGUsCiMgMTYxICIvVm9sdW1lcy9VRlNf
UGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9tYWNobW9kZS5kZWYiCkNDbW9k
ZSwKCgoKCgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z
cmMvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLW1vZGVzLmRlZiIgMQojIDI5ICIvVm9sdW1lcy9V
RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jb25maWcvcnM2MDAwL3Jz
NjAwMC1tb2Rlcy5kZWYiCkNDVU5TbW9kZSwKQ0NGUG1vZGUsCkNDRVFtb2RlLAojIDE2OCAiL1Zv
bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvbWFjaG1vZGUu
ZGVmIiAyCiMgMzEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z
cmMvZ2NjL21hY2htb2RlLmgiIDIKTUFYX01BQ0hJTkVfTU9ERSB9OwojIDQxICIvVm9sdW1lcy9V
RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9tYWNobW9kZS5oIgpleHRl
cm4gY29uc3QgY2hhciAqIGNvbnN0IG1vZGVfbmFtZVsoaW50KSBNQVhfTUFDSElORV9NT0RFXTsK
CgplbnVtIG1vZGVfY2xhc3MgeyBNT0RFX1JBTkRPTSwgTU9ERV9JTlQsIE1PREVfRkxPQVQsIE1P
REVfUEFSVElBTF9JTlQsIE1PREVfQ0MsCiAgICBNT0RFX0NPTVBMRVhfSU5ULCBNT0RFX0NPTVBM
RVhfRkxPQVQsCiAgICBNT0RFX1ZFQ1RPUl9JTlQsIE1PREVfVkVDVE9SX0ZMT0FULAogICAgTUFY
X01PREVfQ0xBU1N9OwoKCgoKZXh0ZXJuIGNvbnN0IGVudW0gbW9kZV9jbGFzcyBtb2RlX2NsYXNz
WyhpbnQpIE1BWF9NQUNISU5FX01PREVdOwojIDg5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3Bp
bnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9tYWNobW9kZS5oIgpleHRlcm4gY29uc3QgdW5zaWdu
ZWQgY2hhciBtb2RlX3NpemVbKGludCkgTUFYX01BQ0hJTkVfTU9ERV07CgoKCgpleHRlcm4gY29u
c3QgdW5zaWduZWQgY2hhciBtb2RlX3VuaXRfc2l6ZVsoaW50KSBNQVhfTUFDSElORV9NT0RFXTsK
IyAxMDUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2Nj
L21hY2htb2RlLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBtb2RlX2JpdHNpemVbKGlu
dCkgTUFYX01BQ0hJTkVfTU9ERV07CiMgMTE1ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr
aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9tYWNobW9kZS5oIgpleHRlcm4gY29uc3QgdW5zaWduZWQg
bG9uZyBtb2RlX21hc2tfYXJyYXlbKGludCkgTUFYX01BQ0hJTkVfTU9ERV07CgoKCmV4dGVybiBj
b25zdCBlbnVtIG1hY2hpbmVfbW9kZSBpbm5lcl9tb2RlX2FycmF5WyhpbnQpIE1BWF9NQUNISU5F
X01PREVdOwojIDEzMiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2Nj
L3NyYy9nY2MvbWFjaG1vZGUuaCIKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgbW9kZV93aWRl
cl9tb2RlWyhpbnQpIE1BWF9NQUNISU5FX01PREVdOwoKCgoKCgpleHRlcm4gZW51bSBtYWNoaW5l
X21vZGUgbW9kZV9mb3Jfc2l6ZSAodW5zaWduZWQgaW50LCBlbnVtIG1vZGVfY2xhc3MsIGludCk7
CgoKCgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgc21hbGxlc3RfbW9kZV9mb3Jfc2l6ZQogICAg
KHVuc2lnbmVkIGludCwgZW51bSBtb2RlX2NsYXNzKTsKCgoKCgpleHRlcm4gZW51bSBtYWNoaW5l
X21vZGUgaW50X21vZGVfZm9yX21vZGUgKGVudW0gbWFjaGluZV9tb2RlKTsKCgoKZXh0ZXJuIGVu
dW0gbWFjaGluZV9tb2RlIGdldF9iZXN0X21vZGUgKGludCwgaW50LCB1bnNpZ25lZCBpbnQsIGVu
dW0gbWFjaGluZV9tb2RlLCBpbnQpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIGdldF9tb2RlX2FsaWdu
bWVudCAoZW51bSBtYWNoaW5lX21vZGUpOwoKCgoKCmV4dGVybiBjb25zdCBlbnVtIG1hY2hpbmVf
bW9kZSBjbGFzc19uYXJyb3dlc3RfbW9kZVsoaW50KSBNQVhfTU9ERV9DTEFTU107CgoKCgoKZXh0
ZXJuIGVudW0gbWFjaGluZV9tb2RlIGJ5dGVfbW9kZTsKZXh0ZXJuIGVudW0gbWFjaGluZV9tb2Rl
IHdvcmRfbW9kZTsKZXh0ZXJuIGVudW0gbWFjaGluZV9tb2RlIHB0cl9tb2RlOwojIDI2ICIvVm9s
dW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9yZWFsLmgiIDIK
CgoKCmVudW0gcmVhbF92YWx1ZV9jbGFzcyB7CiAgcnZjX3plcm8sCiAgcnZjX25vcm1hbCwKICBy
dmNfaW5mLAogIHJ2Y19uYW4KfTsKCgoKCgoKCnN0cnVjdCByZWFsX3ZhbHVlCnsKICBlbnVtIHJl
YWxfdmFsdWVfY2xhc3MgY2xhc3MgOiAyOwogIHVuc2lnbmVkIGludCBzaWduIDogMTsKICB1bnNp
Z25lZCBpbnQgc2lnbmFsbGluZyA6IDE7CiAgdW5zaWduZWQgaW50IGNhbm9uaWNhbCA6IDE7CiAg
c2lnbmVkIGludCBleHAgOiAoMzIgLSA1KTsKICB1bnNpZ25lZCBsb25nIHNpZ1soKDEyOCArICg4
ICogNCkpIC8gKDggKiA0KSldOwp9OwojIDY4ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr
aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9yZWFsLmgiCmV4dGVybiBjaGFyIHRlc3RfcmVhbF93aWR0
aAogIFtzaXplb2Yoc3RydWN0IHJlYWxfdmFsdWUpIDw9ICgoKDEyOCArICg4ICogNCkpICsgMzIp
Lyg4ICogNCkgKyAoKCgxMjggKyAoOCAqIDQpKSArIDMyKSUoOCAqIDQpID8gMSA6IDApKSpzaXpl
b2YobG9uZykgPyAxIDogLTFdOwojIDEwNiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lh
L3NyYy9mc2YvZ2NjL3NyYy9nY2MvcmVhbC5oIgpzdHJ1Y3QgcmVhbF9mb3JtYXQKewoKICB2b2lk
ICgqZW5jb2RlKSAoY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0ICosIGxvbmcgKiwgY29uc3Qgc3Ry
dWN0IHJlYWxfdmFsdWUgKik7CgogIHZvaWQgKCpkZWNvZGUpIChjb25zdCBzdHJ1Y3QgcmVhbF9m
b3JtYXQgKiwgc3RydWN0IHJlYWxfdmFsdWUgKiwgY29uc3QgbG9uZyAqKTsKCgoKICBpbnQgYjsK
CgogIGludCBsb2cyX2I7CgoKICBpbnQgcDsKCgogIGludCBwbmFuOwoKCiAgaW50IGVtaW47CgoK
ICBpbnQgZW1heDsKCgogIGludCBzaWduYml0OwoKCiAgX0Jvb2wgaGFzX25hbnM7CiAgX0Jvb2wg
aGFzX2luZjsKICBfQm9vbCBoYXNfZGVub3JtOwogIF9Cb29sIGhhc19zaWduZWRfemVybzsKICBf
Qm9vbCBxbmFuX21zYl9zZXQ7Cn07CgoKCgpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0
ICpyZWFsX2Zvcm1hdF9mb3JfbW9kZVtURm1vZGUgLSBRRm1vZGUgKyAxXTsKCgoKCgpleHRlcm4g
dm9pZCByZWFsX2FyaXRobWV0aWMgKHN0cnVjdCByZWFsX3ZhbHVlICosIGludCwgY29uc3Qgc3Ry
dWN0IHJlYWxfdmFsdWUgKiwgY29uc3Qgc3RydWN0IHJlYWxfdmFsdWUgKik7CgoKCgpleHRlcm4g
X0Jvb2wgcmVhbF9jb21wYXJlIChpbnQsIGNvbnN0IHN0cnVjdCByZWFsX3ZhbHVlICosIGNvbnN0
IHN0cnVjdCByZWFsX3ZhbHVlICopOwoKCgpleHRlcm4gX0Jvb2wgcmVhbF9pc2luZiAoY29uc3Qg
c3RydWN0IHJlYWxfdmFsdWUgKik7CgoKZXh0ZXJuIF9Cb29sIHJlYWxfaXNuYW4gKGNvbnN0IHN0
cnVjdCByZWFsX3ZhbHVlICopOwoKCmV4dGVybiBfQm9vbCByZWFsX2lzbmVnIChjb25zdCBzdHJ1
Y3QgcmVhbF92YWx1ZSAqKTsKCgpleHRlcm4gX0Jvb2wgcmVhbF9pc25lZ3plcm8gKGNvbnN0IHN0
cnVjdCByZWFsX3ZhbHVlICopOwoKCmV4dGVybiBfQm9vbCByZWFsX2lkZW50aWNhbCAoY29uc3Qg
c3RydWN0IHJlYWxfdmFsdWUgKiwgY29uc3Qgc3RydWN0IHJlYWxfdmFsdWUgKik7CgoKCmV4dGVy
biB2b2lkIHJlYWxfY29udmVydCAoc3RydWN0IHJlYWxfdmFsdWUgKiwgZW51bSBtYWNoaW5lX21v
ZGUsIGNvbnN0IHN0cnVjdCByZWFsX3ZhbHVlICopOwoKCgoKZXh0ZXJuIF9Cb29sIGV4YWN0X3Jl
YWxfdHJ1bmNhdGUgKGVudW0gbWFjaGluZV9tb2RlLCBjb25zdCBzdHJ1Y3QgcmVhbF92YWx1ZSAq
KTsKCgoKZXh0ZXJuIHZvaWQgcmVhbF90b19kZWNpbWFsIChjaGFyICosIGNvbnN0IHN0cnVjdCBy
ZWFsX3ZhbHVlICosIHNpemVfdCwgc2l6ZV90LCBpbnQpOwoKCgpleHRlcm4gdm9pZCByZWFsX3Rv
X2hleGFkZWNpbWFsIChjaGFyICosIGNvbnN0IHN0cnVjdCByZWFsX3ZhbHVlICosIHNpemVfdCwg
c2l6ZV90LCBpbnQpOwoKCgpleHRlcm4gbG9uZyByZWFsX3RvX2ludGVnZXIgKGNvbnN0IHN0cnVj
dCByZWFsX3ZhbHVlICopOwpleHRlcm4gdm9pZCByZWFsX3RvX2ludGVnZXIyIChsb25nICosIGxv
bmcgKiwgY29uc3Qgc3RydWN0IHJlYWxfdmFsdWUgKik7CgoKCmV4dGVybiB2b2lkIHJlYWxfZnJv
bV9zdHJpbmcgKHN0cnVjdCByZWFsX3ZhbHVlICosIGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIHZv
aWQgcmVhbF9mcm9tX2ludGVnZXIgKHN0cnVjdCByZWFsX3ZhbHVlICosIGVudW0gbWFjaGluZV9t
b2RlLCB1bnNpZ25lZCBsb25nLCBsb25nLCBpbnQpOwoKCgoKZXh0ZXJuIGxvbmcgcmVhbF90b190
YXJnZXRfZm10IChsb25nICosIGNvbnN0IHN0cnVjdCByZWFsX3ZhbHVlICosIGNvbnN0IHN0cnVj
dCByZWFsX2Zvcm1hdCAqKTsKCmV4dGVybiBsb25nIHJlYWxfdG9fdGFyZ2V0IChsb25nICosIGNv
bnN0IHN0cnVjdCByZWFsX3ZhbHVlICosIGVudW0gbWFjaGluZV9tb2RlKTsKCgpleHRlcm4gdm9p
ZCByZWFsX2Zyb21fdGFyZ2V0X2ZtdCAoc3RydWN0IHJlYWxfdmFsdWUgKiwgY29uc3QgbG9uZyAq
LCBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgKik7CgpleHRlcm4gdm9pZCByZWFsX2Zyb21fdGFy
Z2V0IChzdHJ1Y3QgcmVhbF92YWx1ZSAqLCBjb25zdCBsb25nICosIGVudW0gbWFjaGluZV9tb2Rl
KTsKCgpleHRlcm4gdm9pZCByZWFsX2luZiAoc3RydWN0IHJlYWxfdmFsdWUgKik7CgpleHRlcm4g
X0Jvb2wgcmVhbF9uYW4gKHN0cnVjdCByZWFsX3ZhbHVlICosIGNvbnN0IGNoYXIgKiwgaW50LCBl
bnVtIG1hY2hpbmVfbW9kZSk7CgoKZXh0ZXJuIHZvaWQgcmVhbF8yZXhwTiAoc3RydWN0IHJlYWxf
dmFsdWUgKiwgaW50KTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgcmVhbF9oYXNoIChjb25zdCBzdHJ1
Y3QgcmVhbF92YWx1ZSAqKTsKCgoKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBpZWVl
X3NpbmdsZV9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgbWlwc19zaW5n
bGVfZm9ybWF0OwpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0IGllZWVfZG91YmxlX2Zv
cm1hdDsKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBtaXBzX2RvdWJsZV9mb3JtYXQ7
CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgaWVlZV9leHRlbmRlZF9tb3Rvcm9sYV9m
b3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgaWVlZV9leHRlbmRlZF9pbnRl
bF85Nl9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgaWVlZV9leHRlbmRl
ZF9pbnRlbF8xMjhfZm9ybWF0OwpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0IGlibV9l
eHRlbmRlZF9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgbWlwc19leHRl
bmRlZF9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgaWVlZV9xdWFkX2Zv
cm1hdDsKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBtaXBzX3F1YWRfZm9ybWF0Owpl
eHRlcm4gY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0IHZheF9mX2Zvcm1hdDsKZXh0ZXJuIGNvbnN0
IHN0cnVjdCByZWFsX2Zvcm1hdCB2YXhfZF9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVh
bF9mb3JtYXQgdmF4X2dfZm9ybWF0OwpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0IGkz
NzBfc2luZ2xlX2Zvcm1hdDsKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBpMzcwX2Rv
dWJsZV9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgYzR4X3NpbmdsZV9m
b3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgYzR4X2V4dGVuZGVkX2Zvcm1h
dDsKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCByZWFsX2ludGVybmFsX2Zvcm1hdDsK
IyAyODkgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2Nj
L3JlYWwuaCIKZXh0ZXJuIHN0cnVjdCByZWFsX3ZhbHVlIHJlYWxfdmFsdWVfdHJ1bmNhdGUgKGVu
dW0gbWFjaGluZV9tb2RlLCBzdHJ1Y3QgcmVhbF92YWx1ZSk7CgoKCgoKZXh0ZXJuIHN0cnVjdCBy
ZWFsX3ZhbHVlIHJlYWxfYXJpdGhtZXRpYzIgKGludCwgY29uc3Qgc3RydWN0IHJlYWxfdmFsdWUg
KiwgY29uc3Qgc3RydWN0IHJlYWxfdmFsdWUgKik7CiMgMzA0ICIvVm9sdW1lcy9VRlNfUGFydGl0
aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9yZWFsLmgiCmV4dGVybiBpbnQgc2lnbmlm
aWNhbmRfc2l6ZSAoZW51bSBtYWNoaW5lX21vZGUpOwoKZXh0ZXJuIHN0cnVjdCByZWFsX3ZhbHVl
IHJlYWxfZnJvbV9zdHJpbmcyIChjb25zdCBjaGFyICosIGVudW0gbWFjaGluZV9tb2RlKTsKIyAz
MjUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3Jl
YWwuaCIKZXh0ZXJuIGludCByZWFsX2V4cG9uZW50IChjb25zdCBzdHJ1Y3QgcmVhbF92YWx1ZSAq
KTsKCgpleHRlcm4gdm9pZCByZWFsX2xkZXhwIChzdHJ1Y3QgcmVhbF92YWx1ZSAqLCBjb25zdCBz
dHJ1Y3QgcmVhbF92YWx1ZSAqLCBpbnQpOwoKCgoKCgpleHRlcm4gc3RydWN0IHJlYWxfdmFsdWUg
ZGNvbnN0MDsKZXh0ZXJuIHN0cnVjdCByZWFsX3ZhbHVlIGRjb25zdDE7CmV4dGVybiBzdHJ1Y3Qg
cmVhbF92YWx1ZSBkY29uc3QyOwpleHRlcm4gc3RydWN0IHJlYWxfdmFsdWUgZGNvbnN0bTE7CmV4
dGVybiBzdHJ1Y3QgcmVhbF92YWx1ZSBkY29uc3RtMjsKZXh0ZXJuIHN0cnVjdCByZWFsX3ZhbHVl
IGRjb25zdGhhbGY7CgoKCnN0cnVjdCByZWFsX3ZhbHVlIHJlYWxfdmFsdWVfZnJvbV9pbnRfY3N0
ICh1bmlvbiB0cmVlX25vZGUgKiwgdW5pb24gdHJlZV9ub2RlICopOwojIDM1NCAiL1ZvbHVtZXMv
VUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvcmVhbC5oIgpleHRlcm4g
cnR4IGNvbnN0X2RvdWJsZV9mcm9tX3JlYWxfdmFsdWUgKHN0cnVjdCByZWFsX3ZhbHVlLCBlbnVt
IG1hY2hpbmVfbW9kZSk7CgoKCmV4dGVybiBfQm9vbCBleGFjdF9yZWFsX2ludmVyc2UgKGVudW0g
bWFjaGluZV9tb2RlLCBzdHJ1Y3QgcmVhbF92YWx1ZSAqKTsKCgpleHRlcm4gdHJlZSBidWlsZF9y
ZWFsICh0cmVlLCBzdHJ1Y3QgcmVhbF92YWx1ZSk7CgoKZXh0ZXJuIF9Cb29sIHJlYWxfc3FydCAo
c3RydWN0IHJlYWxfdmFsdWUgKiwgZW51bSBtYWNoaW5lX21vZGUsIGNvbnN0IHN0cnVjdCByZWFs
X3ZhbHVlICopOwojIDI3ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n
Y2Mvc3JjL2djYy9jLXByZXR0eS1wcmludC5jIiAyCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv
bi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvYy1wcmV0dHktcHJpbnQuaCIgMQojIDI1ICIv
Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLXByZXR0
eS1wcmludC5oIgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2dj
Yy9zcmMvZ2NjL3RyZWUuaCIgMQojIDI1ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEv
c3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w
aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvbWFjaG1vZGUuaCIgMQojIDI2ICIvVm9sdW1lcy9V
RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiIDIKIyAxICIv
Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy92ZXJzaW9u
LmgiIDEKCgpleHRlcm4gY29uc3QgY2hhciB2ZXJzaW9uX3N0cmluZ1tdOwpleHRlcm4gY29uc3Qg
Y2hhciBidWdfcmVwb3J0X3VybFtdOwojIDI3ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr
aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiIDIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0
aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9sb2NhdGlvbi5oIiAxCiMgMjcgIi9Wb2x1
bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2xvY2F0aW9uLmgi
CnN0cnVjdCBsb2NhdGlvbl9zCnsKCiAgY29uc3QgY2hhciAqZmlsZTsKCgogIGludCBsaW5lOwp9
Owp0eXBlZGVmIHN0cnVjdCBsb2NhdGlvbl9zIGxvY2F0aW9uX3Q7CiMgMjggIi9Wb2x1bWVzL1VG
U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIgMgoKCgoKCmVu
dW0gdHJlZV9jb2RlIHsKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz
Zi9nY2Mvc3JjL2djYy90cmVlLmRlZiIgMQojIDUwICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3Bp
bnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmRlZiIKRVJST1JfTUFSSywKCgoKCgpJREVO
VElGSUVSX05PREUsCgoKCgoKClRSRUVfTElTVCwKCgpUUkVFX1ZFQywKIyA4OCAiL1ZvbHVtZXMv
VUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5kZWYiCkJMT0NL
LAojIDEzMyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9n
Y2MvdHJlZS5kZWYiClZPSURfVFlQRSwKIyAxNDMgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGlu
c2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpJTlRFR0VSX1RZUEUsCgoKClJFQUxf
VFlQRSwKCgoKQ09NUExFWF9UWVBFLAoKCgpWRUNUT1JfVFlQRSwKIyAxNjggIi9Wb2x1bWVzL1VG
U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpFTlVNRVJB
TF9UWVBFLAoKCgpCT09MRUFOX1RZUEUsCgoKCkNIQVJfVFlQRSwKCgoKUE9JTlRFUl9UWVBFLAoK
CgoKCk9GRlNFVF9UWVBFLAoKCgpSRUZFUkVOQ0VfVFlQRSwKCgoKCgoKTUVUSE9EX1RZUEUsCgoK
RklMRV9UWVBFLAojIDIxMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv
Z2NjL3NyYy9nY2MvdHJlZS5kZWYiCkFSUkFZX1RZUEUsCgoKCgoKU0VUX1RZUEUsCiMgMjI3ICIv
Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmRl
ZiIKUkVDT1JEX1RZUEUsCgoKCgoKVU5JT05fVFlQRSwKCgoKCgpRVUFMX1VOSU9OX1RZUEUsCgoK
CgoKCgpGVU5DVElPTl9UWVBFLAoKCgoKCkxBTkdfVFlQRSwKIyAyNjQgIi9Wb2x1bWVzL1VGU19Q
YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpJTlRFR0VSX0NT
VCwKCgpSRUFMX0NTVCwKCgoKQ09NUExFWF9DU1QsCgoKVkVDVE9SX0NTVCwKCgpTVFJJTkdfQ1NU
LAojIDMzNiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9n
Y2MvdHJlZS5kZWYiCkZVTkNUSU9OX0RFQ0wsCkxBQkVMX0RFQ0wsCkNPTlNUX0RFQ0wsClRZUEVf
REVDTCwKVkFSX0RFQ0wsClBBUk1fREVDTCwKUkVTVUxUX0RFQ0wsCkZJRUxEX0RFQ0wsCgoKCk5B
TUVTUEFDRV9ERUNMLAoKCgoKCgpDT01QT05FTlRfUkVGLAojIDM2MyAiL1ZvbHVtZXMvVUZTX1Bh
cnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5kZWYiCkJJVF9GSUVMRF9S
RUYsCgoKSU5ESVJFQ1RfUkVGLAoKCkJVRkZFUl9SRUYsCgoKCkFSUkFZX1JFRiwKCgoKCkFSUkFZ
X1JBTkdFX1JFRiwKCgoKCgoKVlRBQkxFX1JFRiwKIyA0MDcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp
b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpDT05TVFJVQ1RPUiwKIyA0
MTcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3Ry
ZWUuZGVmIgpDT01QT1VORF9FWFBSLAoKCk1PRElGWV9FWFBSLAoKCgpJTklUX0VYUFIsCgoKCgoK
ClRBUkdFVF9FWFBSLAojIDQ0MSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9m
c2YvZ2NjL3NyYy9nY2MvdHJlZS5kZWYiCkNPTkRfRVhQUiwKIyA0NjQgIi9Wb2x1bWVzL1VGU19Q
YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpCSU5EX0VYUFIs
CgoKCgpDQUxMX0VYUFIsCgoKCgpNRVRIT0RfQ0FMTF9FWFBSLAojIDQ4OCAiL1ZvbHVtZXMvVUZT
X1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5kZWYiCldJVEhfQ0xF
QU5VUF9FWFBSLAojIDUwNSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv
Z2NjL3NyYy9nY2MvdHJlZS5kZWYiCkNMRUFOVVBfUE9JTlRfRVhQUiwKIyA1NTQgIi9Wb2x1bWVz
L1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpQTEFD
RUhPTERFUl9FWFBSLAoKCgoKCldJVEhfUkVDT1JEX0VYUFIsCgoKUExVU19FWFBSLApNSU5VU19F
WFBSLApNVUxUX0VYUFIsCgoKVFJVTkNfRElWX0VYUFIsCgoKQ0VJTF9ESVZfRVhQUiwKCgpGTE9P
Ul9ESVZfRVhQUiwKCgpST1VORF9ESVZfRVhQUiwKCgpUUlVOQ19NT0RfRVhQUiwKQ0VJTF9NT0Rf
RVhQUiwKRkxPT1JfTU9EX0VYUFIsClJPVU5EX01PRF9FWFBSLAoKClJESVZfRVhQUiwKCgoKRVhB
Q1RfRElWX0VYUFIsCgoKCgoKCkZJWF9UUlVOQ19FWFBSLApGSVhfQ0VJTF9FWFBSLApGSVhfRkxP
T1JfRVhQUiwKRklYX1JPVU5EX0VYUFIsCgoKRkxPQVRfRVhQUiwKCgpORUdBVEVfRVhQUiwKCk1J
Tl9FWFBSLApNQVhfRVhQUiwKCgoKCgpBQlNfRVhQUiwKCgpGRlNfRVhQUiwKQ0xaX0VYUFIsCkNU
Wl9FWFBSLApQT1BDT1VOVF9FWFBSLApQQVJJVFlfRVhQUiwKIyA2MzEgIi9Wb2x1bWVzL1VGU19Q
YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpMU0hJRlRfRVhQ
UiwKUlNISUZUX0VYUFIsCkxST1RBVEVfRVhQUiwKUlJPVEFURV9FWFBSLAoKCkJJVF9JT1JfRVhQ
UiwKQklUX1hPUl9FWFBSLApCSVRfQU5EX0VYUFIsCkJJVF9BTkRUQ19FWFBSLApCSVRfTk9UX0VY
UFIsCiMgNjUyICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3Jj
L2djYy90cmVlLmRlZiIKVFJVVEhfQU5ESUZfRVhQUiwKVFJVVEhfT1JJRl9FWFBSLApUUlVUSF9B
TkRfRVhQUiwKVFJVVEhfT1JfRVhQUiwKVFJVVEhfWE9SX0VYUFIsClRSVVRIX05PVF9FWFBSLAoK
CgoKCgoKTFRfRVhQUiwKTEVfRVhQUiwKR1RfRVhQUiwKR0VfRVhQUiwKRVFfRVhQUiwKTkVfRVhQ
UiwKCgpVTk9SREVSRURfRVhQUiwKT1JERVJFRF9FWFBSLAoKClVOTFRfRVhQUiwKVU5MRV9FWFBS
LApVTkdUX0VYUFIsClVOR0VfRVhQUiwKVU5FUV9FWFBSLAoKCklOX0VYUFIsClNFVF9MRV9FWFBS
LApDQVJEX0VYUFIsClJBTkdFX0VYUFIsCgoKCgpDT05WRVJUX0VYUFIsCgoKTk9QX0VYUFIsCgoK
Tk9OX0xWQUxVRV9FWFBSLAojIDcxMCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny
Yy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5kZWYiClZJRVdfQ09OVkVSVF9FWFBSLAoKCgoKClNBVkVf
RVhQUiwKIyA3MjUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z
cmMvZ2NjL3RyZWUuZGVmIgpVTlNBVkVfRVhQUiwKIyA3MzQgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp
b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpSVExfRVhQUiwKCgoKQURE
Ul9FWFBSLAoKClJFRkVSRU5DRV9FWFBSLAoKCgpFTlRSWV9WQUxVRV9FWFBSLAoKCgpGREVTQ19F
WFBSLAoKCgpDT01QTEVYX0VYUFIsCgoKQ09OSl9FWFBSLAoKCgpSRUFMUEFSVF9FWFBSLApJTUFH
UEFSVF9FWFBSLAoKCgoKUFJFREVDUkVNRU5UX0VYUFIsClBSRUlOQ1JFTUVOVF9FWFBSLApQT1NU
REVDUkVNRU5UX0VYUFIsClBPU1RJTkNSRU1FTlRfRVhQUiwKCgpWQV9BUkdfRVhQUiwKCgoKCgoK
VFJZX0NBVENIX0VYUFIsCiMgNzkzICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3Jj
L2ZzZi9nY2Mvc3JjL2djYy90cmVlLmRlZiIKVFJZX0ZJTkFMTFlfRVhQUiwKCgoKCgoKR09UT19T
VUJST1VUSU5FX0VYUFIsCgoKCgoKCgpMQUJFTF9FWFBSLAoKCgpHT1RPX0VYUFIsCgoKCgoKClJF
VFVSTl9FWFBSLAoKCgpFWElUX0VYUFIsCgoKCgpMT09QX0VYUFIsCgoKCgpMQUJFTEVEX0JMT0NL
X0VYUFIsCgoKCgpFWElUX0JMT0NLX0VYUFIsCiMgODQ3ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9u
L3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmRlZiIKRVhQUl9XSVRIX0ZJTEVfTE9D
QVRJT04sCgoKCgoKU1dJVENIX0VYUFIsCgoKRVhDX1BUUl9FWFBSLAojIDM1ICIvVm9sdW1lcy9V
RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiIDIKCiAgTEFT
VF9BTkRfVU5VU0VEX1RSRUVfQ09ERQoKfTsKIyA1MyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w
aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgpleHRlcm4gY29uc3QgY2hhciB0cmVl
X2NvZGVfdHlwZVtdOwojIDY0ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz
Zi9nY2Mvc3JjL2djYy90cmVlLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIHRyZWVfY29k
ZV9sZW5ndGhbXTsKCgoKCmV4dGVybiBjb25zdCBjaGFyICpjb25zdCB0cmVlX2NvZGVfbmFtZVtd
OwoKCgplbnVtIGJ1aWx0X2luX2NsYXNzCnsKICBOT1RfQlVJTFRfSU4gPSAwLAogIEJVSUxUX0lO
X0ZST05URU5ELAogIEJVSUxUX0lOX01ELAogIEJVSUxUX0lOX05PUk1BTAp9OwoKCmV4dGVybiBj
b25zdCBjaGFyICpjb25zdCBidWlsdF9pbl9jbGFzc19uYW1lc1s0XTsKCgoKCgplbnVtIGJ1aWx0
X2luX2Z1bmN0aW9uCnsKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz
Zi9nY2Mvc3JjL2djYy9idWlsdGlucy5kZWYiIDEKIyAxNTEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp
b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2J1aWx0aW5zLmRlZiIKQlVJTFRfSU5fQUxM
T0NBLAoKCgoKCkJVSUxUX0lOX0FCUywKCgoKQlVJTFRfSU5fTEFCUywKCgoKCkJVSUxUX0lOX0ZB
QlMsCgoKCkJVSUxUX0lOX0ZBQlNGLAoKCgpCVUlMVF9JTl9GQUJTTCwKCgoKCkJVSUxUX0lOX0ZM
T09SLAoKCgpCVUlMVF9JTl9GTE9PUkYsCgoKCkJVSUxUX0lOX0ZMT09STCwKCgoKCkJVSUxUX0lO
X0NFSUwsCgoKCkJVSUxUX0lOX0NFSUxGLAoKCgpCVUlMVF9JTl9DRUlMTCwKCgoKCkJVSUxUX0lO
X1JPVU5ELAoKCgpCVUlMVF9JTl9ST1VOREYsCgoKCkJVSUxUX0lOX1JPVU5ETCwKCgoKCkJVSUxU
X0lOX1RSVU5DLAoKCgpCVUlMVF9JTl9UUlVOQ0YsCgoKCkJVSUxUX0lOX1RSVU5DTCwKCgoKCkJV
SUxUX0lOX05FQVJCWUlOVCwKCgoKQlVJTFRfSU5fTkVBUkJZSU5URiwKCgoKQlVJTFRfSU5fTkVB
UkJZSU5UTCwKCgoKCkJVSUxUX0lOX0xMQUJTLAoKCgpCVUlMVF9JTl9JTUFYQUJTLAoKCgpCVUlM
VF9JTl9DT05KLAoKCgpCVUlMVF9JTl9DT05KRiwKCgoKQlVJTFRfSU5fQ09OSkwsCgoKCkJVSUxU
X0lOX0NSRUFMLAoKCgpCVUlMVF9JTl9DUkVBTEYsCgoKCkJVSUxUX0lOX0NSRUFMTCwKCgoKQlVJ
TFRfSU5fQ0lNQUcsCgoKCkJVSUxUX0lOX0NJTUFHRiwKCgoKQlVJTFRfSU5fQ0lNQUdMLAoKCgoK
CgoKQlVJTFRfSU5fQlpFUk8sCgoKCgoKCkJVSUxUX0lOX0JDT1BZLAoKCgoKCgpCVUlMVF9JTl9C
Q01QLAoKCgoKCgoKQlVJTFRfSU5fRkZTLAoKCgpCVUlMVF9JTl9DTFosCgoKCkJVSUxUX0lOX0NU
WiwKCgoKQlVJTFRfSU5fUE9QQ09VTlQsCgoKCkJVSUxUX0lOX1BBUklUWSwKCgoKCkJVSUxUX0lO
X0ZGU0wsCgoKCkJVSUxUX0lOX0NMWkwsCgoKCkJVSUxUX0lOX0NUWkwsCgoKCkJVSUxUX0lOX1BP
UENPVU5UTCwKCgoKQlVJTFRfSU5fUEFSSVRZTCwKCgoKCkJVSUxUX0lOX0ZGU0xMLAoKCgpCVUlM
VF9JTl9DTFpMTCwKCgoKQlVJTFRfSU5fQ1RaTEwsCgoKCkJVSUxUX0lOX1BPUENPVU5UTEwsCgoK
CkJVSUxUX0lOX1BBUklUWUxMLAoKCgoKQlVJTFRfSU5fSU5ERVgsCgoKCkJVSUxUX0lOX1JJTkRF
WCwKCgoKCkJVSUxUX0lOX01FTUNQWSwKCgoKQlVJTFRfSU5fTUVNTU9WRSwKCgoKQlVJTFRfSU5f
TUVNQ01QLAoKCgpCVUlMVF9JTl9NRU1TRVQsCgoKCkJVSUxUX0lOX01FTVBDUFksCgoKCgpCVUlM
VF9JTl9TVFJDQVQsCgoKCkJVSUxUX0lOX1NUUk5DQVQsCgoKCkJVSUxUX0lOX1NUUENQWSwKCgoK
QlVJTFRfSU5fU1RSQ1BZLAoKCgpCVUlMVF9JTl9TVFJOQ1BZLAoKCgpCVUlMVF9JTl9TVFJDTVAs
CgoKCkJVSUxUX0lOX1NUUk5DTVAsCgoKCkJVSUxUX0lOX1NUUkxFTiwKCgoKQlVJTFRfSU5fU1RS
U1RSLAoKCgpCVUlMVF9JTl9TVFJQQlJLLAoKCgpCVUlMVF9JTl9TVFJTUE4sCgoKCkJVSUxUX0lO
X1NUUkNTUE4sCgoKCkJVSUxUX0lOX1NUUkNIUiwKCgoKQlVJTFRfSU5fU1RSUkNIUiwKCgoKCkJV
SUxUX0lOX1NRUlQsCgoKCgoKCkJVSUxUX0lOX1NJTiwKCgoKCkJVSUxUX0lOX0NPUywKCgoKCkJV
SUxUX0lOX0VYUCwKCgoKCgoKQlVJTFRfSU5fTE9HLAoKCgoKCgpCVUlMVF9JTl9QT1csCgoKCgoK
CkJVSUxUX0lOX0FUQU4yLAoKCgoKCgpCVUlMVF9JTl9GTU9ELAoKCgoKCgpCVUlMVF9JTl9TUVJU
RiwKCgoKCgoKQlVJTFRfSU5fU0lORiwKCgoKCkJVSUxUX0lOX0NPU0YsCgoKCgpCVUlMVF9JTl9F
WFBGLAoKCgoKCgpCVUlMVF9JTl9MT0dGLAoKCgoKCgpCVUlMVF9JTl9QT1dGLAoKCgoKCgpCVUlM
VF9JTl9BVEFOMkYsCgoKCgoKCkJVSUxUX0lOX0ZNT0RGLAoKCgoKCgpCVUlMVF9JTl9TUVJUTCwK
CgoKCgoKQlVJTFRfSU5fU0lOTCwKCgoKCkJVSUxUX0lOX0NPU0wsCgoKCgpCVUlMVF9JTl9FWFBM
LAoKCgoKCgpCVUlMVF9JTl9MT0dMLAoKCgoKCgpCVUlMVF9JTl9QT1dMLAoKCgoKCgpCVUlMVF9J
Tl9BVEFOMkwsCgoKCgoKCkJVSUxUX0lOX0ZNT0RMLAoKCgoKCgoKQlVJTFRfSU5fSU5GLAoKCgpC
VUlMVF9JTl9JTkZGLAoKCgpCVUlMVF9JTl9JTkZMLAoKCgoKQlVJTFRfSU5fSFVHRV9WQUwsCgoK
CkJVSUxUX0lOX0hVR0VfVkFMRiwKCgoKQlVJTFRfSU5fSFVHRV9WQUxMLAoKCgoKQlVJTFRfSU5f
TkFOLAoKCgpCVUlMVF9JTl9OQU5GLAoKCgpCVUlMVF9JTl9OQU5MLAoKCgoKQlVJTFRfSU5fTkFO
UywKCgoKQlVJTFRfSU5fTkFOU0YsCgoKCkJVSUxUX0lOX05BTlNMLAoKCgoKQlVJTFRfSU5fU0FW
RVJFR1MsCgoKCkJVSUxUX0lOX0NMQVNTSUZZX1RZUEUsCgoKCkJVSUxUX0lOX05FWFRfQVJHLAoK
CgpCVUlMVF9JTl9BUkdTX0lORk8sCgoKCkJVSUxUX0lOX0NPTlNUQU5UX1AsCgoKCkJVSUxUX0lO
X0ZSQU1FX0FERFJFU1MsCgoKCkJVSUxUX0lOX1JFVFVSTl9BRERSRVNTLAoKCgpCVUlMVF9JTl9B
R0dSRUdBVEVfSU5DT01JTkdfQUREUkVTUywKCgoKQlVJTFRfSU5fQVBQTFlfQVJHUywKCgoKQlVJ
TFRfSU5fQVBQTFksCgoKCkJVSUxUX0lOX1JFVFVSTiwKCgoKQlVJTFRfSU5fU0VUSk1QLAoKCgpC
VUlMVF9JTl9MT05HSk1QLAoKCgpCVUlMVF9JTl9UUkFQLAoKCgpCVUlMVF9JTl9QUkVGRVRDSCwK
CgoKCgoKQlVJTFRfSU5fUFJJTlRGLAoKCgpCVUlMVF9JTl9QVVRDSEFSLAoKCgpCVUlMVF9JTl9Q
VVRTLAoKCgpCVUlMVF9JTl9TTlBSSU5URiwKCgoKQlVJTFRfSU5fU1BSSU5URiwKCgoKQlVJTFRf
SU5fU0NBTkYsCgoKCkJVSUxUX0lOX1NTQ0FORiwKCgoKQlVJTFRfSU5fVlBSSU5URiwKCgoKQlVJ
TFRfSU5fVlNDQU5GLAoKCgpCVUlMVF9JTl9WU1NDQU5GLAoKCgpCVUlMVF9JTl9WU05QUklOVEYs
CgoKCkJVSUxUX0lOX1ZTUFJJTlRGLAojIDc5MyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5z
a2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvYnVpbHRpbnMuZGVmIgpCVUlMVF9JTl9GUFVUQywKCgoK
QlVJTFRfSU5fRlBVVFMsCgoKCgoKQlVJTFRfSU5fRldSSVRFLAoKCgpCVUlMVF9JTl9GUFJJTlRG
LAoKCgoKCgpCVUlMVF9JTl9QVVRDSEFSX1VOTE9DS0VELAoKCkJVSUxUX0lOX1BVVFNfVU5MT0NL
RUQsCgoKQlVJTFRfSU5fUFJJTlRGX1VOTE9DS0VELAojIDgzMiAiL1ZvbHVtZXMvVUZTX1BhcnRp
dGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvYnVpbHRpbnMuZGVmIgpCVUlMVF9JTl9G
UFVUQ19VTkxPQ0tFRCwKCgpCVUlMVF9JTl9GUFVUU19VTkxPQ0tFRCwKCgoKCgpCVUlMVF9JTl9G
V1JJVEVfVU5MT0NLRUQsCgoKQlVJTFRfSU5fRlBSSU5URl9VTkxPQ0tFRCwKCgoKCgpCVUlMVF9J
Tl9JU0dSRUFURVIsCgoKCkJVSUxUX0lOX0lTR1JFQVRFUkVRVUFMLAoKCgpCVUlMVF9JTl9JU0xF
U1MsCgoKCkJVSUxUX0lOX0lTTEVTU0VRVUFMLAoKCgpCVUlMVF9JTl9JU0xFU1NHUkVBVEVSLAoK
CgpCVUlMVF9JTl9JU1VOT1JERVJFRCwKCgoKCgpCVUlMVF9JTl9VTldJTkRfSU5JVCwKCgoKQlVJ
TFRfSU5fRFdBUkZfQ0ZBLAoKCgpCVUlMVF9JTl9EV0FSRl9GUF9SRUdOVU0sCgoKCkJVSUxUX0lO
X0lOSVRfRFdBUkZfUkVHX1NJWkVTLAoKCgpCVUlMVF9JTl9GUk9CX1JFVFVSTl9BRERSLAoKCgpC
VUlMVF9JTl9FWFRSQUNUX1JFVFVSTl9BRERSLAoKCgpCVUlMVF9JTl9FSF9SRVRVUk4sCgoKCkJV
SUxUX0lOX0VIX1JFVFVSTl9EQVRBX1JFR05PLAoKCgoKCkJVSUxUX0lOX1ZBX1NUQVJULAoKCgpC
VUlMVF9JTl9TVERBUkdfU1RBUlQsCgoKCkJVSUxUX0lOX1ZBX0VORCwKCgoKQlVJTFRfSU5fVkFf
Q09QWSwKCgoKCkJVSUxUX0lOX0VYUEVDVCwKCgoKCgpCVUlMVF9JTl9BQk9SVCwKCgoKQlVJTFRf
SU5fRVhJVCwKCgoKQlVJTFRfSU5fX0VYSVQsCgoKCkJVSUxUX0lOX19FWElUMiwKCgoKCgpCVUlM
VF9JTl9NQUxMT0MsCgoKCgpCVUlMVF9JTl9DQUxMT0MsCgoKCgpCVUlMVF9JTl9TVFJEVVAsCiMg
OTEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3Ry
ZWUuaCIgMgoKCiAgRU5EX0JVSUxUSU5TCn07CgoKCmV4dGVybiBjb25zdCBjaGFyICpjb25zdCBi
dWlsdF9pbl9uYW1lc1soaW50KSBFTkRfQlVJTFRJTlNdOwoKCmV4dGVybiB0cmVlIGJ1aWx0X2lu
X2RlY2xzWyhpbnQpIEVORF9CVUlMVElOU107CmV4dGVybiB0cmVlIGltcGxpY2l0X2J1aWx0X2lu
X2RlY2xzWyhpbnQpIEVORF9CVUlMVElOU107CiMgMTI2ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9u
L3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCnN0cnVjdCB0cmVlX2NvbW1vbgp7
CiAgdHJlZSBjaGFpbjsKICB0cmVlIHR5cGU7CgogIGVudW0gdHJlZV9jb2RlIGNvZGUgOiA4OwoK
ICB1bnNpZ25lZCBzaWRlX2VmZmVjdHNfZmxhZyA6IDE7CiAgdW5zaWduZWQgY29uc3RhbnRfZmxh
ZyA6IDE7CiAgdW5zaWduZWQgYWRkcmVzc2FibGVfZmxhZyA6IDE7CiAgdW5zaWduZWQgdm9sYXRp
bGVfZmxhZyA6IDE7CiAgdW5zaWduZWQgcmVhZG9ubHlfZmxhZyA6IDE7CiAgdW5zaWduZWQgdW5z
aWduZWRfZmxhZyA6IDE7CiAgdW5zaWduZWQgYXNtX3dyaXR0ZW5fZmxhZzogMTsKICB1bnNpZ25l
ZCB1bnVzZWRfMCA6IDE7CgogIHVuc2lnbmVkIHVzZWRfZmxhZyA6IDE7CiAgdW5zaWduZWQgbm90
aHJvd19mbGFnIDogMTsKICB1bnNpZ25lZCBzdGF0aWNfZmxhZyA6IDE7CiAgdW5zaWduZWQgcHVi
bGljX2ZsYWcgOiAxOwogIHVuc2lnbmVkIHByaXZhdGVfZmxhZyA6IDE7CiAgdW5zaWduZWQgcHJv
dGVjdGVkX2ZsYWcgOiAxOwogIHVuc2lnbmVkIGJvdW5kZWRfZmxhZyA6IDE7CiAgdW5zaWduZWQg
ZGVwcmVjYXRlZF9mbGFnIDogMTsKCiAgdW5zaWduZWQgbGFuZ19mbGFnXzAgOiAxOwogIHVuc2ln
bmVkIGxhbmdfZmxhZ18xIDogMTsKICB1bnNpZ25lZCBsYW5nX2ZsYWdfMiA6IDE7CiAgdW5zaWdu
ZWQgbGFuZ19mbGFnXzMgOiAxOwogIHVuc2lnbmVkIGxhbmdfZmxhZ180IDogMTsKICB1bnNpZ25l
ZCBsYW5nX2ZsYWdfNSA6IDE7CiAgdW5zaWduZWQgbGFuZ19mbGFnXzYgOiAxOwogIHVuc2lnbmVk
IHVudXNlZF8xIDogMTsKfTsKIyAzNzggIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9z
cmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIKIyAxICJ0cmVlLWNoZWNrLmgiIDEKIyAzNzkgIi9W
b2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIg
MgojIDc0MCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9n
Y2MvdHJlZS5oIgpzdHJ1Y3QgdHJlZV9pbnRfY3N0CnsKICBzdHJ1Y3QgdHJlZV9jb21tb24gY29t
bW9uOwoKCgogIHN0cnVjdCB0cmVlX2ludF9jc3RfbG93aGkgewogICAgdW5zaWduZWQgbG9uZyBs
b3c7CiAgICBsb25nIGhpZ2g7CiAgfSBpbnRfY3N0Owp9OwoKCgoKc3RydWN0IHJlYWxfdmFsdWU7
CgoKCgpzdHJ1Y3QgdHJlZV9yZWFsX2NzdAp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsK
ICBzdHJ1Y3QgcmVhbF92YWx1ZSAqIHJlYWxfY3N0X3B0cjsKfTsKCgoKCgpzdHJ1Y3QgdHJlZV9z
dHJpbmcKewogIHN0cnVjdCB0cmVlX2NvbW1vbiBjb21tb247CiAgaW50IGxlbmd0aDsKICBjb25z
dCBjaGFyICpwb2ludGVyOwp9OwoKCgoKCnN0cnVjdCB0cmVlX2NvbXBsZXgKewogIHN0cnVjdCB0
cmVlX2NvbW1vbiBjb21tb247CiAgdHJlZSByZWFsOwogIHRyZWUgaW1hZzsKfTsKCgoKCnN0cnVj
dCB0cmVlX3ZlY3Rvcgp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsKICB0cmVlIGVsZW1l
bnRzOwp9OwoKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mv
c3JjL2djYy9oYXNodGFibGUuaCIgMQojIDIxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr
aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9oYXNodGFibGUuaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFy
dGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvb2JzdGFjay5oIiAxCiMgMTYx
ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUv
b2JzdGFjay5oIgpzdHJ1Y3QgX29ic3RhY2tfY2h1bmsKewogIGNoYXIgKmxpbWl0OwogIHN0cnVj
dCBfb2JzdGFja19jaHVuayAqcHJldjsKICBjaGFyIGNvbnRlbnRzWzRdOwp9OwoKc3RydWN0IG9i
c3RhY2sKewogIGxvbmcgY2h1bmtfc2l6ZTsKICBzdHJ1Y3QgX29ic3RhY2tfY2h1bmsgKmNodW5r
OwogIGNoYXIgKm9iamVjdF9iYXNlOwogIGNoYXIgKm5leHRfZnJlZTsKICBjaGFyICpjaHVua19s
aW1pdDsKICBpbnQgdGVtcDsKICBpbnQgYWxpZ25tZW50X21hc2s7CgoKCgogIHN0cnVjdCBfb2Jz
dGFja19jaHVuayAqKCpjaHVua2Z1bikgKHZvaWQgKiwgbG9uZyk7CiAgdm9pZCAoKmZyZWVmdW4p
ICh2b2lkICosIHN0cnVjdCBfb2JzdGFja19jaHVuayAqKTsKICB2b2lkICpleHRyYV9hcmc7CgoK
CgoKICB1bnNpZ25lZCB1c2VfZXh0cmFfYXJnOjE7CiAgdW5zaWduZWQgbWF5YmVfZW1wdHlfb2Jq
ZWN0OjE7CgoKCiAgdW5zaWduZWQgYWxsb2NfZmFpbGVkOjE7CgoKfTsKCgoKCmV4dGVybiB2b2lk
IF9vYnN0YWNrX25ld2NodW5rIChzdHJ1Y3Qgb2JzdGFjayAqLCBpbnQpOwpleHRlcm4gdm9pZCBf
b2JzdGFja19mcmVlIChzdHJ1Y3Qgb2JzdGFjayAqLCB2b2lkICopOwpleHRlcm4gaW50IF9vYnN0
YWNrX2JlZ2luIChzdHJ1Y3Qgb2JzdGFjayAqLCBpbnQsIGludCwKICAgICAgIHZvaWQgKigqKSAo
bG9uZyksIHZvaWQgKCopICh2b2lkICopKTsKZXh0ZXJuIGludCBfb2JzdGFja19iZWdpbl8xIChz
dHJ1Y3Qgb2JzdGFjayAqLCBpbnQsIGludCwKICAgICAgICB2b2lkICooKikgKHZvaWQgKiwgbG9u
ZyksCiAgICAgICAgdm9pZCAoKikgKHZvaWQgKiwgdm9pZCAqKSwgdm9pZCAqKTsKZXh0ZXJuIGlu
dCBfb2JzdGFja19tZW1vcnlfdXNlZCAoc3RydWN0IG9ic3RhY2sgKik7CiMgMjIzICIvVm9sdW1l
cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvb2JzdGFjay5o
Igp2b2lkIG9ic3RhY2tfaW5pdCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwoKdm9pZCAqIG9i
c3RhY2tfYWxsb2MgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBpbnQgc2l6ZSk7Cgp2b2lkICog
b2JzdGFja19jb3B5IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgdm9pZCAqYWRkcmVzcywgaW50
IHNpemUpOwp2b2lkICogb2JzdGFja19jb3B5MCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHZv
aWQgKmFkZHJlc3MsIGludCBzaXplKTsKCnZvaWQgb2JzdGFja19mcmVlIChzdHJ1Y3Qgb2JzdGFj
ayAqb2JzdGFjaywgdm9pZCAqYmxvY2spOwoKdm9pZCBvYnN0YWNrX2JsYW5rIChzdHJ1Y3Qgb2Jz
dGFjayAqb2JzdGFjaywgaW50IHNpemUpOwoKdm9pZCBvYnN0YWNrX2dyb3cgKHN0cnVjdCBvYnN0
YWNrICpvYnN0YWNrLCB2b2lkICpkYXRhLCBpbnQgc2l6ZSk7CnZvaWQgb2JzdGFja19ncm93MCAo
c3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHZvaWQgKmRhdGEsIGludCBzaXplKTsKCnZvaWQgb2Jz
dGFja18xZ3JvdyAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIGludCBkYXRhX2NoYXIpOwp2b2lk
IG9ic3RhY2tfcHRyX2dyb3cgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCB2b2lkICpkYXRhKTsK
dm9pZCBvYnN0YWNrX2ludF9ncm93IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgaW50IGRhdGEp
OwoKdm9pZCAqIG9ic3RhY2tfZmluaXNoIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7CgppbnQg
b2JzdGFja19vYmplY3Rfc2l6ZSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwoKaW50IG9ic3Rh
Y2tfcm9vbSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwp2b2lkIG9ic3RhY2tfbWFrZV9yb29t
IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgaW50IHNpemUpOwp2b2lkIG9ic3RhY2tfMWdyb3df
ZmFzdCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIGludCBkYXRhX2NoYXIpOwp2b2lkIG9ic3Rh
Y2tfcHRyX2dyb3dfZmFzdCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHZvaWQgKmRhdGEpOwp2
b2lkIG9ic3RhY2tfaW50X2dyb3dfZmFzdCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIGludCBk
YXRhKTsKdm9pZCBvYnN0YWNrX2JsYW5rX2Zhc3QgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBp
bnQgc2l6ZSk7Cgp2b2lkICogb2JzdGFja19iYXNlIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7
CnZvaWQgKiBvYnN0YWNrX25leHRfZnJlZSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwppbnQg
b2JzdGFja19hbGlnbm1lbnRfbWFzayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwppbnQgb2Jz
dGFja19jaHVua19zaXplIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7CmludCBvYnN0YWNrX21l
bW9yeV91c2VkIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7CiMgMjY3ICIvVm9sdW1lcy9VRlNf
UGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvb2JzdGFjay5oIgpleHRl
cm4gdm9pZCAoKm9ic3RhY2tfYWxsb2NfZmFpbGVkX2hhbmRsZXIpICh2b2lkKTsKCgoKCgpleHRl
cm4gaW50IG9ic3RhY2tfZXhpdF9mYWlsdXJlOwojIDIyICIvVm9sdW1lcy9VRlNfUGFydGl0aW9u
L3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9oYXNodGFibGUuaCIgMgoKCgp0eXBlZGVmIHN0
cnVjdCBodF9pZGVudGlmaWVyIGh0X2lkZW50aWZpZXI7CnN0cnVjdCBodF9pZGVudGlmaWVyCnsK
ICBjb25zdCB1bnNpZ25lZCBjaGFyICpzdHI7CiAgdW5zaWduZWQgaW50IGxlbjsKfTsKCgoKCnR5
cGVkZWYgc3RydWN0IGh0IGhhc2hfdGFibGU7CnR5cGVkZWYgc3RydWN0IGh0X2lkZW50aWZpZXIg
Kmhhc2hub2RlOwoKZW51bSBodF9sb29rdXBfb3B0aW9uIHtIVF9OT19JTlNFUlQgPSAwLCBIVF9B
TExPQywgSFRfQUxMT0NFRH07CgoKc3RydWN0IGh0CnsKCiAgc3RydWN0IG9ic3RhY2sgc3RhY2s7
CgogIGhhc2hub2RlICplbnRyaWVzOwoKICBoYXNobm9kZSAoKmFsbG9jX25vZGUpIChoYXNoX3Rh
YmxlICopOwoKICB1bnNpZ25lZCBpbnQgbnNsb3RzOwogIHVuc2lnbmVkIGludCBuZWxlbWVudHM7
CgoKICBzdHJ1Y3QgY3BwX3JlYWRlciAqcGZpbGU7CgoKICB1bnNpZ25lZCBpbnQgc2VhcmNoZXM7
CiAgdW5zaWduZWQgaW50IGNvbGxpc2lvbnM7Cn07CgoKZXh0ZXJuIGhhc2hfdGFibGUgKmh0X2Ny
ZWF0ZSAodW5zaWduZWQgaW50IG9yZGVyKTsKCgpleHRlcm4gdm9pZCBodF9kZXN0cm95IChoYXNo
X3RhYmxlICopOwoKZXh0ZXJuIGhhc2hub2RlIGh0X2xvb2t1cCAoaGFzaF90YWJsZSAqLCBjb25z
dCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGludCwgZW51bSBodF9sb29rdXBfb3B0aW9uKTsK
CgoKCgp0eXBlZGVmIGludCAoKmh0X2NiKSAoc3RydWN0IGNwcF9yZWFkZXIgKiwgaGFzaG5vZGUs
IGNvbnN0IHZvaWQgKik7CmV4dGVybiB2b2lkIGh0X2ZvcmFsbCAoaGFzaF90YWJsZSAqLCBodF9j
YiwgY29uc3Qgdm9pZCAqKTsKCgpleHRlcm4gdm9pZCBodF9kdW1wX3N0YXRpc3RpY3MgKGhhc2hf
dGFibGUgKik7CgoKCmV4dGVybiBkb3VibGUgYXBwcm94X3NxcnQgKGRvdWJsZSk7CiMgNzk4ICIv
Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgi
IDIKIyA4MTMgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMv
Z2NjL3RyZWUuaCIKc3RydWN0IHRyZWVfaWRlbnRpZmllcgp7CiAgc3RydWN0IHRyZWVfY29tbW9u
IGNvbW1vbjsKICBzdHJ1Y3QgaHRfaWRlbnRpZmllciBpZDsKfTsKCgoKCgpzdHJ1Y3QgdHJlZV9s
aXN0CnsKICBzdHJ1Y3QgdHJlZV9jb21tb24gY29tbW9uOwogIHRyZWUgcHVycG9zZTsKICB0cmVl
IHZhbHVlOwp9OwojIDgzNyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv
Z2NjL3NyYy9nY2MvdHJlZS5oIgpzdHJ1Y3QgdHJlZV92ZWMKewogIHN0cnVjdCB0cmVlX2NvbW1v
biBjb21tb247CiAgaW50IGxlbmd0aDsKICB0cmVlIGFbMV07Cn07CiMgOTA3ICIvVm9sdW1lcy9V
RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCnN0cnVjdCB0
cmVlX2V4cAp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsKICBpbnQgY29tcGxleGl0eTsK
ICB0cmVlCgogICAgb3BlcmFuZHNbMV07Cn07CiMgOTYxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9u
L3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCnN0cnVjdCB0cmVlX2Jsb2NrCnsK
ICBzdHJ1Y3QgdHJlZV9jb21tb24gY29tbW9uOwoKICB1bnNpZ25lZCBoYW5kbGVyX2Jsb2NrX2Zs
YWcgOiAxOwogIHVuc2lnbmVkIGFic3RyYWN0X2ZsYWcgOiAxOwogIHVuc2lnbmVkIGJsb2NrX251
bSA6IDMwOwoKICB0cmVlIHZhcnM7CiAgdHJlZSBzdWJibG9ja3M7CiAgdHJlZSBzdXBlcmNvbnRl
eHQ7CiAgdHJlZSBhYnN0cmFjdF9vcmlnaW47CiAgdHJlZSBmcmFnbWVudF9vcmlnaW47CiAgdHJl
ZSBmcmFnbWVudF9jaGFpbjsKfTsKIyAxMjM5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr
aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCnN0cnVjdCBkaWVfc3RydWN0OwoKc3RydWN0
IHRyZWVfdHlwZQp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsKICB0cmVlIHZhbHVlczsK
ICB0cmVlIHNpemU7CiAgdHJlZSBzaXplX3VuaXQ7CiAgdHJlZSBhdHRyaWJ1dGVzOwogIHVuc2ln
bmVkIGludCB1aWQ7CgogIHVuc2lnbmVkIGludCBwcmVjaXNpb24gOiA5OwogIGVudW0gbWFjaGlu
ZV9tb2RlIG1vZGUgOiA3OwoKICB1bnNpZ25lZCBzdHJpbmdfZmxhZyA6IDE7CiAgdW5zaWduZWQg
bm9fZm9yY2VfYmxrX2ZsYWcgOiAxOwogIHVuc2lnbmVkIG5lZWRzX2NvbnN0cnVjdGluZ19mbGFn
IDogMTsKICB1bnNpZ25lZCB0cmFuc3BhcmVudF91bmlvbl9mbGFnIDogMTsKICB1bnNpZ25lZCBw
YWNrZWRfZmxhZyA6IDE7CiAgdW5zaWduZWQgcmVzdHJpY3RfZmxhZyA6IDE7CiAgdW5zaWduZWQg
cG9pbnRlcl9kZXB0aCA6IDI7CgogIHVuc2lnbmVkIGxhbmdfZmxhZ18wIDogMTsKICB1bnNpZ25l
ZCBsYW5nX2ZsYWdfMSA6IDE7CiAgdW5zaWduZWQgbGFuZ19mbGFnXzIgOiAxOwogIHVuc2lnbmVk
IGxhbmdfZmxhZ18zIDogMTsKICB1bnNpZ25lZCBsYW5nX2ZsYWdfNCA6IDE7CiAgdW5zaWduZWQg
bGFuZ19mbGFnXzUgOiAxOwogIHVuc2lnbmVkIGxhbmdfZmxhZ182IDogMTsKICB1bnNpZ25lZCB1
c2VyX2FsaWduIDogMTsKCiAgdW5zaWduZWQgaW50IGFsaWduOwogIHRyZWUgcG9pbnRlcl90bzsK
ICB0cmVlIHJlZmVyZW5jZV90bzsKICB1bmlvbiB0cmVlX3R5cGVfc3ltdGFiIHsKICAgIGludCBh
ZGRyZXNzOwogICAgY2hhciAqIHBvaW50ZXI7CiAgICBzdHJ1Y3QgZGllX3N0cnVjdCAqIGRpZTsK
ICB9IHN5bXRhYjsKCiAgdHJlZSBuYW1lOwogIHRyZWUgbWludmFsOwogIHRyZWUgbWF4dmFsOwog
IHRyZWUgbmV4dF92YXJpYW50OwogIHRyZWUgbWFpbl92YXJpYW50OwogIHRyZWUgYmluZm87CiAg
dHJlZSBjb250ZXh0OwogIGxvbmcgYWxpYXNfc2V0OwoKICBzdHJ1Y3QgbGFuZ190eXBlICpsYW5n
X3NwZWNpZmljOwp9OwojIDE3ODAgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMv
ZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIKc3RydWN0IGZ1bmN0aW9uOwoKc3RydWN0IHRyZWVfZGVj
bAp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsKICBsb2NhdGlvbl90IGxvY3VzOwogIHVu
c2lnbmVkIGludCB1aWQ7CiAgdHJlZSBzaXplOwogIGVudW0gbWFjaGluZV9tb2RlIG1vZGUgOiA4
OwoKICB1bnNpZ25lZCBleHRlcm5hbF9mbGFnIDogMTsKICB1bnNpZ25lZCBub25sb2NhbF9mbGFn
IDogMTsKICB1bnNpZ25lZCByZWdkZWNsX2ZsYWcgOiAxOwogIHVuc2lnbmVkIGlubGluZV9mbGFn
IDogMTsKICB1bnNpZ25lZCBiaXRfZmllbGRfZmxhZyA6IDE7CiAgdW5zaWduZWQgdmlydHVhbF9m
bGFnIDogMTsKICB1bnNpZ25lZCBpZ25vcmVkX2ZsYWcgOiAxOwogIHVuc2lnbmVkIGFic3RyYWN0
X2ZsYWcgOiAxOwoKICB1bnNpZ25lZCBpbl9zeXN0ZW1faGVhZGVyX2ZsYWcgOiAxOwogIHVuc2ln
bmVkIGNvbW1vbl9mbGFnIDogMTsKICB1bnNpZ25lZCBkZWZlcl9vdXRwdXQgOiAxOwogIHVuc2ln
bmVkIHRyYW5zcGFyZW50X3VuaW9uIDogMTsKICB1bnNpZ25lZCBzdGF0aWNfY3Rvcl9mbGFnIDog
MTsKICB1bnNpZ25lZCBzdGF0aWNfZHRvcl9mbGFnIDogMTsKICB1bnNpZ25lZCBhcnRpZmljaWFs
X2ZsYWcgOiAxOwogIHVuc2lnbmVkIHdlYWtfZmxhZyA6IDE7CgogIHVuc2lnbmVkIG5vbl9hZGRy
X2NvbnN0X3AgOiAxOwogIHVuc2lnbmVkIG5vX2luc3RydW1lbnRfZnVuY3Rpb25fZW50cnlfZXhp
dCA6IDE7CiAgdW5zaWduZWQgY29tZGF0X2ZsYWcgOiAxOwogIHVuc2lnbmVkIG1hbGxvY19mbGFn
IDogMTsKICB1bnNpZ25lZCBub19saW1pdF9zdGFjayA6IDE7CiAgZW51bSBidWlsdF9pbl9jbGFz
cyBidWlsdF9pbl9jbGFzcyA6IDI7CiAgdW5zaWduZWQgcHVyZV9mbGFnIDogMTsKCiAgdW5zaWdu
ZWQgbm9uX2FkZHJlc3NhYmxlIDogMTsKICB1bnNpZ25lZCB1c2VyX2FsaWduIDogMTsKICB1bnNp
Z25lZCB1bmlubGluYWJsZSA6IDE7CiAgdW5zaWduZWQgdGhyZWFkX2xvY2FsX2ZsYWcgOiAxOwog
IHVuc2lnbmVkIGlubGluZWRfZnVuY3Rpb25fZmxhZyA6IDE7CiAgdW5zaWduZWQgdW51c2VkIDog
MzsKCgogIHVuc2lnbmVkIGxhbmdfZmxhZ18wIDogMTsKICB1bnNpZ25lZCBsYW5nX2ZsYWdfMSA6
IDE7CiAgdW5zaWduZWQgbGFuZ19mbGFnXzIgOiAxOwogIHVuc2lnbmVkIGxhbmdfZmxhZ18zIDog
MTsKICB1bnNpZ25lZCBsYW5nX2ZsYWdfNCA6IDE7CiAgdW5zaWduZWQgbGFuZ19mbGFnXzUgOiAx
OwogIHVuc2lnbmVkIGxhbmdfZmxhZ182IDogMTsKICB1bnNpZ25lZCBsYW5nX2ZsYWdfNyA6IDE7
CgogIHVuaW9uIHRyZWVfZGVjbF91MSB7CgoKICAgIGVudW0gYnVpbHRfaW5fZnVuY3Rpb24gZjsK
CgogICAgbG9uZyBpOwoKCiAgICBzdHJ1Y3QgdHJlZV9kZWNsX3UxX2EgewogICAgICB1bnNpZ25l
ZCBpbnQgYWxpZ24gOiAyNDsKICAgICAgdW5zaWduZWQgaW50IG9mZl9hbGlnbiA6IDg7CiAgICB9
IGE7CiAgfSB1MTsKCiAgdHJlZSBzaXplX3VuaXQ7CiAgdHJlZSBuYW1lOwogIHRyZWUgY29udGV4
dDsKICB0cmVlIGFyZ3VtZW50czsKICB0cmVlIHJlc3VsdDsKICB0cmVlIGluaXRpYWw7CiAgdHJl
ZSBhYnN0cmFjdF9vcmlnaW47CiAgdHJlZSBhc3NlbWJsZXJfbmFtZTsKICB0cmVlIHNlY3Rpb25f
bmFtZTsKICB0cmVlIGF0dHJpYnV0ZXM7CiAgcnR4IHJ0bDsKCgoKCgoKICB1bmlvbiB0cmVlX2Rl
Y2xfdTIgewogICAgc3RydWN0IGZ1bmN0aW9uICogZjsKICAgIHJ0eCByOwogICAgdHJlZSB0Owog
ICAgaW50IGk7CiAgfSB1MjsKCgogIHRyZWUgc2F2ZWRfdHJlZTsKCgoKICB0cmVlIGlubGluZWRf
Zm5zOwoKICB0cmVlIHZpbmRleDsKICBsb25nIHBvaW50ZXJfYWxpYXNfc2V0OwoKICBzdHJ1Y3Qg
bGFuZ19kZWNsICpsYW5nX3NwZWNpZmljOwp9OwoKZW51bSB0cmVlX25vZGVfc3RydWN0dXJlX2Vu
dW0gewogIFRTX0NPTU1PTiwKICBUU19JTlRfQ1NULAogIFRTX1JFQUxfQ1NULAogIFRTX1ZFQ1RP
UiwKICBUU19TVFJJTkcsCiAgVFNfQ09NUExFWCwKICBUU19JREVOVElGSUVSLAogIFRTX0RFQ0ws
CiAgVFNfVFlQRSwKICBUU19MSVNULAogIFRTX1ZFQywKICBUU19FWFAsCiAgVFNfQkxPQ0ssCiAg
TEFTVF9UU19FTlVNCn07CgoKCgoKdW5pb24gdHJlZV9ub2RlCgp7CiAgc3RydWN0IHRyZWVfY29t
bW9uIGNvbW1vbjsKICBzdHJ1Y3QgdHJlZV9pbnRfY3N0IGludF9jc3Q7CiAgc3RydWN0IHRyZWVf
cmVhbF9jc3QgcmVhbF9jc3Q7CiAgc3RydWN0IHRyZWVfdmVjdG9yIHZlY3RvcjsKICBzdHJ1Y3Qg
dHJlZV9zdHJpbmcgc3RyaW5nOwogIHN0cnVjdCB0cmVlX2NvbXBsZXggY29tcGxleDsKICBzdHJ1
Y3QgdHJlZV9pZGVudGlmaWVyIGlkZW50aWZpZXI7CiAgc3RydWN0IHRyZWVfZGVjbCBkZWNsOwog
IHN0cnVjdCB0cmVlX3R5cGUgdHlwZTsKICBzdHJ1Y3QgdHJlZV9saXN0IGxpc3Q7CiAgc3RydWN0
IHRyZWVfdmVjIHZlYzsKICBzdHJ1Y3QgdHJlZV9leHAgZXhwOwogIHN0cnVjdCB0cmVlX2Jsb2Nr
IGJsb2NrOwogfTsKCgoKZW51bSB0cmVlX2luZGV4CnsKICBUSV9FUlJPUl9NQVJLLAogIFRJX0lO
VFFJX1RZUEUsCiAgVElfSU5USElfVFlQRSwKICBUSV9JTlRTSV9UWVBFLAogIFRJX0lOVERJX1RZ
UEUsCiAgVElfSU5UVElfVFlQRSwKCiAgVElfVUlOVFFJX1RZUEUsCiAgVElfVUlOVEhJX1RZUEUs
CiAgVElfVUlOVFNJX1RZUEUsCiAgVElfVUlOVERJX1RZUEUsCiAgVElfVUlOVFRJX1RZUEUsCgog
IFRJX0lOVEVHRVJfWkVSTywKICBUSV9JTlRFR0VSX09ORSwKICBUSV9JTlRFR0VSX01JTlVTX09O
RSwKICBUSV9OVUxMX1BPSU5URVIsCgogIFRJX1NJWkVfWkVSTywKICBUSV9TSVpFX09ORSwKCiAg
VElfQklUU0laRV9aRVJPLAogIFRJX0JJVFNJWkVfT05FLAogIFRJX0JJVFNJWkVfVU5JVCwKCiAg
VElfQ09NUExFWF9JTlRFR0VSX1RZUEUsCiAgVElfQ09NUExFWF9GTE9BVF9UWVBFLAogIFRJX0NP
TVBMRVhfRE9VQkxFX1RZUEUsCiAgVElfQ09NUExFWF9MT05HX0RPVUJMRV9UWVBFLAoKICBUSV9G
TE9BVF9UWVBFLAogIFRJX0RPVUJMRV9UWVBFLAogIFRJX0xPTkdfRE9VQkxFX1RZUEUsCgogIFRJ
X1ZPSURfVFlQRSwKICBUSV9QVFJfVFlQRSwKICBUSV9DT05TVF9QVFJfVFlQRSwKICBUSV9TSVpF
X1RZUEUsCiAgVElfUFRSRElGRl9UWVBFLAogIFRJX1ZBX0xJU1RfVFlQRSwKCiAgVElfVk9JRF9M
SVNUX05PREUsCgogIFRJX1VWNFNGX1RZUEUsCiAgVElfVVY0U0lfVFlQRSwKICBUSV9VVjhISV9U
WVBFLAogIFRJX1VWOFFJX1RZUEUsCiAgVElfVVY0SElfVFlQRSwKICBUSV9VVjJISV9UWVBFLAog
IFRJX1VWMlNJX1RZUEUsCiAgVElfVVYyU0ZfVFlQRSwKICBUSV9VVjJESV9UWVBFLAogIFRJX1VW
MURJX1RZUEUsCiAgVElfVVYxNlFJX1RZUEUsCgogIFRJX1Y0U0ZfVFlQRSwKICBUSV9WMTZTRl9U
WVBFLAogIFRJX1Y0U0lfVFlQRSwKICBUSV9WOEhJX1RZUEUsCiAgVElfVjhRSV9UWVBFLAogIFRJ
X1Y0SElfVFlQRSwKICBUSV9WMkhJX1RZUEUsCiAgVElfVjJTSV9UWVBFLAogIFRJX1YyU0ZfVFlQ
RSwKICBUSV9WMkRGX1RZUEUsCiAgVElfVjJESV9UWVBFLAogIFRJX1YxRElfVFlQRSwKICBUSV9W
MTZRSV9UWVBFLAoKICBUSV9NQUlOX0lERU5USUZJRVIsCgogIFRJX01BWAp9OwoKZXh0ZXJuIHRy
ZWUgZ2xvYmFsX3RyZWVzW1RJX01BWF07CiMgMjA5MSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w
aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgplbnVtIGludGVnZXJfdHlwZV9raW5k
CnsKICBpdGtfY2hhciwKICBpdGtfc2lnbmVkX2NoYXIsCiAgaXRrX3Vuc2lnbmVkX2NoYXIsCiAg
aXRrX3Nob3J0LAogIGl0a191bnNpZ25lZF9zaG9ydCwKICBpdGtfaW50LAogIGl0a191bnNpZ25l
ZF9pbnQsCiAgaXRrX2xvbmcsCiAgaXRrX3Vuc2lnbmVkX2xvbmcsCiAgaXRrX2xvbmdfbG9uZywK
ICBpdGtfdW5zaWduZWRfbG9uZ19sb25nLAogIGl0a19ub25lCn07Cgp0eXBlZGVmIGVudW0gaW50
ZWdlcl90eXBlX2tpbmQgaW50ZWdlcl90eXBlX2tpbmQ7CgoKCmV4dGVybiB0cmVlIGludGVnZXJf
dHlwZXNbaXRrX25vbmVdOwojIDIxMjcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9z
cmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIKZW51bSB0bHNfbW9kZWwgewogIFRMU19NT0RFTF9H
TE9CQUxfRFlOQU1JQyA9IDEsCiAgVExTX01PREVMX0xPQ0FMX0RZTkFNSUMsCiAgVExTX01PREVM
X0lOSVRJQUxfRVhFQywKICBUTFNfTU9ERUxfTE9DQUxfRVhFQwp9OwoKZXh0ZXJuIGVudW0gdGxz
X21vZGVsIGZsYWdfdGxzX2RlZmF1bHQ7CgoKCmVudW0gc3ltYm9sX3Zpc2liaWxpdHkKewogIFZJ
U0lCSUxJVFlfREVGQVVMVCwKICBWSVNJQklMSVRZX0lOVEVSTkFMLAogIFZJU0lCSUxJVFlfSElE
REVOLAogIFZJU0lCSUxJVFlfUFJPVEVDVEVECn07CiMgMjE2NyAiL1ZvbHVtZXMvVUZTX1BhcnRp
dGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgplbnVtIHB0cm1lbWZ1bmNf
dmJpdF93aGVyZV90CnsKICBwdHJtZW1mdW5jX3ZiaXRfaW5fcGZuLAogIHB0cm1lbWZ1bmNfdmJp
dF9pbl9kZWx0YQp9OwoKCgoKCmV4dGVybiBkb3VibGUgYXBwcm94X3NxcnQgKGRvdWJsZSk7Cgpl
eHRlcm4gdHJlZSBkZWNsX2Fzc2VtYmxlcl9uYW1lICh0cmVlKTsKCgoKCmV4dGVybiBzaXplX3Qg
dHJlZV9zaXplICh0cmVlKTsKCgoKCgpleHRlcm4gdHJlZSBtYWtlX25vZGUgKGVudW0gdHJlZV9j
b2RlKTsKCgoKZXh0ZXJuIHRyZWUgY29weV9ub2RlICh0cmVlKTsKCgoKZXh0ZXJuIHRyZWUgY29w
eV9saXN0ICh0cmVlKTsKCgoKZXh0ZXJuIHRyZWUgbWFrZV90cmVlX3ZlYyAoaW50KTsKCgoKCmV4
dGVybiB0cmVlIGdldF9pZGVudGlmaWVyIChjb25zdCBjaGFyICopOwoKCgoKZXh0ZXJuIHRyZWUg
Z2V0X2lkZW50aWZpZXJfd2l0aF9sZW5ndGggKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50KTsK
CgoKCgpleHRlcm4gdHJlZSBtYXliZV9nZXRfaWRlbnRpZmllciAoY29uc3QgY2hhciAqKTsKCgoK
CgoKZXh0ZXJuIHRyZWUgYnVpbGQgKGVudW0gdHJlZV9jb2RlLCB0cmVlLCAuLi4pOwpleHRlcm4g
dHJlZSBidWlsZF9udCAoZW51bSB0cmVlX2NvZGUsIC4uLik7CgpleHRlcm4gdHJlZSBidWlsZF9p
bnRfMl93aWRlICh1bnNpZ25lZCBsb25nLCBsb25nKTsKZXh0ZXJuIHRyZWUgYnVpbGRfdmVjdG9y
ICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfY29uc3RydWN0b3IgKHRyZWUsIHRyZWUp
OwpleHRlcm4gdHJlZSBidWlsZF9yZWFsX2Zyb21faW50X2NzdCAodHJlZSwgdHJlZSk7CmV4dGVy
biB0cmVlIGJ1aWxkX2NvbXBsZXggKHRyZWUsIHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBidWls
ZF9zdHJpbmcgKGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHRyZWUgYnVpbGQxIChlbnVtIHRy
ZWVfY29kZSwgdHJlZSwgdHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX3RyZWVfbGlzdCAodHJlZSwg
dHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX2RlY2wgKGVudW0gdHJlZV9jb2RlLCB0cmVlLCB0cmVl
KTsKZXh0ZXJuIHRyZWUgYnVpbGRfYmxvY2sgKHRyZWUsIHRyZWUsIHRyZWUsIHRyZWUsIHRyZWUp
OwpleHRlcm4gdHJlZSBidWlsZF9leHByX3dmbCAodHJlZSwgY29uc3QgY2hhciAqLCBpbnQsIGlu
dCk7CgoKCmV4dGVybiB0cmVlIG1ha2Vfc2lnbmVkX3R5cGUgKGludCk7CmV4dGVybiB0cmVlIG1h
a2VfdW5zaWduZWRfdHlwZSAoaW50KTsKZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV9zaXpldHlwZXMg
KHZvaWQpOwpleHRlcm4gdm9pZCBzZXRfc2l6ZXR5cGUgKHRyZWUpOwpleHRlcm4gdm9pZCBmaXh1
cF91bnNpZ25lZF90eXBlICh0cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfcG9pbnRlcl90eXBlX2Zv
cl9tb2RlICh0cmVlLCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiB0cmVlIGJ1aWxkX3BvaW50
ZXJfdHlwZSAodHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX3JlZmVyZW5jZV90eXBlX2Zvcl9tb2Rl
ICh0cmVlLCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiB0cmVlIGJ1aWxkX3JlZmVyZW5jZV90
eXBlICh0cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfdHlwZV9ub19xdWFscyAodHJlZSk7CmV4dGVy
biB0cmVlIGJ1aWxkX2luZGV4X3R5cGUgKHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9pbmRleF8y
X3R5cGUgKHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9hcnJheV90eXBlICh0cmVlLCB0
cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfZnVuY3Rpb25fdHlwZSAodHJlZSwgdHJlZSk7CmV4dGVy
biB0cmVlIGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAodHJlZSwgLi4uKTsKZXh0ZXJuIHRyZWUg
YnVpbGRfbWV0aG9kX3R5cGUgKHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9vZmZzZXRf
dHlwZSAodHJlZSwgdHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX2NvbXBsZXhfdHlwZSAodHJlZSk7
CmV4dGVybiB0cmVlIGFycmF5X3R5cGVfbmVsdHMgKHRyZWUpOwoKZXh0ZXJuIHRyZWUgdmFsdWVf
bWVtYmVyICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgcHVycG9zZV9tZW1iZXIgKHRyZWUsIHRy
ZWUpOwpleHRlcm4gdHJlZSBiaW5mb19tZW1iZXIgKHRyZWUsIHRyZWUpOwpleHRlcm4gdW5zaWdu
ZWQgaW50IGF0dHJpYnV0ZV9oYXNoX2xpc3QgKHRyZWUpOwpleHRlcm4gaW50IGF0dHJpYnV0ZV9s
aXN0X2VxdWFsICh0cmVlLCB0cmVlKTsKZXh0ZXJuIGludCBhdHRyaWJ1dGVfbGlzdF9jb250YWlu
ZWQgKHRyZWUsIHRyZWUpOwpleHRlcm4gaW50IHRyZWVfaW50X2NzdF9lcXVhbCAodHJlZSwgdHJl
ZSk7CmV4dGVybiBpbnQgdHJlZV9pbnRfY3N0X2x0ICh0cmVlLCB0cmVlKTsKZXh0ZXJuIGludCB0
cmVlX2ludF9jc3RfY29tcGFyZSAodHJlZSwgdHJlZSk7CmV4dGVybiBpbnQgaG9zdF9pbnRlZ2Vy
cCAodHJlZSwgaW50KTsKZXh0ZXJuIGxvbmcgdHJlZV9sb3dfY3N0ICh0cmVlLCBpbnQpOwpleHRl
cm4gaW50IHRyZWVfaW50X2NzdF9tc2IgKHRyZWUpOwpleHRlcm4gaW50IHRyZWVfaW50X2NzdF9z
Z24gKHRyZWUpOwpleHRlcm4gaW50IHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wICh0cmVlKTsKZXh0
ZXJuIGludCBydGxfZXhwcl9ub25uZWdhdGl2ZV9wIChydHgpOwpleHRlcm4gdHJlZSBnZXRfaW5u
ZXJfYXJyYXlfdHlwZSAodHJlZSk7CgoKCgoKZXh0ZXJuIHRyZWUgbWFrZV90cmVlICh0cmVlLCBy
dHgpOwoKCgoKCgoKZXh0ZXJuIHRyZWUgYnVpbGRfdHlwZV9hdHRyaWJ1dGVfdmFyaWFudCAodHJl
ZSwgdHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX2RlY2xfYXR0cmlidXRlX3ZhcmlhbnQgKHRyZWUs
IHRyZWUpOwoKCnN0cnVjdCBhdHRyaWJ1dGVfc3BlYwp7CgoKICBjb25zdCBjaGFyICpjb25zdCBu
YW1lOwoKICBjb25zdCBpbnQgbWluX2xlbmd0aDsKCgogIGNvbnN0IGludCBtYXhfbGVuZ3RoOwoK
CgoKCgoKICBjb25zdCBfQm9vbCBkZWNsX3JlcXVpcmVkOwoKCiAgY29uc3QgX0Jvb2wgdHlwZV9y
ZXF1aXJlZDsKCgoKCiAgY29uc3QgX0Jvb2wgZnVuY3Rpb25fdHlwZV9yZXF1aXJlZDsKIyAyMzM1
ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVl
LmgiCiAgdHJlZSAoKmNvbnN0IGhhbmRsZXIpICh0cmVlICpub2RlLCB0cmVlIG5hbWUsIHRyZWUg
YXJncywgaW50IGZsYWdzLCBfQm9vbCAqbm9fYWRkX2F0dHJzKTsKCn07CgoKCmVudW0gYXR0cmli
dXRlX2ZsYWdzCnsKCgoKICBBVFRSX0ZMQUdfREVDTF9ORVhUID0gMSwKCgoKICBBVFRSX0ZMQUdf
RlVOQ1RJT05fTkVYVCA9IDIsCgoKCiAgQVRUUl9GTEFHX0FSUkFZX05FWFQgPSA0LAoKCiAgQVRU
Ul9GTEFHX1RZUEVfSU5fUExBQ0UgPSA4LAoKCgogIEFUVFJfRkxBR19CVUlMVF9JTiA9IDE2Cn07
CgoKCmV4dGVybiB0cmVlIG1lcmdlX2RlY2xfYXR0cmlidXRlcyAodHJlZSwgdHJlZSk7CmV4dGVy
biB0cmVlIG1lcmdlX3R5cGVfYXR0cmlidXRlcyAodHJlZSwgdHJlZSk7CmV4dGVybiB2b2lkIGRl
ZmF1bHRfcmVnaXN0ZXJfY3BwX2J1aWx0aW5zIChzdHJ1Y3QgY3BwX3JlYWRlciAqKTsKCgoKZXh0
ZXJuIHZvaWQgc3BsaXRfc3BlY3NfYXR0cnMgKHRyZWUsIHRyZWUgKiwgdHJlZSAqKTsKCgoKZXh0
ZXJuIHRyZWUgc3RyaXBfYXR0cnMgKHRyZWUpOwoKCgpleHRlcm4gaW50IHZhbGlkX21hY2hpbmVf
YXR0cmlidXRlICh0cmVlLCB0cmVlLCB0cmVlLCB0cmVlKTsKCgoKCmV4dGVybiBpbnQgaXNfYXR0
cmlidXRlX3AgKGNvbnN0IGNoYXIgKiwgdHJlZSk7CgoKCgpleHRlcm4gdHJlZSBsb29rdXBfYXR0
cmlidXRlIChjb25zdCBjaGFyICosIHRyZWUpOwoKCgpleHRlcm4gdHJlZSBtZXJnZV9hdHRyaWJ1
dGVzICh0cmVlLCB0cmVlKTsKIyAyNDA2ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEv
c3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCmV4dGVybiB0cmVlIGdldF9xdWFsaWZpZWRfdHlw
ZSAodHJlZSwgaW50KTsKCgoKCmV4dGVybiB0cmVlIGJ1aWxkX3F1YWxpZmllZF90eXBlICh0cmVl
LCBpbnQpOwojIDI0MjUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2dj
Yy9zcmMvZ2NjL3RyZWUuaCIKZXh0ZXJuIHRyZWUgYnVpbGRfdHlwZV9jb3B5ICh0cmVlKTsKCgoK
CmV4dGVybiB2b2lkIGZpbmlzaF9idWlsdGluX3N0cnVjdCAodHJlZSwgY29uc3QgY2hhciAqLCB0
cmVlLCB0cmVlKTsKCgoKCgoKZXh0ZXJuIHZvaWQgbGF5b3V0X3R5cGUgKHRyZWUpOwojIDI0NDYg
Ii9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUu
aCIKdHlwZWRlZiBzdHJ1Y3QgcmVjb3JkX2xheW91dF9pbmZvX3MKewoKICB0cmVlIHQ7CgoKICB0
cmVlIG9mZnNldDsKCiAgdW5zaWduZWQgaW50IG9mZnNldF9hbGlnbjsKCiAgdHJlZSBiaXRwb3M7
CgogIHVuc2lnbmVkIGludCByZWNvcmRfYWxpZ247CgoKICB1bnNpZ25lZCBpbnQgdW5wYWNrZWRf
YWxpZ247CgogIHRyZWUgcHJldl9maWVsZDsKCgogIHRyZWUgcGVuZGluZ19zdGF0aWNzOwoKICBp
bnQgcmVtYWluaW5nX2luX2FsaWdubWVudDsKCgogIGludCBwYWNrZWRfbWF5YmVfbmVjZXNzYXJ5
Owp9ICpyZWNvcmRfbGF5b3V0X2luZm87CgpleHRlcm4gdm9pZCBzZXRfbGFuZ19hZGp1c3Rfcmxp
ICh2b2lkICgqKSAocmVjb3JkX2xheW91dF9pbmZvKSk7CgpleHRlcm4gcmVjb3JkX2xheW91dF9p
bmZvIHN0YXJ0X3JlY29yZF9sYXlvdXQgKHRyZWUpOwpleHRlcm4gdHJlZSBiaXRfZnJvbV9wb3Mg
KHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBieXRlX2Zyb21fcG9zICh0cmVlLCB0cmVlKTsKZXh0
ZXJuIHZvaWQgcG9zX2Zyb21fYml0ICh0cmVlICosIHRyZWUgKiwgdW5zaWduZWQgaW50LCB0cmVl
KTsKCmV4dGVybiB2b2lkIG5vcm1hbGl6ZV9vZmZzZXQgKHRyZWUgKiwgdHJlZSAqLCB1bnNpZ25l
ZCBpbnQpOwoKZXh0ZXJuIHRyZWUgcmxpX3NpemVfdW5pdF9zb19mYXIgKHJlY29yZF9sYXlvdXRf
aW5mbyk7CmV4dGVybiB0cmVlIHJsaV9zaXplX3NvX2ZhciAocmVjb3JkX2xheW91dF9pbmZvKTsK
ZXh0ZXJuIHZvaWQgbm9ybWFsaXplX3JsaSAocmVjb3JkX2xheW91dF9pbmZvKTsKZXh0ZXJuIHZv
aWQgcGxhY2VfZmllbGQgKHJlY29yZF9sYXlvdXRfaW5mbywgdHJlZSk7CmV4dGVybiB2b2lkIGNv
bXB1dGVfcmVjb3JkX21vZGUgKHRyZWUpOwpleHRlcm4gdm9pZCBmaW5pc2hfcmVjb3JkX2xheW91
dCAocmVjb3JkX2xheW91dF9pbmZvLCBpbnQpOwoKCgoKCgpleHRlcm4gdHJlZSB0eXBlX2hhc2hf
Y2Fub24gKHVuc2lnbmVkIGludCwgdHJlZSk7CiMgMjUwNSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv
bi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgpleHRlcm4gdm9pZCBsYXlvdXRf
ZGVjbCAodHJlZSwgdW5zaWduZWQpOwoKCgoKCgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgbW9k
ZV9mb3Jfc2l6ZV90cmVlICh0cmVlLCBlbnVtIG1vZGVfY2xhc3MsIGludCk7CgoKCgpleHRlcm4g
dHJlZSBub25fbHZhbHVlICh0cmVlKTsKZXh0ZXJuIHRyZWUgcGVkYW50aWNfbm9uX2x2YWx1ZSAo
dHJlZSk7CgpleHRlcm4gdHJlZSBjb252ZXJ0ICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHVuc2lnbmVk
IGludCBleHByX2FsaWduICh0cmVlKTsKZXh0ZXJuIHRyZWUgc2l6ZV9pbl9ieXRlcyAodHJlZSk7
CmV4dGVybiBsb25nIGludF9zaXplX2luX2J5dGVzICh0cmVlKTsKZXh0ZXJuIHRyZWUgYml0X3Bv
c2l0aW9uICh0cmVlKTsKZXh0ZXJuIGxvbmcgaW50X2JpdF9wb3NpdGlvbiAodHJlZSk7CmV4dGVy
biB0cmVlIGJ5dGVfcG9zaXRpb24gKHRyZWUpOwpleHRlcm4gbG9uZyBpbnRfYnl0ZV9wb3NpdGlv
biAodHJlZSk7CgoKCgplbnVtIHNpemVfdHlwZV9raW5kCnsKICBTSVpFVFlQRSwKICBTU0laRVRZ
UEUsCiAgVVNJWkVUWVBFLAogIEJJVFNJWkVUWVBFLAogIFNCSVRTSVpFVFlQRSwKICBVQklUU0la
RVRZUEUsCiAgVFlQRV9LSU5EX0xBU1R9OwoKZXh0ZXJuIHRyZWUgc2l6ZXR5cGVfdGFiWyhpbnQp
IFRZUEVfS0lORF9MQVNUXTsKIyAyNTUxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEv
c3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCmV4dGVybiB0cmVlIHNpemVfYmlub3AgKGVudW0g
dHJlZV9jb2RlLCB0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgc2l6ZV9kaWZmb3AgKHRyZWUsIHRy
ZWUpOwpleHRlcm4gdHJlZSBzaXplX2ludF93aWRlIChsb25nLCBlbnVtIHNpemVfdHlwZV9raW5k
KTsKCmV4dGVybiB0cmVlIHNpemVfaW50X3R5cGVfd2lkZSAobG9uZywgdHJlZSk7CgoKCgoKCgpl
eHRlcm4gdHJlZSByb3VuZF91cCAodHJlZSwgaW50KTsKZXh0ZXJuIHRyZWUgcm91bmRfZG93biAo
dHJlZSwgaW50KTsKZXh0ZXJuIHRyZWUgZ2V0X3BlbmRpbmdfc2l6ZXMgKHZvaWQpOwpleHRlcm4g
aW50IGlzX3BlbmRpbmdfc2l6ZSAodHJlZSk7CmV4dGVybiB2b2lkIHB1dF9wZW5kaW5nX3NpemUg
KHRyZWUpOwpleHRlcm4gdm9pZCBwdXRfcGVuZGluZ19zaXplcyAodHJlZSk7CiMgMjU3OCAiL1Zv
bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgpl
eHRlcm4gdW5zaWduZWQgaW50IG1heGltdW1fZmllbGRfYWxpZ25tZW50OwoKCmV4dGVybiB1bnNp
Z25lZCBpbnQgc2V0X2FsaWdubWVudDsKCgoKCgpleHRlcm4gdHJlZSBjaGFpbm9uICh0cmVlLCB0
cmVlKTsKCgoKZXh0ZXJuIHRyZWUgdHJlZV9jb25zICh0cmVlLCB0cmVlLCB0cmVlKTsKCgoKZXh0
ZXJuIHRyZWUgdHJlZV9sYXN0ICh0cmVlKTsKCgoKZXh0ZXJuIHRyZWUgbnJldmVyc2UgKHRyZWUp
OwoKCgoKZXh0ZXJuIGludCBsaXN0X2xlbmd0aCAodHJlZSk7CgoKCmV4dGVybiBpbnQgZmllbGRz
X2xlbmd0aCAodHJlZSk7CgoKCgpleHRlcm4gX0Jvb2wgaW5pdGlhbGl6ZXJfemVyb3AgKHRyZWUp
OwoKCgpleHRlcm4gaW50IGludGVnZXJfemVyb3AgKHRyZWUpOwoKCgpleHRlcm4gaW50IGludGVn
ZXJfb25lcCAodHJlZSk7CgoKCgpleHRlcm4gaW50IGludGVnZXJfYWxsX29uZXNwICh0cmVlKTsK
CgoKCmV4dGVybiBpbnQgaW50ZWdlcl9wb3cycCAodHJlZSk7CgoKCgpleHRlcm4gaW50IGludGVn
ZXJfbm9uemVyb3AgKHRyZWUpOwoKCgoKZXh0ZXJuIGludCBzdGF0aWNwICh0cmVlKTsKCgoKCmV4
dGVybiBpbnQgbHZhbHVlX29yX2Vsc2UgKHRyZWUsIGNvbnN0IGNoYXIgKik7CgoKCgoKZXh0ZXJu
IHRyZWUgc2F2ZV9leHByICh0cmVlKTsKCgoKCmV4dGVybiB0cmVlIHNraXBfc2ltcGxlX2FyaXRo
bWV0aWMgKHRyZWUpOwoKCgoKZXh0ZXJuIF9Cb29sIHNhdmVkX2V4cHJfcCAodHJlZSk7CgoKCgpl
eHRlcm4gaW50IGZpcnN0X3J0bF9vcCAoZW51bSB0cmVlX2NvZGUpOwoKCgplbnVtIHRyZWVfbm9k
ZV9zdHJ1Y3R1cmVfZW51bSB0cmVlX25vZGVfc3RydWN0dXJlICh0cmVlKTsKCgoKCgpleHRlcm4g
dHJlZSB1bnNhdmVfZXhwciAodHJlZSk7CgoKCgpleHRlcm4gdm9pZCB1bnNhdmVfZXhwcl8xICh0
cmVlKTsKCgoKCmV4dGVybiBpbnQgdW5zYWZlX2Zvcl9yZWV2YWwgKHRyZWUpOwoKCgoKCgoKZXh0
ZXJuIGludCBjb250YWluc19wbGFjZWhvbGRlcl9wICh0cmVlKTsKCgoKCmV4dGVybiBpbnQgaGFz
X2NsZWFudXBzICh0cmVlKTsKCgoKCgoKZXh0ZXJuIHRyZWUgc3Vic3RpdHV0ZV9pbl9leHByICh0
cmVlLCB0cmVlLCB0cmVlKTsKCgoKCgoKCmV4dGVybiB0cmVlIHZhcmlhYmxlX3NpemUgKHRyZWUp
OwoKCgoKCmV4dGVybiB0cmVlIHN0YWJpbGl6ZV9yZWZlcmVuY2UgKHRyZWUpOwoKCgoKCmV4dGVy
biB0cmVlIHN0YWJpbGl6ZV9yZWZlcmVuY2VfMSAodHJlZSk7CgoKCgoKCmV4dGVybiB0cmVlIGdl
dF91bndpZGVuZWQgKHRyZWUsIHRyZWUpOwoKCgoKCgpleHRlcm4gdHJlZSBnZXRfbmFycm93ZXIg
KHRyZWUsIGludCAqKTsKCgoKCgpleHRlcm4gdHJlZSBnZXRfaW5uZXJfcmVmZXJlbmNlICh0cmVl
LCBsb25nICosIGxvbmcgKiwgdHJlZSAqLCBlbnVtIG1hY2hpbmVfbW9kZSAqLCBpbnQgKiwgaW50
ICopOwoKCgoKCgpleHRlcm4gaW50IGhhbmRsZWRfY29tcG9uZW50X3AgKHRyZWUpOwoKCgoKZXh0
ZXJuIHRyZWUgZ2V0X2NvbnRhaW5pbmdfc2NvcGUgKHRyZWUpOwoKCgpleHRlcm4gdHJlZSBkZWNs
X2Z1bmN0aW9uX2NvbnRleHQgKHRyZWUpOwoKCgpleHRlcm4gdHJlZSBkZWNsX3R5cGVfY29udGV4
dCAodHJlZSk7CgoKCgoKCmV4dGVybiBjb25zdCBjaGFyICpmdW5jdGlvbl9jYW5ub3RfaW5saW5l
X3AgKHRyZWUpOwoKCmV4dGVybiBpbnQgcmVhbF96ZXJvcCAodHJlZSk7CgoKCgoKZXh0ZXJuIGNv
bnN0IGNoYXIgKmlucHV0X2ZpbGVuYW1lOwoKCmV4dGVybiBpbnQgbGluZW5vOwoKCgoKZXh0ZXJu
IGludCBwZWRhbnRpY19sdmFsdWVzOwoKCgoKZXh0ZXJuIGludCBpbW1lZGlhdGVfc2l6ZV9leHBh
bmQ7CgoKCmV4dGVybiB0cmVlIGN1cnJlbnRfZnVuY3Rpb25fZGVjbDsKCgpleHRlcm4gdHJlZSBj
dXJyZW50X2Z1bmN0aW9uX2Z1bmNfYmVnaW5fbGFiZWw7CgoKCmV4dGVybiBpbnQgYWxsX3R5cGVz
X3Blcm1hbmVudDsKCgoKZXh0ZXJuIHRyZWUgYnVpbHRpbl9mdW5jdGlvbiAoY29uc3QgY2hhciAq
LCB0cmVlLCBpbnQsIGVudW0gYnVpbHRfaW5fY2xhc3MsIGNvbnN0IGNoYXIgKiwgdHJlZSk7CgoK
CgpleHRlcm4gdm9pZCBjbGVhbl9zeW1ib2xfbmFtZSAoY2hhciAqKTsKZXh0ZXJuIHRyZWUgZ2V0
X2ZpbGVfZnVuY3Rpb25fbmFtZV9sb25nIChjb25zdCBjaGFyICopOwpleHRlcm4gdHJlZSBnZXRf
c2V0X2NvbnN0cnVjdG9yX2JpdHMgKHRyZWUsIGNoYXIgKiwgaW50KTsKZXh0ZXJuIHRyZWUgZ2V0
X3NldF9jb25zdHJ1Y3Rvcl9ieXRlcyAodHJlZSwgdW5zaWduZWQgY2hhciAqLCBpbnQpOwoKZXh0
ZXJuIHRyZWUgZ2V0X2NhbGxlZV9mbmRlY2wgKHRyZWUpOwpleHRlcm4gdm9pZCBzZXRfZGVjbF9h
c3NlbWJsZXJfbmFtZSAodHJlZSk7CmV4dGVybiBpbnQgdHlwZV9udW1fYXJndW1lbnRzICh0cmVl
KTsKZXh0ZXJuIHRyZWUgbGhkX3Vuc2F2ZV9leHByX25vdyAodHJlZSk7CgoKCgpleHRlcm4gdm9p
ZCBleHBhbmRfZml4dXBzIChydHgpOwpleHRlcm4gdHJlZSBleHBhbmRfc3RhcnRfc3RtdF9leHBy
IChpbnQpOwpleHRlcm4gdHJlZSBleHBhbmRfZW5kX3N0bXRfZXhwciAodHJlZSk7CmV4dGVybiB2
b2lkIGV4cGFuZF9leHByX3N0bXQgKHRyZWUpOwpleHRlcm4gdm9pZCBleHBhbmRfZXhwcl9zdG10
X3ZhbHVlICh0cmVlLCBpbnQsIGludCk7CmV4dGVybiBpbnQgd2Fybl9pZl91bnVzZWRfdmFsdWUg
KHRyZWUpOwpleHRlcm4gdm9pZCBleHBhbmRfZGVjbF9pbml0ICh0cmVlKTsKZXh0ZXJuIHZvaWQg
Y2xlYXJfbGFzdF9leHByICh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhwYW5kX2xhYmVsICh0cmVlKTsK
ZXh0ZXJuIHZvaWQgZXhwYW5kX2dvdG8gKHRyZWUpOwpleHRlcm4gdm9pZCBleHBhbmRfYXNtICh0
cmVlLCBpbnQpOwpleHRlcm4gdm9pZCBleHBhbmRfc3RhcnRfY29uZCAodHJlZSwgaW50KTsKZXh0
ZXJuIHZvaWQgZXhwYW5kX2VuZF9jb25kICh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhwYW5kX3N0YXJ0
X2Vsc2UgKHZvaWQpOwpleHRlcm4gdm9pZCBleHBhbmRfc3RhcnRfZWxzZWlmICh0cmVlKTsKZXh0
ZXJuIHN0cnVjdCBuZXN0aW5nICpleHBhbmRfc3RhcnRfbG9vcCAoaW50KTsKZXh0ZXJuIHN0cnVj
dCBuZXN0aW5nICpleHBhbmRfc3RhcnRfbG9vcF9jb250aW51ZV9lbHNld2hlcmUgKGludCk7CmV4
dGVybiBzdHJ1Y3QgbmVzdGluZyAqZXhwYW5kX3N0YXJ0X251bGxfbG9vcCAodm9pZCk7CmV4dGVy
biB2b2lkIGV4cGFuZF9sb29wX2NvbnRpbnVlX2hlcmUgKHZvaWQpOwpleHRlcm4gdm9pZCBleHBh
bmRfZW5kX2xvb3AgKHZvaWQpOwpleHRlcm4gdm9pZCBleHBhbmRfZW5kX251bGxfbG9vcCAodm9p
ZCk7CmV4dGVybiBpbnQgZXhwYW5kX2NvbnRpbnVlX2xvb3AgKHN0cnVjdCBuZXN0aW5nICopOwpl
eHRlcm4gaW50IGV4cGFuZF9leGl0X2xvb3AgKHN0cnVjdCBuZXN0aW5nICopOwpleHRlcm4gaW50
IGV4cGFuZF9leGl0X2xvb3BfaWZfZmFsc2UgKHN0cnVjdCBuZXN0aW5nICosIHRyZWUpOwoKZXh0
ZXJuIGludCBleHBhbmRfZXhpdF9sb29wX3RvcF9jb25kIChzdHJ1Y3QgbmVzdGluZyAqLCB0cmVl
KTsKCmV4dGVybiBpbnQgZXhwYW5kX2V4aXRfc29tZXRoaW5nICh2b2lkKTsKCmV4dGVybiB2b2lk
IGV4cGFuZF9yZXR1cm4gKHRyZWUpOwpleHRlcm4gaW50IG9wdGltaXplX3RhaWxfcmVjdXJzaW9u
ICh0cmVlLCBydHgpOwpleHRlcm4gdm9pZCBleHBhbmRfc3RhcnRfYmluZGluZ3NfYW5kX2Jsb2Nr
IChpbnQsIHRyZWUpOwoKCmV4dGVybiB2b2lkIGV4cGFuZF9lbmRfYmluZGluZ3MgKHRyZWUsIGlu
dCwgaW50KTsKZXh0ZXJuIHZvaWQgd2Fybl9hYm91dF91bnVzZWRfdmFyaWFibGVzICh0cmVlKTsK
ZXh0ZXJuIHZvaWQgc3RhcnRfY2xlYW51cF9kZWZlcnJhbCAodm9pZCk7CmV4dGVybiB2b2lkIGVu
ZF9jbGVhbnVwX2RlZmVycmFsICh2b2lkKTsKZXh0ZXJuIGludCBpc19ib2R5X2Jsb2NrICh0cmVl
KTsKCmV4dGVybiBpbnQgY29uZGl0aW9uYWxfY29udGV4dCAodm9pZCk7CmV4dGVybiBzdHJ1Y3Qg
bmVzdGluZyAqIGN1cnJlbnRfbmVzdGluZ19sZXZlbCAodm9pZCk7CmV4dGVybiB0cmVlIGxhc3Rf
Y2xlYW51cF90aGlzX2NvbnRvdXIgKHZvaWQpOwpleHRlcm4gdm9pZCBleHBhbmRfc3RhcnRfY2Fz
ZSAoaW50LCB0cmVlLCB0cmVlLCBjb25zdCBjaGFyICopOwoKZXh0ZXJuIHZvaWQgZXhwYW5kX2Vu
ZF9jYXNlX3R5cGUgKHRyZWUsIHRyZWUpOwoKZXh0ZXJuIGludCBhZGRfY2FzZV9ub2RlICh0cmVl
LCB0cmVlLCB0cmVlLCB0cmVlICopOwoKZXh0ZXJuIGludCBwdXNoY2FzZSAodHJlZSwgdHJlZSAo
KikgKHRyZWUsIHRyZWUpLCB0cmVlLCB0cmVlICopOwoKCmV4dGVybiBpbnQgcHVzaGNhc2VfcmFu
Z2UgKHRyZWUsIHRyZWUsIHRyZWUgKCopICh0cmVlLCB0cmVlKSwgdHJlZSwgdHJlZSAqKTsKCgpl
eHRlcm4gdm9pZCB1c2luZ19laF9mb3JfY2xlYW51cHMgKHZvaWQpOwojIDI4OTQgIi9Wb2x1bWVz
L1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIKZXh0ZXJu
IHRyZWUgZm9sZCAodHJlZSk7CgpleHRlcm4gaW50IGZvcmNlX2ZpdF90eXBlICh0cmVlLCBpbnQp
OwpleHRlcm4gaW50IGFkZF9kb3VibGUgKHVuc2lnbmVkIGxvbmcsIGxvbmcsIHVuc2lnbmVkIGxv
bmcsIGxvbmcsIHVuc2lnbmVkIGxvbmcgKiwgbG9uZyAqKTsKCgoKZXh0ZXJuIGludCBuZWdfZG91
YmxlICh1bnNpZ25lZCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nICosIGxvbmcgKik7CgoKZXh0
ZXJuIGludCBtdWxfZG91YmxlICh1bnNpZ25lZCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nLCBs
b25nLCB1bnNpZ25lZCBsb25nICosIGxvbmcgKik7CgoKCgpleHRlcm4gdm9pZCBsc2hpZnRfZG91
YmxlICh1bnNpZ25lZCBsb25nLCBsb25nLCBsb25nLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxv
bmcgKiwgbG9uZyAqLCBpbnQpOwoKCgpleHRlcm4gdm9pZCByc2hpZnRfZG91YmxlICh1bnNpZ25l
ZCBsb25nLCBsb25nLCBsb25nLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxvbmcgKiwgbG9uZyAq
LCBpbnQpOwoKCgpleHRlcm4gdm9pZCBscm90YXRlX2RvdWJsZSAodW5zaWduZWQgbG9uZywgbG9u
ZywgbG9uZywgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBsb25nICosIGxvbmcgKik7CgoKCmV4dGVy
biB2b2lkIHJyb3RhdGVfZG91YmxlICh1bnNpZ25lZCBsb25nLCBsb25nLCBsb25nLCB1bnNpZ25l
ZCBpbnQsIHVuc2lnbmVkIGxvbmcgKiwgbG9uZyAqKTsKCgoKCmV4dGVybiBpbnQgZGl2X2FuZF9y
b3VuZF9kb3VibGUgKGVudW0gdHJlZV9jb2RlLCBpbnQsIHVuc2lnbmVkIGxvbmcsIGxvbmcsIHVu
c2lnbmVkIGxvbmcsIGxvbmcsIHVuc2lnbmVkIGxvbmcgKiwgbG9uZyAqLCB1bnNpZ25lZCBsb25n
ICosIGxvbmcgKik7CiMgMjkzNiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9m
c2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgpleHRlcm4gaW50IG9wZXJhbmRfZXF1YWxfcCAodHJlZSwg
dHJlZSwgaW50KTsKZXh0ZXJuIHRyZWUgb21pdF9vbmVfb3BlcmFuZCAodHJlZSwgdHJlZSwgdHJl
ZSk7CmV4dGVybiB0cmVlIGludmVydF90cnV0aHZhbHVlICh0cmVlKTsKCgpleHRlcm4gdHJlZSBm
b2xkX2J1aWx0aW4gKHRyZWUpOwpleHRlcm4gZW51bSBidWlsdF9pbl9mdW5jdGlvbiBidWlsdGlu
X21hdGhmbl9jb2RlICh0cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfZnVuY3Rpb25fY2FsbF9leHBy
ICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgbWF0aGZuX2J1aWx0X2luICh0cmVlLCBlbnVtIGJ1
aWx0X2luX2Z1bmN0aW9uIGZuKTsKZXh0ZXJuIHRyZWUgc3RyaXBfZmxvYXRfZXh0ZW5zaW9ucyAo
dHJlZSk7CgoKZXh0ZXJuIHRyZWUgc3RyaXBfZmxvYXRfZXh0ZW5zaW9ucyAodHJlZSk7CgoKZXh0
ZXJuIHZvaWQgcmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzICh0cmVlKTsKZXh0ZXJuIGxvbmcgZ2V0
X2FsaWFzX3NldCAodHJlZSk7CmV4dGVybiBpbnQgYWxpYXNfc2V0c19jb25mbGljdF9wIChsb25n
LCBsb25nKTsKCmV4dGVybiBpbnQgcmVhZG9ubHlfZmllbGRzX3AgKHRyZWUpOwpleHRlcm4gaW50
IG9iamVjdHNfbXVzdF9jb25mbGljdF9wICh0cmVlLCB0cmVlKTsKCgpleHRlcm4gaW50IHJlYWxs
eV9jb25zdGFudF9wICh0cmVlKTsKZXh0ZXJuIGludCBpbnRfZml0c190eXBlX3AgKHRyZWUsIHRy
ZWUpOwpleHRlcm4gX0Jvb2wgdmFyaWFibHlfbW9kaWZpZWRfdHlwZV9wICh0cmVlKTsKZXh0ZXJu
IGludCB0cmVlX2xvZzIgKHRyZWUpOwpleHRlcm4gaW50IHRyZWVfZmxvb3JfbG9nMiAodHJlZSk7
CmV4dGVybiBpbnQgc2ltcGxlX2NzdF9lcXVhbCAodHJlZSwgdHJlZSk7CmV4dGVybiBpbnQgY29t
cGFyZV90cmVlX2ludCAodHJlZSwgdW5zaWduZWQgbG9uZyk7CgpleHRlcm4gaW50IHR5cGVfbGlz
dF9lcXVhbCAodHJlZSwgdHJlZSk7CmV4dGVybiBpbnQgY2hhaW5fbWVtYmVyICh0cmVlLCB0cmVl
KTsKZXh0ZXJuIHRyZWUgdHlwZV9oYXNoX2xvb2t1cCAodW5zaWduZWQgaW50LCB0cmVlKTsKZXh0
ZXJuIHZvaWQgdHlwZV9oYXNoX2FkZCAodW5zaWduZWQgaW50LCB0cmVlKTsKZXh0ZXJuIHVuc2ln
bmVkIGludCB0eXBlX2hhc2hfbGlzdCAodHJlZSk7CmV4dGVybiBpbnQgc2ltcGxlX2NzdF9saXN0
X2VxdWFsICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHZvaWQgZHVtcF90cmVlX3N0YXRpc3RpY3MgKHZv
aWQpOwpleHRlcm4gdm9pZCBleHBhbmRfZnVuY3Rpb25fZW5kIChjb25zdCBjaGFyICosIGludCwg
aW50KTsKZXh0ZXJuIHZvaWQgZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0ICh0cmVlLCBpbnQpOwpleHRl
cm4gdm9pZCBleHBhbmRfcGVuZGluZ19zaXplcyAodHJlZSk7CgpleHRlcm4gaW50IHJlYWxfb25l
cCAodHJlZSk7CmV4dGVybiBpbnQgcmVhbF90d29wICh0cmVlKTsKZXh0ZXJuIGludCByZWFsX21p
bnVzX29uZXAgKHRyZWUpOwpleHRlcm4gdm9pZCBpbml0X3R0cmVlICh2b2lkKTsKZXh0ZXJuIHZv
aWQgYnVpbGRfY29tbW9uX3RyZWVfbm9kZXMgKGludCk7CmV4dGVybiB2b2lkIGJ1aWxkX2NvbW1v
bl90cmVlX25vZGVzXzIgKGludCk7CmV4dGVybiB0cmVlIGJ1aWxkX3JhbmdlX3R5cGUgKHRyZWUs
IHRyZWUsIHRyZWUpOwoKCmV4dGVybiB2b2lkIHNldGptcF9wcm90ZWN0X2FyZ3MgKHZvaWQpOwpl
eHRlcm4gdm9pZCBzZXRqbXBfcHJvdGVjdCAodHJlZSk7CmV4dGVybiB2b2lkIGV4cGFuZF9tYWlu
X2Z1bmN0aW9uICh2b2lkKTsKZXh0ZXJuIHZvaWQgaW5pdF9kdW1teV9mdW5jdGlvbl9zdGFydCAo
dm9pZCk7CmV4dGVybiB2b2lkIGV4cGFuZF9kdW1teV9mdW5jdGlvbl9lbmQgKHZvaWQpOwpleHRl
cm4gdm9pZCBpbml0X2Z1bmN0aW9uX2Zvcl9jb21waWxhdGlvbiAodm9pZCk7CmV4dGVybiB2b2lk
IGluaXRfZnVuY3Rpb25fc3RhcnQgKHRyZWUsIGNvbnN0IGNoYXIgKiwgaW50KTsKZXh0ZXJuIHZv
aWQgYXNzaWduX3Bhcm1zICh0cmVlKTsKZXh0ZXJuIHZvaWQgcHV0X3Zhcl9pbnRvX3N0YWNrICh0
cmVlLCBpbnQpOwpleHRlcm4gdm9pZCBmbHVzaF9hZGRyZXNzb2YgKHRyZWUpOwpleHRlcm4gdm9p
ZCB1bmluaXRpYWxpemVkX3ZhcnNfd2FybmluZyAodHJlZSk7CmV4dGVybiB2b2lkIHNldGptcF9h
cmdzX3dhcm5pbmcgKHZvaWQpOwpleHRlcm4gdm9pZCBtYXJrX2FsbF90ZW1wc191c2VkICh2b2lk
KTsKZXh0ZXJuIHZvaWQgaW5pdF90ZW1wX3Nsb3RzICh2b2lkKTsKZXh0ZXJuIHZvaWQgY29tYmlu
ZV90ZW1wX3Nsb3RzICh2b2lkKTsKZXh0ZXJuIHZvaWQgZnJlZV90ZW1wX3Nsb3RzICh2b2lkKTsK
ZXh0ZXJuIHZvaWQgcG9wX3RlbXBfc2xvdHMgKHZvaWQpOwpleHRlcm4gdm9pZCBwdXNoX3RlbXBf
c2xvdHMgKHZvaWQpOwpleHRlcm4gdm9pZCBwcmVzZXJ2ZV90ZW1wX3Nsb3RzIChydHgpOwpleHRl
cm4gdm9pZCBwcmVzZXJ2ZV9ydGxfZXhwcl90ZW1wcyAodHJlZSk7CmV4dGVybiBpbnQgYWdncmVn
YXRlX3ZhbHVlX3AgKHRyZWUpOwpleHRlcm4gdm9pZCBmcmVlX3RlbXBzX2Zvcl9ydGxfZXhwciAo
dHJlZSk7CmV4dGVybiB2b2lkIGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncyAodHJlZSwgcnR4KTsK
ZXh0ZXJuIHZvaWQgdW5zaGFyZV9hbGxfcnRsICh0cmVlLCBydHgpOwpleHRlcm4gdm9pZCBwdXNo
X2Z1bmN0aW9uX2NvbnRleHQgKHZvaWQpOwpleHRlcm4gdm9pZCBwb3BfZnVuY3Rpb25fY29udGV4
dCAodm9pZCk7CmV4dGVybiB2b2lkIHB1c2hfZnVuY3Rpb25fY29udGV4dF90byAodHJlZSk7CmV4
dGVybiB2b2lkIHBvcF9mdW5jdGlvbl9jb250ZXh0X2Zyb20gKHRyZWUpOwoKCgpleHRlcm4gdm9p
ZCBwcmludF9ydGwgKEZJTEUgKiwgcnR4KTsKCgoKZXh0ZXJuIHZvaWQgZGVidWdfdHJlZSAodHJl
ZSk7CgpleHRlcm4gdm9pZCBwcmludF9ub2RlIChGSUxFICosIGNvbnN0IGNoYXIgKiwgdHJlZSwg
aW50KTsKCmV4dGVybiB2b2lkIHByaW50X25vZGVfYnJpZWYgKEZJTEUgKiwgY29uc3QgY2hhciAq
LCB0cmVlLCBpbnQpOwoKZXh0ZXJuIHZvaWQgaW5kZW50X3RvIChGSUxFICosIGludCk7CgoKCmV4
dGVybiBpbnQgYXBwbHlfYXJnc19yZWdpc3Rlcl9vZmZzZXQgKGludCk7CmV4dGVybiBydHggZXhw
YW5kX2J1aWx0aW5fcmV0dXJuX2FkZHIKIChlbnVtIGJ1aWx0X2luX2Z1bmN0aW9uLCBpbnQsIHJ0
eCk7CmV4dGVybiB2b2lkIGNoZWNrX21heF9pbnRlZ2VyX2NvbXB1dGF0aW9uX21vZGUgKHRyZWUp
OwoKCmV4dGVybiB2b2lkIHN0YXJ0X3NlcXVlbmNlX2Zvcl9ydGxfZXhwciAodHJlZSk7CmV4dGVy
biBydHggZW1pdF9saW5lX25vdGUgKGNvbnN0IGNoYXIgKiwgaW50KTsKCgoKZXh0ZXJuIGludCBz
ZXRqbXBfY2FsbF9wICh0cmVlKTsKZXh0ZXJuIF9Cb29sIGFsbG9jYV9jYWxsX3AgKHRyZWUpOwoj
IDMwNTYgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2Nj
L3RyZWUuaCIKZXh0ZXJuIHRyZWUgZGVjbF9hdHRyaWJ1dGVzICh0cmVlICosIHRyZWUsIGludCk7
CgoKZXh0ZXJuIHZvaWQgc2F2ZV9mb3JfaW5saW5lICh0cmVlKTsKZXh0ZXJuIHZvaWQgc2V0X2Rl
Y2xfYWJzdHJhY3RfZmxhZ3MgKHRyZWUsIGludCk7CmV4dGVybiB2b2lkIG91dHB1dF9pbmxpbmVf
ZnVuY3Rpb24gKHRyZWUpOwpleHRlcm4gdm9pZCBzZXRfZGVjbF9vcmlnaW5fc2VsZiAodHJlZSk7
CgoKZXh0ZXJuIHZvaWQgZml4dXBfc2lnbmVkX3R5cGUgKHRyZWUpOwpleHRlcm4gdm9pZCBpbnRl
cm5hbF9yZWZlcmVuY2VfdHlwZXMgKHZvaWQpOwoKCmV4dGVybiB2b2lkIG1ha2VfZGVjbF9ydGwg
KHRyZWUsIGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIG1ha2VfZGVjbF9vbmVfb25seSAodHJl
ZSk7CmV4dGVybiBpbnQgc3VwcG9ydHNfb25lX29ubHkgKHZvaWQpOwpleHRlcm4gdm9pZCB2YXJp
YWJsZV9zZWN0aW9uICh0cmVlLCBpbnQpOwplbnVtIHRsc19tb2RlbCBkZWNsX3Rsc19tb2RlbCAo
dHJlZSk7CmVudW0gc3ltYm9sX3Zpc2liaWxpdHkgZGVjbF92aXNpYmlsaXR5ICh0cmVlKTsKCgpl
eHRlcm4gdm9pZCBlbWl0X25vcCAodm9pZCk7CmV4dGVybiB2b2lkIGV4cGFuZF9jb21wdXRlZF9n
b3RvICh0cmVlKTsKZXh0ZXJuIF9Cb29sIHBhcnNlX291dHB1dF9jb25zdHJhaW50IChjb25zdCBj
aGFyICoqLCBpbnQsIGludCwgaW50LCBfQm9vbCAqLCBfQm9vbCAqLCBfQm9vbCAqKTsKCgpleHRl
cm4gdm9pZCBleHBhbmRfYXNtX29wZXJhbmRzICh0cmVlLCB0cmVlLCB0cmVlLCB0cmVlLCBpbnQs
IGNvbnN0IGNoYXIgKiwgaW50KTsKCmV4dGVybiBpbnQgYW55X3BlbmRpbmdfY2xlYW51cHMgKGlu
dCk7CmV4dGVybiB2b2lkIGluaXRfc3RtdF9mb3JfZnVuY3Rpb24gKHZvaWQpOwpleHRlcm4gdm9p
ZCBleHBhbmRfc3RhcnRfdGFyZ2V0X3RlbXBzICh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhwYW5kX2Vu
ZF90YXJnZXRfdGVtcHMgKHZvaWQpOwpleHRlcm4gdm9pZCBleHBhbmRfZWxzZWlmICh0cmVlKTsK
ZXh0ZXJuIHZvaWQgc2F2ZV9zdGFja19wb2ludGVyICh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhwYW5k
X2RlY2wgKHRyZWUpOwpleHRlcm4gaW50IGV4cGFuZF9kZWNsX2NsZWFudXAgKHRyZWUsIHRyZWUp
OwpleHRlcm4gaW50IGV4cGFuZF9kZWNsX2NsZWFudXBfZWggKHRyZWUsIHRyZWUsIGludCk7CmV4
dGVybiB2b2lkIGV4cGFuZF9hbm9uX3VuaW9uX2RlY2wgKHRyZWUsIHRyZWUsIHRyZWUpOwpleHRl
cm4gdm9pZCBleHBhbmRfc3RhcnRfY2FzZV9kdW1teSAodm9pZCk7CmV4dGVybiBsb25nIGFsbF9j
YXNlc19jb3VudCAodHJlZSwgaW50ICopOwpleHRlcm4gdm9pZCBjaGVja19mb3JfZnVsbF9lbnVt
ZXJhdGlvbl9oYW5kbGluZyAodHJlZSk7CmV4dGVybiB2b2lkIGRlY2xhcmVfbm9ubG9jYWxfbGFi
ZWwgKHRyZWUpOwpleHRlcm4gdm9pZCBkZWZhdWx0X2ZsYWdfcmFuZG9tX3NlZWQgKHZvaWQpOwoK
CgpleHRlcm4gdHJlZSBnZXRfZmlsZV9mdW5jdGlvbl9uYW1lIChpbnQpOwoKCgoKCmV4dGVybiBj
aGFyICpkd2FyZjJvdXRfY2ZpX2xhYmVsICh2b2lkKTsKCgoKZXh0ZXJuIHZvaWQgZHdhcmYyb3V0
X2RlZl9jZmEgKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIGxvbmcpOwoKCgpleHRlcm4gdm9pZCBk
d2FyZjJvdXRfd2luZG93X3NhdmUgKGNvbnN0IGNoYXIgKik7CgoKCgpleHRlcm4gdm9pZCBkd2Fy
ZjJvdXRfYXJnc19zaXplIChjb25zdCBjaGFyICosIGxvbmcpOwoKCgpleHRlcm4gdm9pZCBkd2Fy
ZjJvdXRfcmVnX3NhdmUgKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIGxvbmcpOwoKCgpleHRlcm4g
dm9pZCBkd2FyZjJvdXRfcmV0dXJuX3NhdmUgKGNvbnN0IGNoYXIgKiwgbG9uZyk7CgoKCmV4dGVy
biB2b2lkIGR3YXJmMm91dF9yZXR1cm5fcmVnIChjb25zdCBjaGFyICosIHVuc2lnbmVkKTsKCgoK
dHlwZWRlZiB0cmVlICgqd2Fsa190cmVlX2ZuKSAodHJlZSAqLCBpbnQgKiwgdm9pZCAqKTsKCgoK
CgplbnVtIHRyZWVfZHVtcF9pbmRleAp7CiAgVERJX2FsbCwKICBURElfY2xhc3MsCiAgVERJX29y
aWdpbmFsLAogIFRESV9vcHRpbWl6ZWQsCiAgVERJX2lubGluZWQsCgogIFRESV9lbmQKfTsKCgoK
CgoKCnR5cGVkZWYgc3RydWN0IGR1bXBfaW5mbyAqZHVtcF9pbmZvX3A7CgpleHRlcm4gaW50IGR1
bXBfZmxhZyAoZHVtcF9pbmZvX3AsIGludCwgdHJlZSk7CmV4dGVybiBpbnQgZHVtcF9lbmFibGVk
X3AgKGVudW0gdHJlZV9kdW1wX2luZGV4KTsKZXh0ZXJuIEZJTEUgKmR1bXBfYmVnaW4gKGVudW0g
dHJlZV9kdW1wX2luZGV4LCBpbnQgKik7CmV4dGVybiB2b2lkIGR1bXBfZW5kIChlbnVtIHRyZWVf
ZHVtcF9pbmRleCwgRklMRSAqKTsKZXh0ZXJuIHZvaWQgZHVtcF9ub2RlICh0cmVlLCBpbnQsIEZJ
TEUgKik7CmV4dGVybiBpbnQgZHVtcF9zd2l0Y2hfcCAoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNv
bnN0IGNoYXIgKmR1bXBfZmxhZ19uYW1lIChlbnVtIHRyZWVfZHVtcF9pbmRleCk7CgoKZXh0ZXJu
IHZvaWQgc2V0X2RlY2xfcnRsICh0cmVlLCBydHgpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZmFuY3lf
YWJvcnQgKGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICopCiAgICBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7CiMgMjYgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9z
cmMvZnNmL2djYy9zcmMvZ2NjL2MtcHJldHR5LXByaW50LmgiIDIKIyAxICIvVm9sdW1lcy9VRlNf
UGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLWNvbW1vbi5oIiAxCiMgMjUg
Ii9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29t
bW9uLmgiCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3Ny
Yy9pbmNsdWRlL3NwbGF5LXRyZWUuaCIgMQojIDQ3ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3Bp
bnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvc3BsYXktdHJlZS5oIgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgaW50IHNwbGF5X3RyZWVfa2V5Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHNw
bGF5X3RyZWVfdmFsdWU7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3BsYXlfdHJlZV9ub2RlX3MgKnNwbGF5
X3RyZWVfbm9kZTsKCgoKdHlwZWRlZiBpbnQgKCpzcGxheV90cmVlX2NvbXBhcmVfZm4pIChzcGxh
eV90cmVlX2tleSwgc3BsYXlfdHJlZV9rZXkpOwoKCgp0eXBlZGVmIHZvaWQgKCpzcGxheV90cmVl
X2RlbGV0ZV9rZXlfZm4pIChzcGxheV90cmVlX2tleSk7CgoKCnR5cGVkZWYgdm9pZCAoKnNwbGF5
X3RyZWVfZGVsZXRlX3ZhbHVlX2ZuKSAoc3BsYXlfdHJlZV92YWx1ZSk7CgoKdHlwZWRlZiBpbnQg
KCpzcGxheV90cmVlX2ZvcmVhY2hfZm4pIChzcGxheV90cmVlX25vZGUsIHZvaWQqKTsKCgoKCgp0
eXBlZGVmIHZvaWQgKiAoKnNwbGF5X3RyZWVfYWxsb2NhdGVfZm4pIChpbnQsIHZvaWQgKik7CgoK
CgoKdHlwZWRlZiB2b2lkICgqc3BsYXlfdHJlZV9kZWFsbG9jYXRlX2ZuKSAodm9pZCAqLCB2b2lk
ICopOwoKCnN0cnVjdCBzcGxheV90cmVlX25vZGVfcwp7CgogIHNwbGF5X3RyZWVfa2V5IGtleTsK
CgogIHNwbGF5X3RyZWVfdmFsdWUgdmFsdWU7CgoKICBzcGxheV90cmVlX25vZGUgbGVmdDsKICBz
cGxheV90cmVlX25vZGUgcmlnaHQ7Cn07CgoKc3RydWN0IHNwbGF5X3RyZWVfcwp7CgogIHNwbGF5
X3RyZWVfbm9kZSByb290OwoKCiAgc3BsYXlfdHJlZV9jb21wYXJlX2ZuIGNvbXA7CgoKICBzcGxh
eV90cmVlX2RlbGV0ZV9rZXlfZm4gZGVsZXRlX2tleTsKCgogIHNwbGF5X3RyZWVfZGVsZXRlX3Zh
bHVlX2ZuIGRlbGV0ZV92YWx1ZTsKCgogIHNwbGF5X3RyZWVfYWxsb2NhdGVfZm4gYWxsb2NhdGU7
CiAgc3BsYXlfdHJlZV9kZWFsbG9jYXRlX2ZuIGRlYWxsb2NhdGU7CiAgdm9pZCAqIGFsbG9jYXRl
X2RhdGE7Cgp9Owp0eXBlZGVmIHN0cnVjdCBzcGxheV90cmVlX3MgKnNwbGF5X3RyZWU7CgpleHRl
cm4gc3BsYXlfdHJlZSBzcGxheV90cmVlX25ldyAoc3BsYXlfdHJlZV9jb21wYXJlX2ZuLCBzcGxh
eV90cmVlX2RlbGV0ZV9rZXlfZm4sIHNwbGF5X3RyZWVfZGVsZXRlX3ZhbHVlX2ZuKTsKCgpleHRl
cm4gc3BsYXlfdHJlZSBzcGxheV90cmVlX25ld193aXRoX2FsbG9jYXRvcgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwbGF5X3RyZWVfY29tcGFyZV9mbiwgc3BsYXlf
dHJlZV9kZWxldGVfa2V5X2ZuLCBzcGxheV90cmVlX2RlbGV0ZV92YWx1ZV9mbiwgc3BsYXlfdHJl
ZV9hbGxvY2F0ZV9mbiwgc3BsYXlfdHJlZV9kZWFsbG9jYXRlX2ZuLCB2b2lkICopOwoKCgoKCmV4
dGVybiB2b2lkIHNwbGF5X3RyZWVfZGVsZXRlIChzcGxheV90cmVlKTsKZXh0ZXJuIHNwbGF5X3Ry
ZWVfbm9kZSBzcGxheV90cmVlX2luc2VydAogICAgICAgICAgICAgICAgICAgICAgICAgIChzcGxh
eV90cmVlLCBzcGxheV90cmVlX2tleSwgc3BsYXlfdHJlZV92YWx1ZSk7CgoKZXh0ZXJuIHZvaWQg
c3BsYXlfdHJlZV9yZW1vdmUgKHNwbGF5X3RyZWUsIHNwbGF5X3RyZWVfa2V5KTsKCmV4dGVybiBz
cGxheV90cmVlX25vZGUgc3BsYXlfdHJlZV9sb29rdXAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzcGxheV90cmVlLCBzcGxheV90cmVlX2tleSk7CgpleHRlcm4gc3Bs
YXlfdHJlZV9ub2RlIHNwbGF5X3RyZWVfcHJlZGVjZXNzb3IKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzcGxheV90cmVlLCBzcGxheV90cmVlX2tleSk7CgpleHRlcm4g
c3BsYXlfdHJlZV9ub2RlIHNwbGF5X3RyZWVfc3VjY2Vzc29yCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoc3BsYXlfdHJlZSwgc3BsYXlfdHJlZV9rZXkpOwoKZXh0ZXJu
IHNwbGF5X3RyZWVfbm9kZSBzcGxheV90cmVlX21heAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHNwbGF5X3RyZWUpOwpleHRlcm4gc3BsYXlfdHJlZV9ub2RlIHNwbGF5
X3RyZWVfbWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BsYXlf
dHJlZSk7CmV4dGVybiBpbnQgc3BsYXlfdHJlZV9mb3JlYWNoIChzcGxheV90cmVlLCBzcGxheV90
cmVlX2ZvcmVhY2hfZm4sIHZvaWQqKTsKCgpleHRlcm4gaW50IHNwbGF5X3RyZWVfY29tcGFyZV9p
bnRzIChzcGxheV90cmVlX2tleSwgc3BsYXlfdHJlZV9rZXkpOwoKZXh0ZXJuIGludCBzcGxheV90
cmVlX2NvbXBhcmVfcG9pbnRlcnMgKHNwbGF5X3RyZWVfa2V5LCBzcGxheV90cmVlX2tleSk7CiMg
MjYgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2Mt
Y29tbW9uLmgiIDIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n
Y2Mvc3JjL2djYy9jcHBsaWIuaCIgMQojIDI4ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr
aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jcHBsaWIuaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0
aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9saW5lLW1hcC5oIiAxCiMgMzEgIi9Wb2x1
bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2xpbmUtbWFwLmgi
CmVudW0gbGNfcmVhc29uIHtMQ19FTlRFUiA9IDAsIExDX0xFQVZFLCBMQ19SRU5BTUV9OwojIDQx
ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9saW5l
LW1hcC5oIgpzdHJ1Y3QgbGluZV9tYXAKewogIGNvbnN0IGNoYXIgKnRvX2ZpbGU7CiAgdW5zaWdu
ZWQgaW50IHRvX2xpbmU7CiAgdW5zaWduZWQgaW50IGZyb21fbGluZTsKICBpbnQgaW5jbHVkZWRf
ZnJvbTsKICBlbnVtIGxjX3JlYXNvbiByZWFzb24gOiA4OwogIHVuc2lnbmVkIGNoYXIgc3lzcDsK
fTsKCgpzdHJ1Y3QgbGluZV9tYXBzCnsKICBzdHJ1Y3QgbGluZV9tYXAgKm1hcHM7CiAgdW5zaWdu
ZWQgaW50IGFsbG9jYXRlZDsKICB1bnNpZ25lZCBpbnQgdXNlZDsKCgoKCiAgaW50IGxhc3RfbGlz
dGVkOwoKCiAgdW5zaWduZWQgaW50IGRlcHRoOwoKCiAgX0Jvb2wgdHJhY2VfaW5jbHVkZXM7Cn07
CgoKZXh0ZXJuIHZvaWQgaW5pdF9saW5lX21hcHMKICAoc3RydWN0IGxpbmVfbWFwcyAqKTsKCgpl
eHRlcm4gdm9pZCBmcmVlX2xpbmVfbWFwcwogIChzdHJ1Y3QgbGluZV9tYXBzICopOwojIDg3ICIv
Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9saW5lLW1h
cC5oIgpleHRlcm4gY29uc3Qgc3RydWN0IGxpbmVfbWFwICphZGRfbGluZV9tYXAKICAoc3RydWN0
IGxpbmVfbWFwcyAqLCBlbnVtIGxjX3JlYXNvbiwgdW5zaWduZWQgaW50IHN5c3AsIHVuc2lnbmVk
IGludCBmcm9tX2xpbmUsIGNvbnN0IGNoYXIgKnRvX2ZpbGUsIHVuc2lnbmVkIGludCB0b19saW5l
KTsKCgoKCmV4dGVybiBjb25zdCBzdHJ1Y3QgbGluZV9tYXAgKmxvb2t1cF9saW5lCiAgKHN0cnVj
dCBsaW5lX21hcHMgKiwgdW5zaWduZWQgaW50KTsKCgoKCmV4dGVybiB2b2lkIHByaW50X2NvbnRh
aW5pbmdfZmlsZXMKICAoc3RydWN0IGxpbmVfbWFwcyAqLCBjb25zdCBzdHJ1Y3QgbGluZV9tYXAg
Kik7CiMgMjkgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMv
Z2NjL2NwcGxpYi5oIiAyCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgY3BwX3JlYWRlciBjcHBfcmVhZGVy
Owp0eXBlZGVmIHN0cnVjdCBjcHBfYnVmZmVyIGNwcF9idWZmZXI7CnR5cGVkZWYgc3RydWN0IGNw
cF9vcHRpb25zIGNwcF9vcHRpb25zOwp0eXBlZGVmIHN0cnVjdCBjcHBfdG9rZW4gY3BwX3Rva2Vu
Owp0eXBlZGVmIHN0cnVjdCBjcHBfc3RyaW5nIGNwcF9zdHJpbmc7CnR5cGVkZWYgc3RydWN0IGNw
cF9oYXNobm9kZSBjcHBfaGFzaG5vZGU7CnR5cGVkZWYgc3RydWN0IGNwcF9tYWNybyBjcHBfbWFj
cm87CnR5cGVkZWYgc3RydWN0IGNwcF9jYWxsYmFja3MgY3BwX2NhbGxiYWNrczsKdHlwZWRlZiBz
dHJ1Y3QgY3BwX3BhdGggY3BwX3BhdGg7CgpzdHJ1Y3QgYW5zd2VyOwpzdHJ1Y3QgZmlsZV9uYW1l
X21hcF9saXN0OwojIDE0NCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv
Z2NjL3NyYy9nY2MvY3BwbGliLmgiCmVudW0gY3BwX3R0eXBlCnsKICBDUFBfRVEgPSAwLCBDUFBf
Tk9ULCBDUFBfR1JFQVRFUiwgQ1BQX0xFU1MsIENQUF9QTFVTLCBDUFBfTUlOVVMsIENQUF9NVUxU
LCBDUFBfRElWLCBDUFBfTU9ELCBDUFBfQU5ELCBDUFBfT1IsIENQUF9YT1IsIENQUF9SU0hJRlQs
IENQUF9MU0hJRlQsIENQUF9NSU4sIENQUF9NQVgsIENQUF9DT01QTCwgQ1BQX0FORF9BTkQsIENQ
UF9PUl9PUiwgQ1BQX1FVRVJZLCBDUFBfQ09MT04sIENQUF9DT01NQSwgQ1BQX09QRU5fUEFSRU4s
IENQUF9DTE9TRV9QQVJFTiwgQ1BQX0VPRiwgQ1BQX0VRX0VRLCBDUFBfTk9UX0VRLCBDUFBfR1JF
QVRFUl9FUSwgQ1BQX0xFU1NfRVEsIENQUF9QTFVTX0VRLCBDUFBfTUlOVVNfRVEsIENQUF9NVUxU
X0VRLCBDUFBfRElWX0VRLCBDUFBfTU9EX0VRLCBDUFBfQU5EX0VRLCBDUFBfT1JfRVEsIENQUF9Y
T1JfRVEsIENQUF9SU0hJRlRfRVEsIENQUF9MU0hJRlRfRVEsIENQUF9NSU5fRVEsIENQUF9NQVhf
RVEsIENQUF9IQVNILCBDUFBfUEFTVEUsIENQUF9PUEVOX1NRVUFSRSwgQ1BQX0NMT1NFX1NRVUFS
RSwgQ1BQX09QRU5fQlJBQ0UsIENQUF9DTE9TRV9CUkFDRSwgQ1BQX1NFTUlDT0xPTiwgQ1BQX0VM
TElQU0lTLCBDUFBfUExVU19QTFVTLCBDUFBfTUlOVVNfTUlOVVMsIENQUF9ERVJFRiwgQ1BQX0RP
VCwgQ1BQX1NDT1BFLCBDUFBfREVSRUZfU1RBUiwgQ1BQX0RPVF9TVEFSLCBDUFBfQVRTSUdOLCBD
UFBfTkFNRSwgQ1BQX05VTUJFUiwgQ1BQX0NIQVIsIENQUF9XQ0hBUiwgQ1BQX09USEVSLCBDUFBf
U1RSSU5HLCBDUFBfV1NUUklORywgQ1BQX0hFQURFUl9OQU1FLCBDUFBfQ09NTUVOVCwgQ1BQX01B
Q1JPX0FSRywgQ1BQX1BBRERJTkcsCiAgTl9UVFlQRVMKfTsKCgoKCmVudW0gY19sYW5nIHtDTEtf
R05VQzg5ID0gMCwgQ0xLX0dOVUM5OSwgQ0xLX1NUREM4OSwgQ0xLX1NUREM5NCwgQ0xLX1NUREM5
OSwKICAgICAgQ0xLX0dOVUNYWCwgQ0xLX0NYWDk4LCBDTEtfQVNNfTsKCgpzdHJ1Y3QgY3BwX3N0
cmluZwp7CiAgdW5zaWduZWQgaW50IGxlbjsKICBjb25zdCB1bnNpZ25lZCBjaGFyICp0ZXh0Owp9
OwojIDE3NCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9n
Y2MvY3BwbGliLmgiCnN0cnVjdCBjcHBfdG9rZW4KewogIHVuc2lnbmVkIGludCBsaW5lOwogIHVu
c2lnbmVkIHNob3J0IGNvbDsKICBlbnVtIGNwcF90dHlwZSB0eXBlIDogODsKICB1bnNpZ25lZCBj
aGFyIGZsYWdzOwoKICB1bmlvbgogIHsKICAgIGNwcF9oYXNobm9kZSAqbm9kZTsKICAgIGNvbnN0
IGNwcF90b2tlbiAqc291cmNlOwogICAgc3RydWN0IGNwcF9zdHJpbmcgc3RyOwogICAgdW5zaWdu
ZWQgaW50IGFyZ19ubzsKICB9IHZhbDsKfTsKIyAyMDUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24v
cGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2NwcGxpYi5oIgp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBjcHBjaGFyX3Q7CnR5cGVkZWYgaW50IGNwcGNoYXJfc2lnbmVkX3Q7CgoKCnN0cnVjdCBjcHBf
b3B0aW9ucwp7CgogIHVuc2lnbmVkIGludCB0YWJzdG9wOwoKCgogIHN0cnVjdCBmaWxlX25hbWVf
bWFwX2xpc3QgKm1hcF9saXN0OwoKCiAgZW51bSBjX2xhbmcgbGFuZzsKCgogIHVuc2lnbmVkIGNo
YXIgY3BsdXNwbHVzOwoKCiAgdW5zaWduZWQgY2hhciBjcGx1c3BsdXNfY29tbWVudHM7CgoKCiAg
dW5zaWduZWQgY2hhciBvYmpjOwoKCiAgdW5zaWduZWQgY2hhciBkaXNjYXJkX2NvbW1lbnRzOwoK
CgogIHVuc2lnbmVkIGNoYXIgZGlzY2FyZF9jb21tZW50c19pbl9tYWNyb19leHA7CgoKICB1bnNp
Z25lZCBjaGFyIHRyaWdyYXBoczsKCgogIHVuc2lnbmVkIGNoYXIgZGlncmFwaHM7CgoKICB1bnNp
Z25lZCBjaGFyIGV4dGVuZGVkX251bWJlcnM7CgoKICB1bnNpZ25lZCBjaGFyIHByaW50X2luY2x1
ZGVfbmFtZXM7CgoKICB1bnNpZ25lZCBjaGFyIHBlZGFudGljX2Vycm9yczsKCgogIHVuc2lnbmVk
IGNoYXIgaW5oaWJpdF93YXJuaW5nczsKCgogIHVuc2lnbmVkIGNoYXIgd2Fybl9kZXByZWNhdGVk
OwoKCiAgdW5zaWduZWQgY2hhciB3YXJuX3N5c3RlbV9oZWFkZXJzOwoKCgogIHVuc2lnbmVkIGNo
YXIgaW5oaWJpdF9lcnJvcnM7CgoKICB1bnNpZ25lZCBjaGFyIHdhcm5fY29tbWVudHM7CgoKICB1
bnNpZ25lZCBjaGFyIHdhcm5fdHJpZ3JhcGhzOwoKCiAgdW5zaWduZWQgY2hhciB3YXJuX2ltcG9y
dDsKCgogIHVuc2lnbmVkIGNoYXIgd2Fybl9tdWx0aWNoYXI7CgoKCiAgdW5zaWduZWQgY2hhciB3
YXJuX3RyYWRpdGlvbmFsOwoKCiAgdW5zaWduZWQgY2hhciB3YXJuX2xvbmdfbG9uZzsKCgogIHVu
c2lnbmVkIGNoYXIgd2Fybl9lbmRpZl9sYWJlbHM7CgoKCiAgdW5zaWduZWQgY2hhciB3YXJuX251
bV9zaWduX2NoYW5nZTsKCgogIHVuc2lnbmVkIGNoYXIgd2FybmluZ3NfYXJlX2Vycm9yczsKCgoK
ICB1bnNpZ25lZCBjaGFyIHJlbWFwOwoKCiAgdW5zaWduZWQgY2hhciBkb2xsYXJzX2luX2lkZW50
OwoKCiAgdW5zaWduZWQgY2hhciB3YXJuX3VuZGVmOwoKCiAgdW5zaWduZWQgY2hhciB3YXJuX3Vu
dXNlZF9tYWNyb3M7CgoKICB1bnNpZ25lZCBjaGFyIGM5OTsKCgogIHVuc2lnbmVkIGNoYXIgc3Rk
OwoKCiAgdW5zaWduZWQgY2hhciBwZWRhbnRpYzsKCgoKICB1bnNpZ25lZCBjaGFyIHByZXByb2Nl
c3NlZDsKCgogIHVuc2lnbmVkIGNoYXIgc2hvd19jb2x1bW47CgoKICB1bnNpZ25lZCBjaGFyIG9w
ZXJhdG9yX25hbWVzOwoKCiAgdW5zaWduZWQgY2hhciB0cmFkaXRpb25hbDsKCgogIF9Cb29sIHdh
cm5faW52YWxpZF9wY2g7CgoKICBfQm9vbCByZXN0b3JlX3BjaF9kZXBzOwoKCiAgc3RydWN0CiAg
ewoKICAgIGVudW0ge0RFUFNfTk9ORSA9IDAsIERFUFNfVVNFUiwgREVQU19TWVNURU0gfSBzdHls
ZTsKCgogICAgX0Jvb2wgbWlzc2luZ19maWxlczsKCgoKICAgIF9Cb29sIHBob255X3RhcmdldHM7
CgoKICAgIF9Cb29sIGlnbm9yZV9tYWluX2ZpbGU7CiAgfSBkZXBzOwoKCgoKCiAgc2l6ZV90IHBy
ZWNpc2lvbiwgY2hhcl9wcmVjaXNpb24sIGludF9wcmVjaXNpb24sIHdjaGFyX3ByZWNpc2lvbjsK
CgogIF9Cb29sIHVuc2lnbmVkX2NoYXIsIHVuc2lnbmVkX3djaGFyOwoKCiAgX0Jvb2wgRUJDRElD
OwoKCiAgdW5zaWduZWQgY2hhciBzdGRjXzBfaW5fc3lzdGVtX2hlYWRlcnM7Cn07CgoKc3RydWN0
IGNwcF9jYWxsYmFja3MKewoKICB2b2lkICgqbGluZV9jaGFuZ2UpIChjcHBfcmVhZGVyICosIGNv
bnN0IGNwcF90b2tlbiAqLCBpbnQpOwogIHZvaWQgKCpmaWxlX2NoYW5nZSkgKGNwcF9yZWFkZXIg
KiwgY29uc3Qgc3RydWN0IGxpbmVfbWFwICopOwogIHZvaWQgKCppbmNsdWRlKSAoY3BwX3JlYWRl
ciAqLCB1bnNpZ25lZCBpbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgY29uc3QgY2hhciAqLCBp
bnQpOwoKICB2b2lkICgqZGVmaW5lKSAoY3BwX3JlYWRlciAqLCB1bnNpZ25lZCBpbnQsIGNwcF9o
YXNobm9kZSAqKTsKICB2b2lkICgqdW5kZWYpIChjcHBfcmVhZGVyICosIHVuc2lnbmVkIGludCwg
Y3BwX2hhc2hub2RlICopOwogIHZvaWQgKCppZGVudCkgKGNwcF9yZWFkZXIgKiwgdW5zaWduZWQg
aW50LCBjb25zdCBjcHBfc3RyaW5nICopOwogIHZvaWQgKCpkZWZfcHJhZ21hKSAoY3BwX3JlYWRl
ciAqLCB1bnNpZ25lZCBpbnQpOwogIGludCAoKnZhbGlkX3BjaCkgKGNwcF9yZWFkZXIgKiwgY29u
c3QgY2hhciAqLCBpbnQpOwogIHZvaWQgKCpyZWFkX3BjaCkgKGNwcF9yZWFkZXIgKiwgY29uc3Qg
Y2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7Cn07CgoKc3RydWN0IGNwcF9wYXRoCnsKCiAgc3Ry
dWN0IGNwcF9wYXRoICpuZXh0OwoKCiAgY2hhciAqbmFtZTsKICB1bnNpZ25lZCBpbnQgbGVuOwoK
CgogIHVuc2lnbmVkIGNoYXIgc3lzcDsKCgoKICBzdHJ1Y3QgZmlsZV9uYW1lX21hcCAqbmFtZV9t
YXA7CgoKCiAgaW5vX3QgaW5vOwogIGRldl90IGRldjsKfTsKCgpleHRlcm4gY29uc3QgY2hhciAq
cHJvZ25hbWU7CiMgNDM0ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n
Y2Mvc3JjL2djYy9jcHBsaWIuaCIKZW51bSBub2RlX3R5cGUKewogIE5UX1ZPSUQgPSAwLAogIE5U
X01BQ1JPLAogIE5UX0FTU0VSVElPTgp9OwoKCgplbnVtIGJ1aWx0aW5fdHlwZQp7CiAgQlRfU1BF
Q0xJTkUgPSAwLAogIEJUX0RBVEUsCiAgQlRfRklMRSwKICBCVF9CQVNFX0ZJTEUsCiAgQlRfSU5D
TFVERV9MRVZFTCwKICBCVF9USU1FLAogIEJUX1NUREMsCiAgQlRfUFJBR01BCn07CiMgNDYzICIv
Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jcHBsaWIu
aCIKc3RydWN0IGNwcF9oYXNobm9kZQp7CiAgc3RydWN0IGh0X2lkZW50aWZpZXIgaWRlbnQ7CiAg
dW5zaWduZWQgaW50IGlzX2RpcmVjdGl2ZSA6IDE7CiAgdW5zaWduZWQgaW50IGRpcmVjdGl2ZV9p
bmRleCA6IDc7CgoKICB1bnNpZ25lZCBjaGFyIHJpZF9jb2RlOwogIGVudW0gbm9kZV90eXBlIHR5
cGUgOiA4OwogIHVuc2lnbmVkIGNoYXIgZmxhZ3M7CgogIHVuaW9uIF9jcHBfaGFzaG5vZGVfdmFs
dWUKICB7CgogICAgY3BwX21hY3JvICogbWFjcm87CgogICAgc3RydWN0IGFuc3dlciAqIGFuc3dl
cnM7CgogICAgZW51bSBidWlsdGluX3R5cGUgYnVpbHRpbjsKCiAgICB1bnNpZ25lZCBzaG9ydCBh
cmdfaW5kZXg7CiAgfSB2YWx1ZTsKfTsKCgoKCgoKCmV4dGVybiBjcHBfcmVhZGVyICpjcHBfY3Jl
YXRlX3JlYWRlciAoZW51bSBjX2xhbmcsIHN0cnVjdCBodCAqKTsKCgoKZXh0ZXJuIHZvaWQgY3Bw
X3NldF9sYW5nIChjcHBfcmVhZGVyICosIGVudW0gY19sYW5nKTsKCgoKCgpleHRlcm4gdm9pZCBj
cHBfYWRkX2RlcGVuZGVuY3lfdGFyZ2V0IChjcHBfcmVhZGVyICosIGNvbnN0IGNoYXIgKiB0YXJn
ZXQsIGludCBxdW90ZSk7CgoKCgpleHRlcm4gdm9pZCBjcHBfc2V0X2luY2x1ZGVfY2hhaW5zIChj
cHBfcmVhZGVyICosIGNwcF9wYXRoICosIGNwcF9wYXRoICosIGludCk7CgoKCgoKCgpleHRlcm4g
Y3BwX29wdGlvbnMgKmNwcF9nZXRfb3B0aW9ucyAoY3BwX3JlYWRlciAqKTsKZXh0ZXJuIGNvbnN0
IHN0cnVjdCBsaW5lX21hcHMgKmNwcF9nZXRfbGluZV9tYXBzIChjcHBfcmVhZGVyICopOwpleHRl
cm4gY3BwX2NhbGxiYWNrcyAqY3BwX2dldF9jYWxsYmFja3MgKGNwcF9yZWFkZXIgKik7CmV4dGVy
biB2b2lkIGNwcF9zZXRfY2FsbGJhY2tzIChjcHBfcmVhZGVyICosIGNwcF9jYWxsYmFja3MgKik7
CgoKCgoKCmV4dGVybiBjb25zdCBjaGFyICpjcHBfcmVhZF9tYWluX2ZpbGUgKGNwcF9yZWFkZXIg
KiwgY29uc3QgY2hhciAqKTsKCgpleHRlcm4gdm9pZCBjcHBfaW5pdF9idWlsdGlucyAoY3BwX3Jl
YWRlciAqKTsKCgoKCgoKZXh0ZXJuIGludCBjcHBfZmluaXNoIChjcHBfcmVhZGVyICosIEZJTEUg
KmRlcHNfc3RyZWFtKTsKCgoKCmV4dGVybiB2b2lkIGNwcF9kZXN0cm95IChjcHBfcmVhZGVyICop
OwoKCmV4dGVybiB1bnNpZ25lZCBpbnQgY3BwX2Vycm9ycyAoY3BwX3JlYWRlciAqKTsKCmV4dGVy
biB1bnNpZ25lZCBpbnQgY3BwX3Rva2VuX2xlbiAoY29uc3QgY3BwX3Rva2VuICopOwpleHRlcm4g
dW5zaWduZWQgY2hhciAqY3BwX3Rva2VuX2FzX3RleHQgKGNwcF9yZWFkZXIgKiwgY29uc3QgY3Bw
X3Rva2VuICopOwoKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKmNwcF9zcGVsbF90b2tlbiAoY3BwX3Jl
YWRlciAqLCBjb25zdCBjcHBfdG9rZW4gKiwgdW5zaWduZWQgY2hhciAqKTsKCmV4dGVybiB2b2lk
IGNwcF9yZWdpc3Rlcl9wcmFnbWEgKGNwcF9yZWFkZXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBj
aGFyICosIHZvaWQgKCopIChjcHBfcmVhZGVyICopKTsKCgoKZXh0ZXJuIGludCBjcHBfYXZvaWRf
cGFzdGUgKGNwcF9yZWFkZXIgKiwgY29uc3QgY3BwX3Rva2VuICosIGNvbnN0IGNwcF90b2tlbiAq
KTsKCmV4dGVybiBjb25zdCBjcHBfdG9rZW4gKmNwcF9nZXRfdG9rZW4gKGNwcF9yZWFkZXIgKik7
CmV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyICpjcHBfbWFjcm9fZGVmaW5pdGlvbiAoY3BwX3Jl
YWRlciAqLCBjb25zdCBjcHBfaGFzaG5vZGUgKik7CgpleHRlcm4gdm9pZCBfY3BwX2JhY2t1cF90
b2tlbnMgKGNwcF9yZWFkZXIgKiwgdW5zaWduZWQgaW50KTsKCgpleHRlcm4gY3BwY2hhcl90CmNw
cF9pbnRlcnByZXRfY2hhcmNvbnN0IChjcHBfcmVhZGVyICosIGNvbnN0IGNwcF90b2tlbiAqLCB1
bnNpZ25lZCBpbnQgKiwgaW50ICopOwoKCgoKZXh0ZXJuIHZvaWQgY3BwX2RlZmluZSAoY3BwX3Jl
YWRlciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBjcHBfYXNzZXJ0IChjcHBfcmVhZGVy
ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIGNwcF91bmRlZiAoY3BwX3JlYWRlciAqLCBj
b25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBjcHBfdW5hc3NlcnQgKGNwcF9yZWFkZXIgKiwgY29u
c3QgY2hhciAqKTsKCmV4dGVybiBjcHBfYnVmZmVyICpjcHBfcHVzaF9idWZmZXIgKGNwcF9yZWFk
ZXIgKiwgY29uc3QgdW5zaWduZWQgY2hhciAqLCBzaXplX3QsIGludCwgaW50KTsKCgpleHRlcm4g
aW50IGNwcF9kZWZpbmVkIChjcHBfcmVhZGVyICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgaW50
KTsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNwcF9udW1fcGFydDsKdHlwZWRlZiBzdHJ1Y3Qg
Y3BwX251bSBjcHBfbnVtOwpzdHJ1Y3QgY3BwX251bQp7CiAgY3BwX251bV9wYXJ0IGhpZ2g7CiAg
Y3BwX251bV9wYXJ0IGxvdzsKICBfQm9vbCB1bnNpZ25lZHA7CiAgX0Jvb2wgb3ZlcmZsb3c7Cn07
CiMgNjE4ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj
Yy9jcHBsaWIuaCIKZXh0ZXJuIHVuc2lnbmVkIGNwcF9jbGFzc2lmeV9udW1iZXIgKGNwcF9yZWFk
ZXIgKiwgY29uc3QgY3BwX3Rva2VuICopOwoKCmV4dGVybiBjcHBfbnVtIGNwcF9pbnRlcnByZXRf
aW50ZWdlciAoY3BwX3JlYWRlciAqLCBjb25zdCBjcHBfdG9rZW4gKiwgdW5zaWduZWQgaW50IHR5
cGUpOwoKCgoKY3BwX251bSBjcHBfbnVtX3NpZ25fZXh0ZW5kIChjcHBfbnVtLCBzaXplX3QpOwoj
IDY1NiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mv
Y3BwbGliLmgiCmV4dGVybiB2b2lkIGNwcF9lcnJvciAoY3BwX3JlYWRlciAqLCBpbnQsIGNvbnN0
IGNoYXIgKm1zZ2lkLCAuLi4pCiAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIDMsIDQpKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwoKCgpleHRlcm4g
dm9pZCBjcHBfZXJybm8gKGNwcF9yZWFkZXIgKiwgaW50IGxldmVsLCBjb25zdCBjaGFyICptc2cp
OwoKCgoKZXh0ZXJuIHZvaWQgY3BwX2Vycm9yX3dpdGhfbGluZSAoY3BwX3JlYWRlciAqLCBpbnQs
IHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgY2hhciAqbXNnaWQsIC4uLikKICBfX2F0dHJpYnV0
ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgNSwgNikpKSBfX2F0dHJpYnV0ZV9fICgoX19u
b25udWxsX18gKDUpKSk7CgoKZXh0ZXJuIGludCBjcHBfaWRlcSAoY29uc3QgY3BwX3Rva2VuICos
IGNvbnN0IGNoYXIgKik7CgpleHRlcm4gdm9pZCBjcHBfb3V0cHV0X2xpbmUgKGNwcF9yZWFkZXIg
KiwgRklMRSAqKTsKZXh0ZXJuIHZvaWQgY3BwX291dHB1dF90b2tlbiAoY29uc3QgY3BwX3Rva2Vu
ICosIEZJTEUgKik7CmV4dGVybiBjb25zdCBjaGFyICpjcHBfdHlwZTJuYW1lIChlbnVtIGNwcF90
dHlwZSk7CgoKCgoKZXh0ZXJuIGNwcGNoYXJfdCBjcHBfcGFyc2VfZXNjYXBlIChjcHBfcmVhZGVy
ICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiogcHN0ciwgY29uc3QgdW5zaWduZWQgY2hhciAqbGlt
aXQsIGludCB3aWRlKTsKIyA2ODkgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMv
ZnNmL2djYy9zcmMvZ2NjL2NwcGxpYi5oIgpleHRlcm4gY3BwX2hhc2hub2RlICpjcHBfbG9va3Vw
IChjcHBfcmVhZGVyICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgaW50KTsKCgoK
dHlwZWRlZiBpbnQgKCpjcHBfY2IpIChjcHBfcmVhZGVyICosIGNwcF9oYXNobm9kZSAqLCB2b2lk
ICopOwpleHRlcm4gdm9pZCBjcHBfZm9yYWxsX2lkZW50aWZpZXJzIChjcHBfcmVhZGVyICosIGNw
cF9jYiwgdm9pZCAqKTsKCgoKZXh0ZXJuIHZvaWQgY3BwX3NjYW5fbm9vdXRwdXQgKGNwcF9yZWFk
ZXIgKik7CmV4dGVybiBpbnQgY3BwX3N5c19tYWNyb19wIChjcHBfcmVhZGVyICopOwpleHRlcm4g
dW5zaWduZWQgY2hhciAqY3BwX3F1b3RlX3N0cmluZyAodW5zaWduZWQgY2hhciAqLCBjb25zdCB1
bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGludCk7CgoKCgpleHRlcm4gaW50IGNwcF9pbmNsdWRl
ZCAoY3BwX3JlYWRlciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBjcHBfbWFrZV9zeXN0
ZW1faGVhZGVyIChjcHBfcmVhZGVyICosIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgY3BwX3NpbXBs
aWZ5X3BhdGggKGNoYXIgKik7CmV4dGVybiBfQm9vbCBjcHBfcHVzaF9pbmNsdWRlIChjcHBfcmVh
ZGVyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIGNwcF9jaGFuZ2VfZmlsZSAoY3BwX3Jl
YWRlciAqLCBlbnVtIGxjX3JlYXNvbiwgY29uc3QgY2hhciAqKTsKCgoKc3RydWN0IHNhdmVfbWFj
cm9fZGF0YTsKZXh0ZXJuIGludCBjcHBfc2F2ZV9zdGF0ZSAoY3BwX3JlYWRlciAqLCBGSUxFICop
OwpleHRlcm4gaW50IGNwcF93cml0ZV9wY2hfZGVwcyAoY3BwX3JlYWRlciAqLCBGSUxFICopOwpl
eHRlcm4gaW50IGNwcF93cml0ZV9wY2hfc3RhdGUgKGNwcF9yZWFkZXIgKiwgRklMRSAqKTsKZXh0
ZXJuIGludCBjcHBfdmFsaWRfc3RhdGUgKGNwcF9yZWFkZXIgKiwgY29uc3QgY2hhciAqLCBpbnQp
OwpleHRlcm4gdm9pZCBjcHBfcHJlcGFyZV9zdGF0ZSAoY3BwX3JlYWRlciAqLCBzdHJ1Y3Qgc2F2
ZV9tYWNyb19kYXRhICoqKTsKCmV4dGVybiBpbnQgY3BwX3JlYWRfc3RhdGUgKGNwcF9yZWFkZXIg
KiwgY29uc3QgY2hhciAqLCBGSUxFICosIHN0cnVjdCBzYXZlX21hY3JvX2RhdGEgKik7CiMgMjcg
Ii9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29t
bW9uLmgiIDIKIyA1MSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2Nj
L3NyYy9nY2MvYy1jb21tb24uaCIKZW51bSByaWQKewoKCiAgUklEX1NUQVRJQyA9IDAsCiAgUklE
X1VOU0lHTkVELCBSSURfTE9ORywgUklEX0NPTlNULCBSSURfRVhURVJOLAogIFJJRF9SRUdJU1RF
UiwgUklEX1RZUEVERUYsIFJJRF9TSE9SVCwgUklEX0lOTElORSwKICBSSURfVk9MQVRJTEUsIFJJ
RF9TSUdORUQsIFJJRF9BVVRPLCBSSURfUkVTVFJJQ1QsCgoKICBSSURfQk9VTkRFRCwgUklEX1VO
Qk9VTkRFRCwgUklEX0NPTVBMRVgsIFJJRF9USFJFQUQsCgoKICBSSURfRlJJRU5ELCBSSURfVklS
VFVBTCwgUklEX0VYUExJQ0lULCBSSURfRVhQT1JULCBSSURfTVVUQUJMRSwKCgogIFJJRF9JTiwg
UklEX09VVCwgUklEX0lOT1VULCBSSURfQllDT1BZLCBSSURfQllSRUYsIFJJRF9PTkVXQVksCgoK
ICBSSURfSU5ULCBSSURfQ0hBUiwgUklEX0ZMT0FULCBSSURfRE9VQkxFLCBSSURfVk9JRCwKICBS
SURfRU5VTSwgUklEX1NUUlVDVCwgUklEX1VOSU9OLCBSSURfSUYsIFJJRF9FTFNFLAogIFJJRF9X
SElMRSwgUklEX0RPLCBSSURfRk9SLCBSSURfU1dJVENILCBSSURfQ0FTRSwKICBSSURfREVGQVVM
VCwgUklEX0JSRUFLLCBSSURfQ09OVElOVUUsIFJJRF9SRVRVUk4sIFJJRF9HT1RPLAogIFJJRF9T
SVpFT0YsCgoKICBSSURfQVNNLCBSSURfVFlQRU9GLCBSSURfQUxJR05PRiwgUklEX0FUVFJJQlVU
RSwgUklEX1ZBX0FSRywKICBSSURfRVhURU5TSU9OLCBSSURfSU1BR1BBUlQsIFJJRF9SRUFMUEFS
VCwgUklEX0xBQkVMLCBSSURfUFRSQkFTRSwKICBSSURfUFRSRVhURU5ULCBSSURfUFRSVkFMVUUs
IFJJRF9DSE9PU0VfRVhQUiwgUklEX1RZUEVTX0NPTVBBVElCTEVfUCwKCgogIFJJRF9GVU5DVElP
Tl9OQU1FLCBSSURfUFJFVFRZX0ZVTkNUSU9OX05BTUUsIFJJRF9DOTlfRlVOQ1RJT05fTkFNRSwK
CgogIFJJRF9CT09MLCBSSURfV0NIQVIsIFJJRF9DTEFTUywKICBSSURfUFVCTElDLCBSSURfUFJJ
VkFURSwgUklEX1BST1RFQ1RFRCwKICBSSURfVEVNUExBVEUsIFJJRF9OVUxMLCBSSURfQ0FUQ0gs
CiAgUklEX0RFTEVURSwgUklEX0ZBTFNFLCBSSURfTkFNRVNQQUNFLAogIFJJRF9ORVcsIFJJRF9P
UEVSQVRPUiwgUklEX1RISVMsCiAgUklEX1RIUk9XLCBSSURfVFJVRSwgUklEX1RSWSwKICBSSURf
VFlQRU5BTUUsIFJJRF9UWVBFSUQsIFJJRF9VU0lORywKCgogIFJJRF9DT05TVENBU1QsIFJJRF9E
WU5DQVNULCBSSURfUkVJTlRDQVNULCBSSURfU1RBVENBU1QsCgoKICBSSURfSUQsIFJJRF9BVF9F
TkNPREUsIFJJRF9BVF9FTkQsCiAgUklEX0FUX0NMQVNTLCBSSURfQVRfQUxJQVMsIFJJRF9BVF9E
RUZTLAogIFJJRF9BVF9QUklWQVRFLCBSSURfQVRfUFJPVEVDVEVELCBSSURfQVRfUFVCTElDLAog
IFJJRF9BVF9QUk9UT0NPTCwgUklEX0FUX1NFTEVDVE9SLCBSSURfQVRfSU5URVJGQUNFLAogIFJJ
RF9BVF9JTVBMRU1FTlRBVElPTiwKCiAgUklEX01BWCwKCiAgUklEX0ZJUlNUX01PRElGSUVSID0g
UklEX1NUQVRJQywKICBSSURfTEFTVF9NT0RJRklFUiA9IFJJRF9PTkVXQVksCgogIFJJRF9GSVJT
VF9BVCA9IFJJRF9BVF9FTkNPREUsCiAgUklEX0xBU1RfQVQgPSBSSURfQVRfSU1QTEVNRU5UQVRJ
T04sCiAgUklEX0ZJUlNUX1BRID0gUklEX0lOLAogIFJJRF9MQVNUX1BRID0gUklEX09ORVdBWQp9
OwojIDEyNCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9n
Y2MvYy1jb21tb24uaCIKZXh0ZXJuIHRyZWUgKnJpZHBvaW50ZXJzOwoKCgplbnVtIGNfdHJlZV9p
bmRleAp7CiAgICBDVElfV0NIQVJfVFlQRSwKICAgIENUSV9TSUdORURfV0NIQVJfVFlQRSwKICAg
IENUSV9VTlNJR05FRF9XQ0hBUl9UWVBFLAogICAgQ1RJX1dJTlRfVFlQRSwKICAgIENUSV9TSUdO
RURfU0laRV9UWVBFLAogICAgQ1RJX1VOU0lHTkVEX1BUUkRJRkZfVFlQRSwKICAgIENUSV9JTlRN
QVhfVFlQRSwKICAgIENUSV9VSU5UTUFYX1RZUEUsCiAgICBDVElfV0lERVNUX0lOVF9MSVRfVFlQ
RSwKICAgIENUSV9XSURFU1RfVUlOVF9MSVRfVFlQRSwKCiAgICBDVElfQ0hBUl9BUlJBWV9UWVBF
LAogICAgQ1RJX1dDSEFSX0FSUkFZX1RZUEUsCiAgICBDVElfSU5UX0FSUkFZX1RZUEUsCiAgICBD
VElfU1RSSU5HX1RZUEUsCiAgICBDVElfQ09OU1RfU1RSSU5HX1RZUEUsCgoKICAgIENUSV9CT09M
RUFOX1RZUEUsCiAgICBDVElfQk9PTEVBTl9UUlVFLAogICAgQ1RJX0JPT0xFQU5fRkFMU0UsCgog
ICAgQ1RJX0NfQk9PTF9UWVBFLAogICAgQ1RJX0NfQk9PTF9UUlVFLAogICAgQ1RJX0NfQk9PTF9G
QUxTRSwKICAgIENUSV9ERUZBVUxUX0ZVTkNUSU9OX1RZUEUsCgogICAgQ1RJX0c3N19JTlRFR0VS
X1RZUEUsCiAgICBDVElfRzc3X1VJTlRFR0VSX1RZUEUsCiAgICBDVElfRzc3X0xPTkdJTlRfVFlQ
RSwKICAgIENUSV9HNzdfVUxPTkdJTlRfVFlQRSwKCgogICAgQ1RJX0ZVTkNUSU9OX05BTUVfREVD
TCwKICAgIENUSV9QUkVUVFlfRlVOQ1RJT05fTkFNRV9ERUNMLAogICAgQ1RJX0M5OV9GVU5DVElP
Tl9OQU1FX0RFQ0wsCiAgICBDVElfU0FWRURfRlVOQ1RJT05fTkFNRV9ERUNMUywKCiAgICBDVElf
Vk9JRF9aRVJPLAoKICAgIENUSV9NQVgKfTsKCgoKCgpzdHJ1Y3QgY19jb21tb25faWRlbnRpZmll
cgp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsKICBzdHJ1Y3QgY3BwX2hhc2hub2RlIG5v
ZGU7Cn07CiMgMjI0ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mv
c3JjL2djYy9jLWNvbW1vbi5oIgpleHRlcm4gdHJlZSBjX2dsb2JhbF90cmVlc1tDVElfTUFYXTsK
IyAyMzQgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2Nj
L2MtY29tbW9uLmgiCnR5cGVkZWYgZW51bSBjX2xhbmd1YWdlX2tpbmQKewogIGNsa19jID0gMCwK
ICBjbGtfY3BsdXNwbHVzCn0KY19sYW5ndWFnZV9raW5kOwoKCgpzdHJ1Y3Qgc3RtdF90cmVlX3Mg
ewoKICB0cmVlIHhfbGFzdF9zdG10OwoKCiAgdHJlZSB4X2xhc3RfZXhwcl90eXBlOwoKICBjb25z
dCBjaGFyICp4X2xhc3RfZXhwcl9maWxlbmFtZTsKIyAyNjUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp
b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgiCiAgaW50IHN0bXRzX2Fy
ZV9mdWxsX2V4cHJzX3A7Cn07Cgp0eXBlZGVmIHN0cnVjdCBzdG10X3RyZWVfcyAqc3RtdF90cmVl
OwoKCgoKc3RydWN0IGNfbGFuZ3VhZ2VfZnVuY3Rpb24gewoKCiAgc3RydWN0IHN0bXRfdHJlZV9z
IHhfc3RtdF90cmVlOwoKICB0cmVlIHhfc2NvcGVfc3RtdF9zdGFjazsKfTsKIyAzMDggIi9Wb2x1
bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgi
CmV4dGVybiB2b2lkICgqbGFuZ19leHBhbmRfc3RtdCkgKHRyZWUpOwpleHRlcm4gdm9pZCAoKmxh
bmdfZXhwYW5kX2RlY2xfc3RtdCkgKHRyZWUpOwpleHRlcm4gdm9pZCAoKmxhbmdfZXhwYW5kX2Z1
bmN0aW9uX2VuZCkgKHZvaWQpOwpleHRlcm4gdHJlZSBnZXR0YWdzICh2b2lkKTsKCgoKZXh0ZXJu
IGludCAoKmxhbmdfbWlzc2luZ19ub3JldHVybl9va19wKSAodHJlZSk7CgpleHRlcm4gaW50IHl5
cGFyc2UgKHZvaWQpOwpleHRlcm4gdm9pZCBmcmVlX3BhcnNlcl9zdGFja3MgKHZvaWQpOwoKZXh0
ZXJuIHN0bXRfdHJlZSBjdXJyZW50X3N0bXRfdHJlZSAodm9pZCk7CmV4dGVybiB0cmVlICpjdXJy
ZW50X3Njb3BlX3N0bXRfc3RhY2sgKHZvaWQpOwpleHRlcm4gdm9pZCBiZWdpbl9zdG10X3RyZWUg
KHRyZWUgKik7CmV4dGVybiB0cmVlIGFkZF9zdG10ICh0cmVlKTsKZXh0ZXJuIHZvaWQgYWRkX2Rl
Y2xfc3RtdCAodHJlZSk7CmV4dGVybiB0cmVlIGFkZF9zY29wZV9zdG10IChpbnQsIGludCk7CmV4
dGVybiB2b2lkIGZpbmlzaF9zdG10X3RyZWUgKHRyZWUgKik7CgpleHRlcm4gdHJlZSB3YWxrX3N0
bXRfdHJlZSAodHJlZSAqLCB3YWxrX3RyZWVfZm4sIHZvaWQgKik7CgoKZXh0ZXJuIHZvaWQgcHJl
cF9zdG10ICh0cmVlKTsKZXh0ZXJuIHZvaWQgZXhwYW5kX3N0bXQgKHRyZWUpOwpleHRlcm4gdHJl
ZSBjX2JlZ2luX2lmX3N0bXQgKHZvaWQpOwpleHRlcm4gdHJlZSBjX2JlZ2luX3doaWxlX3N0bXQg
KHZvaWQpOwpleHRlcm4gdm9pZCBjX2ZpbmlzaF93aGlsZV9zdG10X2NvbmQgKHRyZWUsIHRyZWUp
OwoKZW51bSBzd19raW5kIHsgU1dfUEFSQU0gPSAwLCBTV19MT0NBTCwgU1dfR0xPQkFMIH07CmV4
dGVybiB2b2lkIHNoYWRvd193YXJuaW5nIChlbnVtIHN3X2tpbmQsIGNvbnN0IGNoYXIgKiwgdHJl
ZSk7CgoKCgoKCgpzdHJ1Y3QgY19sYW5nX2RlY2wgewogIHVuc2lnbmVkIGRlY2xhcmVkX2lubGlu
ZSA6IDE7Cn07CiMgMzYwICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n
Y2Mvc3JjL2djYy9jLWNvbW1vbi5oIgpleHRlcm4gY19sYW5ndWFnZV9raW5kIGNfbGFuZ3VhZ2U7
CgoKCmV4dGVybiBpbnQgYWxsb3dfcGNoOwoKCgoKCmV4dGVybiBpbnQgZmxhZ19wcmVwcm9jZXNz
X29ubHk7CgoKCmV4dGVybiBjaGFyIGZsYWdfbm9fbGluZV9jb21tYW5kczsKCgoKCmV4dGVybiBj
aGFyIGZsYWdfbm9fb3V0cHV0OwoKCgoKZXh0ZXJuIGNoYXIgZmxhZ19kdW1wX21hY3JvczsKCgoK
ZXh0ZXJuIGNoYXIgZmxhZ19kdW1wX2luY2x1ZGVzOwoKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKnBj
aF9maWxlOwoKCgoKZXh0ZXJuIGludCBmbGFnX2lzbzsKCgpleHRlcm4gaW50IGZsYWdfb2JqYzsK
CgoKCmV4dGVybiBpbnQgZmxhZ191bmRlZjsKCgoKZXh0ZXJuIGludCBmbGFnX25vX2J1aWx0aW47
CgoKCgpleHRlcm4gaW50IGZsYWdfbm9fbm9uYW5zaV9idWlsdGluOwoKCgpleHRlcm4gaW50IGZs
YWdfc2hvcnRfZG91YmxlOwoKCgpleHRlcm4gaW50IGZsYWdfc2hvcnRfd2NoYXI7CgoKZXh0ZXJu
IGludCBmbGFnX21zX2V4dGVuc2lvbnM7CgoKCmV4dGVybiBpbnQgZmxhZ19ub19hc207CgoKCgpl
eHRlcm4gaW50IGZsYWdfY29uc3Rfc3RyaW5nczsKCgoKZXh0ZXJuIGludCBkb2xsYXJzX2luX2lk
ZW50OwoKCgpleHRlcm4gaW50IGZsYWdfc2lnbmVkX2JpdGZpZWxkczsKZXh0ZXJuIGludCBleHBs
aWNpdF9mbGFnX3NpZ25lZF9iaXRmaWVsZHM7CgoKCgpleHRlcm4gaW50IHdhcm5fY2FzdF9xdWFs
OwoKCgpleHRlcm4gaW50IHdhcm5fbWlzc2luZ19mb3JtYXRfYXR0cmlidXRlOwoKCgoKZXh0ZXJu
IGludCB3YXJuX3BvaW50ZXJfYXJpdGg7CgoKCgpleHRlcm4gaW50IHdhcm5fbWlzc2luZ19wcm90
b3R5cGVzOwoKCgpleHRlcm4gaW50IHdhcm5fcGFyZW50aGVzZXM7CgoKCmV4dGVybiBpbnQgd2Fy
bl9taXNzaW5nX2JyYWNlczsKCgoKCmV4dGVybiBpbnQgd2Fybl9zaWduX2NvbXBhcmU7CgoKCmV4
dGVybiBpbnQgd2Fybl9sb25nX2xvbmc7CgoKCgpleHRlcm4gaW50IHdhcm5fd3JpdGVfc3RyaW5n
czsKCgoKCmV4dGVybiBpbnQgd2Fybl9yZWR1bmRhbnRfZGVjbHM7CgoKCmV4dGVybiBpbnQgd2Fy
bl9mbG9hdF9lcXVhbDsKCgoKZXh0ZXJuIGludCB3YXJuX2NoYXJfc3Vic2NyaXB0czsKCgoKZXh0
ZXJuIGludCB3YXJuX2NvbnZlcnNpb247CgoKCmV4dGVybiBpbnQgd2Fybl91bmtub3duX3ByYWdt
YXM7CgoKCgpleHRlcm4gaW50IHdhcm5fZm9ybWF0OwoKCgpleHRlcm4gaW50IHdhcm5fZm9ybWF0
X3kyazsKCgoKZXh0ZXJuIGludCB3YXJuX2Zvcm1hdF9leHRyYV9hcmdzOwoKCgpleHRlcm4gaW50
IHdhcm5fZm9ybWF0X3plcm9fbGVuZ3RoOwoKCgpleHRlcm4gaW50IHdhcm5fZm9ybWF0X25vbmxp
dGVyYWw7CgoKCmV4dGVybiBpbnQgd2Fybl9mb3JtYXRfc2VjdXJpdHk7CiMgNTQwICIvVm9sdW1l
cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLWNvbW1vbi5oIgpl
eHRlcm4gaW50IG1lc2dfaW1wbGljaXRfZnVuY3Rpb25fZGVjbGFyYXRpb247CgoKCgpleHRlcm4g
aW50IGZsYWdfY29uZF9taXNtYXRjaDsKCgoKZXh0ZXJuIGludCBmbGFnX2lzb2M5NDsKCgoKZXh0
ZXJuIGludCBmbGFnX2lzb2M5OTsKCgoKZXh0ZXJuIGludCBmbGFnX2hvc3RlZDsKCgoKCmV4dGVy
biBpbnQgZmxhZ19ub25pc29fZGVmYXVsdF9mb3JtYXRfYXR0cmlidXRlczsKCgoKCgpleHRlcm4g
aW50IHdhcm5fYmFkX2Z1bmN0aW9uX2Nhc3Q7CgoKCmV4dGVybiBpbnQgd2Fybl90cmFkaXRpb25h
bDsKCgoKCmV4dGVybiBpbnQgd2Fybl9zdHJpY3RfcHJvdG90eXBlczsKCgoKCmV4dGVybiBpbnQg
d2Fybl9taXNzaW5nX2RlY2xhcmF0aW9uczsKCgoKCgoKCmV4dGVybiBpbnQgd2Fybl9uZXN0ZWRf
ZXh0ZXJuczsKCgoKZXh0ZXJuIGludCB3YXJuX21haW47CgoKCmV4dGVybiBpbnQgd2Fybl9zZXF1
ZW5jZV9wb2ludDsKCgpleHRlcm4gaW50IHdhcm5fZGl2X2J5X3plcm87CgoKCmV4dGVybiBpbnQg
d2Fybl9pbXBsaWNpdF9pbnQ7CgoKCgpleHRlcm4gaW50IHdhcm5fbm9ubnVsbDsKIyA2MTkgIi9W
b2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9u
LmgiCmV4dGVybiBpbnQgZmxhZ19nZW5fZGVjbGFyYXRpb247CgoKCmV4dGVybiBpbnQgZmxhZ19u
ZXh0X3J1bnRpbWU7CgoKCgoKZXh0ZXJuIGludCBwcmludF9zdHJ1Y3RfdmFsdWVzOwoKCgpleHRl
cm4gY29uc3QgY2hhciAqY29uc3RhbnRfc3RyaW5nX2NsYXNzX25hbWU7CgoKCgoKZXh0ZXJuIGlu
dCB3YXJuX3NlbGVjdG9yOwoKCgoKCgpleHRlcm4gaW50IHdhcm5fdW5kZWNsYXJlZF9zZWxlY3Rv
cjsKCgoKCgpleHRlcm4gaW50IHdhcm5fcHJvdG9jb2w7CgoKCgoKCgpleHRlcm4gaW50IGZsYWdf
bm9fZ251X2tleXdvcmRzOwoKCgoKZXh0ZXJuIGludCBmbGFnX2ltcGxlbWVudF9pbmxpbmVzOwoK
CgoKZXh0ZXJuIGludCBmbGFnX2V4dGVybmFsX3RlbXBsYXRlczsKCgoKCgpleHRlcm4gaW50IGZs
YWdfYWx0X2V4dGVybmFsX3RlbXBsYXRlczsKCgoKZXh0ZXJuIGludCBmbGFnX2ltcGxpY2l0X3Rl
bXBsYXRlczsKCgoKCgpleHRlcm4gaW50IGZsYWdfaW1wbGljaXRfaW5saW5lX3RlbXBsYXRlczsK
CgoKCmV4dGVybiBpbnQgZmxhZ191c2VfcmVwb3NpdG9yeTsKCgoKCmV4dGVybiBpbnQgZmxhZ19v
cHRpb25hbF9kaWFnczsKCgoKZXh0ZXJuIGludCBmbGFnX2VsaWRlX2NvbnN0cnVjdG9yczsKCgoK
CmV4dGVybiBpbnQgZmxhZ19kZWZhdWx0X2lubGluZTsKCgoKCmV4dGVybiBpbnQgZmxhZ19ydHRp
OwoKCgoKCgpleHRlcm4gaW50IGZsYWdfY29uc2VydmVfc3BhY2U7CgoKCmV4dGVybiBpbnQgZmxh
Z19hY2Nlc3NfY29udHJvbDsKCgoKCmV4dGVybiBpbnQgZmxhZ19jaGVja19uZXc7CiMgNzM1ICIv
Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLWNvbW1v
bi5oIgpleHRlcm4gaW50IGZsYWdfbmV3X2Zvcl9zY29wZTsKCgoKCgpleHRlcm4gaW50IGZsYWdf
d2VhazsKCgoKCmV4dGVybiBpbnQgZmxhZ191c2VfY3hhX2F0ZXhpdDsKCgoKZXh0ZXJuIGludCBm
bGFnX3Z0YWJsZV9nYzsKCgoKCmV4dGVybiBpbnQgZmxhZ19wZXJtaXNzaXZlOwoKCgoKCgpleHRl
cm4gaW50IGZsYWdfZW5mb3JjZV9laF9zcGVjczsKIyA3NzcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp
b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgiCmV4dGVybiBpbnQgZmxh
Z19hYmlfdmVyc2lvbjsKCgoKCmV4dGVybiBpbnQgd2Fybl9hYmk7CgoKCmV4dGVybiBpbnQgd2Fy
bl9pbXBsaWNpdDsKCgoKCmV4dGVybiBpbnQgd2Fybl9jdG9yX2R0b3JfcHJpdmFjeTsKCgoKCgpl
eHRlcm4gaW50IHdhcm5fb3ZlcmxvYWRlZF92aXJ0dWFsOwoKCgoKZXh0ZXJuIGludCB3YXJuX25v
bnZkdG9yOwoKCgpleHRlcm4gaW50IHdhcm5fcmVvcmRlcjsKCgoKZXh0ZXJuIGludCB3YXJuX3N5
bnRoOwoKCgoKZXh0ZXJuIGludCB3YXJuX3BtZjJwdHI7CgoKCmV4dGVybiBpbnQgd2Fybl9lY3Bw
OwoKCgoKZXh0ZXJuIGludCB3YXJuX3NpZ25fcHJvbW87CgoKCmV4dGVybiBpbnQgd2Fybl9vbGRf
c3R5bGVfY2FzdDsKCgoKCmV4dGVybiBpbnQgd2Fybl9ub250ZW1wbGF0ZV9mcmllbmQ7CgoKCmV4
dGVybiBpbnQgd2Fybl9kZXByZWNhdGVkOwoKCgoKCmV4dGVybiBpbnQgbWF4X3RpbnN0X2RlcHRo
OwoKCgoKZXh0ZXJuIGludCBza2lwX2V2YWx1YXRpb247CiMgODcxICIvVm9sdW1lcy9VRlNfUGFy
dGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLWNvbW1vbi5oIgpleHRlcm4gY29u
c3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGNfY29tbW9uX2F0dHJpYnV0ZV90YWJsZVtdOwpleHRl
cm4gY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGNfY29tbW9uX2Zvcm1hdF9hdHRyaWJ1dGVf
dGFibGVbXTsKCgoKCgoKZXh0ZXJuIHRyZWUgKCptYWtlX2ZuYW1lX2RlY2wpICh0cmVlLCBpbnQp
OwoKZXh0ZXJuIHRyZWUgaWRlbnRpZmllcl9nbG9iYWxfdmFsdWUgKHRyZWUpOwpleHRlcm4gdm9p
ZCByZWNvcmRfYnVpbHRpbl90eXBlIChlbnVtIHJpZCwgY29uc3QgY2hhciAqLCB0cmVlKTsKCmV4
dGVybiB0cmVlIGJ1aWxkX3ZvaWRfbGlzdF9ub2RlICh2b2lkKTsKZXh0ZXJuIHZvaWQgc3RhcnRf
Zm5hbWVfZGVjbHMgKHZvaWQpOwpleHRlcm4gdm9pZCBmaW5pc2hfZm5hbWVfZGVjbHMgKHZvaWQp
OwpleHRlcm4gY29uc3QgY2hhciAqZm5hbWVfYXNfc3RyaW5nIChpbnQpOwpleHRlcm4gdHJlZSBm
bmFtZV9kZWNsICh1bnNpZ25lZCwgdHJlZSk7CmV4dGVybiBjb25zdCBjaGFyICpmbmFtZV9zdHJp
bmcgKHVuc2lnbmVkKTsKCmV4dGVybiB2b2lkIGNoZWNrX2Z1bmN0aW9uX2FyZ3VtZW50cyAodHJl
ZSwgdHJlZSk7CmV4dGVybiB2b2lkIGNoZWNrX2Z1bmN0aW9uX2FyZ3VtZW50c19yZWN1cnNlICh2
b2lkICgqKSAodm9pZCAqLCB0cmVlLCB1bnNpZ25lZCBsb25nKSwgdm9pZCAqLCB0cmVlLCB1bnNp
Z25lZCBsb25nKTsKCgoKCmV4dGVybiB2b2lkIGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdCAoaW50ICos
IHRyZWUsIHRyZWUpOwpleHRlcm4gdm9pZCBzZXRfV2Zvcm1hdCAoaW50KTsKZXh0ZXJuIHRyZWUg
aGFuZGxlX2Zvcm1hdF9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBfQm9vbCAq
KTsKCmV4dGVybiB0cmVlIGhhbmRsZV9mb3JtYXRfYXJnX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVl
LCB0cmVlLCBpbnQsIF9Cb29sICopOwoKZXh0ZXJuIHZvaWQgY19jb21tb25faW5zZXJ0X2RlZmF1
bHRfYXR0cmlidXRlcyAodHJlZSk7CmV4dGVybiBpbnQgY19jb21tb25fZGVjb2RlX29wdGlvbiAo
aW50LCBjaGFyICoqKTsKZXh0ZXJuIHRyZWUgY19jb21tb25fdHlwZV9mb3JfbW9kZSAoZW51bSBt
YWNoaW5lX21vZGUsIGludCk7CgpleHRlcm4gdHJlZSBjX2NvbW1vbl90eXBlX2Zvcl9zaXplICh1
bnNpZ25lZCBpbnQsIGludCk7CmV4dGVybiB0cmVlIGNfY29tbW9uX3Vuc2lnbmVkX3R5cGUgKHRy
ZWUpOwpleHRlcm4gdHJlZSBjX2NvbW1vbl9zaWduZWRfdHlwZSAodHJlZSk7CmV4dGVybiB0cmVl
IGNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlIChpbnQsIHRyZWUpOwpleHRlcm4gdHJl
ZSBjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24gKHRyZWUpOwpleHRlcm4gdm9pZCBjX2Fw
cGx5X3R5cGVfcXVhbHNfdG9fZGVjbCAoaW50LCB0cmVlKTsKZXh0ZXJuIHRyZWUgY19zaXplb2Zf
b3JfYWxpZ25vZl90eXBlICh0cmVlLCBlbnVtIHRyZWVfY29kZSwgaW50KTsKZXh0ZXJuIHRyZWUg
Y19hbGlnbm9mX2V4cHIgKHRyZWUpOwoKCmV4dGVybiB2b2lkIGJpbmFyeV9vcF9lcnJvciAoZW51
bSB0cmVlX2NvZGUpOwoKCgpleHRlcm4gdHJlZSBjX2V4cGFuZF9leHByX3N0bXQgKHRyZWUpOwpl
eHRlcm4gdm9pZCBjX2V4cGFuZF9zdGFydF9jb25kICh0cmVlLCBpbnQsIHRyZWUpOwpleHRlcm4g
dm9pZCBjX2ZpbmlzaF90aGVuICh2b2lkKTsKZXh0ZXJuIHZvaWQgY19leHBhbmRfc3RhcnRfZWxz
ZSAodm9pZCk7CmV4dGVybiB2b2lkIGNfZmluaXNoX2Vsc2UgKHZvaWQpOwpleHRlcm4gdm9pZCBj
X2V4cGFuZF9lbmRfY29uZCAodm9pZCk7CgpleHRlcm4gdHJlZSBjaGVja19jYXNlX3ZhbHVlICh0
cmVlKTsKZXh0ZXJuIHRyZWUgZml4X3N0cmluZ190eXBlICh0cmVlKTsKc3RydWN0IHZhcnJheV9o
ZWFkX3RhZzsKZXh0ZXJuIHRyZWUgY29tYmluZV9zdHJpbmdzIChzdHJ1Y3QgdmFycmF5X2hlYWRf
dGFnICopOwpleHRlcm4gdm9pZCBjb25zdGFudF9leHByZXNzaW9uX3dhcm5pbmcgKHRyZWUpOwpl
eHRlcm4gdHJlZSBjb252ZXJ0X2FuZF9jaGVjayAodHJlZSwgdHJlZSk7CmV4dGVybiB2b2lkIG92
ZXJmbG93X3dhcm5pbmcgKHRyZWUpOwpleHRlcm4gdm9pZCB1bnNpZ25lZF9jb252ZXJzaW9uX3dh
cm5pbmcgKHRyZWUsIHRyZWUpOwoKCmV4dGVybiBjaGFyICpnZXRfZGlyZWN0aXZlX2xpbmUgKHZv
aWQpOwoKCgoKCgoKZXh0ZXJuIHRyZWUgc2hvcnRlbl9jb21wYXJlICh0cmVlICosIHRyZWUgKiwg
dHJlZSAqLCBlbnVtIHRyZWVfY29kZSAqKTsKCmV4dGVybiB0cmVlIHBvaW50ZXJfaW50X3N1bSAo
ZW51bSB0cmVlX2NvZGUsIHRyZWUsIHRyZWUpOwpleHRlcm4gdW5zaWduZWQgaW50IG1pbl9wcmVj
aXNpb24gKHRyZWUsIGludCk7CgoKZXh0ZXJuIHRyZWUgY19idWlsZF9xdWFsaWZpZWRfdHlwZSAo
dHJlZSwgaW50KTsKCgoKZXh0ZXJuIHZvaWQgY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zICh2
b2lkKTsKCmV4dGVybiB2b2lkIGRpc2FibGVfYnVpbHRpbl9mdW5jdGlvbiAoY29uc3QgY2hhciAq
KTsKCmV4dGVybiB0cmVlIGJ1aWxkX3ZhX2FyZyAodHJlZSwgdHJlZSk7CgpleHRlcm4gdm9pZCBj
X2NvbW1vbl9pbml0X29wdGlvbnMgKGVudW0gY19sYW5ndWFnZV9raW5kKTsKZXh0ZXJuIF9Cb29s
IGNfY29tbW9uX3Bvc3Rfb3B0aW9ucyAoY29uc3QgY2hhciAqKik7CmV4dGVybiBfQm9vbCBjX2Nv
bW1vbl9pbml0ICh2b2lkKTsKZXh0ZXJuIHZvaWQgY19jb21tb25fZmluaXNoICh2b2lkKTsKZXh0
ZXJuIHZvaWQgY19jb21tb25fcGFyc2VfZmlsZSAoaW50KTsKZXh0ZXJuIGxvbmcgY19jb21tb25f
Z2V0X2FsaWFzX3NldCAodHJlZSk7CmV4dGVybiBfQm9vbCBjX3Byb21vdGluZ19pbnRlZ2VyX3R5
cGVfcCAodHJlZSk7CmV4dGVybiBpbnQgc2VsZl9wcm9tb3RpbmdfYXJnc19wICh0cmVlKTsKZXh0
ZXJuIHRyZWUgc3RyaXBfYXJyYXlfdHlwZXMgKHRyZWUpOwojIDExNDUgIi9Wb2x1bWVzL1VGU19Q
YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgiCmVudW0gY190
cmVlX2NvZGUgewogIENfRFVNTVlfVFJFRV9DT0RFID0gTEFTVF9BTkRfVU5VU0VEX1RSRUVfQ09E
RSwKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj
Yy9jLWNvbW1vbi5kZWYiIDEKIyAyOCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny
Yy9mc2YvZ2NjL3NyYy9nY2MvYy1jb21tb24uZGVmIgpTSVpFT0ZfRVhQUiwKQVJST1dfRVhQUiwK
QUxJR05PRl9FWFBSLAoKCgpFWFBSX1NUTVQsCgoKCkNPTVBPVU5EX1NUTVQsCgoKCkRFQ0xfU1RN
VCwKCgoKSUZfU1RNVCwKCgoKRk9SX1NUTVQsCgoKCldISUxFX1NUTVQsCgoKCkRPX1NUTVQsCgoK
ClJFVFVSTl9TVE1ULAoKCkJSRUFLX1NUTVQsCgoKQ09OVElOVUVfU1RNVCwKCgoKU1dJVENIX1NU
TVQsCgoKR09UT19TVE1ULAoKCgpMQUJFTF9TVE1ULAoKCkFTTV9TVE1ULAoKCgoKCgoKU0NPUEVf
U1RNVCwKCgoKRklMRV9TVE1ULAoKCgoKCkNBU0VfTEFCRUwsCgoKClNUTVRfRVhQUiwKCgoKCgoK
Q09NUE9VTkRfTElURVJBTF9FWFBSLAoKCgoKQ0xFQU5VUF9TVE1ULAojIDExNDggIi9Wb2x1bWVz
L1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgiIDIK
ICBMQVNUX0NfVFJFRV9DT0RFCn07CiMgMTE2MyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5z
a2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvYy1jb21tb24uaCIKZXh0ZXJuIF9Cb29sIHN0YXRlbWVu
dF9jb2RlX3BbMjU2XTsKIyAxMTc1ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3Jj
L2ZzZi9nY2Mvc3JjL2djYy9jLWNvbW1vbi5oIgpleHRlcm4gdm9pZCBnZW5ydGxfZG9fcHVzaGxl
dmVsICh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2VucnRsX2dvdG9fc3RtdCAodHJlZSk7CmV4dGVybiB2
b2lkIGdlbnJ0bF9leHByX3N0bXQgKHRyZWUpOwpleHRlcm4gdm9pZCBnZW5ydGxfZXhwcl9zdG10
X3ZhbHVlICh0cmVlLCBpbnQsIGludCk7CmV4dGVybiB2b2lkIGdlbnJ0bF9kZWNsX3N0bXQgKHRy
ZWUpOwpleHRlcm4gdm9pZCBnZW5ydGxfaWZfc3RtdCAodHJlZSk7CmV4dGVybiB2b2lkIGdlbnJ0
bF93aGlsZV9zdG10ICh0cmVlKTsKZXh0ZXJuIHZvaWQgZ2VucnRsX2RvX3N0bXQgKHRyZWUpOwpl
eHRlcm4gdm9pZCBnZW5ydGxfcmV0dXJuX3N0bXQgKHRyZWUpOwpleHRlcm4gdm9pZCBnZW5ydGxf
Zm9yX3N0bXQgKHRyZWUpOwpleHRlcm4gdm9pZCBnZW5ydGxfYnJlYWtfc3RtdCAodm9pZCk7CmV4
dGVybiB2b2lkIGdlbnJ0bF9jb250aW51ZV9zdG10ICh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2VucnRs
X3Njb3BlX3N0bXQgKHRyZWUpOwpleHRlcm4gdm9pZCBnZW5ydGxfc3dpdGNoX3N0bXQgKHRyZWUp
OwpleHRlcm4gdm9pZCBnZW5ydGxfY2FzZV9sYWJlbCAodHJlZSk7CmV4dGVybiB2b2lkIGdlbnJ0
bF9jb21wb3VuZF9zdG10ICh0cmVlKTsKZXh0ZXJuIHZvaWQgZ2VucnRsX2FzbV9zdG10ICh0cmVl
LCB0cmVlLCB0cmVlLCB0cmVlLCB0cmVlLCBpbnQpOwoKCmV4dGVybiB2b2lkIGdlbnJ0bF9jbGVh
bnVwX3N0bXQgKHRyZWUpOwpleHRlcm4gaW50IHN0bXRzX2FyZV9mdWxsX2V4cHJzX3AgKHZvaWQp
OwpleHRlcm4gaW50IGFub25fYWdncl90eXBlX3AgKHRyZWUpOwojIDEyMTQgIi9Wb2x1bWVzL1VG
U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgiCmV4dGVy
biB2b2lkIGVtaXRfbG9jYWxfdmFyICh0cmVlKTsKZXh0ZXJuIHZvaWQgbWFrZV9ydGxfZm9yX2xv
Y2FsX3N0YXRpYyAodHJlZSk7CmV4dGVybiB0cmVlIGV4cGFuZF9jb25kICh0cmVlKTsKZXh0ZXJu
IHRyZWUgY19leHBhbmRfcmV0dXJuICh0cmVlKTsKZXh0ZXJuIHRyZWUgZG9fY2FzZSAodHJlZSwg
dHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX3N0bXQgKGVudW0gdHJlZV9jb2RlLCAuLi4pOwpleHRl
cm4gdHJlZSBidWlsZF9jYXNlX2xhYmVsICh0cmVlLCB0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUg
YnVpbGRfY29udGludWVfc3RtdCAodm9pZCk7CmV4dGVybiB0cmVlIGJ1aWxkX2JyZWFrX3N0bXQg
KHZvaWQpOwpleHRlcm4gdHJlZSBidWlsZF9yZXR1cm5fc3RtdCAodHJlZSk7CgoKCgoKCgpleHRl
cm4gdm9pZCBjX2V4cGFuZF9hc21fb3BlcmFuZHMgKHRyZWUsIHRyZWUsIHRyZWUsIHRyZWUsIGlu
dCwgY29uc3QgY2hhciAqLCBpbnQpOwoKCgoKZXh0ZXJuIHRyZWUgYnVpbGRfdW5hcnlfb3AgKGVu
dW0gdHJlZV9jb2RlLCB0cmVlLCBpbnQpOwoKZXh0ZXJuIHRyZWUgYnVpbGRfYmluYXJ5X29wIChl
bnVtIHRyZWVfY29kZSwgdHJlZSwgdHJlZSwgaW50KTsKCmV4dGVybiBpbnQgbHZhbHVlX3AgKHRy
ZWUpOwpleHRlcm4gdHJlZSBkZWZhdWx0X2NvbnZlcnNpb24gKHRyZWUpOwoKCgoKZXh0ZXJuIHRy
ZWUgY29tbW9uX3R5cGUgKHRyZWUsIHRyZWUpOwoKZXh0ZXJuIHRyZWUgZXhwYW5kX3RyZWVfYnVp
bHRpbiAodHJlZSwgdHJlZSwgdHJlZSk7CgpleHRlcm4gdHJlZSBkZWNsX2NvbnN0YW50X3ZhbHVl
ICh0cmVlKTsKCgpleHRlcm4gdHJlZSBib29sZWFuX2luY3JlbWVudCAoZW51bSB0cmVlX2NvZGUs
IHRyZWUpOwoKCgoKZXh0ZXJuIHZvaWQgZXh0cmFjdF9pbnRlcmZhY2VfaW5mbyAodm9pZCk7Cgpl
eHRlcm4gaW50IGNhc2VfY29tcGFyZSAoc3BsYXlfdHJlZV9rZXksIHNwbGF5X3RyZWVfa2V5KTsK
CgpleHRlcm4gdHJlZSBjX2FkZF9jYXNlX2xhYmVsIChzcGxheV90cmVlLCB0cmVlLCB0cmVlLCB0
cmVlKTsKCgoKZXh0ZXJuIHRyZWUgYnVpbGRfZnVuY3Rpb25fY2FsbCAodHJlZSwgdHJlZSk7Cgpl
eHRlcm4gdHJlZSBmaW5pc2hfbGFiZWxfYWRkcmVzc19leHByICh0cmVlKTsKCgoKZXh0ZXJuIHRy
ZWUgbG9va3VwX2xhYmVsICh0cmVlKTsKCmV4dGVybiBydHggY19leHBhbmRfZXhwciAodHJlZSwg
cnR4LCBlbnVtIG1hY2hpbmVfbW9kZSwgaW50KTsKCgoKZXh0ZXJuIGludCBjX3NhZmVfZnJvbV9w
IChydHgsIHRyZWUpOwoKZXh0ZXJuIGludCBjX3N0YXRpY3AgKHRyZWUpOwoKZXh0ZXJuIGludCBj
X2NvbW1vbl91bnNhZmVfZm9yX3JlZXZhbCAodHJlZSk7CgpleHRlcm4gdm9pZCBpbml0X2NfbGV4
ICh2b2lkKTsKCmV4dGVybiB2b2lkIGNfY3BwX2J1aWx0aW5zIChjcHBfcmVhZGVyICopOwoKCgpl
eHRlcm4gaW50IHBlbmRpbmdfbGFuZ19jaGFuZ2U7CgoKCnN0cnVjdCBjX2ZpbGVpbmZvCnsKICBp
bnQgdGltZTsKICBzaG9ydCBpbnRlcmZhY2Vfb25seTsKICBzaG9ydCBpbnRlcmZhY2VfdW5rbm93
bjsKfTsKCnN0cnVjdCBjX2ZpbGVpbmZvICpnZXRfZmlsZWluZm8gKGNvbnN0IGNoYXIgKik7CmV4
dGVybiB2b2lkIGR1bXBfdGltZV9zdGF0aXN0aWNzICh2b2lkKTsKCmV4dGVybiBfQm9vbCBjX2R1
bXBfdHJlZSAodm9pZCAqLCB0cmVlKTsKCmV4dGVybiB2b2lkIHBjaF9pbml0ICh2b2lkKTsKZXh0
ZXJuIGludCBjX2NvbW1vbl92YWxpZF9wY2ggKGNwcF9yZWFkZXIgKnBmaWxlLCBjb25zdCBjaGFy
ICpuYW1lLCBpbnQgZmQpOwoKCmV4dGVybiB2b2lkIGNfY29tbW9uX3JlYWRfcGNoIChjcHBfcmVh
ZGVyICpwZmlsZSwgY29uc3QgY2hhciAqbmFtZSwgaW50IGZkLCBjb25zdCBjaGFyICpvcmlnKTsK
CgoKZXh0ZXJuIHZvaWQgY19jb21tb25fd3JpdGVfcGNoICh2b2lkKTsKZXh0ZXJuIHZvaWQgYnVp
bHRpbl9kZWZpbmVfd2l0aF92YWx1ZSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7
CgpleHRlcm4gdm9pZCBjX3N0ZGRlZl9jcHBfYnVpbHRpbnMgKHZvaWQpOwpleHRlcm4gdm9pZCBm
ZV9maWxlX2NoYW5nZSAoY29uc3Qgc3RydWN0IGxpbmVfbWFwICopOwoKCmV4dGVybiB2b2lkIGlu
aXRfcHBfb3V0cHV0IChGSUxFICopOwpleHRlcm4gdm9pZCBwcmVwcm9jZXNzX2ZpbGUgKGNwcF9y
ZWFkZXIgKik7CmV4dGVybiB2b2lkIHBwX2ZpbGVfY2hhbmdlIChjb25zdCBzdHJ1Y3QgbGluZV9t
YXAgKik7CiMgMjcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z
cmMvZ2NjL2MtcHJldHR5LXByaW50LmgiIDIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3Bp
bnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9wcmV0dHktcHJpbnQuaCIgMQojIDI1ICIvVm9sdW1l
cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9wcmV0dHktcHJpbnQu
aCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj
Yy9kaWFnbm9zdGljLmgiIDEKIyAzMCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny
Yy9mc2YvZ2NjL3NyYy9nY2MvZGlhZ25vc3RpYy5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgY29uc3Qg
Y2hhciAqZm9ybWF0X3NwZWM7CiAgdmFfbGlzdCAqYXJnc19wdHI7Cn0gdGV4dF9pbmZvOwoKCnR5
cGVkZWYgZW51bQp7CgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNm
L2djYy9zcmMvZ2NjL2RpYWdub3N0aWMuZGVmIiAxCkRLX0ZBVEFMLApES19JQ0UsCkRLX1NPUlJZ
LApES19FUlJPUiwKREtfV0FSTklORywKREtfQU5BQ0hST05JU00sCkRLX05PVEUsCkRLX0RFQlVH
LAojIDQxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj
Yy9kaWFnbm9zdGljLmgiIDIKCiAgREtfTEFTVF9ESUFHTk9TVElDX0tJTkQKfSBkaWFnbm9zdGlj
X3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgdGV4dF9pbmZvIG1lc3NhZ2U7CiAgbG9jYXRpb25f
dCBsb2NhdGlvbjsKCiAgZGlhZ25vc3RpY190IGtpbmQ7Cn0gZGlhZ25vc3RpY19pbmZvOwojIDYz
ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9kaWFn
bm9zdGljLmgiCnR5cGVkZWYgZW51bQp7CiAgRElBR05PU1RJQ1NfU0hPV19QUkVGSVhfT05DRSA9
IDB4MCwKICBESUFHTk9TVElDU19TSE9XX1BSRUZJWF9ORVZFUiA9IDB4MSwKICBESUFHTk9TVElD
U19TSE9XX1BSRUZJWF9FVkVSWV9MSU5FID0gMHgyCn0gZGlhZ25vc3RpY19wcmVmaXhpbmdfcnVs
ZV90OwoKCnR5cGVkZWYgc3RydWN0CnsKCiAgY29uc3QgY2hhciAqcHJlZml4OwoKCgogIGludCBt
YXhpbXVtX2xlbmd0aDsKCgoKICBpbnQgaWRlYWxfbWF4aW11bV9sZW5ndGg7CgoKICBpbnQgaW5k
ZW50X3NraXA7CgoKICBfQm9vbCBlbWl0dGVkX3ByZWZpeF9wOwoKCiAgX0Jvb2wgbmVlZF9uZXds
aW5lX3A7CgoKICBkaWFnbm9zdGljX3ByZWZpeGluZ19ydWxlX3QgcHJlZml4aW5nX3J1bGU7Cn0g
b3V0cHV0X3N0YXRlOwoKCgoKdHlwZWRlZiBzdHJ1Y3Qgb3V0cHV0X2J1ZmZlciBvdXRwdXRfYnVm
ZmVyOwp0eXBlZGVmIF9Cb29sICgqcHJpbnRlcl9mbikgKG91dHB1dF9idWZmZXIgKiwgdGV4dF9p
bmZvICopOwoKCgpzdHJ1Y3Qgb3V0cHV0X2J1ZmZlcgp7CgogIG91dHB1dF9zdGF0ZSBzdGF0ZTsK
CgogIEZJTEUqIHN0cmVhbTsKCgogIHN0cnVjdCBvYnN0YWNrIG9ic3RhY2s7CgoKICBpbnQgbGlu
ZV9sZW5ndGg7CgoKCiAgY2hhciBkaWdpdF9idWZmZXJbMTI4XTsKIyAxMzEgIi9Wb2x1bWVzL1VG
U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2RpYWdub3N0aWMuaCIKICBw
cmludGVyX2ZuIGZvcm1hdF9kZWNvZGVyOwp9IDsKIyAxNzIgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp
b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2RpYWdub3N0aWMuaCIKdHlwZWRlZiBzdHJ1
Y3QgZGlhZ25vc3RpY19jb250ZXh0IGRpYWdub3N0aWNfY29udGV4dDsKdHlwZWRlZiB2b2lkICgq
ZGlhZ25vc3RpY19zdGFydGVyX2ZuKSAoZGlhZ25vc3RpY19jb250ZXh0ICosIGRpYWdub3N0aWNf
aW5mbyAqKTsKCnR5cGVkZWYgZGlhZ25vc3RpY19zdGFydGVyX2ZuIGRpYWdub3N0aWNfZmluYWxp
emVyX2ZuOwoKCgpzdHJ1Y3QgZGlhZ25vc3RpY19jb250ZXh0CnsKCgoKICBvdXRwdXRfYnVmZmVy
IGJ1ZmZlcjsKCgogIGludCBkaWFnbm9zdGljX2NvdW50W0RLX0xBU1RfRElBR05PU1RJQ19LSU5E
XTsKCgoKICBfQm9vbCB3YXJuaW5nc19hcmVfZXJyb3JzX21lc3NhZ2U7CgoKICBfQm9vbCBhYm9y
dF9vbl9lcnJvcjsKIyAyMDMgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNm
L2djYy9zcmMvZ2NjL2RpYWdub3N0aWMuaCIKICBkaWFnbm9zdGljX3N0YXJ0ZXJfZm4gYmVnaW5f
ZGlhZ25vc3RpYzsKCgogIGRpYWdub3N0aWNfZmluYWxpemVyX2ZuIGVuZF9kaWFnbm9zdGljOwoK
CiAgdm9pZCAoKmludGVybmFsX2Vycm9yKSAoY29uc3QgY2hhciAqLCB2YV9saXN0ICopOwoKCgoK
ICB0cmVlIGxhc3RfZnVuY3Rpb247CgoKICBpbnQgbGFzdF9tb2R1bGU7CgogIGludCBsb2NrOwoK
CiAgdm9pZCAqeF9kYXRhOwp9OwojIDI3MiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lh
L3NyYy9mc2YvZ2NjL3NyYy9nY2MvZGlhZ25vc3RpYy5oIgpleHRlcm4gZGlhZ25vc3RpY19jb250
ZXh0ICpnbG9iYWxfZGM7CiMgMjkzICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3Jj
L2ZzZi9nY2Mvc3JjL2djYy9kaWFnbm9zdGljLmgiCmV4dGVybiB2b2lkIGRpYWdub3N0aWNfaW5p
dGlhbGl6ZSAoZGlhZ25vc3RpY19jb250ZXh0ICopOwpleHRlcm4gdm9pZCBkaWFnbm9zdGljX3Jl
cG9ydF9jdXJyZW50X21vZHVsZSAoZGlhZ25vc3RpY19jb250ZXh0ICopOwpleHRlcm4gdm9pZCBk
aWFnbm9zdGljX3JlcG9ydF9jdXJyZW50X2Z1bmN0aW9uIChkaWFnbm9zdGljX2NvbnRleHQgKik7
CmV4dGVybiB2b2lkIGRpYWdub3N0aWNfZmx1c2hfYnVmZmVyIChkaWFnbm9zdGljX2NvbnRleHQg
Kik7CmV4dGVybiBfQm9vbCBkaWFnbm9zdGljX2NvdW50X2RpYWdub3N0aWMgKGRpYWdub3N0aWNf
Y29udGV4dCAqLCBkaWFnbm9zdGljX3QpOwoKZXh0ZXJuIHZvaWQgZGlhZ25vc3RpY19yZXBvcnRf
ZGlhZ25vc3RpYyAoZGlhZ25vc3RpY19jb250ZXh0ICosIGRpYWdub3N0aWNfaW5mbyAqKTsKCmV4
dGVybiB2b2lkIGRpYWdub3N0aWNfc2V0X2luZm8gKGRpYWdub3N0aWNfaW5mbyAqLCBjb25zdCBj
aGFyICosIHZhX2xpc3QgKiwgY29uc3QgY2hhciAqLCBpbnQsIGRpYWdub3N0aWNfdCk7CgoKCmV4
dGVybiBjaGFyICpkaWFnbm9zdGljX2J1aWxkX3ByZWZpeCAoZGlhZ25vc3RpY19pbmZvICopOwoK
CmV4dGVybiB2b2lkIGluaXRfb3V0cHV0X2J1ZmZlciAob3V0cHV0X2J1ZmZlciAqLCBjb25zdCBj
aGFyICosIGludCk7CgpleHRlcm4gdm9pZCBvdXRwdXRfY2xlYXIgKG91dHB1dF9idWZmZXIgKik7
CmV4dGVybiBjb25zdCBjaGFyICpvdXRwdXRfbGFzdF9wb3NpdGlvbiAoY29uc3Qgb3V0cHV0X2J1
ZmZlciAqKTsKZXh0ZXJuIHZvaWQgb3V0cHV0X3NldF9wcmVmaXggKG91dHB1dF9idWZmZXIgKiwg
Y29uc3QgY2hhciAqKTsKCmV4dGVybiB2b2lkIG91dHB1dF9kZXN0cm95X3ByZWZpeCAob3V0cHV0
X2J1ZmZlciAqKTsKZXh0ZXJuIHZvaWQgb3V0cHV0X3NldF9tYXhpbXVtX2xlbmd0aCAob3V0cHV0
X2J1ZmZlciAqLCBpbnQpOwpleHRlcm4gdm9pZCBvdXRwdXRfZW1pdF9wcmVmaXggKG91dHB1dF9i
dWZmZXIgKik7CmV4dGVybiB2b2lkIG91dHB1dF9hZGRfbmV3bGluZSAob3V0cHV0X2J1ZmZlciAq
KTsKZXh0ZXJuIHZvaWQgb3V0cHV0X2FkZF9zcGFjZSAob3V0cHV0X2J1ZmZlciAqKTsKZXh0ZXJu
IGludCBvdXRwdXRfc3BhY2VfbGVmdCAoY29uc3Qgb3V0cHV0X2J1ZmZlciAqKTsKZXh0ZXJuIHZv
aWQgb3V0cHV0X2FwcGVuZCAob3V0cHV0X2J1ZmZlciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKik7CgpleHRlcm4gdm9pZCBvdXRwdXRfYWRkX2NoYXJhY3RlciAob3V0cHV0X2J1ZmZlciAq
LCBpbnQpOwpleHRlcm4gdm9pZCBvdXRwdXRfZGVjaW1hbCAob3V0cHV0X2J1ZmZlciAqLCBpbnQp
OwpleHRlcm4gdm9pZCBvdXRwdXRfYWRkX3N0cmluZyAob3V0cHV0X2J1ZmZlciAqLCBjb25zdCBj
aGFyICopOwoKZXh0ZXJuIHZvaWQgb3V0cHV0X2FkZF9pZGVudGlmaWVyIChvdXRwdXRfYnVmZmVy
ICosIHRyZWUpOwpleHRlcm4gY29uc3QgY2hhciAqb3V0cHV0X2ZpbmFsaXplX21lc3NhZ2UgKG91
dHB1dF9idWZmZXIgKik7CmV4dGVybiB2b2lkIG91dHB1dF9jbGVhcl9tZXNzYWdlX3RleHQgKG91
dHB1dF9idWZmZXIgKik7CmV4dGVybiB2b2lkIG91dHB1dF9wcmludGYgKG91dHB1dF9idWZmZXIg
KiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50
Zl9fLCAyLCAzKSkpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCmV4dGVybiB2
b2lkIG91dHB1dF92ZXJiYXRpbSAob3V0cHV0X2J1ZmZlciAqLCBjb25zdCBjaGFyICosIC4uLikg
X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSkgX19hdHRyaWJ1
dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKZXh0ZXJuIHZvaWQgdmVyYmF0aW0gKGNvbnN0IGNo
YXIgKiwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAx
LCAyKSkpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKZXh0ZXJuIGNoYXIgKmZp
bGVfbmFtZV9hc19wcmVmaXggKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIGluZm9ybSAoY29u
c3QgY2hhciAqLCAuLi4pOwojIDI2ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3Jj
L2ZzZi9nY2Mvc3JjL2djYy9wcmV0dHktcHJpbnQuaCIgMgoKCnR5cGVkZWYgdW5zaWduZWQgaW50
IHBwX2ZsYWdzOwoKdHlwZWRlZiBlbnVtCnsKICBwcF9ub25lLCBwcF9iZWZvcmUsIHBwX2FmdGVy
Cn0gcHBfcGFkZGluZzsKCnN0cnVjdCBwcmV0dHlfcHJpbnRfaW5mbwp7CgogIG91dHB1dF9idWZm
ZXIgKmJ1ZmZlcjsKICBwcF9mbGFncyBmbGFnczsKCiAgcHBfcGFkZGluZyBwYWRkaW5nOwp9Owoj
IDI4ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9j
LXByZXR0eS1wcmludC5oIiAyCgoKCgp0eXBlZGVmIHN0cnVjdCBjX3ByZXR0eV9wcmludF9pbmZv
ICpjX3ByZXR0eV9wcmludGVyOwoKCnR5cGVkZWYgdm9pZCAoKmNfcHJldHR5X3ByaW50X2ZuKSAo
Y19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CgpzdHJ1Y3QgY19wcmV0dHlfcHJpbnRfaW5mbwp7CiAg
c3RydWN0IHByZXR0eV9wcmludF9pbmZvIGJhc2U7CgoKICBpbnQgKm9mZnNldF9saXN0OwoKCgog
IGNfcHJldHR5X3ByaW50X2ZuIGRlY2xhcmF0aW9uOwogIGNfcHJldHR5X3ByaW50X2ZuIGRlY2xh
cmF0aW9uX3NwZWNpZmllcnM7CiAgY19wcmV0dHlfcHJpbnRfZm4gdHlwZV9zcGVjaWZpZXI7CiAg
Y19wcmV0dHlfcHJpbnRfZm4gZGVjbGFyYXRvcjsKICBjX3ByZXR0eV9wcmludF9mbiBkaXJlY3Rf
ZGVjbGFyYXRvcjsKICBjX3ByZXR0eV9wcmludF9mbiBwYXJhbWV0ZXJfZGVjbGFyYXRpb247CiAg
Y19wcmV0dHlfcHJpbnRfZm4gdHlwZV9pZDsKCiAgY19wcmV0dHlfcHJpbnRfZm4gc3RhdGVtZW50
OwoKICBjX3ByZXR0eV9wcmludF9mbiBwcmltYXJ5X2V4cHJlc3Npb247CiAgY19wcmV0dHlfcHJp
bnRfZm4gcG9zdGZpeF9leHByZXNzaW9uOwogIGNfcHJldHR5X3ByaW50X2ZuIHVuYXJ5X2V4cHJl
c3Npb247CiAgY19wcmV0dHlfcHJpbnRfZm4gaW5pdGlhbGl6ZXI7CiAgY19wcmV0dHlfcHJpbnRf
Zm4gbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbjsKICBjX3ByZXR0eV9wcmludF9mbiBjb25kaXRp
b25hbF9leHByZXNzaW9uOwogIGNfcHJldHR5X3ByaW50X2ZuIGFzc2lnbm1lbnRfZXhwcmVzc2lv
bjsKfTsKIyAxNDcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z
cmMvZ2NjL2MtcHJldHR5LXByaW50LmgiCmV4dGVybiB2b2lkIHBwX2NfcHJldHR5X3ByaW50ZXJf
aW5pdCAoY19wcmV0dHlfcHJpbnRlcik7CgoKdm9pZCBwcF9jX2F0dHJpYnV0ZXMgKGNfcHJldHR5
X3ByaW50ZXIsIHRyZWUpOwp2b2lkIHBwX2NfY3ZfcXVhbGlmaWVyIChjX3ByZXR0eV9wcmludGVy
LCBpbnQpOwp2b2lkIHBwX2NfcGFyYW1ldGVyX2RlY2xhcmF0aW9uX2NsYXVzZSAoY19wcmV0dHlf
cHJpbnRlciwgdHJlZSk7CnZvaWQgcHBfY19kZWNsYXJhdGlvbiAoY19wcmV0dHlfcHJpbnRlciwg
dHJlZSk7Cgp2b2lkIHBwX2Nfc3RhdGVtZW50IChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKCnZv
aWQgcHBfY19leHByZXNzaW9uIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKdm9pZCBwcF9jX2xv
Z2ljYWxfb3JfZXhwcmVzc2lvbiAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnZvaWQgcHBfY19l
eHByZXNzaW9uX2xpc3QgKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwp2b2lkIHBwX2NfY2FzdF9l
eHByZXNzaW9uIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKdm9pZCBwcF9jX3Bvc3RmaXhfZXhw
cmVzc2lvbiAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnZvaWQgcHBfY19pbml0aWFsaXplciAo
Y19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnZvaWQgcHBfY19saXRlcmFsIChjX3ByZXR0eV9wcmlu
dGVyLCB0cmVlKTsKIyAyOCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv
Z2NjL3NyYy9nY2MvYy1wcmV0dHktcHJpbnQuYyIgMgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp
b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtdHJlZS5oIiAxCiMgMzcgIi9Wb2x1bWVz
L1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtdHJlZS5oIgpzdHJ1
Y3QgbGFuZ19pZGVudGlmaWVyCnsKICBzdHJ1Y3QgY19jb21tb25faWRlbnRpZmllciBjb21tb25f
aWQ7CiAgdHJlZSBzeW1ib2xfdmFsdWU7CiAgdHJlZSB0YWdfdmFsdWU7CiAgdHJlZSBsYWJlbF92
YWx1ZTsKfTsKCgoKdW5pb24gbGFuZ190cmVlX25vZGUKIAoKewogIHVuaW9uIHRyZWVfbm9kZQoK
ICAgIGdlbmVyaWM7CiAgc3RydWN0IGxhbmdfaWRlbnRpZmllciBpZGVudGlmaWVyOwp9OwoKCgpz
dHJ1Y3QgbGFuZ19kZWNsCnsKICBzdHJ1Y3QgY19sYW5nX2RlY2wgYmFzZTsKCgoKICB0cmVlIHBl
bmRpbmdfc2l6ZXM7Cn07CiMgMTEwICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3Jj
L2ZzZi9nY2Mvc3JjL2djYy9jLXRyZWUuaCIKc3RydWN0IGxhbmdfdHlwZQp7CiAgaW50IGxlbjsK
ICB0cmVlIGVsdHNbMV07Cn07CiMgMTU2ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEv
c3JjL2ZzZi9nY2Mvc3JjL2djYy9jLXRyZWUuaCIKZXh0ZXJuIHRyZWUgbG9va3VwX2ludGVyZmFj
ZSAodHJlZSk7CmV4dGVybiB0cmVlIGlzX2NsYXNzX25hbWUgKHRyZWUpOwpleHRlcm4gdHJlZSBv
YmpjX2lzX2lkICh0cmVlKTsKZXh0ZXJuIHZvaWQgb2JqY19jaGVja19kZWNsICh0cmVlKTsKZXh0
ZXJuIHZvaWQgZmluaXNoX2ZpbGUgKHZvaWQpOwpleHRlcm4gaW50IG9iamNfY29tcHR5cGVzICh0
cmVlLCB0cmVlLCBpbnQpOwpleHRlcm4gdHJlZSBvYmpjX21lc3NhZ2Vfc2VsZWN0b3IgKHZvaWQp
OwpleHRlcm4gdHJlZSBsb29rdXBfb2JqY19pdmFyICh0cmVlKTsKZXh0ZXJuIHZvaWQgY19leHBh
bmRfYm9keSAodHJlZSk7CgoKCmV4dGVybiB2b2lkIGNfcGFyc2VfaW5pdCAodm9pZCk7CgoKZXh0
ZXJuIHZvaWQgZ2VuX2F1eF9pbmZvX3JlY29yZCAodHJlZSwgaW50LCBpbnQsIGludCk7CgoKZXh0
ZXJuIGludCBnbG9iYWxfYmluZGluZ3NfcCAodm9pZCk7CmV4dGVybiBpbnQga2VwdF9sZXZlbF9w
ICh2b2lkKTsKZXh0ZXJuIHRyZWUgZ2V0ZGVjbHMgKHZvaWQpOwpleHRlcm4gdm9pZCBwdXNobGV2
ZWwgKGludCk7CmV4dGVybiB0cmVlIHBvcGxldmVsIChpbnQsaW50LCBpbnQpOwpleHRlcm4gdm9p
ZCBpbnNlcnRfYmxvY2sgKHRyZWUpOwpleHRlcm4gdm9pZCBzZXRfYmxvY2sgKHRyZWUpOwpleHRl
cm4gdHJlZSBwdXNoZGVjbCAodHJlZSk7CgpleHRlcm4gdm9pZCBjX2luc2VydF9kZWZhdWx0X2F0
dHJpYnV0ZXMgKHRyZWUpOwpleHRlcm4gdm9pZCBjX2luaXRfZGVjbF9wcm9jZXNzaW5nICh2b2lk
KTsKZXh0ZXJuIHZvaWQgY19kdXBfbGFuZ19zcGVjaWZpY19kZWNsICh0cmVlKTsKZXh0ZXJuIHZv
aWQgY19wcmludF9pZGVudGlmaWVyIChGSUxFICosIHRyZWUsIGludCk7CmV4dGVybiB0cmVlIGJ1
aWxkX2FycmF5X2RlY2xhcmF0b3IgKHRyZWUsIHRyZWUsIGludCwgaW50KTsKZXh0ZXJuIHRyZWUg
YnVpbGRfZW51bWVyYXRvciAodHJlZSwgdHJlZSk7CmV4dGVybiB2b2lkIGNoZWNrX2Zvcl9sb29w
X2RlY2xzICh2b2lkKTsKZXh0ZXJuIHZvaWQgY2xlYXJfcGFybV9vcmRlciAodm9pZCk7CmV4dGVy
biBpbnQgY29tcGxldGVfYXJyYXlfdHlwZSAodHJlZSwgdHJlZSwgaW50KTsKZXh0ZXJuIHZvaWQg
ZGVjbGFyZV9wYXJtX2xldmVsIChpbnQpOwpleHRlcm4gdHJlZSBkZWZpbmVfbGFiZWwgKGNvbnN0
IGNoYXIgKiwgaW50LCB0cmVlKTsKCmV4dGVybiB2b2lkIGZpbmlzaF9kZWNsICh0cmVlLCB0cmVl
LCB0cmVlKTsKZXh0ZXJuIHRyZWUgZmluaXNoX2VudW0gKHRyZWUsIHRyZWUsIHRyZWUpOwpleHRl
cm4gdm9pZCBmaW5pc2hfZnVuY3Rpb24gKGludCwgaW50KTsKZXh0ZXJuIHRyZWUgZmluaXNoX3N0
cnVjdCAodHJlZSwgdHJlZSwgdHJlZSk7CmV4dGVybiB0cmVlIGdldF9wYXJtX2luZm8gKGludCk7
CmV4dGVybiB0cmVlIGdyb2tmaWVsZCAoY29uc3QgY2hhciAqLCBpbnQsIHRyZWUsIHRyZWUsIHRy
ZWUpOwpleHRlcm4gdHJlZSBncm9rdHlwZW5hbWUgKHRyZWUpOwpleHRlcm4gdHJlZSBncm9rdHlw
ZW5hbWVfaW5fcGFybV9jb250ZXh0ICh0cmVlKTsKZXh0ZXJuIHRyZWUgaW1wbGljaXRseV9kZWNs
YXJlICh0cmVlKTsKZXh0ZXJuIGludCBpbl9wYXJtX2xldmVsX3AgKHZvaWQpOwpleHRlcm4gdm9p
ZCBrZWVwX25leHRfbGV2ZWwgKHZvaWQpOwpleHRlcm4gdHJlZSBsb29rdXBfbmFtZSAodHJlZSk7
CmV4dGVybiB2b2lkIHBhcm1saXN0X3RhZ3Nfd2FybmluZyAodm9pZCk7CmV4dGVybiB2b2lkIHBl
bmRpbmdfeHJlZl9lcnJvciAodm9pZCk7CmV4dGVybiB2b2lkIGNfcHVzaF9mdW5jdGlvbl9jb250
ZXh0IChzdHJ1Y3QgZnVuY3Rpb24gKik7CmV4dGVybiB2b2lkIGNfcG9wX2Z1bmN0aW9uX2NvbnRl
eHQgKHN0cnVjdCBmdW5jdGlvbiAqKTsKZXh0ZXJuIHZvaWQgcG9wX2xhYmVsX2xldmVsICh2b2lk
KTsKZXh0ZXJuIHZvaWQgcHVzaF9sYWJlbF9sZXZlbCAodm9pZCk7CmV4dGVybiB2b2lkIHB1c2hf
cGFybV9kZWNsICh0cmVlKTsKZXh0ZXJuIHRyZWUgcHVzaGRlY2xfdG9wX2xldmVsICh0cmVlKTsK
ZXh0ZXJuIHRyZWUgcHVzaGRlY2xfZnVuY3Rpb25fbGV2ZWwgKHRyZWUsIHRyZWUpOwpleHRlcm4g
dm9pZCBwdXNodGFnICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgc2V0X2FycmF5X2RlY2xhcmF0
b3JfdHlwZSAodHJlZSwgdHJlZSwgaW50KTsKZXh0ZXJuIHRyZWUgc2hhZG93X2xhYmVsICh0cmVl
KTsKZXh0ZXJuIHZvaWQgc2hhZG93X3RhZyAodHJlZSk7CmV4dGVybiB2b2lkIHNoYWRvd190YWdf
d2FybmVkICh0cmVlLCBpbnQpOwpleHRlcm4gdHJlZSBzdGFydF9lbnVtICh0cmVlKTsKZXh0ZXJu
IGludCBzdGFydF9mdW5jdGlvbiAodHJlZSwgdHJlZSwgdHJlZSk7CmV4dGVybiB0cmVlIHN0YXJ0
X2RlY2wgKHRyZWUsIHRyZWUsIGludCwgdHJlZSk7CgpleHRlcm4gdHJlZSBzdGFydF9zdHJ1Y3Qg
KGVudW0gdHJlZV9jb2RlLCB0cmVlKTsKZXh0ZXJuIHZvaWQgc3RvcmVfcGFybV9kZWNscyAodm9p
ZCk7CmV4dGVybiB0cmVlIHhyZWZfdGFnIChlbnVtIHRyZWVfY29kZSwgdHJlZSk7CmV4dGVybiB0
cmVlIGNfYmVnaW5fY29tcG91bmRfc3RtdCAodm9pZCk7CmV4dGVybiB2b2lkIGNfZXhwYW5kX2Rl
ZmVycmVkX2Z1bmN0aW9uICh0cmVlKTsKZXh0ZXJuIHZvaWQgY19leHBhbmRfZGVjbF9zdG10ICh0
cmVlKTsKZXh0ZXJuIHRyZWUgbWFrZV9wb2ludGVyX2RlY2xhcmF0b3IgKHRyZWUsIHRyZWUpOwoK
CmV4dGVybiBpbnQgY19kaXNyZWdhcmRfaW5saW5lX2xpbWl0cyAodHJlZSk7CmV4dGVybiBpbnQg
Y19jYW5ub3RfaW5saW5lX3RyZWVfZm4gKHRyZWUgKik7CmV4dGVybiBfQm9vbCBjX29iamNfY29t
bW9uX2luaXQgKHZvaWQpOwpleHRlcm4gaW50IGNfbWlzc2luZ19ub3JldHVybl9va19wICh0cmVl
KTsKZXh0ZXJuIHZvaWQgY19vYmpjX2NvbW1vbl9maW5pc2hfZmlsZSAodm9pZCk7CmV4dGVybiBp
bnQgZGVmZXJfZm4gKHRyZWUpOwpleHRlcm4gX0Jvb2wgY193YXJuX3VudXNlZF9nbG9iYWxfZGVj
bCAodHJlZSk7CiMgMjQ5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n
Y2Mvc3JjL2djYy9jLXRyZWUuaCIKZXh0ZXJuIHRyZWUgcmVxdWlyZV9jb21wbGV0ZV90eXBlICh0
cmVlKTsKZXh0ZXJuIGludCBjb21wdHlwZXMgKHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBjX3Np
emVfaW5fYnl0ZXMgKHRyZWUpOwpleHRlcm4gX0Jvb2wgY19tYXJrX2FkZHJlc3NhYmxlICh0cmVl
KTsKZXh0ZXJuIHZvaWQgY19pbmNvbXBsZXRlX3R5cGVfZXJyb3IgKHRyZWUsIHRyZWUpOwpleHRl
cm4gdHJlZSBjX3R5cGVfcHJvbW90ZXNfdG8gKHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9jb21w
b25lbnRfcmVmICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfaW5kaXJlY3RfcmVmICh0
cmVlLCBjb25zdCBjaGFyICopOwpleHRlcm4gdHJlZSBidWlsZF9hcnJheV9yZWYgKHRyZWUsIHRy
ZWUpOwpleHRlcm4gdHJlZSBidWlsZF9leHRlcm5hbF9yZWYgKHRyZWUsIGludCk7CmV4dGVybiB0
cmVlIHBhcnNlcl9idWlsZF9iaW5hcnlfb3AgKGVudW0gdHJlZV9jb2RlLCB0cmVlLCB0cmVlKTsK
CmV4dGVybiBpbnQgY190cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCAodHJlZSk7CmV4dGVybiB2b2lk
IHJlYWRvbmx5X3dhcm5pbmcgKHRyZWUsIGNvbnN0IGNoYXIgKik7CmV4dGVybiB0cmVlIGJ1aWxk
X2NvbmRpdGlvbmFsX2V4cHIgKHRyZWUsIHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9j
b21wb3VuZF9leHByICh0cmVlKTsKZXh0ZXJuIHRyZWUgY19jYXN0X2V4cHIgKHRyZWUsIHRyZWUp
OwpleHRlcm4gdHJlZSBidWlsZF9jX2Nhc3QgKHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBidWls
ZF9tb2RpZnlfZXhwciAodHJlZSwgZW51bSB0cmVlX2NvZGUsIHRyZWUpOwoKZXh0ZXJuIHZvaWQg
c3RvcmVfaW5pdF92YWx1ZSAodHJlZSwgdHJlZSk7CmV4dGVybiB2b2lkIGVycm9yX2luaXQgKGNv
bnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIHBlZHdhcm5faW5pdCAoY29uc3QgY2hhciAqKTsKZXh0
ZXJuIHZvaWQgc3RhcnRfaW5pdCAodHJlZSwgdHJlZSwgaW50KTsKZXh0ZXJuIHZvaWQgZmluaXNo
X2luaXQgKHZvaWQpOwpleHRlcm4gdm9pZCByZWFsbHlfc3RhcnRfaW5jcmVtZW50YWxfaW5pdCAo
dHJlZSk7CmV4dGVybiB2b2lkIHB1c2hfaW5pdF9sZXZlbCAoaW50KTsKZXh0ZXJuIHRyZWUgcG9w
X2luaXRfbGV2ZWwgKGludCk7CmV4dGVybiB2b2lkIHNldF9pbml0X2luZGV4ICh0cmVlLCB0cmVl
KTsKZXh0ZXJuIHZvaWQgc2V0X2luaXRfbGFiZWwgKHRyZWUpOwpleHRlcm4gdm9pZCBwcm9jZXNz
X2luaXRfZWxlbWVudCAodHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX2NvbXBvdW5kX2xpdGVyYWwg
KHRyZWUsIHRyZWUpOwpleHRlcm4gdm9pZCBwZWR3YXJuX2M5OSAoY29uc3QgY2hhciAqLCAuLi4p
CiAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMSwgMikpKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CmV4dGVybiB0cmVlIGNfc3RhcnRfY2Fz
ZSAodHJlZSk7CmV4dGVybiB2b2lkIGNfZmluaXNoX2Nhc2UgKHZvaWQpOwpleHRlcm4gdHJlZSBz
aW1wbGVfYXNtX3N0bXQgKHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9hc21fc3RtdCAodHJlZSwg
dHJlZSwgdHJlZSwgdHJlZSwgdHJlZSk7CgpleHRlcm4gdHJlZSBjX2NvbnZlcnRfcGFybV9mb3Jf
aW5saW5pbmcgKHRyZWUsIHRyZWUsIHRyZWUpOwoKCgoKZXh0ZXJuIGludCBjdXJyZW50X2Z1bmN0
aW9uX3JldHVybnNfdmFsdWU7CgoKCgpleHRlcm4gaW50IGN1cnJlbnRfZnVuY3Rpb25fcmV0dXJu
c19udWxsOwoKCgoKZXh0ZXJuIGludCBjdXJyZW50X2Z1bmN0aW9uX3JldHVybnNfYWJub3JtYWxs
eTsKCgoKZXh0ZXJuIGludCBzeXN0ZW1faGVhZGVyX3A7CgoKZXh0ZXJuIHZvaWQgY19maW5pc2hf
aW5jb21wbGV0ZV9kZWNsICh0cmVlKTsKCmV4dGVybiB0cmVlIHN0YXRpY19jdG9yczsKZXh0ZXJu
IHRyZWUgc3RhdGljX2R0b3JzOwojIDI5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEv
c3JjL2ZzZi9nY2Mvc3JjL2djYy9jLXByZXR0eS1wcmludC5jIiAyCgoKc3RhdGljIHZvaWQgcHBf
Y19jaGFyIChjX3ByZXR0eV9wcmludGVyLCBpbnQpOwpzdGF0aWMgdm9pZCBwcF9jX2NoYXJhY3Rl
cl9saXRlcmFsIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKc3RhdGljIHZvaWQgcHBfY19ib29s
X2xpdGVyYWwgKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwpzdGF0aWMgX0Jvb2wgcHBfY19lbnVt
ZXJhdG9yIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKc3RhdGljIHZvaWQgcHBfY19pbnRlZ2Vy
X2xpdGVyYWwgKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwpzdGF0aWMgdm9pZCBwcF9jX3JlYWxf
bGl0ZXJhbCAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2Nfc3RyaW5n
X2xpdGVyYWwgKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwoKc3RhdGljIHZvaWQgcHBfY19wcmlt
YXJ5X2V4cHJlc3Npb24gKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwoKCnN0YXRpYyB2b2lkIHBw
X2NfaW5pdGlhbGl6ZXJfbGlzdCAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CgpzdGF0aWMgdm9p
ZCBwcF9jX3VuYXJ5X2V4cHJlc3Npb24gKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwpzdGF0aWMg
dm9pZCBwcF9jX211bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24gKGNfcHJldHR5X3ByaW50ZXIsIHRy
ZWUpOwpzdGF0aWMgdm9pZCBwcF9jX2FkZGl0aXZlX2V4cHJlc3Npb24gKGNfcHJldHR5X3ByaW50
ZXIsIHRyZWUpOwpzdGF0aWMgdm9pZCBwcF9jX3NoaWZ0X2V4cHJlc3Npb24gKGNfcHJldHR5X3By
aW50ZXIsIHRyZWUpOwpzdGF0aWMgdm9pZCBwcF9jX3JlbGF0aW9uYWxfZXhwcmVzc2lvbiAoY19w
cmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2NfZXF1YWxpdHlfZXhwcmVzc2lv
biAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2NfYW5kX2V4cHJlc3Np
b24gKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwpzdGF0aWMgdm9pZCBwcF9jX2V4Y2x1c2l2ZV9v
cl9leHByZXNzaW9uIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKCnN0YXRpYyB2b2lkIHBwX2Nf
aW5jbHVzaXZlX29yX2V4cHJlc3Npb24gKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwoKc3RhdGlj
IHZvaWQgcHBfY19sb2dpY2FsX2FuZF9leHByZXNzaW9uIChjX3ByZXR0eV9wcmludGVyLCB0cmVl
KTsKc3RhdGljIHZvaWQgcHBfY19jb25kaXRpb25hbF9leHByZXNzaW9uIChjX3ByZXR0eV9wcmlu
dGVyLCB0cmVlKTsKc3RhdGljIHZvaWQgcHBfY19hc3NpZ25tZW50X2V4cHJlc3Npb24gKGNfcHJl
dHR5X3ByaW50ZXIsIHRyZWUpOwoKCnN0YXRpYyB2b2lkIHBwX2NfZGVjbGFyYXRpb25fc3BlY2lm
aWVycyAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2NfaW5pdF9kZWNs
YXJhdG9yIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKc3RhdGljIHZvaWQgcHBfY19kZWNsYXJh
dG9yIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKc3RhdGljIHZvaWQgcHBfY19kaXJlY3RfZGVj
bGFyYXRvciAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2NfYWJzdHJh
Y3RfZGVjbGFyYXRvciAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2Nf
c3BlY2lmaWVyX3F1YWxpZmllcl9saXN0IChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKc3RhdGlj
IHZvaWQgcHBfY19zaW1wbGVfdHlwZV9zcGVjaWZpZXIgKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUp
OwpzdGF0aWMgdm9pZCBwcF9jX3BhcmFtZXRlcl9kZWNsYXJhdGlvbiAoY19wcmV0dHlfcHJpbnRl
ciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2NfdHlwZV9pZCAoY19wcmV0dHlfcHJpbnRlciwgdHJl
ZSk7CnN0YXRpYyB2b2lkIHBwX2Nfc3RvcmFnZV9jbGFzc19zcGVjaWZpZXIgKGNfcHJldHR5X3By
aW50ZXIsIHRyZWUpOwpzdGF0aWMgdm9pZCBwcF9jX2Z1bmN0aW9uX3NwZWNpZmllciAoY19wcmV0
dHlfcHJpbnRlciwgdHJlZSk7CgoKCgoKdm9pZApwcF9jX2N2X3F1YWxpZmllciAocHBpLCBjdikK
ICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICBpbnQgY3Y7CnsKICBpZiAoY3YgJiAweDEp
CiAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBv
dXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5n
ID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAo
KHBwaSktPmJhc2UuYnVmZmVyLCAiY29uc3QiKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2Jl
Zm9yZTsgfSB3aGlsZSAoMCk7CiAgaWYgKGN2ICYgMHgyKQogICAgZG8geyBkbyB7IGlmICgocHBp
KS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSkt
PmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDAp
OyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgInZv
bGF0aWxlIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwog
IGlmIChjdiAmIDB4NCkKICAgIGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBw
cF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkp
LT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1
dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGZsYWdfaXNvYzk5ID8gInJlc3RyaWN0
IiA6ICJfX3Jlc3RyaWN0X18iKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3
aGlsZSAoMCk7Cn0KCnN0YXRpYyB2b2lkCnBwX2Nfc2ltcGxlX3R5cGVfc3BlY2lmaWVyIChwcGks
IHQpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSB0Owp7CiAgY29uc3QgZW51
bSB0cmVlX2NvZGUgY29kZSA9ICgoZW51bSB0cmVlX2NvZGUpICh0KS0+Y29tbW9uLmNvZGUpOwog
IHN3aXRjaCAoY29kZSkKICAgIHsKICAgIGNhc2UgRVJST1JfTUFSSzoKICAgICAgZG8geyBkbyB7
IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFj
ZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0g
d2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1
ZmZlciwgIjx0eXBlLWVycm9yPiIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9
IHdoaWxlICgwKTsKICAgICAgYnJlYWs7CgoKCgoKCgogICAgY2FzZSBJREVOVElGSUVSX05PREU6
CiAgICAgIGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7
IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRp
bmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5n
ICgocHBpKS0+YmFzZS5idWZmZXIsICgoY29uc3QgY2hhciAqKSAodCktPmlkZW50aWZpZXIuaWQu
c3RyKSk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogICAg
ICBicmVhazsKCiAgICBjYXNlIFZPSURfVFlQRToKICAgIGNhc2UgQk9PTEVBTl9UWVBFOgogICAg
Y2FzZSBDSEFSX1RZUEU6CiAgICBjYXNlIElOVEVHRVJfVFlQRToKICAgIGNhc2UgUkVBTF9UWVBF
OgogICAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8g
eyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRk
aW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmlu
ZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAoKGNvbnN0IGNoYXIgKikgKCgodCktPmRlY2wubmFtZSkp
LT5pZGVudGlmaWVyLmlkLnN0cikpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9
IHdoaWxlICgwKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBDT01QTEVYX1RZUEU6CiAgICBjYXNl
IFZFQ1RPUl9UWVBFOgogICAgICBwcF9jX3NpbXBsZV90eXBlX3NwZWNpZmllciAocHBpLCAoKCgo
dCktPmNvbW1vbi50eXBlKSktPnR5cGUubWFpbl92YXJpYW50KSk7CiAgICAgIGlmIChjb2RlID09
IENPTVBMRVhfVFlQRSkKIGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9u
b25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5i
YXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9h
ZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGZsYWdfaXNvYzk5ID8gIl9Db21wbGV4IiA6
ICJfX2NvbXBsZXhfXyIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxl
ICgwKTsKICAgICAgZWxzZSBpZiAoY29kZSA9PSBWRUNUT1JfVFlQRSkKIGRvIHsgZG8geyBpZiAo
KHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChw
cGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxl
ICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIs
ICJfX3ZlY3Rvcl9fIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUg
KDApOwogICAgICBicmVhazsKCiAgICBjYXNlIFRZUEVfREVDTDoKICAgICAgaWYgKCgodCktPmRl
Y2wubmFtZSkpCiBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkg
ZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5w
YWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0
cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAoKGNvbnN0IGNoYXIgKikgKCgodCktPmRlY2wubmFt
ZSkpLT5pZGVudGlmaWVyLmlkLnN0cikpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3Jl
OyB9IHdoaWxlICgwKTsKICAgICAgZWxzZQogZG8geyBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRk
aW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVy
KTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgw
KTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgIjx0eXBlZGVmLWVycm9y
PiIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxlICgwKTsKICAgICAg
YnJlYWs7CgogICAgY2FzZSBVTklPTl9UWVBFOgogICAgY2FzZSBSRUNPUkRfVFlQRToKICAgIGNh
c2UgRU5VTUVSQUxfVFlQRToKICAgICAgaWYgKGNvZGUgPT0gVU5JT05fVFlQRSkKIGRvIHsgZG8g
eyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3Bh
Y2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9
IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5i
dWZmZXIsICJ1bmlvbiIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxl
ICgwKTsKICAgICAgZWxzZSBpZiAoY29kZSA9PSBSRUNPUkRfVFlQRSkKIGRvIHsgZG8geyBpZiAo
KHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChw
cGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxl
ICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIs
ICJzdHJ1Y3QiKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7
CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gRU5VTUVSQUxfVFlQRSkKIGRvIHsgZG8geyBpZiAoKHBw
aSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkp
LT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgw
KTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICJl
bnVtIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogICAg
ICBlbHNlCiBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8g
eyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRk
aW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmlu
ZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiPHRhZy1lcnJvcj4iKTsgKHBwaSktPmJhc2UucGFkZGlu
ZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CgogICAgICBpZiAoKCh0KS0+dHlwZS5uYW1lKSkK
IGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1
dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBw
cF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBp
KS0+YmFzZS5idWZmZXIsICgoY29uc3QgY2hhciAqKSAoKCh0KS0+dHlwZS5uYW1lKSktPmlkZW50
aWZpZXIuaWQuc3RyKSk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUg
KDApOwogICAgICBlbHNlCiBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBf
bm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+
YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRf
YWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiPGFub255bW91cz4iKTsgKHBwaSktPmJh
c2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIGJyZWFrOwoKICAgIGRl
ZmF1bHQ6CiAgICAgIG91dHB1dF92ZXJiYXRpbSAoKHBwaSktPmJhc2UuYnVmZmVyLCAiI2Alcycg
bm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVfbmFtZVsoaW50KSAoKGVudW0gdHJlZV9j
b2RlKSAodCktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJT05fXyk7CiAgICB9Cn0KCnN0YXRpYyBf
X2lubGluZV9fIHZvaWQKcHBfY19zcGVjaWZpZXJfcXVhbGlmaWVyX2xpc3QgKHBwaSwgdCkKICAg
ICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIHQ7CnsKICBwcF9jX3NpbXBsZV90eXBl
X3NwZWNpZmllciAocHBpLCAoKCgodCktPmNvbW1vbi50eXBlKSktPnR5cGUubWFpbl92YXJpYW50
KSk7CiAgcHBfY19jdl9xdWFsaWZpZXIgKHBwaSwgKCgoKHQpLT5jb21tb24ucmVhZG9ubHlfZmxh
ZykgKiAweDEpIHwgKCgodCktPmNvbW1vbi52b2xhdGlsZV9mbGFnKSAqIDB4MikgfCAoKCh0KS0+
dHlwZS5yZXN0cmljdF9mbGFnKSAqIDB4NCkgfCAoKCgoZW51bSB0cmVlX2NvZGUpICh0KS0+Y29t
bW9uLmNvZGUpID09IFJFQ09SRF9UWVBFICYmICgodCktPmNvbW1vbi50eXBlKSkgKiAweDgpKSk7
Cn0KCnN0YXRpYyB2b2lkCnBwX2NfYWJzdHJhY3RfZGVjbGFyYXRvciAocHBpLCB0KQogICAgIGNf
cHJldHR5X3ByaW50ZXIgcHBpOwogICAgIHRyZWUgdDsKewogIG91dHB1dF92ZXJiYXRpbSAoKHBw
aSktPmJhc2UuYnVmZmVyLCAiI2Alcycgbm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVf
bmFtZVsoaW50KSAoKGVudW0gdHJlZV9jb2RlKSAodCktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJ
T05fXyk7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCnBwX2NfdHlwZV9pZCAocHBpLCB0KQog
ICAgIGNfcHJldHR5X3ByaW50ZXIgcHBpOwogICAgIHRyZWUgdDsKewogIHBwX2Nfc3BlY2lmaWVy
X3F1YWxpZmllcl9saXN0IChwcGksIHQpOwogIHBwX2NfYWJzdHJhY3RfZGVjbGFyYXRvciAocHBp
LCB0KTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX3N0b3JhZ2VfY2xhc3Nfc3BlY2lm
aWVyIChwcCwgdCkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwOwogICAgIHRyZWUgdDsKewogIGlm
ICgoKGVudW0gdHJlZV9jb2RlKSAodCktPmNvbW1vbi5jb2RlKSA9PSBUWVBFX0RFQ0wpCiAgICBk
byB7IGRvIHsgaWYgKChwcCktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9h
ZGRfc3BhY2UgKChwcCktPmJhc2UuYnVmZmVyKTsgKHBwKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9u
ZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwKS0+YmFz
ZS5idWZmZXIsICJ0eXBlZGVmIik7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3
aGlsZSAoMCk7CiAgZWxzZSBpZiAoKCh0KS0+ZGVjbC5yZWdkZWNsX2ZsYWcpKQogICAgZG8geyBk
byB7IGlmICgocHApLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3Nw
YWNlICgocHApLT5iYXNlLmJ1ZmZlcik7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0g
d2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcCktPmJhc2UuYnVm
ZmVyLCAicmVnaXN0ZXIiKTsgKHBwKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxl
ICgwKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2Z1bmN0aW9uX3NwZWNpZmllciAo
cHAsIHQpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcDsKICAgICB0cmVlIHQ7CnsKICBpZiAoKChl
bnVtIHRyZWVfY29kZSkgKHQpLT5jb21tb24uY29kZSkgPT0gRlVOQ1RJT05fREVDTCAmJiAoKCh0
KS0+ZGVjbC5sYW5nX3NwZWNpZmljKS0+YmFzZS5kZWNsYXJlZF9pbmxpbmUpKQogICAgZG8geyBk
byB7IGlmICgocHApLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3Nw
YWNlICgocHApLT5iYXNlLmJ1ZmZlcik7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0g
d2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcCktPmJhc2UuYnVm
ZmVyLCAiaW5saW5lIik7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAo
MCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcHBfY19kZWNsYXJhdGlvbl9zcGVjaWZpZXJz
IChwcCwgdCkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwOwogICAgIHRyZWUgdDsKewogIHBwX2Nf
c3RvcmFnZV9jbGFzc19zcGVjaWZpZXIgKHBwLCB0KTsKICBwcF9jX2Z1bmN0aW9uX3NwZWNpZmll
ciAocHAsIHQpOwogICgqKHBwKS0+dHlwZV9zcGVjaWZpZXIpICgocHApLCAoKCgodCktPmNvbW1v
bi50eXBlKSktPnR5cGUubWFpbl92YXJpYW50KSk7CiAgcHBfY19jdl9xdWFsaWZpZXIgKHBwLCAo
KCgoKCh0KS0+Y29tbW9uLnR5cGUpKS0+Y29tbW9uLnJlYWRvbmx5X2ZsYWcpICogMHgxKSB8ICgo
KCgodCktPmNvbW1vbi50eXBlKSktPmNvbW1vbi52b2xhdGlsZV9mbGFnKSAqIDB4MikgfCAoKCgo
KHQpLT5jb21tb24udHlwZSkpLT50eXBlLnJlc3RyaWN0X2ZsYWcpICogMHg0KSB8ICgoKChlbnVt
IHRyZWVfY29kZSkgKCgodCktPmNvbW1vbi50eXBlKSktPmNvbW1vbi5jb2RlKSA9PSBSRUNPUkRf
VFlQRSAmJiAoKCgodCktPmNvbW1vbi50eXBlKSktPmNvbW1vbi50eXBlKSkgKiAweDgpKSk7Cn0K
CnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcHBfY19kaXJlY3RfZGVjbGFyYXRvciAocHAsIHQpCiAg
ICAgY19wcmV0dHlfcHJpbnRlciBwcDsKICAgICB0cmVlIHQ7CnsKICBvdXRwdXRfdmVyYmF0aW0g
KChwcCktPmJhc2UuYnVmZmVyLCAiI2Alcycgbm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2Nv
ZGVfbmFtZVsoaW50KSAoKGVudW0gdHJlZV9jb2RlKSAodCktPmNvbW1vbi5jb2RlKV0sIF9fRlVO
Q1RJT05fXyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcHBfY19kZWNsYXJhdG9yIChwcCwg
dCkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwOwogICAgIHRyZWUgdDsKewogIG91dHB1dF92ZXJi
YXRpbSAoKHBwKS0+YmFzZS5idWZmZXIsICIjYCVzJyBub3Qgc3VwcG9ydGVkIGJ5ICVzIyIsIHRy
ZWVfY29kZV9uYW1lWyhpbnQpICgoZW51bSB0cmVlX2NvZGUpICh0KS0+Y29tbW9uLmNvZGUpXSwg
X19GVU5DVElPTl9fKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2luaXRfZGVjbGFy
YXRvciAocHAsIHQpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcDsKICAgICB0cmVlIHQ7CnsKICAo
KihwcCktPmRlY2xhcmF0b3IpICgocHApLCB0KTsKICBpZiAoKCh0KS0+ZGVjbC5pbml0aWFsKSkK
ICAgIHsKICAgICAgb3V0cHV0X2FkZF9zcGFjZSAoKHBwKS0+YmFzZS5idWZmZXIpOwogICAgICBv
dXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwKS0+YmFzZS5idWZmZXIsICc9Jyk7CiAgICAgIG91dHB1
dF9hZGRfc3BhY2UgKChwcCktPmJhc2UuYnVmZmVyKTsKICAgICAgcHBfY19pbml0aWFsaXplciAo
cHAsICgodCktPmRlY2wuaW5pdGlhbCkpOwogICAgfQp9Cgp2b2lkCnBwX2NfZGVjbGFyYXRpb24g
KHBwLCB0KQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHA7CiAgICAgdHJlZSB0Owp7CiAgKCoocHAp
LT5kZWNsYXJhdGlvbl9zcGVjaWZpZXJzKSAoKHBwKSwgdCk7CiAgcHBfY19pbml0X2RlY2xhcmF0
b3IgKHBwLCB0KTsKfQoKc3RhdGljIHZvaWQKcHBfY19wYXJhbWV0ZXJfZGVjbGFyYXRpb24gKHBw
LCB0KQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHA7CiAgICAgdHJlZSB0Owp7CiAgb3V0cHV0X3Zl
cmJhdGltICgocHApLT5iYXNlLmJ1ZmZlciwgIiNgJXMnIG5vdCBzdXBwb3J0ZWQgYnkgJXMjIiwg
dHJlZV9jb2RlX25hbWVbKGludCkgKChlbnVtIHRyZWVfY29kZSkgKHQpLT5jb21tb24uY29kZSld
LCBfX0ZVTkNUSU9OX18pOwp9CgoKdm9pZApwcF9jX2F0dHJpYnV0ZXMgKHBwLCBhdHRyaWJ1dGVz
KQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHA7CiAgICAgdHJlZSBhdHRyaWJ1dGVzOwp7CiAgaWYg
KGF0dHJpYnV0ZXMgPT0gKHRyZWUpICgodm9pZCAqKTApKQogICAgcmV0dXJuOwoKICBkbyB7IGRv
IHsgaWYgKChwcCktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3Bh
Y2UgKChwcCktPmJhc2UuYnVmZmVyKTsgKHBwKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3
aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwKS0+YmFzZS5idWZm
ZXIsICJfX2F0dHJpYnV0ZV9fIik7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3
aGlsZSAoMCk7CiAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwKS0+YmFzZS5idWZmZXIs
ICcoJyk7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogIGRvIHsg
b3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcCktPmJhc2UuYnVmZmVyLCAnKCcpOyAocHApLT5iYXNl
LnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICBmb3IgKDsgYXR0cmlidXRlcyAhPSAo
dHJlZSkgKCh2b2lkICopMCk7IGF0dHJpYnV0ZXMgPSAoKGF0dHJpYnV0ZXMpLT5jb21tb24uY2hh
aW4pKQogICAgewogICAgICBvdXRwdXRfYWRkX3N0cmluZyAoKHBwKS0+YmFzZS5idWZmZXIsICgo
Y29uc3QgY2hhciAqKSAoKChhdHRyaWJ1dGVzKS0+bGlzdC5wdXJwb3NlKSktPmlkZW50aWZpZXIu
aWQuc3RyKSk7CiAgICAgIGlmICgoKGF0dHJpYnV0ZXMpLT5saXN0LnZhbHVlKSkKIHsKICAgZG8g
eyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwKS0+YmFzZS5idWZmZXIsICcoJyk7IChwcCktPmJh
c2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICBwcF9jX2V4cHJlc3Npb25fbGlz
dCAocHAsICgoYXR0cmlidXRlcyktPmxpc3QudmFsdWUpKTsKICAgZG8geyBvdXRwdXRfYWRkX2No
YXJhY3RlciAoKHBwKS0+YmFzZS5idWZmZXIsICcpJyk7IChwcCktPmJhc2UucGFkZGluZyA9IHBw
X25vbmU7IH0gd2hpbGUgKDApOwogfQoKICAgICAgaWYgKCgoYXR0cmlidXRlcyktPmNvbW1vbi5j
aGFpbikpCiBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHApLT5iYXNlLmJ1ZmZlciwgJywn
KTsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgwKTsKICAg
IH0KICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHApLT5iYXNlLmJ1ZmZlciwgJyknKTsg
KHBwKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgZG8geyBvdXRwdXRf
YWRkX2NoYXJhY3RlciAoKHBwKS0+YmFzZS5idWZmZXIsICcpJyk7IChwcCktPmJhc2UucGFkZGlu
ZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwp9CgoKCgoKc3RhdGljIHZvaWQKcHBfY19jaGFyIChw
cGksIGMpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgaW50IGM7CnsKICBzd2l0Y2gg
KGMpCiAgICB7CiAgICBjYXNlIDAxMjoKICAgICAgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5i
YXNlLmJ1ZmZlciwgIlxcbiIpOwogICAgICBicmVhazsKICAgIGNhc2UgMDExOgogICAgICBvdXRw
dXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiXFx0Iik7CiAgICAgIGJyZWFrOwog
ICAgY2FzZSAwMTM6CiAgICAgIG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIs
ICJcXHYiKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDAxMDoKICAgICAgb3V0cHV0X2FkZF9zdHJp
bmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgIlxcYiIpOwogICAgICBicmVhazsKICAgIGNhc2UgMDE1
OgogICAgICBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiXFxyIik7CiAg
ICAgIGJyZWFrOwogICAgY2FzZSAwMTQ6CiAgICAgIG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+
YmFzZS5idWZmZXIsICJcXGYiKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDAwNzoKICAgICAgb3V0
cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgIlxcYSIpOwogICAgICBicmVhazsK
ICAgIGNhc2UgJ1xcJzoKICAgICAgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZl
ciwgIlxcXFwiKTsKICAgICAgYnJlYWs7CiAgICBjYXNlICdcJyc6CiAgICAgIG91dHB1dF9hZGRf
c3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICJcXCciKTsKICAgICAgYnJlYWs7CiAgICBjYXNl
ICdcIic6CiAgICAgIG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICJcXFwi
Iik7CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgaWYgKChfc2NoX2lzdGFibGVbKGMp
ICYgMHhmZl0gJiAodW5zaWduZWQgc2hvcnQpKF9zY2hfaXNwcmludCkpKQogb3V0cHV0X2FkZF9j
aGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgYyk7CiAgICAgIGVsc2UKIGRvIHsgc3ByaW50
ZiAoKChwcGkpLT5iYXNlLmJ1ZmZlciktPmRpZ2l0X2J1ZmZlciwgIlxcJTAzbyIsICh1bnNpZ25l
ZCkgYyk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICgocHBpKS0+YmFz
ZS5idWZmZXIpLT5kaWdpdF9idWZmZXIpOyB9IHdoaWxlICgwKTsKICAgICAgYnJlYWs7CiAgICB9
Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCnBwX2Nfc3RyaW5nX2xpdGVyYWwgKHBwaSwgcykK
ICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIHM7CnsKICBjb25zdCBjaGFyICpw
ID0gKChzKS0+c3RyaW5nLnBvaW50ZXIpOwogIGludCBuID0gKChzKS0+c3RyaW5nLmxlbmd0aCkg
LSAxOwogIGludCBpOwogIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIs
ICciJyk7CiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkKICAgIHBwX2NfY2hhciAocHBpLCBwW2ld
KTsKICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnIicpOwp9CgoK
c3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2NoYXJhY3Rlcl9saXRlcmFsIChwcGksIGMpCiAg
ICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBjOwp7CiAgb3V0cHV0X2FkZF9jaGFy
YWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJ1wnJyk7CiAgcHBfY19jaGFyIChwcGksIHRyZWVf
bG93X2NzdCAoYywgMCkpOwogIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZm
ZXIsICdcJycpOwp9CgoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2Jvb2xfbGl0ZXJhbCAo
cHBpLCBiKQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHBpOwogICAgIHRyZWUgYjsKewogIGlmIChi
ID09IGNfZ2xvYmFsX3RyZWVzW0NUSV9CT09MRUFOX0ZBTFNFXSB8fCBpbnRlZ2VyX3plcm9wIChi
KSkKICAgIHsKICAgICAgaWYgKGNfbGFuZ3VhZ2UgPT0gY2xrX2NwbHVzcGx1cykKIGRvIHsgZG8g
eyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3Bh
Y2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9
IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5i
dWZmZXIsICJmYWxzZSIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxl
ICgwKTsKICAgICAgZWxzZSBpZiAoY19sYW5ndWFnZSA9PSBjbGtfYyAmJiBmbGFnX2lzb2M5OSkK
IGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1
dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBw
cF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBp
KS0+YmFzZS5idWZmZXIsICJfRmFsc2UiKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9y
ZTsgfSB3aGlsZSAoMCk7CiAgICAgIGVsc2UKIG91dHB1dF92ZXJiYXRpbSAoKHBwaSktPmJhc2Uu
YnVmZmVyLCAiI2Alcycgbm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVfbmFtZVsoaW50
KSAoKGVudW0gdHJlZV9jb2RlKSAoYiktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJT05fXyk7CiAg
ICB9CiAgZWxzZSBpZiAoYiA9PSBjX2dsb2JhbF90cmVlc1tDVElfQk9PTEVBTl9UUlVFXSkKICAg
IHsKICAgICAgaWYgKGNfbGFuZ3VhZ2UgPT0gY2xrX2NwbHVzcGx1cykKIGRvIHsgZG8geyBpZiAo
KHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChw
cGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxl
ICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIs
ICJ0cnVlIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwog
ICAgICBlbHNlIGlmIChjX2xhbmd1YWdlID09IGNsa19jICYmIGZsYWdfaXNvYzk5KQogZG8geyBk
byB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9z
cGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7
IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNl
LmJ1ZmZlciwgIl9UcnVlIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hp
bGUgKDApOwogICAgICBlbHNlCiBvdXRwdXRfdmVyYmF0aW0gKChwcGkpLT5iYXNlLmJ1ZmZlciwg
IiNgJXMnIG5vdCBzdXBwb3J0ZWQgYnkgJXMjIiwgdHJlZV9jb2RlX25hbWVbKGludCkgKChlbnVt
IHRyZWVfY29kZSkgKGIpLT5jb21tb24uY29kZSldLCBfX0ZVTkNUSU9OX18pOwogICAgfQogIGVs
c2UKICAgIG91dHB1dF92ZXJiYXRpbSAoKHBwaSktPmJhc2UuYnVmZmVyLCAiI2Alcycgbm90IHN1
cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVfbmFtZVsoaW50KSAoKGVudW0gdHJlZV9jb2RlKSAo
YiktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJT05fXyk7Cn0KCgoKCgpzdGF0aWMgX0Jvb2wKcHBf
Y19lbnVtZXJhdG9yIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJl
ZSBlOwp7CiAgdHJlZSB0eXBlID0gKChlKS0+Y29tbW9uLnR5cGUpOwogIHRyZWUgdmFsdWU7CgoK
ICBmb3IgKHZhbHVlID0gKCh0eXBlKS0+dHlwZS52YWx1ZXMpOwogICAgICAgdmFsdWUgIT0gKHRy
ZWUpICgodm9pZCAqKTApICYmICF0cmVlX2ludF9jc3RfZXF1YWwgKCgodmFsdWUpLT5saXN0LnZh
bHVlKSwgZSk7CiAgICAgICB2YWx1ZSA9ICgodmFsdWUpLT5jb21tb24uY2hhaW4pKQogICAgOwoK
ICBpZiAodmFsdWUgIT0gKHRyZWUpICgodm9pZCAqKTApKQogICAgZG8geyBkbyB7IGlmICgocHBp
KS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSkt
PmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDAp
OyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgKChj
b25zdCBjaGFyICopICgoKHZhbHVlKS0+bGlzdC5wdXJwb3NlKSktPmlkZW50aWZpZXIuaWQuc3Ry
KSk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogIGVsc2UK
ICAgIHsKCiAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZl
ciwgJygnKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAg
ICAoKihwcGkpLT50eXBlX2lkKSAoKHBwaSksIHR5cGUpOwogICAgICBkbyB7IG91dHB1dF9hZGRf
Y2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcpJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcg
PSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcmV0dXJuIDA7CiAgICB9CgogIHJldHVybiAx
Owp9CgoKc3RhdGljIHZvaWQKcHBfY19pbnRlZ2VyX2xpdGVyYWwgKHBwaSwgaSkKICAgICBjX3By
ZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGk7CnsKICB0cmVlIHR5cGUgPSAoKGkpLT5jb21t
b24udHlwZSk7CgogIGlmICh0eXBlID09IGNfZ2xvYmFsX3RyZWVzW0NUSV9CT09MRUFOX1RZUEVd
KQogICAgcHBfY19ib29sX2xpdGVyYWwgKHBwaSwgaSk7CiAgZWxzZSBpZiAodHlwZSA9PSBpbnRl
Z2VyX3R5cGVzW2l0a19jaGFyXSkKICAgIHBwX2NfY2hhcmFjdGVyX2xpdGVyYWwgKHBwaSwgaSk7
CiAgZWxzZSBpZiAoKChlbnVtIHRyZWVfY29kZSkgKHR5cGUpLT5jb21tb24uY29kZSkgPT0gRU5V
TUVSQUxfVFlQRQogICAgJiYgcHBfY19lbnVtZXJhdG9yIChwcGksIGkpKQogICAgOwogIGVsc2UK
ICAgIHsKICAgICAgaWYgKGhvc3RfaW50ZWdlcnAgKGksIDApKQogZG8geyBzcHJpbnRmICgoKHBw
aSktPmJhc2UuYnVmZmVyKS0+ZGlnaXRfYnVmZmVyLCAiJWxkIiwgKGxvbmcpICgoKGkpLT5pbnRf
Y3N0LmludF9jc3QpLmxvdykpOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVy
LCAoKHBwaSktPmJhc2UuYnVmZmVyKS0+ZGlnaXRfYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAg
IGVsc2UKIHsKICAgaWYgKHRyZWVfaW50X2NzdF9zZ24gKGkpIDwgMCkKICAgICB7CiAgICAgICBz
dGF0aWMgY2hhciBmb3JtYXRbMTBdOwogICAgICAgaWYgKCFmb3JtYXRbMF0pCiAgc3ByaW50ZiAo
Zm9ybWF0LCAiJSV4JSUwJWR4IiwgKDggKiA0KSAvIDQpOwoKICAgICAgIHBwX2NfY2hhciAocHBp
LCAnLScpOwogICAgICAgaSA9IGJ1aWxkX2ludF8yX3dpZGUgKCh1bnNpZ25lZCBsb25nKSAoLSgo
KGkpLT5pbnRfY3N0LmludF9jc3QpLmxvdykpLCAobG9uZykgKH4oKChpKS0+aW50X2NzdC5pbnRf
Y3N0KS5oaWdoKSArICEoKChpKS0+aW50X2NzdC5pbnRfY3N0KS5sb3cpKSk7CgogICAgICAgc3By
aW50ZiAoKHBwaSktPmJhc2UuYnVmZmVyLT5kaWdpdF9idWZmZXIsIGZvcm1hdCwKICAgICAgICAg
KCgoaSktPmludF9jc3QuaW50X2NzdCkuaGlnaCksICgoKGkpLT5pbnRfY3N0LmludF9jc3QpLmxv
dykpOwogICAgICAgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgKHBwaSkt
PmJhc2UuYnVmZmVyLT5kaWdpdF9idWZmZXIpOwoKICAgICB9CiB9CiAgICB9Cn0KCgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkCnBwX2NfcmVhbF9saXRlcmFsIChwcGksIHIpCiAgICAgY19wcmV0dHlf
cHJpbnRlciBwcGk7CiAgICAgdHJlZSByOwp7CiAgcmVhbF90b19kZWNpbWFsICgocHBpKS0+YmFz
ZS5idWZmZXItPmRpZ2l0X2J1ZmZlciwgJigqKChyKS0+cmVhbF9jc3QucmVhbF9jc3RfcHRyKSks
CiAgICAgc2l6ZW9mICgocHBpKS0+YmFzZS5idWZmZXItPmRpZ2l0X2J1ZmZlciksIDAsIDEpOwog
IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIChwcGkpLT5iYXNlLmJ1ZmZl
ci0+ZGlnaXRfYnVmZmVyKTsKfQoKCnZvaWQKcHBfY19saXRlcmFsIChwcGksIGUpCiAgICAgY19w
cmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgc3dpdGNoICgoKGVudW0gdHJlZV9j
b2RlKSAoZSktPmNvbW1vbi5jb2RlKSkKICAgIHsKICAgIGNhc2UgSU5URUdFUl9DU1Q6CiAgICAg
IHBwX2NfaW50ZWdlcl9saXRlcmFsIChwcGksIGUpOwogICAgICBicmVhazsKCiAgICBjYXNlIFJF
QUxfQ1NUOgogICAgICBwcF9jX3JlYWxfbGl0ZXJhbCAocHBpLCBlKTsKICAgICAgYnJlYWs7Cgog
ICAgY2FzZSBTVFJJTkdfQ1NUOgogICAgICBwcF9jX3N0cmluZ19saXRlcmFsIChwcGksIGUpOwog
ICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAgICBvdXRwdXRfdmVyYmF0aW0gKChwcGkpLT5i
YXNlLmJ1ZmZlciwgIiNgJXMnIG5vdCBzdXBwb3J0ZWQgYnkgJXMjIiwgdHJlZV9jb2RlX25hbWVb
KGludCkgKChlbnVtIHRyZWVfY29kZSkgKGUpLT5jb21tb24uY29kZSldLCBfX0ZVTkNUSU9OX18p
OwogICAgICBicmVhazsKICAgIH0KfQoKCnN0YXRpYyB2b2lkCnBwX2NfcHJpbWFyeV9leHByZXNz
aW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAg
c3dpdGNoICgoKGVudW0gdHJlZV9jb2RlKSAoZSktPmNvbW1vbi5jb2RlKSkKICAgIHsKICAgIGNh
c2UgVkFSX0RFQ0w6CiAgICBjYXNlIFBBUk1fREVDTDoKICAgIGNhc2UgRklFTERfREVDTDoKICAg
IGNhc2UgQ09OU1RfREVDTDoKICAgIGNhc2UgRlVOQ1RJT05fREVDTDoKICAgIGNhc2UgTEFCRUxf
REVDTDoKICAgICAgZSA9ICgoZSktPmRlY2wubmFtZSk7CgogICAgY2FzZSBJREVOVElGSUVSX05P
REU6CiAgICAgIGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBk
byB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBh
ZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3Ry
aW5nICgocHBpKS0+YmFzZS5idWZmZXIsICgoY29uc3QgY2hhciAqKSAoZSktPmlkZW50aWZpZXIu
aWQuc3RyKSk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwog
ICAgICBicmVhazsKCiAgICBjYXNlIEVSUk9SX01BUks6CiAgICAgIGRvIHsgZG8geyBpZiAoKHBw
aSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkp
LT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgw
KTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICI8
ZXJyb25lb3VzLWV4cHJlc3Npb24+Iik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7
IH0gd2hpbGUgKDApOwogICAgICBicmVhazsKCiAgICBjYXNlIFJFU1VMVF9ERUNMOgogICAgICBk
byB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRf
YWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBf
bm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSkt
PmJhc2UuYnVmZmVyLCAiPHJldHVybi12YWx1ZT4iKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBw
X2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgSU5URUdFUl9DU1Q6
CiAgICBjYXNlIFJFQUxfQ1NUOgogICAgY2FzZSBTVFJJTkdfQ1NUOgogICAgICBwcF9jX2xpdGVy
YWwgKHBwaSwgZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgVEFSR0VUX0VYUFI6CiAgICAgIGRv
IHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSkt
PmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAgICBkbyB7IGRvIHsgaWYg
KChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgo
cHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGls
ZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVy
LCAiX19idWlsdGluX21lbWNweSIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9
IHdoaWxlICgwKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu
YnVmZmVyLCAnKCcpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7
CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcmJyk7CiAg
ICAgIHBwX2NfcHJpbWFyeV9leHByZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1swXSkp
OwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcs
Jyk7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDApOwog
ICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnJicpOwogICAg
ICAoKihwcGkpLT5pbml0aWFsaXplcikgKChwcGkpLCAoKGUpLT5leHAub3BlcmFuZHNbMV0pKTsK
ICAgICAgaWYgKCgoZSktPmV4cC5vcGVyYW5kc1syXSkpCiB7CiAgIGRvIHsgb3V0cHV0X2FkZF9j
aGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJywnKTsgb3V0cHV0X2FkZF9zcGFjZSAoKHBw
aSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgIHBwX2NfZXhwcmVzc2lvbiAocHBpLCAo
KGUpLT5leHAub3BlcmFuZHNbMl0pKTsKIH0KICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3Rl
ciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnKScpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9u
ZTsgfSB3aGlsZSAoMCk7CgogICAgY2FzZSBTVE1UX0VYUFI6CiAgICAgIGRvIHsgb3V0cHV0X2Fk
ZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSktPmJhc2UucGFkZGlu
ZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAgICAoKihwcGkpLT5zdGF0ZW1lbnQpICgocHBp
KSwgKCgoZSkpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJh
Y3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnKScpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBf
bm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CgogICAgICBkbyB7
IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcoJyk7IChwcGkpLT5i
YXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcHBfY19leHByZXNzaW9u
IChwcGksIGUpOwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5i
dWZmZXIsICcpJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsK
ICAgICAgYnJlYWs7CiAgICB9Cn0KCgp2b2lkCnBwX2NfaW5pdGlhbGl6ZXIgKHBwaSwgZSkKICAg
ICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICBpZiAoKChlbnVtIHRyZWVf
Y29kZSkgKGUpLT5jb21tb24uY29kZSkgPT0gQ09OU1RSVUNUT1IpCiAgICB7CiAgICAgIGVudW0g
dHJlZV9jb2RlIGNvZGUgPSAoKGVudW0gdHJlZV9jb2RlKSAoKChlKS0+Y29tbW9uLnR5cGUpKS0+
Y29tbW9uLmNvZGUpOwogICAgICBpZiAoY29kZSA9PSBSRUNPUkRfVFlQRSB8fCBjb2RlID09IFVO
SU9OX1RZUEUgfHwgY29kZSA9PSBBUlJBWV9UWVBFKQogewogICBvdXRwdXRfYWRkX2NoYXJhY3Rl
ciAoKHBwaSktPmJhc2UuYnVmZmVyLCAneycpOwogICBwcF9jX2luaXRpYWxpemVyX2xpc3QgKHBw
aSwgZSk7CiAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICd9Jyk7
CiB9CiAgICAgIGVsc2UKIG91dHB1dF92ZXJiYXRpbSAoKHBwaSktPmJhc2UuYnVmZmVyLCAiI2Al
cycgbm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVfbmFtZVsoaW50KSAoKGVudW0gdHJl
ZV9jb2RlKSAoKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJ
T05fXyk7CiAgICB9CiAgZWxzZQogICAgKCoocHBpKS0+YXNzaWdubWVudF9leHByZXNzaW9uKSAo
KHBwaSksIGUpOwp9CgpzdGF0aWMgdm9pZApwcF9jX2luaXRpYWxpemVyX2xpc3QgKHBwaSwgZSkK
ICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICB0cmVlIHR5cGUgPSAo
KGUpLT5jb21tb24udHlwZSk7CiAgY29uc3QgZW51bSB0cmVlX2NvZGUgY29kZSA9ICgoZW51bSB0
cmVlX2NvZGUpICh0eXBlKS0+Y29tbW9uLmNvZGUpOwoKICBpZiAoY29kZSA9PSBSRUNPUkRfVFlQ
RSB8fCBjb2RlID09IFVOSU9OX1RZUEUgfHwgY29kZSA9PSBBUlJBWV9UWVBFKQogICAgewogICAg
ICB0cmVlIGluaXQgPSAoKGUpLT5leHAub3BlcmFuZHNbMV0pOwogICAgICBmb3IgKDsgaW5pdCAh
PSAodHJlZSkgKCh2b2lkICopMCk7IGluaXQgPSAoKGluaXQpLT5jb21tb24uY2hhaW4pKQogewog
ICBpZiAoY29kZSA9PSBSRUNPUkRfVFlQRSB8fCBjb2RlID09IFVOSU9OX1RZUEUpCiAgICAgewog
ICAgICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJy4nKTsKICAg
ICAgIHBwX2NfcHJpbWFyeV9leHByZXNzaW9uIChwcGksICgoaW5pdCktPmxpc3QucHVycG9zZSkp
OwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIg
KChwcGkpLT5iYXNlLmJ1ZmZlciwgJ1snKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7
IH0gd2hpbGUgKDApOwogICAgICAgaWYgKCgoaW5pdCktPmxpc3QucHVycG9zZSkpCiAgcHBfY19s
aXRlcmFsIChwcGksICgoaW5pdCktPmxpc3QucHVycG9zZSkpOwogICAgICAgZG8geyBvdXRwdXRf
YWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnXScpOyAocHBpKS0+YmFzZS5wYWRk
aW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgfQogICBkbyB7IG91dHB1dF9hZGRfc3Bh
Y2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9
IHdoaWxlICgwKTsKICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwg
Jz0nKTsKICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBp
KS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICgqKHBwaSktPmluaXRp
YWxpemVyKSAoKHBwaSksICgoaW5pdCktPmxpc3QudmFsdWUpKTsKICAgaWYgKCgoaW5pdCktPmNv
bW1vbi5jaGFpbikpCiAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu
YnVmZmVyLCAnLCcpOyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdo
aWxlICgwKTsKIH0KICAgIH0KICBlbHNlCiAgICBvdXRwdXRfdmVyYmF0aW0gKChwcGkpLT5iYXNl
LmJ1ZmZlciwgIiNgJXMnIG5vdCBzdXBwb3J0ZWQgYnkgJXMjIiwgdHJlZV9jb2RlX25hbWVbKGlu
dCkgKChlbnVtIHRyZWVfY29kZSkgKHR5cGUpLT5jb21tb24uY29kZSldLCBfX0ZVTkNUSU9OX18p
Owp9Cgp2b2lkCnBwX2NfcG9zdGZpeF9leHByZXNzaW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlf
cHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgZW51bSB0cmVlX2NvZGUgY29kZSA9ICgoZW51
bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpOwogIHN3aXRjaCAoY29kZSkKICAgIHsKICAg
IGNhc2UgUE9TVElOQ1JFTUVOVF9FWFBSOgogICAgY2FzZSBQT1NUREVDUkVNRU5UX0VYUFI6CiAg
ICAgICgqKHBwaSktPnBvc3RmaXhfZXhwcmVzc2lvbikgKChwcGkpLCAoKGUpLT5leHAub3BlcmFu
ZHNbMF0pKTsKICAgICAgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgY29k
ZSA9PSBQT1NUSU5DUkVNRU5UX0VYUFIgPyAiKysiIDogIi0tIik7CiAgICAgIGJyZWFrOwoKICAg
IGNhc2UgQVJST1dfRVhQUjoKICAgICAgKCoocHBpKS0+cG9zdGZpeF9leHByZXNzaW9uKSAoKHBw
aSksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBvdXRwdXRfYWRkX3N0cmluZyAoKHBw
aSktPmJhc2UuYnVmZmVyLCAiLT4iKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBBUlJBWV9SRUY6
CiAgICAgICgqKHBwaSktPnBvc3RmaXhfZXhwcmVzc2lvbikgKChwcGkpLCAoKGUpLT5leHAub3Bl
cmFuZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu
YnVmZmVyLCAnWycpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7
CiAgICAgIHBwX2NfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMV0pKTsKICAg
ICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnXScpOyAo
cHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIGJyZWFrOwoK
ICAgIGNhc2UgQ0FMTF9FWFBSOgogICAgICAoKihwcGkpLT5wb3N0Zml4X2V4cHJlc3Npb24pICgo
cHBpKSwgKChlKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFy
YWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBw
X25vbmU7IH0gd2hpbGUgKDApOwogICAgICBwcF9jX2V4cHJlc3Npb25fbGlzdCAocHBpLCAoKGUp
LT5leHAub3BlcmFuZHNbMV0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBw
aSktPmJhc2UuYnVmZmVyLCAnKScpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3
aGlsZSAoMCk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgQUJTX0VYUFI6CiAgICBjYXNlIEZGU19F
WFBSOgogICAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkg
ZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5w
YWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0
cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCBjb2RlID09IEFCU19FWFBSID8gIl9fYnVpbHRpbl9h
YnMiIDogIl9fYnVpbHRpbl9mZnMiKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsg
fSB3aGlsZSAoMCk7CgogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFz
ZS5idWZmZXIsICcoJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgw
KTsKICAgICAgcHBfY19leHByZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwog
ICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcpJyk7
IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgYnJlYWs7
CgogICAgY2FzZSBDT01QT05FTlRfUkVGOgogICAgICB7CiB0cmVlIG9iamVjdCA9ICgoZSktPmV4
cC5vcGVyYW5kc1swXSk7CiBpZiAoKChlbnVtIHRyZWVfY29kZSkgKG9iamVjdCktPmNvbW1vbi5j
b2RlKSA9PSBJTkRJUkVDVF9SRUYpCiAgIHsKICAgICAoKihwcGkpLT5wb3N0Zml4X2V4cHJlc3Np
b24pICgocHBpKSwgKChvYmplY3QpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICBvdXRwdXRfYWRk
X3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiLT4iKTsKICAgfQogZWxzZQogICB7CiAgICAg
KCoocHBpKS0+cG9zdGZpeF9leHByZXNzaW9uKSAoKHBwaSksIG9iamVjdCk7CiAgICAgb3V0cHV0
X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJy4nKTsKICAgfQogcHBfY19leHBy
ZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICB9CiAgICAgIGJyZWFr
OwoKICAgIGNhc2UgQ09NUExFWF9DU1Q6CiAgICBjYXNlIFZFQ1RPUl9DU1Q6CiAgICBjYXNlIENP
TVBMRVhfRVhQUjoKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu
YnVmZmVyLCAnKCcpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7
CiAgICAgICgqKHBwaSktPnR5cGVfaWQpICgocHBpKSwgKChlKS0+Y29tbW9uLnR5cGUpKTsKICAg
ICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnKScpOyAo
cHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9h
ZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICd7Jyk7CgogICAgICBpZiAoY29kZSA9
PSBDT01QTEVYX0NTVCkKIHsKICAgcHBfY19leHByZXNzaW9uIChwcGksICgoZSktPmNvbXBsZXgu
cmVhbCkpOwogICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIs
ICcsJyk7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDAp
OwogICBwcF9jX2V4cHJlc3Npb24gKHBwaSwgKChlKS0+Y29tcGxleC5pbWFnKSk7CiB9CiAgICAg
IGVsc2UgaWYgKGNvZGUgPT0gVkVDVE9SX0NTVCkKIHBwX2NfZXhwcmVzc2lvbl9saXN0IChwcGks
ICgoZSktPnZlY3Rvci5lbGVtZW50cykpOwogICAgICBlbHNlIGlmIChjb2RlID09IENPTVBMRVhf
RVhQUikKIHsKICAgcHBfY19leHByZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1swXSkp
OwogICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcsJyk7
IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDApOwogICBw
cF9jX2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiB9CgogICAgICBv
dXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnfScpOwogICAgICBicmVh
azsKCiAgICBjYXNlIENPTVBPVU5EX0xJVEVSQUxfRVhQUjoKICAgICAgZSA9ICgoZSktPmRlY2wu
aW5pdGlhbCk7CgogICAgY2FzZSBDT05TVFJVQ1RPUjoKICAgICAgKCoocHBpKS0+aW5pdGlhbGl6
ZXIpICgocHBpKSwgZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgVkFfQVJHX0VYUFI6CiAgICAg
IGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1
dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBw
cF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBp
KS0+YmFzZS5idWZmZXIsICJfX2J1aWx0aW5fdmFfYXJnIik7IChwcGkpLT5iYXNlLnBhZGRpbmcg
PSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVy
ICgocHBpKS0+YmFzZS5idWZmZXIsICcoJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25l
OyB9IHdoaWxlICgwKTsKICAgICAgKCoocHBpKS0+YXNzaWdubWVudF9leHByZXNzaW9uKSAoKHBw
aSksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFj
dGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcsJyk7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5i
YXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDApOwogICAgICAoKihwcGkpLT50eXBlX2lkKSAoKHBwaSks
ICgoZSktPmNvbW1vbi50eXBlKSk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChw
cGkpLT5iYXNlLmJ1ZmZlciwgJyknKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0g
d2hpbGUgKDApOwogICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAgICAoKihwcGkpLT5wcmlt
YXJ5X2V4cHJlc3Npb24pICgocHBpKSwgZSk7CiAgICAgIGJyZWFrOwogICAgfQp9CgoKdm9pZApw
cF9jX2V4cHJlc3Npb25fbGlzdCAocHBpLCBlKQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHBpOwog
ICAgIHRyZWUgZTsKewogIGZvciAoOyBlICE9ICh0cmVlKSAoKHZvaWQgKikwKTsgZSA9ICgoZSkt
PmNvbW1vbi5jaGFpbikpCiAgICB7CiAgICAgIHBwX2NfYXNzaWdubWVudF9leHByZXNzaW9uIChw
cGksICgoZSktPmxpc3QudmFsdWUpKTsKICAgICAgaWYgKCgoZSktPmNvbW1vbi5jaGFpbikpCiBk
byB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcsJyk7IG91dHB1
dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDApOwogICAgfQp9Cgpz
dGF0aWMgdm9pZApwcF9jX3VuYXJ5X2V4cHJlc3Npb24gKHBwaSwgZSkKICAgICBjX3ByZXR0eV9w
cmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICBlbnVtIHRyZWVfY29kZSBjb2RlID0gKChlbnVt
IHRyZWVfY29kZSkgKGUpLT5jb21tb24uY29kZSk7CiAgc3dpdGNoIChjb2RlKQogICAgewogICAg
Y2FzZSBQUkVJTkNSRU1FTlRfRVhQUjoKICAgIGNhc2UgUFJFREVDUkVNRU5UX0VYUFI6CiAgICAg
IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGNvZGUgPT0gUFJFSU5DUkVN
RU5UX0VYUFIgPyAiKysiIDogIi0tIik7CiAgICAgIHBwX2NfdW5hcnlfZXhwcmVzc2lvbiAocHBp
LCAoKGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBBRERSX0VY
UFI6CiAgICBjYXNlIElORElSRUNUX1JFRjoKICAgIGNhc2UgQ09OVkVSVF9FWFBSOgogICAgY2Fz
ZSBORUdBVEVfRVhQUjoKICAgIGNhc2UgQklUX05PVF9FWFBSOgogICAgY2FzZSBUUlVUSF9OT1Rf
RVhQUjoKICAgIGNhc2UgQ09OSl9FWFBSOgogICAgICBpZiAoY29kZSA9PSBBRERSX0VYUFIpCiBv
dXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnJicpOwogICAgICBlbHNl
IGlmIChjb2RlID09IElORElSRUNUX1JFRikKIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+
YmFzZS5idWZmZXIsICcqJyk7CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gTkVHQVRFX0VYUFIpCiBv
dXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnLScpOwogICAgICBlbHNl
IGlmIChjb2RlID09IEJJVF9OT1RfRVhQUiB8fCBjb2RlID09IENPTkpfRVhQUikKIG91dHB1dF9h
ZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICd+Jyk7CiAgICAgIGVsc2UgaWYgKGNv
ZGUgPT0gVFJVVEhfTk9UX0VYUFIpCiBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu
YnVmZmVyLCAnIScpOwogICAgICBwcF9jX2Nhc3RfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAu
b3BlcmFuZHNbMF0pKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTSVpFT0ZfRVhQUjoKICAgIGNh
c2UgQUxJR05PRl9FWFBSOgogICAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcg
IT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAo
cHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBv
dXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCBjb2RlID09IFNJWkVPRl9FWFBS
ID8gInNpemVvZiIgOiAiX19hbGlnbm9mX18iKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2Jl
Zm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJh
c2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwog
ICAgICBpZiAoKHRyZWVfY29kZV90eXBlWyhpbnQpICgoKGVudW0gdHJlZV9jb2RlKSAoKChlKS0+
ZXhwLm9wZXJhbmRzWzBdKSktPmNvbW1vbi5jb2RlKSldID09ICd0JykpCiB7CiAgIGRvIHsgb3V0
cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSktPmJhc2Uu
cGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAoKihwcGkpLT50eXBlX2lkKSAoKHBw
aSksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVy
ICgocHBpKS0+YmFzZS5idWZmZXIsICcpJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25l
OyB9IHdoaWxlICgwKTsKIH0KICAgICAgZWxzZQogcHBfY191bmFyeV9leHByZXNzaW9uIChwcGks
ICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBicmVhazsKCiAgICBjYXNlIFJFQUxQQVJU
X0VYUFI6CiAgICBjYXNlIElNQUdQQVJUX0VYUFI6CiAgICAgIGRvIHsgZG8geyBpZiAoKHBwaSkt
PmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5i
YXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsg
fSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGNvZGUg
PT0gUkVBTFBBUlRfRVhQUiA/ICJfX3JlYWxfXyIgOiAiX19pbWFnX18iKTsgKHBwaSktPmJhc2Uu
cGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9z
cGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7
IH0gd2hpbGUgKDApOwogICAgICAoKihwcGkpLT51bmFyeV9leHByZXNzaW9uKSAoKHBwaSksICgo
ZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAgICAo
KihwcGkpLT5wb3N0Zml4X2V4cHJlc3Npb24pICgocHBpKSwgZSk7CiAgICAgIGJyZWFrOwogICAg
fQp9Cgp2b2lkCnBwX2NfY2FzdF9leHByZXNzaW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJp
bnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgaWYgKCgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29t
bW9uLmNvZGUpID09IENPTlZFUlRfRVhQUiB8fCAoKGVudW0gdHJlZV9jb2RlKSAoZSktPmNvbW1v
bi5jb2RlKSA9PSBGTE9BVF9FWFBSKQogICAgewogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFj
dGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcoJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9u
b25lOyB9IHdoaWxlICgwKTsKICAgICAgKCoocHBpKS0+dHlwZV9pZCkgKChwcGkpLCAoKGUpLT5j
b21tb24udHlwZSkpOwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFz
ZS5idWZmZXIsICcpJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgw
KTsKICAgICAgcHBfY19jYXN0X2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzBd
KSk7CiAgICB9CiAgZWxzZQogICAgKCoocHBpKS0+dW5hcnlfZXhwcmVzc2lvbikgKChwcGkpLCBl
KTsKfQoKc3RhdGljIHZvaWQKcHBfY19tdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIChwcGksIGUp
CiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgZW51bSB0cmVlX2Nv
ZGUgY29kZSA9ICgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpOwogIHN3aXRjaCAo
Y29kZSkKICAgIHsKICAgIGNhc2UgTVVMVF9FWFBSOgogICAgY2FzZSBUUlVOQ19ESVZfRVhQUjoK
ICAgIGNhc2UgVFJVTkNfTU9EX0VYUFI6CiAgICAgIHBwX2NfbXVsdGlwbGljYXRpdmVfZXhwcmVz
c2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRk
X3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9u
ZTsgfSB3aGlsZSAoMCk7CiAgICAgIGlmIChjb2RlID09IE1VTFRfRVhQUikKIG91dHB1dF9hZGRf
Y2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcqJyk7CiAgICAgIGVsc2UgaWYgKGNvZGUg
PT0gVFJVTkNfRElWX0VYUFIpCiBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVm
ZmVyLCAnLycpOwogICAgICBlbHNlCiBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu
YnVmZmVyLCAnJScpOwogICAgICBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1
ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAg
cHBfY19jYXN0X2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICAg
IGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHBwX2NfY2FzdF9leHByZXNzaW9uIChwcGksIGUp
OwogICAgICBicmVhazsKICAgIH0KfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2FkZGl0
aXZlX2V4cHJlc3Npb24gKHBwaSwgZSkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0
cmVlIGU7CnsKICBlbnVtIHRyZWVfY29kZSBjb2RlID0gKChlbnVtIHRyZWVfY29kZSkgKGUpLT5j
b21tb24uY29kZSk7CiAgc3dpdGNoIChjb2RlKQogICAgewogICAgY2FzZSBQTFVTX0VYUFI6CiAg
ICBjYXNlIE1JTlVTX0VYUFI6CiAgICAgIHBwX2NfYWRkaXRpdmVfZXhwcmVzc2lvbiAocHBpLCAo
KGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBp
KS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAo
MCk7CiAgICAgIGlmIChjb2RlID09IFBMVVNfRVhQUikKIG91dHB1dF9hZGRfY2hhcmFjdGVyICgo
cHBpKS0+YmFzZS5idWZmZXIsICcrJyk7CiAgICAgIGVsc2UKIG91dHB1dF9hZGRfY2hhcmFjdGVy
ICgocHBpKS0+YmFzZS5idWZmZXIsICctJyk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAo
KHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hp
bGUgKDApOwogICAgICAoKihwcGkpLT5tdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uKSAoKHBwaSks
ICgoZSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAg
ICAoKihwcGkpLT5tdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uKSAoKHBwaSksIGUpOwogICAgICBi
cmVhazsKICAgIH0KfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX3NoaWZ0X2V4cHJlc3Np
b24gKHBwaSwgZSkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICBl
bnVtIHRyZWVfY29kZSBjb2RlID0gKChlbnVtIHRyZWVfY29kZSkgKGUpLT5jb21tb24uY29kZSk7
CiAgc3dpdGNoIChjb2RlKQogICAgewogICAgY2FzZSBMU0hJRlRfRVhQUjoKICAgIGNhc2UgUlNI
SUZUX0VYUFI6CiAgICAgIHBwX2Nfc2hpZnRfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3Bl
cmFuZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZm
ZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIG91
dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGNvZGUgPT0gTFNISUZUX0VYUFIg
PyAiPDwiIDogIj4+Iik7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2Uu
YnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAg
ICBwcF9jX2FkZGl0aXZlX2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7
CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHBwX2NfYWRkaXRpdmVfZXhwcmVzc2lv
biAocHBpLCBlKTsKICAgIH0KfQoKc3RhdGljIHZvaWQKcHBfY19yZWxhdGlvbmFsX2V4cHJlc3Np
b24gKHBwaSwgZSkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICBl
bnVtIHRyZWVfY29kZSBjb2RlID0gKChlbnVtIHRyZWVfY29kZSkgKGUpLT5jb21tb24uY29kZSk7
CiAgc3dpdGNoIChjb2RlKQogICAgewogICAgY2FzZSBMVF9FWFBSOgogICAgY2FzZSBHVF9FWFBS
OgogICAgY2FzZSBMRV9FWFBSOgogICAgY2FzZSBHRV9FWFBSOgogICAgICBwcF9jX3JlbGF0aW9u
YWxfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBv
dXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5n
ID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIGlmIChjb2RlID09IExUX0VYUFIpCiBvdXRw
dXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnPCcpOwogICAgICBlbHNlIGlm
IChjb2RlID09IEdUX0VYUFIpCiBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVm
ZmVyLCAnPicpOwogICAgICBlbHNlIGlmIChjb2RlID09IExFX0VYUFIpCiBvdXRwdXRfYWRkX3N0
cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiPD0iKTsKICAgICAgZWxzZSBpZiAoY29kZSA9PSBH
RV9FWFBSKQogb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgIj49Iik7CiAg
ICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJh
c2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAgICBwcF9jX3NoaWZ0X2V4cHJl
c3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICAgIGJyZWFrOwoKICAgIGRl
ZmF1bHQ6CiAgICAgIHBwX2Nfc2hpZnRfZXhwcmVzc2lvbiAocHBpLCBlKTsKICAgICAgYnJlYWs7
CiAgICB9Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcHBfY19lcXVhbGl0eV9leHByZXNzaW9u
IChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgZW51
bSB0cmVlX2NvZGUgY29kZSA9ICgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpOwog
IHN3aXRjaCAoY29kZSkKICAgIHsKICAgIGNhc2UgRVFfRVhQUjoKICAgIGNhc2UgTkVfRVhQUjoK
ICAgICAgcHBfY19lcXVhbGl0eV9leHByZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1sw
XSkpOwogICAgICBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsg
b3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGlu
ZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKICAgICAgb3V0cHV0X2FkZF9z
dHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgY29kZSA9PSBFUV9FWFBSID8gIj09IiA6ICIhPSIp
OwogICAgICBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkp
LT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcHBfY19yZWxhdGlv
bmFsX2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICAgIGJyZWFr
OwoKICAgIGRlZmF1bHQ6CiAgICAgIHBwX2NfcmVsYXRpb25hbF9leHByZXNzaW9uIChwcGksIGUp
OwogICAgICBicmVhazsKICAgIH0KfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2FuZF9l
eHByZXNzaW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBl
Owp7CiAgaWYgKCgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpID09IEJJVF9BTkRf
RVhQUikKICAgIHsKICAgICAgcHBfY19hbmRfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3Bl
cmFuZHNbMF0pKTsKICAgICAgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25l
KSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNl
LnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1
dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcmJyk7CiAgICAgIGRvIHsgb3V0
cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9
IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAgICBwcF9jX2VxdWFsaXR5X2V4cHJlc3Npb24gKHBw
aSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICB9CiAgZWxzZQogICAgcHBfY19lcXVhbGl0
eV9leHByZXNzaW9uIChwcGksIGUpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCnBwX2NfZXhj
bHVzaXZlX29yX2V4cHJlc3Npb24gKHBwaSwgZSkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsK
ICAgICB0cmVlIGU7CnsKICBpZiAoKChlbnVtIHRyZWVfY29kZSkgKGUpLT5jb21tb24uY29kZSkg
PT0gQklUX1hPUl9FWFBSKQogICAgewogICAgICBwcF9jX2V4Y2x1c2l2ZV9vcl9leHByZXNzaW9u
IChwcGksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBkbyB7IGlmICgocHBpKS0+YmFz
ZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2Uu
YnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdo
aWxlICgwKTsKICAgICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwg
J14nKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAo
cHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIHBwX2NfYW5k
X2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICB9CiAgZWxzZQog
ICAgcHBfY19hbmRfZXhwcmVzc2lvbiAocHBpLCBlKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9p
ZApwcF9jX2luY2x1c2l2ZV9vcl9leHByZXNzaW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJp
bnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgaWYgKCgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29t
bW9uLmNvZGUpID09IEJJVF9JT1JfRVhQUikKICAgIHsKICAgICAgcHBfY19leGNsdXNpdmVfb3Jf
ZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBpZiAo
KHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChw
cGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxl
ICgwKTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFz
ZS5idWZmZXIsICd8Jyk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2Uu
YnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAg
ICBwcF9jX2V4Y2x1c2l2ZV9vcl9leHByZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1sx
XSkpOwogICAgfQogIGVsc2UKICAgIHBwX2NfZXhjbHVzaXZlX29yX2V4cHJlc3Npb24gKHBwaSwg
ZSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcHBfY19sb2dpY2FsX2FuZF9leHByZXNzaW9u
IChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgaWYg
KCgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpID09IFRSVVRIX0FORElGX0VYUFIp
CiAgICB7CiAgICAgIHBwX2NfbG9naWNhbF9hbmRfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAu
b3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9u
b25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5i
YXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiAgICAgIG91
dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICImJiIpOwogICAgICBkbyB7IG91
dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcg
PSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcHBfY19pbmNsdXNpdmVfb3JfZXhwcmVzc2lv
biAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMV0pKTsKICAgIH0KICBlbHNlCiAgICBwcF9jX2lu
Y2x1c2l2ZV9vcl9leHByZXNzaW9uIChwcGksIGUpOwp9Cgp2b2lkCnBwX2NfbG9naWNhbF9vcl9l
eHByZXNzaW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBl
Owp7CiAgaWYgKCgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpID09IFRSVVRIX09S
SUZfRVhQUikKICAgIHsKICAgICAgcHBfY19sb2dpY2FsX29yX2V4cHJlc3Npb24gKHBwaSwgKChl
KS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcg
IT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAo
cHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwog
ICAgICBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAifHwiKTsKICAgICAg
ZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5w
YWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIHBwX2NfbG9naWNhbF9hbmRfZXhw
cmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMV0pKTsKICAgIH0KICBlbHNlCiAgICBw
cF9jX2xvZ2ljYWxfYW5kX2V4cHJlc3Npb24gKHBwaSwgZSk7Cn0KCnN0YXRpYyB2b2lkCnBwX2Nf
Y29uZGl0aW9uYWxfZXhwcmVzc2lvbiAocHBpLCBlKQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHBp
OwogICAgIHRyZWUgZTsKewogIGlmICgoKGVudW0gdHJlZV9jb2RlKSAoZSktPmNvbW1vbi5jb2Rl
KSA9PSBDT05EX0VYUFIpCiAgICB7CiAgICAgIHBwX2NfbG9naWNhbF9vcl9leHByZXNzaW9uIChw
cGksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBkbyB7IGlmICgocHBpKS0+YmFzZS5w
YWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVm
ZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxl
ICgwKTsKICAgICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJz8n
KTsKICAgICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBp
KS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIHBwX2NfZXhwcmVz
c2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMV0pKTsKICAgICAgZG8geyBpZiAoKHBwaSkt
PmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5i
YXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsg
fSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZm
ZXIsICc6Jyk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVy
KTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAgICBwcF9j
X2NvbmRpdGlvbmFsX2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzJdKSk7CiAg
ICB9CiAgZWxzZQogICAgcHBfY19sb2dpY2FsX29yX2V4cHJlc3Npb24gKHBwaSwgZSk7Cn0KCgoK
c3RhdGljIHZvaWQKcHBfY19hc3NpZ25tZW50X2V4cHJlc3Npb24gKHBwaSwgZSkKICAgICBjX3By
ZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICBpZiAoKChlbnVtIHRyZWVfY29kZSkg
KGUpLT5jb21tb24uY29kZSkgPT0gTU9ESUZZX0VYUFIgfHwgKChlbnVtIHRyZWVfY29kZSkgKGUp
LT5jb21tb24uY29kZSkgPT0gSU5JVF9FWFBSKQogICAgewogICAgICBwcF9jX3VuYXJ5X2V4cHJl
c3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIGRvIHsgaWYgKChwcGkp
LT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+
YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7
IH0gd2hpbGUgKDApOwogICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVm
ZmVyLCAnPScpOwogICAgICBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOwog
ICAgICBwcF9jX2Fzc2lnbm1lbnRfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNb
MV0pKTsKICAgIH0KICBlbHNlCiAgICBwcF9jX2NvbmRpdGlvbmFsX2V4cHJlc3Npb24gKHBwaSwg
ZSk7Cn0KCgp2b2lkCnBwX2NfZXhwcmVzc2lvbiAocHBpLCBlKQogICAgIGNfcHJldHR5X3ByaW50
ZXIgcHBpOwogICAgIHRyZWUgZTsKewogIHN3aXRjaCAoKChlbnVtIHRyZWVfY29kZSkgKGUpLT5j
b21tb24uY29kZSkpCiAgICB7CiAgICBjYXNlIElOVEVHRVJfQ1NUOgogICAgICBwcF9jX2ludGVn
ZXJfbGl0ZXJhbCAocHBpLCBlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBSRUFMX0NTVDoKICAg
ICAgcHBfY19yZWFsX2xpdGVyYWwgKHBwaSwgZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1RS
SU5HX0NTVDoKICAgICAgcHBfY19zdHJpbmdfbGl0ZXJhbCAocHBpLCBlKTsKICAgICAgYnJlYWs7
CgogICAgY2FzZSBGVU5DVElPTl9ERUNMOgogICAgY2FzZSBWQVJfREVDTDoKICAgIGNhc2UgQ09O
U1RfREVDTDoKICAgIGNhc2UgUEFSTV9ERUNMOgogICAgY2FzZSBSRVNVTFRfREVDTDoKICAgIGNh
c2UgRklFTERfREVDTDoKICAgIGNhc2UgTEFCRUxfREVDTDoKICAgIGNhc2UgRVJST1JfTUFSSzoK
ICAgIGNhc2UgVEFSR0VUX0VYUFI6CiAgICBjYXNlIFNUTVRfRVhQUjoKICAgICAgcHBfY19wcmlt
YXJ5X2V4cHJlc3Npb24gKHBwaSwgZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgUE9TVElOQ1JF
TUVOVF9FWFBSOgogICAgY2FzZSBQT1NUREVDUkVNRU5UX0VYUFI6CiAgICBjYXNlIEFSUk9XX0VY
UFI6CiAgICBjYXNlIEFSUkFZX1JFRjoKICAgIGNhc2UgQ0FMTF9FWFBSOgogICAgY2FzZSBDT01Q
T05FTlRfUkVGOgogICAgY2FzZSBDT01QTEVYX0NTVDoKICAgIGNhc2UgVkVDVE9SX0NTVDoKICAg
IGNhc2UgQUJTX0VYUFI6CiAgICBjYXNlIEZGU19FWFBSOgogICAgY2FzZSBDT05TVFJVQ1RPUjoK
ICAgIGNhc2UgQ09NUE9VTkRfTElURVJBTF9FWFBSOgogICAgY2FzZSBDT01QTEVYX0VYUFI6CiAg
ICBjYXNlIFZBX0FSR19FWFBSOgogICAgICBwcF9jX3Bvc3RmaXhfZXhwcmVzc2lvbiAocHBpLCBl
KTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBDT05KX0VYUFI6CiAgICBjYXNlIEFERFJfRVhQUjoK
ICAgIGNhc2UgSU5ESVJFQ1RfUkVGOgogICAgY2FzZSBORUdBVEVfRVhQUjoKICAgIGNhc2UgQklU
X05PVF9FWFBSOgogICAgY2FzZSBUUlVUSF9OT1RfRVhQUjoKICAgIGNhc2UgUFJFSU5DUkVNRU5U
X0VYUFI6CiAgICBjYXNlIFBSRURFQ1JFTUVOVF9FWFBSOgogICAgY2FzZSBTSVpFT0ZfRVhQUjoK
ICAgIGNhc2UgQUxJR05PRl9FWFBSOgogICAgY2FzZSBSRUFMUEFSVF9FWFBSOgogICAgY2FzZSBJ
TUFHUEFSVF9FWFBSOgogICAgICBwcF9jX3VuYXJ5X2V4cHJlc3Npb24gKHBwaSwgZSk7CiAgICAg
IGJyZWFrOwoKICAgIGNhc2UgQ09OVkVSVF9FWFBSOgogICAgY2FzZSBGTE9BVF9FWFBSOgogICAg
ICBwcF9jX2Nhc3RfZXhwcmVzc2lvbiAocHBpLCBlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBN
VUxUX0VYUFI6CiAgICBjYXNlIFRSVU5DX01PRF9FWFBSOgogICAgY2FzZSBUUlVOQ19ESVZfRVhQ
UjoKICAgICAgcHBfY19tdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIChwcGksIGUpOwogICAgICBi
cmVhazsKCiAgICBjYXNlIExTSElGVF9FWFBSOgogICAgY2FzZSBSU0hJRlRfRVhQUjoKICAgICAg
cHBfY19zaGlmdF9leHByZXNzaW9uIChwcGksIGUpOwogICAgICBicmVhazsKCiAgICBjYXNlIExU
X0VYUFI6CiAgICBjYXNlIEdUX0VYUFI6CiAgICBjYXNlIExFX0VYUFI6CiAgICBjYXNlIEdFX0VY
UFI6CiAgICAgIHBwX2NfcmVsYXRpb25hbF9leHByZXNzaW9uIChwcGksIGUpOwogICAgICBicmVh
azsKCiAgICBjYXNlIEJJVF9BTkRfRVhQUjoKICAgICAgcHBfY19hbmRfZXhwcmVzc2lvbiAocHBp
LCBlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBCSVRfWE9SX0VYUFI6CiAgICAgIHBwX2NfZXhj
bHVzaXZlX29yX2V4cHJlc3Npb24gKHBwaSwgZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgQklU
X0lPUl9FWFBSOgogICAgICBwcF9jX2luY2x1c2l2ZV9vcl9leHByZXNzaW9uIChwcGksIGUpOwog
ICAgICBicmVhazsKCiAgICBjYXNlIFRSVVRIX0FORElGX0VYUFI6CiAgICAgIHBwX2NfbG9naWNh
bF9hbmRfZXhwcmVzc2lvbiAocHBpLCBlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBUUlVUSF9P
UklGX0VYUFI6CiAgICAgIHBwX2NfbG9naWNhbF9vcl9leHByZXNzaW9uIChwcGksIGUpOwogICAg
ICBicmVhazsKCiAgICBjYXNlIENPTkRfRVhQUjoKICAgICAgcHBfY19jb25kaXRpb25hbF9leHBy
ZXNzaW9uIChwcGksIGUpOwogICAgICBicmVhazsKCiAgICBjYXNlIE1PRElGWV9FWFBSOgogICAg
Y2FzZSBJTklUX0VYUFI6CiAgICAgIHBwX2NfYXNzaWdubWVudF9leHByZXNzaW9uIChwcGksIGUp
OwogICAgICBicmVhazsKCiAgICBjYXNlIE5PUF9FWFBSOgogICAgICBwcF9jX2V4cHJlc3Npb24g
KHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgQ09N
UE9VTkRfRVhQUjoKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu
YnVmZmVyLCAnKCcpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7
CiAgICAgIHBwX2NfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAg
ICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnLCcpOyBv
dXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgwKTsKICAgICAg
KCoocHBpKS0+YXNzaWdubWVudF9leHByZXNzaW9uKSAoKHBwaSksICgoZSktPmV4cC5vcGVyYW5k
c1sxXSkpOwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZm
ZXIsICcpJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAg
ICAgYnJlYWs7CgoKICAgIGRlZmF1bHQ6CiAgICAgIG91dHB1dF92ZXJiYXRpbSAoKHBwaSktPmJh
c2UuYnVmZmVyLCAiI2Alcycgbm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVfbmFtZVso
aW50KSAoKGVudW0gdHJlZV9jb2RlKSAoZSktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJT05fXyk7
CiAgICAgIGJyZWFrOwogICAgfQp9CgoKCnZvaWQKcHBfY19zdGF0ZW1lbnQgKHBwaSwgc3RtdCkK
ICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIHN0bXQ7CnsKICBjb25zdCBlbnVt
IHRyZWVfY29kZSBjb2RlID0gKChlbnVtIHRyZWVfY29kZSkgKHN0bXQpLT5jb21tb24uY29kZSk7
CiAgc3dpdGNoIChjb2RlKQogICAgewogICAgY2FzZSBMQUJFTF9TVE1UOgogICAgY2FzZSBDQVNF
X0xBQkVMOgogICAgICBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7CiAg
ICAgIGlmIChjb2RlID09IExBQkVMX1NUTVQpCiBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJh
c2UuYnVmZmVyLCAoKGNvbnN0IGNoYXIgKikgKCgoKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbMF0p
KS0+ZGVjbC5uYW1lKSktPmlkZW50aWZpZXIuaWQuc3RyKSk7CiAgICAgIGVsc2UgaWYgKGNvZGUg
PT0gTEFCRUxfU1RNVCkKIHsKICAgaWYgKCgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBdKSA9PSAo
dHJlZSkgKCh2b2lkICopMCkpCiAgICAgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1
ZmZlciwgImRlZmF1bHQiKTsKICAgZWxzZQogICAgIHsKICAgICAgIGRvIHsgZG8geyBpZiAoKHBw
aSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkp
LT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgw
KTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICJj
YXNlIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogICAg
ICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFz
ZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgICAoKihwcGkpLT5jb25kaXRp
b25hbF9leHByZXNzaW9uKSAoKHBwaSksICgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAg
ICAgICBpZiAoKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbMV0pKQogIHsKICAgIG91dHB1dF9hZGRf
c3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICIuLi4iKTsKICAgICgqKHBwaSktPmNvbmRpdGlv
bmFsX2V4cHJlc3Npb24pICgocHBpKSwgKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbMV0pKTsKICB9
CiAgICAgfQogfQogICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVy
LCAnOicpOwogICAgICBkbyB7ICgocHBpKS0+YmFzZS5idWZmZXIpLT5zdGF0ZS5pbmRlbnRfc2tp
cCArPSAzOyBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUg
KDApOwogICAgICBicmVhazsKCiAgICBjYXNlIENPTVBPVU5EX1NUTVQ6CiAgICAgIG91dHB1dF9h
ZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICd7Jyk7CiAgICAgIGRvIHsgKChwcGkp
LT5iYXNlLmJ1ZmZlciktPnN0YXRlLmluZGVudF9za2lwICs9IDM7IG91dHB1dF9hZGRfbmV3bGlu
ZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAgIGZvciAoc3RtdCA9ICgo
KHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBdKTsgc3RtdDsgc3RtdCA9ICgoc3RtdCktPmNvbW1vbi5j
aGFpbikpCiBwcF9jX3N0YXRlbWVudCAocHBpLCBzdG10KTsKICAgICAgZG8geyAoKHBwaSktPmJh
c2UuYnVmZmVyKS0+c3RhdGUuaW5kZW50X3NraXAgKz0gLTM7IG91dHB1dF9hZGRfbmV3bGluZSAo
KHBwaSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFj
dGVyICgocHBpKS0+YmFzZS5idWZmZXIsICd9Jyk7CiAgICAgIG91dHB1dF9hZGRfbmV3bGluZSAo
KHBwaSktPmJhc2UuYnVmZmVyKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBFWFBSX1NUTVQ6CiAg
ICBjYXNlIENMRUFOVVBfU1RNVDoKICAgICAgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFz
ZS5idWZmZXIpOwogICAgICBwcF9jX2V4cHJlc3Npb24gKHBwaSwgY29kZSA9PSBFWFBSX1NUTVQK
ICAgICAgICAgPyAoKChzdG10KSktPmV4cC5vcGVyYW5kc1swXSkKICAgICAgICAgOiAoKChzdG10
KSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSkt
PmJhc2UuYnVmZmVyLCAnOycpOwogICAgICBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNl
LmJ1ZmZlcik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgSUZfU1RNVDoKICAgICAgZG8geyBkbyB7
IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFj
ZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0g
d2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1
ZmZlciwgImlmIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDAp
OwogICAgICBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOwogICAgICBkbyB7
IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcoJyk7IChwcGkpLT5i
YXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcHBfY19leHByZXNzaW9u
IChwcGksICgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIG91dHB1dF9hZGRfY2hh
cmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcpJyk7CiAgICAgIGRvIHsgKChwcGkpLT5iYXNl
LmJ1ZmZlciktPnN0YXRlLmluZGVudF9za2lwICs9IDM7IG91dHB1dF9hZGRfbmV3bGluZSAoKHBw
aSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAgICgqKHBwaSktPnN0YXRlbWVudCkg
KChwcGkpLCAoKChzdG10KSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICBkbyB7ICgocHBpKS0+
YmFzZS5idWZmZXIpLT5zdGF0ZS5pbmRlbnRfc2tpcCArPSAtMzsgb3V0cHV0X2FkZF9uZXdsaW5l
ICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgwKTsKICAgICAgaWYgKCgoKHN0bXQpKS0+
ZXhwLm9wZXJhbmRzWzJdKSkKIHsKICAgdHJlZSBlbHNlX2NsYXVzZSA9ICgoKHN0bXQpKS0+ZXhw
Lm9wZXJhbmRzWzJdKTsKICAgZG8geyBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBw
X25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSkt
PmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0
X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgImVsc2UiKTsgKHBwaSktPmJhc2UucGFk
ZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgIGlmICgoKGVudW0gdHJlZV9jb2RlKSAo
ZWxzZV9jbGF1c2UpLT5jb21tb24uY29kZSkgPT0gSUZfU1RNVCkKICAgICBkbyB7IG91dHB1dF9h
ZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9u
b25lOyB9IHdoaWxlICgwKTsKICAgZWxzZQogICAgIGRvIHsgKChwcGkpLT5iYXNlLmJ1ZmZlcikt
PnN0YXRlLmluZGVudF9za2lwICs9IDM7IG91dHB1dF9hZGRfbmV3bGluZSAoKHBwaSktPmJhc2Uu
YnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICgqKHBwaSktPnN0YXRlbWVudCkgKChwcGkpLCBlbHNl
X2NsYXVzZSk7CiAgIGlmICgoKGVudW0gdHJlZV9jb2RlKSAoZWxzZV9jbGF1c2UpLT5jb21tb24u
Y29kZSkgIT0gSUZfU1RNVCkKICAgICBkbyB7ICgocHBpKS0+YmFzZS5idWZmZXIpLT5zdGF0ZS5p
bmRlbnRfc2tpcCArPSAtMzsgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIp
OyB9IHdoaWxlICgwKTsKIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSBTV0lUQ0hfU1RNVDoKICAg
ICAgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOwogICAgICBkbyB7IGRv
IHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3Nw
YWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsg
fSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2Uu
YnVmZmVyLCAic3dpdGNoIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hp
bGUgKDApOwogICAgICBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOwogICAg
ICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcoJyk7IChw
cGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcHBfY19leHBy
ZXNzaW9uIChwcGksICgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIG91dHB1dF9h
ZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcpJyk7CiAgICAgIGRvIHsgKChwcGkp
LT5iYXNlLmJ1ZmZlciktPnN0YXRlLmluZGVudF9za2lwICs9IDM7IG91dHB1dF9hZGRfbmV3bGlu
ZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAgICgqKHBwaSktPnN0YXRl
bWVudCkgKChwcGkpLCAoKChzdG10KSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICBkbyB7ICgo
cHBpKS0+YmFzZS5idWZmZXIpLT5zdGF0ZS5pbmRlbnRfc2tpcCArPSAtMzsgb3V0cHV0X2FkZF9u
ZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgwKTsKICAgICAgYnJlYWs7Cgog
ICAgY2FzZSBXSElMRV9TVE1UOgogICAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRp
bmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIp
OyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDAp
OyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAid2hpbGUiKTsgKHBwaSkt
PmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRf
c3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0
ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25v
bmU7IH0gd2hpbGUgKDApOwogICAgICBwcF9jX2V4cHJlc3Npb24gKHBwaSwgKCgoc3RtdCkpLT5l
eHAub3BlcmFuZHNbMF0pKTsKICAgICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNl
LmJ1ZmZlciwgJyknKTsKICAgICAgZG8geyAoKHBwaSktPmJhc2UuYnVmZmVyKS0+c3RhdGUuaW5k
ZW50X3NraXAgKz0gMzsgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOyB9
IHdoaWxlICgwKTsKICAgICAgKCoocHBpKS0+c3RhdGVtZW50KSAoKHBwaSksICgoKHN0bXQpKS0+
ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICAgIGRvIHsgKChwcGkpLT5iYXNlLmJ1ZmZlciktPnN0YXRl
LmluZGVudF9za2lwICs9IC0zOyBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZl
cik7IH0gd2hpbGUgKDApOwogICAgICBicmVhazsKCiAgICBjYXNlIERPX1NUTVQ6CiAgICAgIGRv
IHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9h
ZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9u
b25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+
YmFzZS5idWZmZXIsICJkbyIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdo
aWxlICgwKTsKICAgICAgZG8geyAoKHBwaSktPmJhc2UuYnVmZmVyKS0+c3RhdGUuaW5kZW50X3Nr
aXAgKz0gMzsgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxl
ICgwKTsKICAgICAgKCoocHBpKS0+c3RhdGVtZW50KSAoKHBwaSksICgoKHN0bXQpKS0+ZXhwLm9w
ZXJhbmRzWzFdKSk7CiAgICAgIGRvIHsgKChwcGkpLT5iYXNlLmJ1ZmZlciktPnN0YXRlLmluZGVu
dF9za2lwICs9IC0zOyBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0g
d2hpbGUgKDApOwogICAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBf
bm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+
YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRf
YWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAid2hpbGUiKTsgKHBwaSktPmJhc2UucGFk
ZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRfc3BhY2UgKChw
cGkpLT5iYXNlLmJ1ZmZlcik7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkp
LT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hp
bGUgKDApOwogICAgICBwcF9jX2V4cHJlc3Npb24gKHBwaSwgKCgoc3RtdCkpLT5leHAub3BlcmFu
ZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVm
ZmVyLCAnKScpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAg
ICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICc7Jyk7CiAgICAg
IG91dHB1dF9hZGRfbmV3bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsKICAgICAgYnJlYWs7Cgog
ICAgY2FzZSBGT1JfU1RNVDoKICAgICAgZG8geyBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5n
ICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsg
KHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsg
b3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgImZvciIpOyAocHBpKS0+YmFz
ZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxlICgwKTsKICAgICAgb3V0cHV0X2FkZF9zcGFj
ZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAo
KHBwaSktPmJhc2UuYnVmZmVyLCAnKCcpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsg
fSB3aGlsZSAoMCk7CiAgICAgICgqKHBwaSktPnN0YXRlbWVudCkgKChwcGkpLCAoKChzdG10KSkt
PmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5i
YXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsK
ICAgICAgaWYgKCgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzFdKSkKIHBwX2NfZXhwcmVzc2lvbiAo
cHBpLCAoKChzdG10KSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICBvdXRwdXRfYWRkX2NoYXJh
Y3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnOycpOwogICAgICBkbyB7IG91dHB1dF9hZGRfc3Bh
Y2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9
IHdoaWxlICgwKTsKICAgICAgaWYgKCgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzJdKSkKIHBwX2Nf
ZXhwcmVzc2lvbiAocHBpLCAoKChzdG10KSktPmV4cC5vcGVyYW5kc1syXSkpOwogICAgICBvdXRw
dXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnKScpOwogICAgICBkbyB7ICgo
cHBpKS0+YmFzZS5idWZmZXIpLT5zdGF0ZS5pbmRlbnRfc2tpcCArPSAzOyBvdXRwdXRfYWRkX25l
d2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDApOwogICAgICAoKihwcGkpLT5z
dGF0ZW1lbnQpICgocHBpKSwgKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbM10pKTsKICAgICAgZG8g
eyAoKHBwaSktPmJhc2UuYnVmZmVyKS0+c3RhdGUuaW5kZW50X3NraXAgKz0gLTM7IG91dHB1dF9h
ZGRfbmV3bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAgIGJyZWFr
OwoKICAgIGNhc2UgQlJFQUtfU1RNVDoKICAgIGNhc2UgQ09OVElOVUVfU1RNVDoKICAgICAgb3V0
cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOwogICAgICBvdXRwdXRfYWRkX3N0
cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCBjb2RlID09IEJSRUFLX1NUTVQgPyAiYnJlYWsiIDog
ImNvbnRpbnVlIik7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZm
ZXIsICc7Jyk7CiAgICAgIG91dHB1dF9hZGRfbmV3bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsK
ICAgICAgYnJlYWs7CgogICAgY2FzZSBSRVRVUk5fU1RNVDoKICAgIGNhc2UgR09UT19TVE1UOgog
ICAgICB7CiB0cmVlIGUgPSBjb2RlID09IFJFVFVSTl9TVE1UCiAgID8gKCgoc3RtdCkpLT5leHAu
b3BlcmFuZHNbMF0pCiAgIDogKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbMF0pOwoKIG91dHB1dF9h
ZGRfbmV3bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsKIGRvIHsgZG8geyBpZiAoKHBwaSktPmJh
c2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNl
LmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3
aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGNvZGUgPT0g
UkVUVVJOX1NUTVQgPyAicmV0dXJuIiA6ICJnb3RvIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBw
cF9iZWZvcmU7IH0gd2hpbGUgKDApOwogaWYgKGUpCiAgIHBwX2NfZXhwcmVzc2lvbiAocHBpLCBl
KTsKIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICc7Jyk7CiBvdXRw
dXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7CiAgICAgIH0KICAgICAgYnJlYWs7
CgogICAgY2FzZSBTQ09QRV9TVE1UOgogICAgICBpZiAoISgoKCgoKHN0bXQpKSktPmV4cC5vcGVy
YW5kc1swXSkpID09ICh0cmVlKSAoKHZvaWQgKikwKSkgJiYgKCgoKHN0bXQpKS0+Y29tbW9uLmxh
bmdfZmxhZ18zKSkpCiB7CiAgIGlmICgoKCgoc3RtdCkpLT5jb21tb24ubGFuZ19mbGFnXzApKSkK
ICAgICB7CiAgICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAn
eycpOwogICAgICAgZG8geyAoKHBwaSktPmJhc2UuYnVmZmVyKS0+c3RhdGUuaW5kZW50X3NraXAg
Kz0gMzsgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgw
KTsKICAgICB9CiAgIGVsc2UgaWYgKCghKCgoKChzdG10KSkpLT5jb21tb24ubGFuZ19mbGFnXzAp
KSkpCiAgICAgewogICAgICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZl
ciwgJ30nKTsKICAgICAgIGRvIHsgKChwcGkpLT5iYXNlLmJ1ZmZlciktPnN0YXRlLmluZGVudF9z
a2lwICs9IC0zOyBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hp
bGUgKDApOwogICAgIH0KIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSBERUNMX1NUTVQ6CiAgICAg
ICgqKHBwaSktPmRlY2xhcmF0aW9uKSAoKHBwaSksICgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBd
KSk7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICc7Jyk7
CiAgICAgIG91dHB1dF9hZGRfbmV3bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsKICAgICAgYnJl
YWs7CgogICAgY2FzZSBBU01fU1RNVDoKICAgICAgewogX0Jvb2wgaGFzX3ZvbGF0aWxlX3AgPSAo
KCgoKHN0bXQpKSktPmV4cC5vcGVyYW5kc1swXSkgIT0gKHRyZWUpICgodm9pZCAqKTApKTsKIF9C
b29sIGlzX2V4dGVuZGVkID0gaGFzX3ZvbGF0aWxlX3AgfHwgKCgoc3RtdCkpLT5leHAub3BlcmFu
ZHNbM10pCiAgIHx8ICgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzJdKSB8fCAoKChzdG10KSktPmV4
cC5vcGVyYW5kc1s0XSk7CiBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBf
bm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+
YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRf
YWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCBpc19leHRlbmRlZCA/ICJfX2FzbV9fIiA6
ICJhc20iKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiBp
ZiAoaGFzX3ZvbGF0aWxlX3ApCiAgIGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAh
PSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChw
cGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91
dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICJfX3ZvbGF0aWxlX18iKTsgKHBw
aSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiBvdXRwdXRfYWRkX3Nw
YWNlICgocHBpKS0+YmFzZS5idWZmZXIpOwogZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBw
aSktPmJhc2UuYnVmZmVyLCAnKCcpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3
aGlsZSAoMCk7CiBwcF9jX3N0cmluZ19saXRlcmFsIChwcGksICgoKHN0bXQpKS0+ZXhwLm9wZXJh
bmRzWzFdKSk7CiBpZiAoaXNfZXh0ZW5kZWQpCiAgIHsKICAgICBvdXRwdXRfYWRkX3NwYWNlICgo
cHBpKS0+YmFzZS5idWZmZXIpOwogICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkp
LT5iYXNlLmJ1ZmZlciwgJzonKTsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVy
KTsgfSB3aGlsZSAoMCk7CiAgICAgaWYgKCgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzJdKSkKICAg
ICAgIHBwX2NfZXhwcmVzc2lvbiAocHBpLCAoKChzdG10KSktPmV4cC5vcGVyYW5kc1syXSkpOwog
ICAgIG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7CiAgICAgZG8geyBvdXRw
dXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnOicpOyBvdXRwdXRfYWRkX3Nw
YWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgwKTsKICAgICBpZiAoKCgoc3RtdCkp
LT5leHAub3BlcmFuZHNbM10pKQogICAgICAgcHBfY19leHByZXNzaW9uIChwcGksICgoKHN0bXQp
KS0+ZXhwLm9wZXJhbmRzWzNdKSk7CiAgICAgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2Uu
YnVmZmVyKTsKICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZm
ZXIsICc6Jyk7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUg
KDApOwogICAgIGlmICgoKChzdG10KSktPmV4cC5vcGVyYW5kc1s0XSkpCiAgICAgICBwcF9jX2V4
cHJlc3Npb24gKHBwaSwgKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbNF0pKTsKICAgfQogb3V0cHV0
X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJyknKTsKIG91dHB1dF9hZGRfbmV3
bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsKICAgICAgfQogICAgICBicmVhazsKCiAgICBjYXNl
IEZJTEVfU1RNVDoKICAgICAgZG8geyBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBw
X25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSkt
PmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0
X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgIl9fRklMRV9fIik7IChwcGkpLT5iYXNl
LnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogICAgICBvdXRwdXRfYWRkX3NwYWNl
ICgocHBpKS0+YmFzZS5idWZmZXIpOwogICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSkt
PmJhc2UuYnVmZmVyLCAnPScpOwogICAgICBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5i
YXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsK
ICAgICAgZG8geyBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsg
b3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGlu
ZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcg
KChwcGkpLT5iYXNlLmJ1ZmZlciwgKCgoY29uc3QgY2hhciAqKSAoKCgoKHN0bXQpKS0+ZXhwLm9w
ZXJhbmRzWzBdKSkpLT5pZGVudGlmaWVyLmlkLnN0cikpKTsgKHBwaSktPmJhc2UucGFkZGluZyA9
IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBp
KS0+YmFzZS5idWZmZXIsICc7Jyk7CiAgICAgIG91dHB1dF9hZGRfbmV3bGluZSAoKHBwaSktPmJh
c2UuYnVmZmVyKTsKICAgICAgYnJlYWs7CgogICAgZGVmYXVsdDoKICAgICAgb3V0cHV0X3ZlcmJh
dGltICgocHBpKS0+YmFzZS5idWZmZXIsICIjYCVzJyBub3Qgc3VwcG9ydGVkIGJ5ICVzIyIsIHRy
ZWVfY29kZV9uYW1lWyhpbnQpICgoZW51bSB0cmVlX2NvZGUpIChzdG10KS0+Y29tbW9uLmNvZGUp
XSwgX19GVU5DVElPTl9fKTsKICAgIH0KCn0KCgoKdm9pZApwcF9jX3ByZXR0eV9wcmludGVyX2lu
aXQgKHBwKQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHA7CnsKICBwcC0+b2Zmc2V0X2xpc3QgPSAw
OwoKICBwcC0+ZGVjbGFyYXRpb24gPSBwcF9jX2RlY2xhcmF0aW9uOwogIHBwLT5kZWNsYXJhdGlv
bl9zcGVjaWZpZXJzID0gcHBfY19kZWNsYXJhdGlvbl9zcGVjaWZpZXJzOwogIHBwLT50eXBlX3Nw
ZWNpZmllciA9IHBwX2Nfc2ltcGxlX3R5cGVfc3BlY2lmaWVyOwogIHBwLT5kZWNsYXJhdG9yID0g
cHBfY19kZWNsYXJhdG9yOwogIHBwLT5kaXJlY3RfZGVjbGFyYXRvciA9IHBwX2NfZGlyZWN0X2Rl
Y2xhcmF0b3I7CiAgcHAtPnBhcmFtZXRlcl9kZWNsYXJhdGlvbiA9IHBwX2NfcGFyYW1ldGVyX2Rl
Y2xhcmF0aW9uOwogIHBwLT50eXBlX2lkID0gcHBfY190eXBlX2lkOwoKICBwcC0+c3RhdGVtZW50
ID0gcHBfY19zdGF0ZW1lbnQ7CgogIHBwLT5wcmltYXJ5X2V4cHJlc3Npb24gPSBwcF9jX3ByaW1h
cnlfZXhwcmVzc2lvbjsKICBwcC0+cG9zdGZpeF9leHByZXNzaW9uID0gcHBfY19wb3N0Zml4X2V4
cHJlc3Npb247CiAgcHAtPnVuYXJ5X2V4cHJlc3Npb24gPSBwcF9jX3VuYXJ5X2V4cHJlc3Npb247
CiAgcHAtPmluaXRpYWxpemVyID0gcHBfY19pbml0aWFsaXplcjsKICBwcC0+bXVsdGlwbGljYXRp
dmVfZXhwcmVzc2lvbiA9IHBwX2NfbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbjsKICBwcC0+Y29u
ZGl0aW9uYWxfZXhwcmVzc2lvbiA9IHBwX2NfY29uZGl0aW9uYWxfZXhwcmVzc2lvbjsKICBwcC0+
YXNzaWdubWVudF9leHByZXNzaW9uID0gcHBfY19hc3NpZ25tZW50X2V4cHJlc3Npb247Cn0K


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

end of thread, other threads:[~2003-05-10 20:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-10 20:06 other/10584: bootstraping with -finstrument-functions as an extra CFLAG Andrew Pinski
  -- strict thread matches above, loose matches on Subject: below --
2003-05-10 19:46 Dara Hazeghi
2003-05-01 17:46 pinskia

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