public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: optimization/10752: -O2 generates loop assembly instruction with label too far away
@ 2003-05-14 10:48 giovannibajo
  0 siblings, 0 replies; 5+ messages in thread
From: giovannibajo @ 2003-05-14 10:48 UTC (permalink / raw)
  To: enrio, gcc-bugs, gcc-prs, nobody

Synopsis: -O2 generates loop assembly instruction with label too far away

State-Changed-From-To: open->feedback
State-Changed-By: bajo
State-Changed-When: Wed May 14 10:48:33 2003
State-Changed-Why:
    See Dara's question.

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


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

* Re: optimization/10752: -O2 generates loop assembly instruction with label too far away
@ 2003-05-14 19:16 Enrique Perez-Terron
  0 siblings, 0 replies; 5+ messages in thread
From: Enrique Perez-Terron @ 2003-05-14 19:16 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Enrique Perez-Terron <enrio@online.no>
To: Dara Hazeghi <dhazeghi@yahoo.com>
Cc: gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org
Subject: Re: optimization/10752: -O2 generates loop assembly instruction
	with label too far away
Date: 14 May 2003 21:10:53 +0200

 On Mon, 2003-05-12 at 19:11, Dara Hazeghi wrote:
 > http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit- 
 > trail&database=gcc&pr=10752
 > 
 > Hello,
 > 
 > I cannot reproduce this problem on gcc 3.2, 3.3 branch (20030510) or  
 > mainline (20030510). Please note that gcc version 3.2.2 20030222 (Red  
 > Hat Linux 3.2.2-5) is not an officially released version. Can you  
 > please try the code in question with 3.2.3 or 3.3 prerelease, and  
 > report whether this problem still occurs? Thanks,
 > 
 > Dara
 
 You are right. I downloaded gcc-3.2.3, and did: 
 
   $ ./configure --prefix=/home/enrique/root/usr
   $ make bootstrap
   $ export PATH=/home/enrique/root/usr/bin:$PATH
   $ FLAGS="... pasted in from the mail I sent to you ..."
   $ gcc $FLAGS -c skgepnmi.i
 
 and got no error messages.
 
 Just to be sure I was testing properly, I reverted PATH to the original,
 and repeated the compile 
 
   $ export PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin
   $ gcc $FLAGS -c skgepnmi.i
 
 and got the error messages as described. It seems like I have to send a
 bug report to Red Hat.
 
 Thanks,
 Enrique
 


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

* Re: optimization/10752: -O2 generates loop assembly instruction with label too far away
@ 2003-05-14 13:56 ebotcazou
  0 siblings, 0 replies; 5+ messages in thread
From: ebotcazou @ 2003-05-14 13:56 UTC (permalink / raw)
  To: enrio, gcc-bugs, gcc-prs, nobody

Synopsis: -O2 generates loop assembly instruction with label too far away

State-Changed-From-To: feedback->closed
State-Changed-By: ebotcazou
State-Changed-When: Wed May 14 13:56:02 2003
State-Changed-Why:
    Duplicate of PR optimization/9888. Fixed in GCC 3.2.3 and later.

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


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

* Re: optimization/10752: -O2 generates loop assembly instruction with label too far away
@ 2003-05-12 17:16 Dara Hazeghi
  0 siblings, 0 replies; 5+ messages in thread
From: Dara Hazeghi @ 2003-05-12 17:16 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Dara Hazeghi <dhazeghi@yahoo.com>
To: enrio@online.no, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org
Cc:  
Subject: Re: optimization/10752: -O2 generates loop assembly instruction with label too far away
Date: Mon, 12 May 2003 10:11:20 -0700

 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit- 
 trail&database=gcc&pr=10752
 
 Hello,
 
 I cannot reproduce this problem on gcc 3.2, 3.3 branch (20030510) or  
 mainline (20030510). Please note that gcc version 3.2.2 20030222 (Red  
 Hat Linux 3.2.2-5) is not an officially released version. Can you  
 please try the code in question with 3.2.3 or 3.3 prerelease, and  
 report whether this problem still occurs? Thanks,
 
 Dara
 


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

* optimization/10752: -O2 generates loop assembly instruction with label too far away
@ 2003-05-12 15:26 enrio
  0 siblings, 0 replies; 5+ messages in thread
From: enrio @ 2003-05-12 15:26 UTC (permalink / raw)
  To: gcc-gnats


>Number:         10752
>Category:       optimization
>Synopsis:       -O2 generates loop assembly instruction with label too far away
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon May 12 15:26:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     Enrique Perez-Terron
>Release:        unknown-1.0
>Organization:
>Environment:
AMD-K6(tm) 3D processor stepping 0c/VIA chipset motherboard
Redhat 9.0 fresh install.
gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --host=i386-redhat-linux
Thread model: posix
>Description:
Compiling Redhat 9.0's standard kernel-source rpm,
file drivers/net/sk98lin/skgepnmi.c produces message
{standard input}: Assembler messages:
{standard input}:10554: Error: value of -141 too large for field of 1 bytes at 27023
The message refers to an assembly instruction "loop .L1827"
where the label .L1827 occurs more than 128 bytes earlier
in the instruction stream. This does not happen if -O2 is replaced with -O. It also does not happen if -O2 is used but the other compiler flags are removed.
>How-To-Repeat:
Included file attachment is the output of gcc -E with other flags the same. Save as skgepnmi.i and compile with gcc 
-O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -pipe -mpreferred-stack-boundary=2 -march=k6
-c skgepnmi.c
Here I paste a script that I used to verify my own steps.
#!/bin/bash
#
#Just in case the environment variables have something to do with this,
# I have done "export > script". Edit to suit your needs.
 
if [ "$HOME" != "" ]
then
        exec env --ignore-environment /bin/bash "$0" "$@"
        echo "Exec failed!?!?!?"
fi
 
declare -x BASH_ENV="/root/.bashrc"
declare -x DISPLAY=":0.0"
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="arabia.home.lan"
declare -x INPUTRC="/etc/inputrc"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD="/usr/src/linux-2.4.20-8"
declare -x PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin"
declare -x PWD="/usr/src/linux-2.4.20-8/drivers/net/sk98lin"
declare -x QTDIR="/usr/lib/qt-3.1"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
declare -x TERM="xterm"
declare -x USER="root"
declare -x USERNAME="root"
declare -x XAUTHORITY="/root/.xauthRlyoLo"
 
# So you can coordinate the output with the commands that produces it:
set -x
 
# These are the compiler flags in the outpu from 'make'.
# Vertical stacking makes it easier to read.
FLAGS=" -D__KERNEL__
        -I/usr/src/linux-2.4.20-8/include
        -Wall
        -Wstrict-prototypes
        -Wno-trigraphs
        -O2
        -fno-strict-aliasing
        -fno-common
        -fomit-frame-pointer
        -pipe
        -mpreferred-stack-boundary=2
        -march=k6
        -DMODULE
        -DMODVERSIONS
        -include /usr/src/linux-2.4.20-8/include/linux/modversions.h
        -I.
        -DSK_USE_CSUM
        -nostdinc
        -iwithprefix include
        -DKBUILD_BASENAME=skgepnmi"
 
# This fails as follows: (I have added '# ' in front of the output lines.)
 
gcc $FLAGS -c skgepnmi.c
# {standard input}: Assembler messages:
# {standard input}:10554: Error: value of -141 too large for field of 1 bytes at 27023
 
# So I try to get the assembly and look at it.
# Substitute -S for -c
 
gcc $FLAGS -S skgepnmi.c
 
# and check that the error is still there
 
gcc $FLAGS -c skgepnmi.s
# {standard input}: Assembler messages:
# {standard input}:10554: Error: value of -141 too large for field of 1 bytes at 27023
 
# and look at line 10554 of the resulting skgepnmi.s file.
# It says "loop   .L1876". The label .L1876 appears on line 10520.
# It is hard for me to see if the intervening instructions really
# occupy 141 bytes of memory. I tried later to assemble a modified version
# and then disassemble it to see.
 
 
# But first, produce a verion of the input file that I can send to you
# with all #include files included
 
gcc $FLAGS -E skgepnmi.c > skgepnmi.i
 
# and check that the error is still there
 
gcc $FLAGS -c skgepnmi.i
# {standard input}: Assembler messages:
# {standard input}:10554: Error: value of -141 too large for field of 1 bytes at 27023
 
 
#  Now an experiment. What happens if we suppress the -O2 flag?
FLAGS_NO_O2=`echo "$FLAGS" | sed -e 's/-O2$/-O/'`
 
gcc $FLAGS_NO_O2 -c skgepnmi.c
gcc $FLAGS_NO_O2 -c skgepnmi.i
gcc $FLAGS_NO_O2 -S skgepnmi.i -o skgepnmi_no_O2.s
gcc $FLAGS_NO_O2 -c skgepnmi_no_O2.s
 
# No errors!
 
# I first tried to remove -O2 alltogether (grep -v -e -O2)
# But then it turns out that one of the headers have the following
# code:
 
#if !defined(__OPTIMIZE__)  ||  !defined(__KERNEL__)
#warning  You must compile this file with the correct options!
#warning  See the last lines of the source file.
#error You must compile this driver with "-O".
#endif
>Fix:

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

IyAxICJza2dlcG5taS5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4iCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAx
CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHNldHZlci5o
IiAxCiMgNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVz
LzUzYzcwMC52ZXIiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvODM5MC52ZXIiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvYWM5N19jb2RlYy52ZXIiIDEKIyA3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWM5Ny52ZXIiIDEKIyA4ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWNpLnZlciIgMQoj
IDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9hY3Bp
X2tzeW1zLnZlciIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvYWQxODQ4LnZlciIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWRiLnZlciIgMQojIDEyICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWZfYXgyNS52ZXIiIDEKIyAxMyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2FmX2lweC52ZXIi
IDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVz
L2FmX25ldGxpbmsudmVyIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9hZl9zcHgudmVyIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9hZnMudmVyIiAxCiMgMTcgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9hZ3BnYXJ0X2JlLnZlciIgMQoj
IDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYWly
b25ldDQ1MDBfY2FyZC52ZXIiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tb2R1bGVzL2Fpcm9uZXQ0NTAwX2NvcmUudmVyIiAxCiMgMjAgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9haXJvLnZlciIgMQojIDIx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYW1kNzkz
MC52ZXIiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9t
b2R1bGVzL2FwbS52ZXIiIDEKIyAyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9tb2R1bGVzL2FyY25ldC52ZXIiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2FybGFuLnZlciIgMQojIDI1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYXJwX3RhYmxlcy52ZXIiIDEK
IyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2F0
YXJhaWQudmVyIiAxCiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9hdG1fbWlzYy52ZXIiIDEKIyAyOCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2F0eWZiX2Jhc2UudmVyIiAxCiMgMjkgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9hdTEwMDBfZ3Bpby52ZXIi
IDEKIyAzMCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVz
L2F1ZGlvX3N5bXMudmVyIiAxCiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9hdWRpby52ZXIiIDEKIyAzMiAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2F1dG9faXJxLnZlciIgMQojIDMzICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvYjFkbWEudmVyIiAxCiMg
MzQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9iMXBj
bWNpYS52ZXIiIDEKIyAzNSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9tb2R1bGVzL2IxLnZlciIgMQojIDM2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvYmFzZS52ZXIiIDEKIyAzNyAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2JiY19pMmMudmVyIiAxCiMgMzggIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9ibGtwZy52ZXIiIDEKIyAz
OSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2JtX29z
bC52ZXIiIDEKIyA0MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9t
b2R1bGVzL2Jvb3RsZHIudmVyIiAxCiMgNDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy9icGNrNi52ZXIiIDEKIyA0MiAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2J0dHYtaWYudmVyIiAxCiMgNDMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9idWZmZXIudmVyIiAx
CiMgNDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9i
dXNtb3VzZS52ZXIiIDEKIyA0NSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tb2R1bGVzL2NhcGlmcy52ZXIiIDEKIyA0NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2NhcGl1dGlsLnZlciIgMQojIDQ3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY2Ryb20udmVyIiAxCiMgNDgg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9jaGVjay52
ZXIiIDEKIyA0OSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1
bGVzL2NoaXByZWcudmVyIiAxCiMgNTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9jbWRsaW5lLnZlciIgMQojIDUxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY21wLnZlciIgMQojIDUyICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY29tMjAwMjAudmVyIiAxCiMg
NTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9jb21t
b24udmVyIiAxCiMgNTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdWxlcy9jb214LnZlciIgMQojIDU1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvY29uZmlnLnZlciIgMQojIDU2ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY29uc29sZS52ZXIiIDEKIyA1NyAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2NvbnRleHQudmVyIiAx
CiMgNTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9j
cGlhLnZlciIgMQojIDU5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvY3B1ZnJlcS52ZXIiIDEKIyA2MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9tb2R1bGVzL2NwdWlkLnZlciIgMQojIDYxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY3J5cHRvYXBpLnZlciIgMQojIDYyICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvY3MudmVyIiAx
CiMgNjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9j
eWJlcjIwMDBmYi52ZXIiIDEKIyA2NCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9tb2R1bGVzL2N5Y3hfZHJ2LnZlciIgMQojIDY1ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvREFDOTYwLnZlciIgMQojIDY2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZGJyaS52ZXIiIDEKIyA2
NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2RjYWNo
ZS52ZXIiIDEKIyA2OCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9t
b2R1bGVzL2Rjb29raWVzLnZlciIgMQojIDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvZGRwLnZlciIgMQojIDcwICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZGVjX2FuZF9sb2NrLnZlciIgMQojIDcxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZGVmbGF0ZV9z
eW1zLnZlciIgMQojIDcyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvRGl2YXNfbW9kLnZlciIgMQojIDczICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZG1hc291bmRfY29yZS52ZXIiIDEKIyA3NCAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2RtaV9zY2FuLnZlciIg
MQojIDc1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
ZHF1b3QudmVyIiAxCiMgNzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9kcy52ZXIiIDEKIyA3NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tb2R1bGVzL2VpY29uX21vZC52ZXIiIDEKIyA3OCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2V4ZWNfZG9tYWluLnZlciIgMQojIDc5
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmFzMjE2
LnZlciIgMQojIDgwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvZmF0ZnNfc3ltcy52ZXIiIDEKIyA4MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY21hcC52ZXIiIDEKIyA4MiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29uLWFmYi52ZXIiIDEKIyA4MyAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29uLWNm
YjE2LnZlciIgMQojIDg0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvZmJjb24tY2ZiMjQudmVyIiAxCiMgODUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi1jZmIyLnZlciIgMQojIDg2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmJjb24tY2ZiMzIudmVy
IiAxCiMgODcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxl
cy9mYmNvbi1jZmI0LnZlciIgMQojIDg4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvZmJjb24tY2ZiOC52ZXIiIDEKIyA4OSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29uLWhnYS52ZXIiIDEKIyA5MCAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29uLWls
Ym0udmVyIiAxCiMgOTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdWxlcy9mYmNvbi1pcGxhbjJwMi52ZXIiIDEKIyA5MiAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29uLWlwbGFuMnA0LnZlciIgMQojIDkzICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmJjb24taXBs
YW4ycDgudmVyIiAxCiMgOTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9mYmNvbi1tYWMudmVyIiAxCiMgOTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi1tZmIudmVyIiAxCiMgOTYgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmNvbi52ZXIiIDEKIyA5
NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZiY29u
LXZnYS1wbGFuZXMudmVyIiAxCiMgOTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9mYmNvbi12Z2EudmVyIiAxCiMgOTkgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYmdlbi52ZXIiIDEKIyAxMDAgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9mYm1lbS52ZXIiIDEK
IyAxMDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9m
Ym1vbi52ZXIiIDEKIyAxMDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9mY19zeW1zLnZlciIgMQojIDEwMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ZpbGVtYXAudmVyIiAxCiMgMTA0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvZmlsZXN5c3RlbXMudmVyIiAx
CiMgMTA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
ZnRhcGVfc3ltcy52ZXIiIDEKIyAxMDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9nNDUwX3BsbC52ZXIiIDEKIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9nYW1lcG9ydC52ZXIiIDEKIyAxMDggIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9nZW5lcmljX3Nl
cmlhbC52ZXIiIDEKIyAxMDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9nZW5oZC52ZXIiIDEKIyAxMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvbW9kdWxlcy9nZW5fcHJvYmUudmVyIiAxCiMgMTExICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaGNkLnZlciIgMQojIDExMiAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2hkbGNkcnYu
dmVyIiAxCiMgMTEzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvaGRsY19nZW5lcmljLnZlciIgMQojIDExNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2hlcm1lcy52ZXIiIDEKIyAxMTUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9oaWxfbWxjLnZlciIgMQojIDEx
NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2hpc2F4
X2lzYWMudmVyIiAxCiMgMTE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvaHBfcHNhdXgudmVyIiAxCiMgMTE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaHBfc2RjLnZlciIgMQojIDExOSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kyYy1hbGdvLWJpdC52ZXIi
IDEKIyAxMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxl
cy9pMmMtYWxnby1pdGUudmVyIiAxCiMgMTIxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvaTJjLWFsZ28tcGNmLnZlciIgMQojIDEyMiAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kyYy1jb3JlLnZlciIgMQoj
IDEyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2ky
Yy1vbGQudmVyIiAxCiMgMTI0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvaTJjLXByb2MudmVyIiAxCiMgMTI1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaTJvX2Jsb2NrLnZlciIgMQojIDEyNiAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kyb19jb25maWcudmVy
IiAxCiMgMTI3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvaTJvX2NvcmUudmVyIiAxCiMgMTI4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvaTJvX2xhbi52ZXIiIDEKIyAxMjkgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pMm9fcGNpLnZlciIgMQojIDEzMCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2kyb19wcm9jLnZl
ciIgMQojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1
bGVzL2kyb19zY3NpLnZlciIgMQojIDEzMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tb2R1bGVzL2kzODZfa3N5bXMudmVyIiAxCiMgMTMzICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaWRlLWRtYS52ZXIiIDEKIyAxMzQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pZGUtaW9w
cy52ZXIiIDEKIyAxMzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdWxlcy9pZGUtaW8udmVyIiAxCiMgMTM2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvaWRlLWxpYi52ZXIiIDEKIyAxMzcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pZGUtcHJvYmUudmVyIiAxCiMgMTM4
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaWRlLXBy
b2MudmVyIiAxCiMgMTM5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21v
ZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L21vZHVsZXMvaWRlLXRhc2tmaWxlLnZlciIgMQojIDE0MCAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2lkZS52ZXIiIDEKIyAxNDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pZHQ3NzEwNS52ZXIiIDEKIyAx
NDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pZWVl
MTM5NF9jb3JlLnZlciIgMQojIDE0MyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9tb2R1bGVzL2luZmxhdGVfc3ltcy52ZXIiIDEKIyAxNDQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pbml0LnZlciIgMQojIDE0NSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2lucHV0LnZlciIg
MQojIDE0NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVz
L2lwNl90YWJsZXMudmVyIiAxCiMgMTQ3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvaXBjb21tb24udmVyIiAxCiMgMTQ4ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaXBfY29ubnRyYWNrX2Z0cC52ZXIiIDEK
IyAxNDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9p
cF9jb25udHJhY2tfaXJjLnZlciIgMQojIDE1MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9tb2R1bGVzL2lwX2Nvbm50cmFja19zdGFuZGFsb25lLnZlciIgMQojIDE1
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2lwX2Z3
X2NvbXBhdC52ZXIiIDEKIyAxNTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbW9kdWxlcy9pcF9ncmUudmVyIiAxCiMgMTUzICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaXBpcC52ZXIiIDEKIyAxNTQgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pcG1pX21zZ2hhbmRsZXIudmVy
IiAxCiMgMTU1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvaXBtaV93YXRjaGRvZy52ZXIiIDEKIyAxNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pcF9uYXRfc3RhbmRhbG9uZS52ZXIiIDEKIyAxNTcgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pcF90YWJsZXMu
dmVyIiAxCiMgMTU4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvaXJwb3J0LnZlciIgMQojIDE1OSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tb2R1bGVzL2lyc3ltcy52ZXIiIDEKIyAxNjAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9pc2FwbnAudmVyIiAxCiMgMTYxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvaXNkbl9jb21tb24u
dmVyIiAxCiMgMTYyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvaXNlbnNlLnZlciIgMQojIDE2MyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tb2R1bGVzL2l4ai52ZXIiIDEKIyAxNjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9qb3VybmFsLnZlciIgMQojIDE2NSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2tjYXBpLnZlciIgMQoj
IDE2NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL2tl
eWJvYXJkLnZlciIgMQojIDE2NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tb2R1bGVzL2ttb2QudmVyIiAxCiMgMTY4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21vZHVsZXMva3N5bXMudmVyIiAxCiMgMTY5ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbGFwYl9pZmFjZS52ZXIiIDEKIyAx
NzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9sbGNf
bWFjaW5pdC52ZXIiIDEKIyAxNzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbW9kdWxlcy9sbF9yd19ibGsudmVyIiAxCiMgMTcyICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbG9ja2Rfc3ltcy52ZXIiIDEKIyAxNzMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9sb29wLnZlciIg
MQojIDE3NCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVz
L21hY2g2NF9hY2NlbC52ZXIiIDEKIyAxNzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy9tYWNfaGlkLnZlciIgMQojIDE3NiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL21hdHJveGZiX2FjY2VsLnZlciIgMQoj
IDE3NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL21h
dHJveGZiX2Jhc2UudmVyIiAxCiMgMTc4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvbWF0cm94ZmJfREFDMTA2NC52ZXIiIDEKIyAxNzkgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9tYXRyb3hmYl9nNDUwLnZl
ciIgMQojIDE4MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1
bGVzL21hdHJveGZiX21pc2MudmVyIiAxCiMgMTgxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbWF0cm94ZmJfVGkzMDI2LnZlciIgMQojIDE4MiAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL21jYS52ZXIiIDEK
IyAxODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9t
ZC52ZXIiIDEKIyAxODQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdWxlcy9tZW1vcnkudmVyIiAxCiMgMTg1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvbWVtcG9vbC52ZXIiIDEKIyAxODYgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9taWNyb2NvZGUudmVyIiAxCiMgMTg3
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbWlkaV9z
eW1zLnZlciIgMQojIDE4OCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9tb2R1bGVzL21paS52ZXIiIDEKIyAxODkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy9taXJvcGNtMjAtcmRzLWNvcmUudmVyIiAxCiMgMTkwICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbWlzYy52ZXIiIDEK
IyAxOTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9t
b2RlZGIudmVyIiAxCiMgMTkyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvbXB0YmFzZS52ZXIiIDEKIyAxOTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9tcHRjdGwudmVyIiAxCiMgMTk0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbXB0bGFuLnZlciIgMQojIDE5
NSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL21wdHNj
c2loLnZlciIgMQojIDE5NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9tb2R1bGVzL21wdTQwMS52ZXIiIDEKIyAxOTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvbW9kdWxlcy9tc2Rvc2ZzX3N5bXMudmVyIiAxCiMgMTk4ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbXNkb3MudmVyIiAxCiMg
MTk5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbXNn
cXVldWUudmVyIiAxCiMgMjAwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L21vZHVsZXMvbXNuZC52ZXIiIDEKIyAyMDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvbW9kdWxlcy9tc3IudmVyIiAxCiMgMjAyICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbXRkY29uY2F0LnZlciIgMQojIDIwMyAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL210ZGNvcmUu
dmVyIiAxCiMgMjA0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvbXRkcGFydC52ZXIiIDEKIyAyMDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy9tdHJyLnZlciIgMQojIDIwNiAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL25hbmRfZWNjLnZlciIgMQojIDIwNyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL25hbmQudmVyIiAx
CiMgMjA4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
bmV0ZmlsdGVyLnZlciIgMQojIDIwOSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9tb2R1bGVzL25ldF9pbml0LnZlciIgMQojIDIxMCAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL25ldHN5bXMudmVyIiAxCiMgMjExICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvbmV3cG9ydC52ZXIi
IDEKIyAyMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxl
cy9ubHNfYmFzZS52ZXIiIDEKIyAyMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9ubTI1Nl9hdWRpby52ZXIiIDEKIyAyMTQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9udWJ1c19zeW1zLnZlciIgMQojIDIx
NSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL252cmFt
LnZlciIgMQojIDIxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2
ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9t
b2R1bGVzL29oY2kxMzk0LnZlciIgMQojIDIxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9tb2R1bGVzL29wZW4udmVyIiAxCiMgMjE4ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvb3BsMy52ZXIiIDEKIyAyMTkgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9vcmlub2NvLnZlciIg
MQojIDIyMCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9u
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVz
L292NTExLnZlciIgMQojIDIyMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tb2R1bGVzL3A4MDIyLnZlciIgMQojIDIyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3BhZ2VfYWxsb2MudmVyIiAxCiMgMjIzICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcGFnZWF0dHIudmVyIiAx
CiMgMjI0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25z
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMv
cGFycG9ydF9wYy52ZXIiIDEKIyAyMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdWxlcy9wY2lnYW1lLnZlciIgMQojIDIyNiAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3BjaV9ob3RwbHVnX2NvcmUudmVyIiAxCiMg
MjI3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcGNp
X2hvdHBsdWdfdXRpbC52ZXIiIDEKIyAyMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy9wY2lfc29ja2V0LnZlciIgMQojIDIyOSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3BjaS52ZXIiIDEKIyAyMzAgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9waG9uZWRldi52
ZXIiIDEKIyAyMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9k
dWxlcy9wbS52ZXIiIDEKIyAyMzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbW9kdWxlcy9wcHBfYXN5bmMudmVyIiAxCiMgMjMzICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcHBwX2dlbmVyaWMudmVyIiAxCiMgMjM0ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcHBwb3gudmVy
IiAxCiMgMjM1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvcHJpbnRrLnZlciIgMQojIDIzNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9tb2R1bGVzL3Byb2MudmVyIiAxCiMgMjM3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcHJvZmlsZS52ZXIiIDEKIyAyMzggIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9wc25hcC52ZXIiIDEKIyAy
MzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9wdHku
dmVyIiAxCiMgMjQwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvcHdjLXVuY29tcHJlc3MudmVyIiAxCiMgMjQxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcXVldWUudmVyIiAxCiMgMjQyICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcmFuZG9tLnZlciIgMQojIDI0
MyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3Jhdy52
ZXIiIDEKIyAyNDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9k
dWxlcy9yYXlfY3MudmVyIiAxCiMgMjQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvcmJ0cmVlLnZlciIgMQojIDI0NiAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3JlZGJvb3QudmVyIiAxCiMgMjQ3ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvcmVzb3VyY2VzLnZl
ciIgMQojIDI0OCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1
bGVzL3Jvb3QudmVyIiAxCiMgMjQ5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L21vZHVsZXMvcnJtLnZlciIgMQojIDI1MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3J0Yy52ZXIiIDEKIyAyNTEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9yd3NlbS1zcGlubG9jay52ZXIiIDEK
IyAyNTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9y
d3NlbS52ZXIiIDEKIyAyNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvbW9kdWxlcy9yeHJwY19zeW1zLnZlciIgMQojIDI1NCAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NhMTEwMGZiLnZlciIgMQojIDI1NSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NiX2NvbW1vbi52ZXIi
IDEKIyAyNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxl
cy9zY3NpX3N5bXMudmVyIiAxCiMgMjU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHVsZXMvc2RsYWRydi52ZXIiIDEKIyAyNTggIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9zZWxlY3Rpb24udmVyIiAxCiMgMjU5ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc2Vuc29ycy52
ZXIiIDEKIyAyNjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVy
c2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9k
dWxlcy9zZXF1ZW5jZXJfc3ltcy52ZXIiIDEKIyAyNjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9zZXJpYWwudmVyIiAxCiMgMjYyICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc2VyaW8udmVyIiAxCiMgMjYz
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc2V0dXAt
cGNpLnZlciIgMQojIDI2NCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9t
b2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9tb2R1bGVzL3NnaWNvbnMudmVyIiAxCiMgMjY1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc2htZW0udmVyIiAxCiMgMjY2ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc2htaXEudmVyIiAxCiMgMjY3ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc2lnbmFsLnZl
ciIgMQojIDI2OCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJz
aW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1
bGVzL3Npc19tYWluLnZlciIgMQojIDI2OSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tb2R1bGVzL3NsaGMudmVyIiAxCiMgMjcwICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc29ueXBpLnZlciIgMQojIDI3MSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3NvdW5kX2NvcmUudmVy
IiAxCiMgMjcyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvc291bmRfc3ltcy52ZXIiIDEKIyAyNzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy9zdGljb24udmVyIiAxCiMgMjc0ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc3RpY29yZS52ZXIiIDEKIyAyNzUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy9zdGlmYi52ZXIi
IDEKIyAyNzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxl
cy9zdW5pLnZlciIgMQojIDI3NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tb2R1bGVzL3N1bnJwY19zeW1zLnZlciIgMQojIDI3OCAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3N1LnZlciIgMQojIDI3OSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3N5bXMudmVyIiAxCiMgMjgw
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvc3luY3Bw
cC52ZXIiIDEKIyAyODEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdWxlcy9zeXNycS52ZXIiIDEKIyAyODIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy9zeXMudmVyIiAxCiMgMjgzICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvdGMudmVyIiAxCiMgMjg0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvdGltZS52ZXIiIDEKIyAyODUg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy90bXMzODB0
ci52ZXIiIDEKIyAyODYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9k
dmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bW9kdWxlcy90cmFwcy52ZXIiIDEKIyAyODcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbW9kdWxlcy90dHlfaW9jdGwudmVyIiAxCiMgMjg4ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvdHR5X2lvLnZlciIgMQojIDI4OSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3VhcnQ0MDEu
dmVyIiAxCiMgMjkwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZl
cnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21v
ZHVsZXMvdVBEOTg0MDIudmVyIiAxCiMgMjkxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21vZHVsZXMvdXNic2VyaWFsLnZlciIgMQojIDI5MiAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3VzYi52ZXIiIDEKIyAyOTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxlcy91c2VtYS52ZXIi
IDEKIyAyOTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdmVyc2lv
bnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW9kdWxl
cy91dGlsLnZlciIgMQojIDI5NSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tb2R1bGVzL3ZmYXRmc19zeW1zLnZlciIgMQojIDI5NiAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3ZpYS1wbXUudmVyIiAxCiMgMjk3ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvdmlkZW9kZXYudmVy
IiAxCiMgMjk4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNp
b25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVs
ZXMvd2FubWFpbi52ZXIiIDEKIyAyOTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbW9kdmVyc2lvbnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW9kdWxlcy94b3IudmVyIiAxCiMgMzAwICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMveWVudGEudmVyIiAxCiMgMzAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHZlcnNpb25zLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21vZHVsZXMvejg1MjMwLnZlciIgMQojIDMw
MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tb2R1bGVzL3pmdGFw
ZV9zeW1zLnZlciIgMQojIDMwMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tb2R1bGVzL3pvcnJvLnZlciIgMQojIDMwNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9tb2R2ZXJzaW9ucy5oIiAyCiMgMiAiPGNvbW1hbmQgbGluZT4iIDIKIyAx
ICJza2dlcG5taS5jIgojIDQzNSAic2tnZXBubWkuYyIKc3RhdGljIGNvbnN0IGNoYXIgU3lzS29u
bmVjdEZpbGVJZFtdID0KICAgICAgICAiQCgjKSAkSWQ6IHNrZ2Vwbm1pLmMsdiAxLjEwMiAyMDAy
LzEyLzE2IDE0OjAzOjI0IHRzY2hpbGxpIEV4cCAkIgogICAgICAgICIgKEMpIFN5c0tvbm5lY3Qu
IjsKCiMgMSAiaC9za2RydjFzdC5oIiAxCiMgOTEgImgvc2tkcnYxc3QuaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3ZlcnNpb24uaCIgMQojIDkyICJoL3NrZHJ2
MXN0LmgiIDIKCgoKdHlwZWRlZiBzdHJ1Y3Qgc19BQyBTS19BQzsKIyAxMTcgImgvc2tkcnYxc3Qu
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3ZlcnNpb24uaCIg
MQojIDExOCAiaC9za2RydjFzdC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC90eXBlcy5oIiAxCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvY29uZmlnLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L2F1dG9jb25mLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAyCiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC90eXBlcy5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAyCiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg
IHVuc2lnbmVkIGxvbmcgZmRzX2JpdHMgWygxMDI0Lyg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcp
KSldOwp9IF9fa2VybmVsX2ZkX3NldDsKCgp0eXBlZGVmIHZvaWQgKCpfX2tlcm5lbF9zaWdoYW5k
bGVyX3QpKGludCk7CgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfa2V5X3Q7CgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDEKIyAxMCAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCIKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBfX2tlcm5lbF9kZXZfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fa2VybmVs
X2lub190Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX21vZGVfdDsKdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9ubGlua190Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfb2Zm
X3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX3BpZF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f
a2VybmVsX2lwY19waWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF91aWRfdDsK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX19rZXJuZWxfc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVm
IGludCBfX2tlcm5lbF9wdHJkaWZmX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF90aW1lX3Q7CnR5
cGVkZWYgbG9uZyBfX2tlcm5lbF9zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVsX2Ns
b2NrX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqIF9fa2Vy
bmVsX2NhZGRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfdWlkMTZfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX2tlcm5lbF91aWQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9naWQzMl90
OwoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX2dpZF90OwoKCnR5cGVkZWYgbG9uZyBsb25nIF9fa2Vy
bmVsX2xvZmZfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgICAgIGludCB2YWxbMl07CgoKCn0g
X19rZXJuZWxfZnNpZF90OwojIDQ3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L3Bvc2l4X3R5cGVzLmgiIDIKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L3R5cGVzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2Fz
bS90eXBlcy5oIiAxCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdW1vZGVfdDsKCgoKCgoKdHlw
ZWRlZiBfX3NpZ25lZF9fIGNoYXIgX19zODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTg7Cgp0
eXBlZGVmIF9fc2lnbmVkX18gc2hvcnQgX19zMTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191
MTY7Cgp0eXBlZGVmIF9fc2lnbmVkX18gaW50IF9fczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCBf
X3UzMjsKCgp0eXBlZGVmIF9fc2lnbmVkX18gbG9uZyBsb25nIF9fczY0Owp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyBfX3U2NDsKIyAzMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9hc20vdHlwZXMuaCIKdHlwZWRlZiBzaWduZWQgY2hhciBzODsKdHlwZWRlZiB1bnNpZ25lZCBj
aGFyIHU4OwoKdHlwZWRlZiBzaWduZWQgc2hvcnQgczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IHUxNjsKCnR5cGVkZWYgc2lnbmVkIGludCBzMzI7CnR5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsK
CnR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IHU2NDsKIyA1MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vdHlwZXMuaCIK
dHlwZWRlZiB1MzIgZG1hX2FkZHJfdDsKCnR5cGVkZWYgdTY0IGRtYTY0X2FkZHJfdDsKIyAxMCAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAyCgoKCnR5cGVk
ZWYgX19rZXJuZWxfZmRfc2V0IGZkX3NldDsKdHlwZWRlZiBfX2tlcm5lbF9kZXZfdCBkZXZfdDsK
dHlwZWRlZiBfX2tlcm5lbF9pbm9fdCBpbm9fdDsKdHlwZWRlZiBfX2tlcm5lbF9tb2RlX3QgbW9k
ZV90Owp0eXBlZGVmIF9fa2VybmVsX25saW5rX3QgbmxpbmtfdDsKdHlwZWRlZiBfX2tlcm5lbF9v
ZmZfdCBvZmZfdDsKdHlwZWRlZiBfX2tlcm5lbF9waWRfdCBwaWRfdDsKdHlwZWRlZiBfX2tlcm5l
bF9kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19rZXJuZWxfa2V5X3Qga2V5X3Q7CnR5cGVkZWYg
X19rZXJuZWxfc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKdHlwZWRlZiBfX2tlcm5lbF91aWQz
Ml90IHVpZF90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDMyX3QgZ2lkX3Q7CnR5cGVkZWYgX19rZXJu
ZWxfdWlkMTZfdCB1aWQxNl90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDE2X3QgZ2lkMTZfdDsKCgoK
dHlwZWRlZiBfX2tlcm5lbF9vbGRfdWlkX3Qgb2xkX3VpZF90Owp0eXBlZGVmIF9fa2VybmVsX29s
ZF9naWRfdCBvbGRfZ2lkX3Q7CiMgNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvdHlwZXMuaCIKdHlwZWRlZiBfX2tlcm5lbF9sb2ZmX3QgbG9mZl90OwojIDU0ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgX19rZXJu
ZWxfc2l6ZV90IHNpemVfdDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfc3NpemVfdCBzc2l6ZV90OwoK
CgoKdHlwZWRlZiBfX2tlcm5lbF9wdHJkaWZmX3QgcHRyZGlmZl90OwoKCgoKdHlwZWRlZiBfX2tl
cm5lbF90aW1lX3QgdGltZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9jbG9ja190IGNsb2NrX3Q7
CgoKCgp0eXBlZGVmIF9fa2VybmVsX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIHVfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVu
c2lnbmVkIGludCB1X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKCgp0eXBlZGVm
IHVuc2lnbmVkIGNoYXIgdW5jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoKCgoK
dHlwZWRlZiBfX3U4IHVfaW50OF90Owp0eXBlZGVmIF9fczggaW50OF90Owp0eXBlZGVmIF9fdTE2
IHVfaW50MTZfdDsKdHlwZWRlZiBfX3MxNiBpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVfaW50MzJf
dDsKdHlwZWRlZiBfX3MzMiBpbnQzMl90OwoKCgp0eXBlZGVmIF9fdTggdWludDhfdDsKdHlwZWRl
ZiBfX3UxNiB1aW50MTZfdDsKdHlwZWRlZiBfX3UzMiB1aW50MzJfdDsKCgp0eXBlZGVmIF9fdTY0
IHVpbnQ2NF90Owp0eXBlZGVmIF9fdTY0IHVfaW50NjRfdDsKdHlwZWRlZiBfX3M2NCBpbnQ2NF90
OwojIDEyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC90eXBlcy5oIgpz
dHJ1Y3QgdXN0YXQgewogICAgICAgIF9fa2VybmVsX2RhZGRyX3QgZl90ZnJlZTsKICAgICAgICBf
X2tlcm5lbF9pbm9fdCBmX3Rpbm9kZTsKICAgICAgICBjaGFyIGZfZm5hbWVbNl07CiAgICAgICAg
Y2hhciBmX2ZwYWNrWzZdOwp9OwojIDExOSAiaC9za2RydjFzdC5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDEwICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgojIDEgIi91c3IvbGliL2djYy1s
aWIvaTM4Ni1yZWRoYXQtbGludXgvMy4yLjIvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91
c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMy4yLjIvaW5jbHVkZS9zdGRhcmcuaCIg
Mwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDExMCAiL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8zLjIuMi9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5
cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgva2VybmVsLmgiIDIKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3Uz
MiBfX19hcmNoX19zd2FiMzIoX191MzIgeCkKewoKICAgICAgICBfX2FzbV9fKCJic3dhcCAlMCIg
OiAiPXIiICh4KSA6ICIwIiAoeCkpOwoKCgoKCgoKICAgICAgICByZXR1cm4geDsKfQoKc3RhdGlj
IF9faW5saW5lX18gX19jb25zdF9fIF9fdTE2IF9fX2FyY2hfX3N3YWIxNihfX3UxNiB4KQp7CiAg
ICAgICAgX19hc21fXygieGNoZ2IgJWIwLCVoMCIgOiAiPXEiICh4KSA6ICIwIiAoeCkpOyByZXR1
cm4geDsKCgoKfQojIDQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9ieXRl
b3JkZXIuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2J5dGVv
cmRlci9saXR0bGVfZW5kaWFuLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL3N3YWIuaCIgMQojIDE1OSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oIgpzdGF0aWMg
X19pbmxpbmVfXyBfX2NvbnN0X18gX191MTYgX19mc3dhYjE2KF9fdTE2IHgpCnsKICAgICAgICBy
ZXR1cm4gX19fYXJjaF9fc3dhYjE2KHgpOwp9CnN0YXRpYyBfX2lubGluZV9fIF9fdTE2IF9fc3dh
YjE2cChfX3UxNiAqeCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19zd2FiMTYoKih4KSk7Cn0K
c3RhdGljIF9faW5saW5lX18gdm9pZCBfX3N3YWIxNnMoX191MTYgKmFkZHIpCnsKICAgICAgICBk
byB7ICooYWRkcikgPSBfX19hcmNoX19zd2FiMTYoKigoYWRkcikpKTsgfSB3aGlsZSAoMCk7Cn0K
CnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UzMiBfX2Zzd2FiMjQoX191MzIgeCkKewog
ICAgICAgIHJldHVybiAoeyBfX3UzMiBfX3RtcCA9ICh4KSA7ICh7IF9fdTMyIF9feCA9IChfX3Rt
cCk7ICgoX191MzIpKCAoKF9feCAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDE2KSB8IChfX3gg
JiAoX191MzIpMHgwMDAwZmYwMFVMKSB8ICgoX194ICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4g
MTYpICkpOyB9KTsgfSk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MzIgX19zd2FiMjRwKF9fdTMy
ICp4KQp7CiAgICAgICAgcmV0dXJuICh7IF9fdTMyIF9fdG1wID0gKCooeCkpIDsgKHsgX191MzIg
X194ID0gKF9fdG1wKTsgKChfX3UzMikoICgoX194ICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwg
MTYpIHwgKF9feCAmIChfX3UzMikweDAwMDBmZjAwVUwpIHwgKChfX3ggJiAoX191MzIpMHgwMGZm
MDAwMFVMKSA+PiAxNikgKSk7IH0pOyB9KTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dh
YjI0cyhfX3UzMiAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9ICh7IF9fdTMyIF9fdG1w
ID0gKCooKGFkZHIpKSkgOyAoeyBfX3UzMiBfX3ggPSAoX190bXApOyAoKF9fdTMyKSggKChfX3gg
JiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAxNikgfCAoX194ICYgKF9fdTMyKTB4MDAwMGZmMDBV
TCkgfCAoKF9feCAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+IDE2KSApKTsgfSk7IH0pOyB9IHdo
aWxlICgwKTsKfQoKc3RhdGljIF9faW5saW5lX18gX19jb25zdF9fIF9fdTMyIF9fZnN3YWIzMihf
X3UzMiB4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIzMih4KTsKfQpzdGF0aWMgX19p
bmxpbmVfXyBfX3UzMiBfX3N3YWIzMnAoX191MzIgKngpCnsKICAgICAgICByZXR1cm4gX19fYXJj
aF9fc3dhYjMyKCooeCkpOwp9CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19zd2FiMzJzKF9fdTMy
ICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIpID0gX19fYXJjaF9fc3dhYjMyKCooKGFkZHIp
KSk7IH0gd2hpbGUgKDApOwp9CgoKc3RhdGljIF9faW5saW5lX18gX19jb25zdF9fIF9fdTY0IF9f
ZnN3YWI2NChfX3U2NCB4KQp7CgogICAgICAgIF9fdTMyIGggPSB4ID4+IDMyOwogICAgICAgIF9f
dTMyIGwgPSB4ICYgKCgxVUxMPDwzMiktMSk7CiAgICAgICAgcmV0dXJuICgoKF9fdTY0KShfX2J1
aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKGwpKSA/ICh7IF9fdTMyIF9feCA9ICgobCkpOyAoKF9f
dTMyKSggKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChf
X3UzMikoX194KSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8IDgpIHwgKCgoX191MzIpKF9feCkg
JiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4
ZmYwMDAwMDBVTCkgPj4gMjQpICkpOyB9KSA6IF9fZnN3YWIzMigobCkpKSkgPDwgMzIpIHwgKChf
X3U2NCkoKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMikoaCkpID8gKHsgX191MzIgX194ID0g
KChoKSk7ICgoX191MzIpKCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8
IDI0KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChf
X3UzMikoX194KSAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+IDgpIHwgKCgoX191MzIpKF9feCkg
JiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSk7IH0pIDogX19mc3dhYjMyKChoKSkpKSk7
CgoKCn0Kc3RhdGljIF9faW5saW5lX18gX191NjQgX19zd2FiNjRwKF9fdTY0ICp4KQp7CiAgICAg
ICAgcmV0dXJuICh7IF9fdTY0IF9fdG1wID0gKCooeCkpIDsgKHsgX191NjQgX194ID0gKF9fdG1w
KTsgKChfX3U2NCkoIChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAw
MDAwZmZVTEwpIDw8IDU2KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAw
MDAwMDAwMGZmMDBVTEwpIDw8IDQwKSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkw
eDAwMDAwMDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChf
X3U2NCkweDAwMDAwMDAwZmYwMDAwMDBVTEwpIDw8IDgpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gp
ICYgKF9fdTY0KTB4MDAwMDAwZmYwMDAwMDAwMFVMTCkgPj4gOCkgfCAoX191NjQpKCgoX191NjQp
KF9feCkgJiAoX191NjQpMHgwMDAwZmYwMDAwMDAwMDAwVUxMKSA+PiAyNCkgfCAoX191NjQpKCgo
X191NjQpKF9feCkgJiAoX191NjQpMHgwMGZmMDAwMDAwMDAwMDAwVUxMKSA+PiA0MCkgfCAoX191
NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHhmZjAwMDAwMDAwMDAwMDAwVUxMKSA+PiA1Nikg
KSk7IH0pOyB9KTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dhYjY0cyhfX3U2NCAqYWRk
cikKewogICAgICAgIGRvIHsgKihhZGRyKSA9ICh7IF9fdTY0IF9fdG1wID0gKCooKGFkZHIpKSkg
OyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9fdTY0KSggKF9fdTY0KSgoKF9fdTY0KShfX3gp
ICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkgPDwgNTYpIHwgKF9fdTY0KSgoKF9fdTY0
KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwZmYwMFVMTCkgPDwgNDApIHwgKF9fdTY0KSgo
KF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMGZmMDAwMFVMTCkgPDwgMjQpIHwgKF9f
dTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDBmZjAwMDAwMFVMTCkgPDwgOCkg
fCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDBmZjAwMDAwMDAwVUxMKSA+
PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDBmZjAwMDAwMDAwMDBV
TEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwZmYwMDAwMDAw
MDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweGZmMDAw
MDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7IH0pOyB9IHdoaWxlICgwKTsKfQojIDEyICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5k
aWFuLmgiIDIKIyA4MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9ieXRl
b3JkZXIvbGl0dGxlX2VuZGlhbi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIgMQojIDE1MCAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIgpleHRlcm4gX191MzIgbnRv
aGwoX191MzIpOwpleHRlcm4gX191MzIgaHRvbmwoX191MzIpOwoKCgoKZXh0ZXJuIHVuc2lnbmVk
IHNob3J0IGludCBudG9ocyh1bnNpZ25lZCBzaG9ydCBpbnQpOwpleHRlcm4gdW5zaWduZWQgc2hv
cnQgaW50IGh0b25zKHVuc2lnbmVkIHNob3J0IGludCk7CiMgODMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMgojIDQ2ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMgojIDE2ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgNDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgva2VybmVsLmgiCmV4dGVybiBpbnQg
Y29uc29sZV9wcmludGtbXTsKIyA1OCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9rZXJuZWwuaCIKc3RydWN0IGNvbXBsZXRpb247CgpleHRlcm4gc3RydWN0IG5vdGlmaWVy
X2Jsb2NrICpwYW5pY19ub3RpZmllcl9saXN0X1IwZDVlZWIyNTsKIHZvaWQgcGFuaWNfUjAxMDc1
YmYwKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgobm9yZXR1
cm4sIGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp
IHZvaWQgZG9fZXhpdChsb25nIGVycm9yX2NvZGUpCiAgICAgICAgX19hdHRyaWJ1dGVfXygobm9y
ZXR1cm4pKTsKIHZvaWQgY29tcGxldGVfYW5kX2V4aXRfUjk1ZGVmZmI3KHN0cnVjdCBjb21wbGV0
aW9uICosIGxvbmcpCiAgICAgICAgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKZXh0ZXJuIGlu
dCBhYnMoaW50KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgc2ltcGxlX3N0cnRvdWxfUjIwMDAwMzI5
KGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBsb25nIHNpbXBsZV9z
dHJ0b2xfUjBiNzQyZmQ3KGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVy
biB1bnNpZ25lZCBsb25nIGxvbmcgc2ltcGxlX3N0cnRvdWxsX1I2MWI3YjEyNihjb25zdCBjaGFy
ICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpleHRlcm4gbG9uZyBsb25nIHNpbXBsZV9zdHJ0b2xs
KGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgc3ByaW50Zl9S
MWQyNmFhOTgoY2hhciAqIGJ1ZiwgY29uc3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0
cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKTsKZXh0ZXJuIGludCB2c3ByaW50Zl9S
OTU0Y2JiMjYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwpleHRlcm4gaW50IHNu
cHJpbnRmX1IwMjVkYTA3MChjaGFyICogYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqIGZt
dCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsK
ZXh0ZXJuIGludCB2c25wcmludGZfUjU3YTY1MDRlKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNv
bnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKTsKCmV4dGVybiBpbnQgc3NjYW5mX1I4NTkyMDRh
Zihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18g
KChmb3JtYXQgKHNjYW5mLDIsMykpKTsKZXh0ZXJuIGludCB2c3NjYW5mX1JiNTA0NDI3MShjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CgpleHRlcm4gaW50IGdldF9vcHRpb25f
UmIwZTEwNzgxKGNoYXIgKipzdHIsIGludCAqcGludCk7CmV4dGVybiBjaGFyICpnZXRfb3B0aW9u
c19SMGZiZmY5YjkoY2hhciAqc3RyLCBpbnQgbmludHMsIGludCAqaW50cyk7CmV4dGVybiB1bnNp
Z25lZCBsb25nIGxvbmcgbWVtcGFyc2VfUjIzZjJkMzZmKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0
cik7CmV4dGVybiB2b2lkIGRldl9wcm9iZV9sb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBkZXZfcHJv
YmVfdW5sb2NrKHZvaWQpOwoKZXh0ZXJuIGludCBzZXNzaW9uX29mX3BncnAoaW50IHBncnApOwoK
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgcHJpbnRrX1IxYjdkNDA3NChjb25zdCBj
aGFyICogZm10LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAx
LCAyKSkpOwoKc3RhdGljIGlubGluZSB2b2lkIGNvbnNvbGVfc2lsZW50KHZvaWQpCnsKICAgICAg
ICAoY29uc29sZV9wcmludGtbMF0pID0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNvbnNvbGVf
dmVyYm9zZSh2b2lkKQp7CiAgICAgICAgaWYgKChjb25zb2xlX3ByaW50a1swXSkpCiAgICAgICAg
ICAgICAgICAoY29uc29sZV9wcmludGtbMF0pID0gMTU7Cn0KCmV4dGVybiB2b2lkIGJ1c3Rfc3Bp
bmxvY2tzKGludCB5ZXMpOwpleHRlcm4gaW50IG9vcHNfaW5fcHJvZ3Jlc3M7CnN0cnVjdCBwdF9y
ZWdzOwpleHRlcm4gdm9pZCAoKm5ldGR1bXBfZnVuY19SMTJlMzE1MjEpIChzdHJ1Y3QgcHRfcmVn
cyAqcmVncyk7CmV4dGVybiBpbnQgbmV0ZHVtcF9tb2RlX1JkZjlmMDc1ZTsKCmV4dGVybiBpbnQg
dGFpbnRlZDsKZXh0ZXJuIGNvbnN0IGNoYXIgKnByaW50X3RhaW50ZWQodm9pZCk7CgpleHRlcm4g
dm9pZCBkdW1wX3N0YWNrX1I2YjJkYzA2MCh2b2lkKTsKCmV4dGVybiBpbnQgbG9va3VwX3N5bWJv
bCh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGNoYXIgKmJ1ZmZlciwgaW50IGJ1Zmxlbik7CiMgMTkx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpleHRlcm4g
dm9pZCBfX291dF9vZl9saW5lX2J1Z19SOGIwZmQzYzUoaW50IGxpbmUpIF9fYXR0cmlidXRlX18o
KG5vcmV0dXJuKSk7CgoKCgoKc3RydWN0IHN5c2luZm8gewogICAgICAgIGxvbmcgdXB0aW1lOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9hZHNbM107CiAgICAgICAgdW5zaWduZWQgbG9uZyB0b3Rh
bHJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVyYW07CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzaGFyZWRyYW07CiAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJyYW07CiAgICAgICAgdW5z
aWduZWQgbG9uZyB0b3RhbHN3YXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlc3dhcDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBwcm9jczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWQ7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyB0b3RhbGhpZ2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVl
aGlnaDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWVtX3VuaXQ7CiAgICAgICAgY2hhciBfZlsyMC0y
KnNpemVvZihsb25nKS1zaXplb2YoaW50KV07Cn07CiMgMTIwICJoL3NrZHJ2MXN0LmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAxCiMgMTUg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCmV4dGVybiBj
aGFyICogX19fc3RydG9rX1IyOTgwNWMxMzsKZXh0ZXJuIGNoYXIgKiBzdHJwYnJrX1I5YTFkZmQ2
NShjb25zdCBjaGFyICosY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKiBzdHJ0b2tfUmVlOWMx
YmQ0KGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cnNlcF9SODVkZjliNmMo
Y2hhciAqKixjb25zdCBjaGFyICopOwpleHRlcm4gX19rZXJuZWxfc2l6ZV90IHN0cnNwbl9SYzdl
YzZjMjcoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7CgoKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIgMQojIDMzICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSBjaGFyICogc3RyY3B5
KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKnNyYykKewppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBf
X3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIK
ICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiIgogICAgICAgIDog
Ij0mUyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKQogICAgICAgIDoiMCIgKHNyYyksIjEi
IChkZXN0KSA6ICJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIg
KiBzdHJuY3B5KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKnNyYyxzaXplX3QgY291bnQpCnsKaW50
IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGRlY2wg
JTJcblx0IgogICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgImxvZHNiXG5cdCIKICAgICAgICAi
c3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJc
blx0IgogICAgICAgICJyZXBcblx0IgogICAgICAgICJzdG9zYlxuIgogICAgICAgICIyOiIKICAg
ICAgICA6ICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmMiIChkMiksICI9JmEiIChkMykKICAg
ICAgICA6IjAiIChzcmMpLCIxIiAoZGVzdCksIjIiIChjb3VudCkgOiAibWVtb3J5Iik7CnJldHVy
biBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBjaGFyICogc3RyY2F0KGNoYXIgKiBkZXN0LGNvbnN0
IGNoYXIgKiBzcmMpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFc
biIKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0
ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWIiCiAgICAgICAgOiAiPSZTIiAoZDAp
LCAiPSZEIiAoZDEpLCAiPSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyks
ICIxIiAoZGVzdCksICIyIiAoMCksICIzIiAoMHhmZmZmZmZmZik6Im1lbW9yeSIpOwpyZXR1cm4g
ZGVzdDsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cm5jYXQoY2hhciAqIGRlc3QsY29uc3Qg
Y2hhciAqIHNyYyxzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9f
dm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAg
ICAgImRlY2wgJTFcblx0IgogICAgICAgICJtb3ZsICU4LCUzXG4iCiAgICAgICAgIjE6XHRkZWNs
ICUzXG5cdCIKICAgICAgICAianMgMmZcblx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAg
InN0b3NiXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFi
XG4iCiAgICAgICAgIjI6XHR4b3JsICUyLCUyXG5cdCIKICAgICAgICAic3Rvc2IiCiAgICAgICAg
OiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAg
OiAiMCIgKHNyYyksIjEiIChkZXN0KSwiMiIgKDApLCIzIiAoMHhmZmZmZmZmZiksICJnIiAoY291
bnQpCiAgICAgICAgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBp
bnQgc3RyY21wKGNvbnN0IGNoYXIgKiBjcyxjb25zdCBjaGFyICogY3QpCnsKaW50IGQwLCBkMTsK
cmVnaXN0ZXIgaW50IF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGxv
ZHNiXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJqbmUgMmZcblx0IgogICAgICAg
ICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJ4b3Js
ICUlZWF4LCUlZWF4XG5cdCIKICAgICAgICAiam1wIDNmXG4iCiAgICAgICAgIjI6XHRzYmJsICUl
ZWF4LCUlZWF4XG5cdCIKICAgICAgICAib3JiICQxLCUlYWxcbiIKICAgICAgICAiMzoiCiAgICAg
ICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSwgIj0mRCIgKGQxKQogICAgICAgICAgICAgICAg
ICAgICA6IjEiIChjcyksIjIiIChjdCkpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5l
IGludCBzdHJuY21wKGNvbnN0IGNoYXIgKiBjcyxjb25zdCBjaGFyICogY3Qsc2l6ZV90IGNvdW50
KQp7CnJlZ2lzdGVyIGludCBfX3JlczsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICIxOlx0ZGVjbCAlM1xuXHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAg
ICAibG9kc2Jcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImpuZSAzZlxuXHQiCiAg
ICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIy
Olx0eG9ybCAlJWVheCwlJWVheFxuXHQiCiAgICAgICAgImptcCA0ZlxuIgogICAgICAgICIzOlx0
c2JibCAlJWVheCwlJWVheFxuXHQiCiAgICAgICAgIm9yYiAkMSwlJWFsXG4iCiAgICAgICAgIjQ6
IgogICAgICAgICAgICAgICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZEIiAo
ZDEpLCAiPSZjIiAoZDIpCiAgICAgICAgICAgICAgICAgICAgIDoiMSIgKGNzKSwiMiIgKGN0KSwi
MyIgKGNvdW50KSk7CnJldHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNo
cihjb25zdCBjaGFyICogcywgaW50IGMpCnsKaW50IGQwOwpyZWdpc3RlciBjaGFyICogX19yZXM7
Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJtb3ZiICUlYWwsJSVhaFxuIgogICAgICAg
ICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJjbXBiICUlYWgsJSVhbFxuXHQiCiAgICAgICAgImpl
IDJmXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5c
dCIKICAgICAgICAibW92bCAkMSwlMVxuIgogICAgICAgICIyOlx0bW92bCAlMSwlMFxuXHQiCiAg
ICAgICAgImRlY2wgJTAiCiAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSA6ICIxIiAo
cyksIjAiIChjKSk7CnJldHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cnJj
aHIoY29uc3QgY2hhciAqIHMsIGludCBjKQp7CmludCBkMCwgZDE7CnJlZ2lzdGVyIGNoYXIgKiBf
X3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIm1vdmIgJSVhbCwlJWFoXG4iCiAg
ICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgImNtcGIgJSVhaCwlJWFsXG5cdCIKICAgICAg
ICAiam5lIDJmXG5cdCIKICAgICAgICAibGVhbCAtMSglJWVzaSksJTBcbiIKICAgICAgICAiMjpc
dHRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYiIKICAgICAgICA6Ij1nIiAoX19y
ZXMpLCAiPSZTIiAoZDApLCAiPSZhIiAoZDEpIDoiMCIgKDApLCIxIiAocyksIjIiIChjKSk7CnJl
dHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgc2l6ZV90IHN0cmxlbihjb25zdCBjaGFyICog
cykKewppbnQgZDA7CnJlZ2lzdGVyIGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAg
ICAgICAgInJlcG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJub3RsICUwXG5c
dCIKICAgICAgICAiZGVjbCAlMCIKICAgICAgICA6Ij1jIiAoX19yZXMpLCAiPSZEIiAoZDApIDoi
MSIgKHMpLCJhIiAoMCksICIwIiAoMHhmZmZmZmZmZikpOwpyZXR1cm4gX19yZXM7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCAqIF9fbWVtY3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNp
emVfdCBuKQp7CmludCBkMCwgZDEsIGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAi
cmVwIDsgbW92c2xcblx0IgogICAgICAgICJ0ZXN0YiAkMiwlYjRcblx0IgogICAgICAgICJqZSAx
ZlxuXHQiCiAgICAgICAgIm1vdnN3XG4iCiAgICAgICAgIjE6XHR0ZXN0YiAkMSwlYjRcblx0Igog
ICAgICAgICJqZSAyZlxuXHQiCiAgICAgICAgIm1vdnNiXG4iCiAgICAgICAgIjI6IgogICAgICAg
IDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKQogICAgICAgIDoiMCIgKG4vNCks
ICJxIiAobiksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pCiAgICAgICAgOiAibWVt
b3J5Iik7CnJldHVybiAodG8pOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFu
dF9tZW1jcHkodm9pZCAqIHRvLCBjb25zdCB2b2lkICogZnJvbSwgc2l6ZV90IG4pCnsKICAgICAg
ICBzd2l0Y2ggKG4pIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAg
ICAgICAgICAqKHVuc2lnbmVkIGNoYXIgKil0byA9ICooY29uc3QgdW5zaWduZWQgY2hhciAqKWZy
b207CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNh
c2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXRvID0gKihj
b25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgKih1
bnNpZ25lZCBzaG9ydCAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb207CiAgICAg
ICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgY2hhciAqKXRvKSA9ICooMisoY29uc3Qg
dW5zaWduZWQgY2hhciAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87
CiAgICAgICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWdu
ZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAg
ICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9u
ZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgc2hvcnQgKil0
bykgPSAqKDIrKGNvbnN0IHVuc2lnbmVkIHNob3J0ICopZnJvbSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAg
ICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilm
cm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAq
KDErKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgICAg
ICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwog
ICAgICAgICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNv
bnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1
bnNpZ25lZCBsb25nICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTY6
CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1
bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25l
ZCBsb25nICopdG8pID0gKigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5z
aWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDMrKHVuc2lnbmVk
IGxvbmcgKil0bykgPSAqKDMrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAyMDoKICAgICAg
ICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVk
IGxvbmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcg
Kil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgKigyKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBs
b25nICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMysodW5zaWduZWQgbG9uZyAq
KXRvKSA9ICooMysoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAg
ICAgICAgICAqKDQrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDQrKGNvbnN0IHVuc2lnbmVkIGxv
bmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgIH0K
CgoKCgoKCnsKICAgICAgICBpbnQgZDAsIGQxLCBkMjsKICAgICAgICBzd2l0Y2ggKG4gJSA0KSB7
CiAgICAgICAgICAgICAgICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92
c2wiICIiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwi
MSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87
CiAgICAgICAgICAgICAgICBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92
c2wiICJcblx0bW92c2IiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIw
IiAobi80KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyBy
ZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAi
cmVwIDsgbW92c2wiICJcblx0bW92c3ciIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIg
KGQyKSA6ICIwIiAobi80KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVt
b3J5Iik7OyByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggInJlcCA7IG1vdnNsIiAiXG5cdG1vdnN3XG5cdG1vdnNiIiA6ICI9JmMiIChkMCks
ICI9JkQiIChkMSksICI9JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAo
KGxvbmcpIGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAgICAgIH0KfQoKCn0KIyAz
MDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3N0cmluZy5oIgpleHRlcm4g
dm9pZCBfX3N0cnVjdF9jcHlfYnVnICh2b2lkKTsKIyAzMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvYXNtL3N0cmluZy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKiBtZW1tb3ZlKHZv
aWQgKiBkZXN0LGNvbnN0IHZvaWQgKiBzcmMsIHNpemVfdCBuKQp7CmludCBkMCwgZDEsIGQyOwpp
ZiAoZGVzdDxzcmMpCl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBcblx0IgogICAg
ICAgICJtb3ZzYiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JlMiIChkMSksICI9JkQiIChkMikK
ICAgICAgICA6IjAiIChuKSwiMSIgKHNyYyksIjIiIChkZXN0KQogICAgICAgIDogIm1lbW9yeSIp
OwplbHNlCl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJzdGRcblx0IgogICAgICAgICJy
ZXBcblx0IgogICAgICAgICJtb3ZzYlxuXHQiCiAgICAgICAgImNsZCIKICAgICAgICA6ICI9JmMi
IChkMCksICI9JlMiIChkMSksICI9JkQiIChkMikKICAgICAgICA6IjAiIChuKSwKICAgICAgICAg
IjEiIChuLTErKGNvbnN0IGNoYXIgKilzcmMpLAogICAgICAgICAiMiIgKG4tMSsoY2hhciAqKWRl
c3QpCiAgICAgICAgOiJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCAqIG1lbWNocihjb25zdCB2b2lkICogY3MsaW50IGMsc2l6ZV90IGNvdW50KQp7CmludCBk
MDsKcmVnaXN0ZXIgdm9pZCAqIF9fcmVzOwppZiAoIWNvdW50KQogICAgICAgIHJldHVybiAoKHZv
aWQgKikwKTsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcG5lXG5cdCIKICAgICAg
ICAic2Nhc2Jcblx0IgogICAgICAgICJqZSAxZlxuXHQiCiAgICAgICAgIm1vdmwgJDEsJTBcbiIK
ICAgICAgICAiMTpcdGRlY2wgJTAiCiAgICAgICAgOiI9RCIgKF9fcmVzKSwgIj0mYyIgKGQwKSA6
ICJhIiAoYyksIjAiIChjcyksIjEiIChjb3VudCkpOwpyZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCAqIF9fbWVtc2V0X2dlbmVyaWModm9pZCAqIHMsIGNoYXIgYyxzaXplX3QgY291
bnQpCnsKaW50IGQwLCBkMTsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcFxuXHQi
CiAgICAgICAgInN0b3NiIgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKQogICAgICAg
IDoiYSIgKGMpLCIxIiAocyksIjAiIChjb3VudCkKICAgICAgICA6Im1lbW9yeSIpOwpyZXR1cm4g
czsKfQojIDM3NCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vc3RyaW5nLmgi
CnN0YXRpYyBpbmxpbmUgdm9pZCAqIF9fY29uc3RhbnRfY19tZW1zZXQodm9pZCAqIHMsIHVuc2ln
bmVkIGxvbmcgYywgc2l6ZV90IGNvdW50KQp7CmludCBkMCwgZDE7Cl9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICJyZXAgOyBzdG9zbFxuXHQiCiAgICAgICAgInRlc3RiICQyLCViM1xuXHQi
CiAgICAgICAgImplIDFmXG5cdCIKICAgICAgICAic3Rvc3dcbiIKICAgICAgICAiMTpcdHRlc3Ri
ICQxLCViM1xuXHQiCiAgICAgICAgImplIDJmXG5cdCIKICAgICAgICAic3Rvc2JcbiIKICAgICAg
ICAiMjoiCiAgICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICAgOiJhIiAoYyks
ICJxIiAoY291bnQpLCAiMCIgKGNvdW50LzQpLCAiMSIgKChsb25nKSBzKQogICAgICAgIDoibWVt
b3J5Iik7CnJldHVybiAocyk7Cn0KCgoKc3RhdGljIGlubGluZSBzaXplX3Qgc3Rybmxlbihjb25z
dCBjaGFyICogcywgc2l6ZV90IGNvdW50KQp7CmludCBkMDsKcmVnaXN0ZXIgaW50IF9fcmVzOwpf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAibW92bCAlMiwlMFxuXHQiCiAgICAgICAgImpt
cCAyZlxuIgogICAgICAgICIxOlx0Y21wYiAkMCwoJTApXG5cdCIKICAgICAgICAiamUgM2Zcblx0
IgogICAgICAgICJpbmNsICUwXG4iCiAgICAgICAgIjI6XHRkZWNsICUxXG5cdCIKICAgICAgICAi
Y21wbCAkLTEsJTFcblx0IgogICAgICAgICJqbmUgMWJcbiIKICAgICAgICAiMzpcdHN1YmwgJTIs
JTAiCiAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0mZCIgKGQwKQogICAgICAgIDoiYyIgKHMpLCIx
IiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9CgoKCgpleHRlcm4gY2hhciAqc3Ryc3RyX1IxZTZk
MjZhOChjb25zdCBjaGFyICpjcywgY29uc3QgY2hhciAqY3QpOwoKCgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCAqIF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KHZvaWQgKiBzLCB1bnNpZ25lZCBs
b25nIHBhdHRlcm4sIHNpemVfdCBjb3VudCkKewogICAgICAgIHN3aXRjaCAoY291bnQpIHsKICAg
ICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAg
ICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQg
Y2hhciAqKXMgPSBwYXR0ZXJuOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAg
ICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBz
aG9ydCAqKXMgPSBwYXR0ZXJuOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAg
ICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBz
aG9ydCAqKXMgPSBwYXR0ZXJuOwogICAgICAgICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVk
IGNoYXIgKilzKSA9IHBhdHRlcm47CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwog
ICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVk
IGxvbmcgKilzID0gcGF0dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAg
ICAgICAgfQoKCgoKCgoKewogICAgICAgIGludCBkMCwgZDE7CiAgICAgICAgc3dpdGNoIChjb3Vu
dCAlIDQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDogX19hc21fXyBfX3ZvbGF0aWxlX18oICJy
ZXAgOyBzdG9zbCIgIiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpIDogImEiIChwYXR0ZXJuKSwi
MCIgKGNvdW50LzQpLCIxIiAoKGxvbmcpIHMpIDogIm1lbW9yeSIpOyByZXR1cm4gczsKICAgICAg
ICAgICAgICAgIGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICJyZXAgOyBzdG9zbCIgIlxu
XHRzdG9zYiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpIDogImEiIChwYXR0ZXJuKSwiMCIgKGNv
dW50LzQpLCIxIiAoKGxvbmcpIHMpIDogIm1lbW9yeSIpOyByZXR1cm4gczsKICAgICAgICAgICAg
ICAgIGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICJyZXAgOyBzdG9zbCIgIlxuXHRzdG9z
dyIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpIDogImEiIChwYXR0ZXJuKSwiMCIgKGNvdW50LzQp
LCIxIiAoKGxvbmcpIHMpIDogIm1lbW9yeSIpOyByZXR1cm4gczsKICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0c3Rvc3dcblx0
c3Rvc2IiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3Vu
dC80KSwiMSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgfQp9CgoK
fQojIDQ4MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0
YXRpYyBpbmxpbmUgdm9pZCAqIG1lbXNjYW4odm9pZCAqIGFkZHIsIGludCBjLCBzaXplX3Qgc2l6
ZSkKewogICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgICAgIHJldHVybiBhZGRyOwogICAg
ICAgIF9fYXNtX18oInJlcG56OyBzY2FzYlxuXHQiCiAgICAgICAgICAgICAgICAiam56IDFmXG5c
dCIKICAgICAgICAgICAgICAgICJkZWMgJSVlZGlcbiIKICAgICAgICAgICAgICAgICIxOiIKICAg
ICAgICAgICAgICAgIDogIj1EIiAoYWRkciksICI9YyIgKHNpemUpCiAgICAgICAgICAgICAgICA6
ICIwIiAoYWRkciksICIxIiAoc2l6ZSksICJhIiAoYykpOwogICAgICAgIHJldHVybiBhZGRyOwp9
CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDIK
IyA0NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIKZXh0
ZXJuIGludCBzdHJuaWNtcF9SNGU4MzBhM2UoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIF9f
a2VybmVsX3NpemVfdCk7CiMgNzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvc3RyaW5nLmgiCmV4dGVybiBpbnQgX19idWlsdGluX21lbWNtcChjb25zdCB2b2lkICosY29u
c3Qgdm9pZCAqLF9fa2VybmVsX3NpemVfdCk7CiMgMTIxICJoL3NrZHJ2MXN0LmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9lcnJuby5oIiAxCiMgNSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9lcnJuby5oIiAyCiMgMTIyICJoL3NrZHJ2
MXN0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2lvcG9y
dC5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaW9wb3J0
LmgiCnN0cnVjdCByZXNvdXJjZSB7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAg
ICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwgKnNpYmxpbmcsICpjaGlsZDsKfTsKCnN0cnVj
dCByZXNvdXJjZV9saXN0IHsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2VfbGlzdCAqbmV4dDsKICAg
ICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKICAgICAgICBzdHJ1Y3QgcGNpX2RldiAqZGV2Owp9
OwojIDgzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIgpl
eHRlcm4gc3RydWN0IHJlc291cmNlIGlvcG9ydF9yZXNvdXJjZV9SODY1ZWJjY2Q7CmV4dGVybiBz
dHJ1Y3QgcmVzb3VyY2UgaW9tZW1fcmVzb3VyY2VfUjllZmVkNWFmOwoKZXh0ZXJuIGludCBnZXRf
cmVzb3VyY2VfbGlzdChzdHJ1Y3QgcmVzb3VyY2UgKiwgY2hhciAqYnVmLCBpbnQgc2l6ZSk7Cgpl
eHRlcm4gaW50IGNoZWNrX3Jlc291cmNlX1JkOGQ3OGFhYShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3Qs
IHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IHJlcXVlc3RfcmVzb3Vy
Y2VfUjQxNjg1Y2ZiKHN0cnVjdCByZXNvdXJjZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpuZXcp
OwpleHRlcm4gaW50IHJlbGVhc2VfcmVzb3VyY2VfUjgxNGU4NDA3KHN0cnVjdCByZXNvdXJjZSAq
bmV3KTsKZXh0ZXJuIGludCBhbGxvY2F0ZV9yZXNvdXJjZV9SYjg1OWMzZDAoc3RydWN0IHJlc291
cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBtaW4sIHVuc2lnbmVkIGxvbmcgbWF4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgYWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCAoKmFsaWduZikodm9pZCAqLCBzdHJ1Y3QgcmVzb3VyY2UgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25n
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphbGlnbmZfZGF0YSk7CgoKCgoK
ZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSAqIF9fcmVxdWVzdF9yZWdpb25fUjFhMWE0ZjA5KHN0cnVj
dCByZXNvdXJjZSAqLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG4sIGNvbnN0
IGNoYXIgKm5hbWUpOwoKCgoKCgoKZXh0ZXJuIGludCBfX2NoZWNrX3JlZ2lvbl9SZjFkMGNkYWIo
c3RydWN0IHJlc291cmNlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4g
dm9pZCBfX3JlbGVhc2VfcmVnaW9uX1JkNDk1MDFkNChzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWdu
ZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CgoKCgoKZXh0ZXJuIHZvaWQgYXV0b2lycV9zZXR1cF9S
NWE1YTIyODAoaW50IHdhaXR0aW1lKTsKZXh0ZXJuIGludCBhdXRvaXJxX3JlcG9ydF9SODQ1MzBj
NTMoaW50IHdhaXR0aW1lKTsKIyAxMjMgImgvc2tkcnYxc3QuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2xhYi5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2xhYi5oIgp0eXBlZGVmIHN0cnVjdCBrbWVtX2NhY2hl
X3Mga21lbV9jYWNoZV90OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L21tLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9t
bS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2NoZWQuaCIg
MQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3BhcmFtLmgiIDEK
IyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCmV4
dGVybiB1bnNpZ25lZCBsb25nIGV2ZW50X1I3YjE2YzM0NDsKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAxCiMgMTcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMQojIDExICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9saW1pdHMuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L3dhaXQuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L3dhaXQuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L2xpc3QuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9wcmVmZXRjaC5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvcHJlZmV0Y2guaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9w
cm9jZXNzb3IuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9w
cm9jZXNzb3IuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS92bTg2
LmgiIDEKIyA2OCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vdm04Ni5oIgpz
dHJ1Y3Qgdm04Nl9yZWdzIHsKCgoKICAgICAgICBsb25nIGVieDsKICAgICAgICBsb25nIGVjeDsK
ICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsKICAgICAgICBsb25nIGVkaTsKICAg
ICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAgICAgICBsb25nIF9fbnVsbF9kczsK
ICAgICAgICBsb25nIF9fbnVsbF9lczsKICAgICAgICBsb25nIF9fbnVsbF9mczsKICAgICAgICBs
b25nIF9fbnVsbF9nczsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAgICAgIGxvbmcgZWlwOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICBsb25nIGVmbGFnczsKICAg
ICAgICBsb25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CgoKCiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBf
X2RzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgZ3MsIF9fZ3NoOwp9OwoKc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IHsKICAgICAgICB1
bnNpZ25lZCBsb25nIF9fbWFwWzhdOwp9OwoKc3RydWN0IHZtODZfc3RydWN0IHsKICAgICAgICBz
dHJ1Y3Qgdm04Nl9yZWdzIHJlZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVf
dHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9yZWQ7CiAg
ICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7Cn07CgoKCgoK
CnN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmb3Jj
ZV9yZXR1cm5fZm9yX3BpYzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdm04NmRiZ19hY3RpdmU6
MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtODZkYmdfVEZwZW5kaWc6MTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHVudXNlZDoyODsKICAgICAgICB1bnNpZ25lZCBsb25nIGlzX3ZtODZwdXM6MTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIHZtODZkYmdfaW50eHh0YWJbMzJdOwp9OwoKc3RydWN0IHZt
ODZwbHVzX3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZfcmVncyByZWdzOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0bWFwOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRf
c3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBp
bnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB2bTg2
cGx1czsKfTsKIyAxNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3ZtODYu
aCIKc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgewoKCgogICAgICAgIGxvbmcgZWJ4OwogICAgICAg
IGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4OwogICAgICAgIGxvbmcgZXNpOwogICAgICAgIGxv
bmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAgICAgIGxvbmcgZWF4OwogICAgICAgIGxvbmcg
X19udWxsX2RzOwogICAgICAgIGxvbmcgX19udWxsX2VzOwogICAgICAgIGxvbmcgb3JpZ19lYXg7
CiAgICAgICAgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwogICAg
ICAgIGxvbmcgZWZsYWdzOwogICAgICAgIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHNzLCBfX3NzaDsKCgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzLCBfX2Zz
aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7Cn07CgpzdHJ1Y3Qga2VybmVsX3Zt
ODZfc3RydWN0IHsKICAgICAgICBzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyByZWdzOwojIDE4NCAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vdm04Ni5oIgogICAgICAgIHVuc2ln
bmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0bWFwOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3Ry
dWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnQy
MV9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB2bTg2cGx1
czsKICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVnczMyOwojIDIwMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9hc20vdm04Ni5oIgp9OwoKdm9pZCBoYW5kbGVfdm04Nl9mYXVsdChz
dHJ1Y3Qga2VybmVsX3ZtODZfcmVncyAqLCBsb25nKTsKaW50IGhhbmRsZV92bTg2X3RyYXAoc3Ry
dWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwgbG9uZywgaW50KTsKIyAxMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaCIKc3RydWN0IF9mcHJlZyB7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgc2lnbmlmaWNhbmRbNF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
ZXhwb25lbnQ7Cn07CgpzdHJ1Y3QgX2ZweHJlZyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2ln
bmlmaWNhbmRbNF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXhwb25lbnQ7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgcGFkZGluZ1szXTsKfTsKCnN0cnVjdCBfeG1tcmVnIHsKICAgICAgICB1bnNp
Z25lZCBsb25nIGVsZW1lbnRbNF07Cn07CgpzdHJ1Y3QgX2Zwc3RhdGUgewoKICAgICAgICB1bnNp
Z25lZCBsb25nIGN3OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3c7CiAgICAgICAgdW5zaWduZWQg
bG9uZyB0YWc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpcG9mZjsKICAgICAgICB1bnNpZ25lZCBs
b25nIGNzc2VsOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YW9mZjsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGRhdGFzZWw7CiAgICAgICAgc3RydWN0IF9mcHJlZyBfc3RbOF07CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc3RhdHVzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1hZ2ljOwoKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBfZnhzcl9lbnZbNl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBteGNz
cjsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlc2VydmVkOwogICAgICAgIHN0cnVjdCBfZnB4cmVn
IF9meHNyX3N0WzhdOwogICAgICAgIHN0cnVjdCBfeG1tcmVnIF94bW1bOF07CiAgICAgICAgdW5z
aWduZWQgbG9uZyBwYWRkaW5nWzU2XTsKfTsKCgoKc3RydWN0IHNpZ2NvbnRleHQgewogICAgICAg
IHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19m
c2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGRzLCBfX2RzaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVzaTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVicDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGVzcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVieDsKICAgICAgICB1bnNpZ25lZCBsb25n
IGVkeDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVjeDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVh
eDsKICAgICAgICB1bnNpZ25lZCBsb25nIHRyYXBubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGVy
cjsKICAgICAgICB1bnNpZ25lZCBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywg
X19jc2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBlc3BfYXRfc2lnbmFsOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKICAgICAg
ICBzdHJ1Y3QgX2Zwc3RhdGUgKiBmcHN0YXRlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbWFz
azsKICAgICAgICB1bnNpZ25lZCBsb25nIGNyMjsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAyCgppbnQgcmVzdG9yZV9pMzg3X3NvZnQodm9p
ZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICpidWYpOwppbnQgc2F2ZV9pMzg3X3NvZnQodm9pZCAq
czM4Nywgc3RydWN0IF9mcHN0YXRlICogYnVmKTsKCgoKCgpzdHJ1Y3QgaW5mbyB7CiAgICAgICAg
bG9uZyBfX19vcmlnX2VpcDsKICAgICAgICBsb25nIF9fX2VieDsKICAgICAgICBsb25nIF9fX2Vj
eDsKICAgICAgICBsb25nIF9fX2VkeDsKICAgICAgICBsb25nIF9fX2VzaTsKICAgICAgICBsb25n
IF9fX2VkaTsKICAgICAgICBsb25nIF9fX2VicDsKICAgICAgICBsb25nIF9fX2VheDsKICAgICAg
ICBsb25nIF9fX2RzOwogICAgICAgIGxvbmcgX19fZXM7CiAgICAgICAgbG9uZyBfX19vcmlnX2Vh
eDsKICAgICAgICBsb25nIF9fX2VpcDsKICAgICAgICBsb25nIF9fX2NzOwogICAgICAgIGxvbmcg
X19fZWZsYWdzOwogICAgICAgIGxvbmcgX19fZXNwOwogICAgICAgIGxvbmcgX19fc3M7CiAgICAg
ICAgbG9uZyBfX192bTg2X2VzOwogICAgICAgIGxvbmcgX19fdm04Nl9kczsKICAgICAgICBsb25n
IF9fX3ZtODZfZnM7CiAgICAgICAgbG9uZyBfX192bTg2X2dzOwp9OwojIDEyICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3NlZ21lbnQuaCIgMQojIDEzICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDQ1ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2FzbS9wYWdlLmgiCnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBw
dGVfbG93OyB9IHB0ZV90Owp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcG1kOyB9IHBt
ZF90Owp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVkIGxvbmcgcGdkOyB9IHBnZF90OwoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHBncHJvdDsgfSBwZ3Byb3RfdDsKIyAxMTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3BhZ2UuaCIKc3RhdGljIF9faW5saW5l
X18gaW50IGdldF9vcmRlcih1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICBpbnQgb3JkZXI7
CgogICAgICAgIHNpemUgPSAoc2l6ZS0xKSA+PiAoMTIgLTEpOwogICAgICAgIG9yZGVyID0gLTE7
CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgc2l6ZSA+Pj0gMTsKICAgICAgICAgICAgICAg
IG9yZGVyKys7CiAgICAgICAgfSB3aGlsZSAoc2l6ZSk7CiAgICAgICAgcmV0dXJuIG9yZGVyOwp9
CiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAy
CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgi
IDEKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEK
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vY2FjaGUuaCIgMQoj
IDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMgojIDE4
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgoKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQojIDIw
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgoKc3Ry
dWN0IGRlc2Nfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGEsYjsKfTsKIyA0MiAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCBjcHVp
bmZvX3g4NiB7CiAgICAgICAgX191OCB4ODY7CiAgICAgICAgX191OCB4ODZfdmVuZG9yOwogICAg
ICAgIF9fdTggeDg2X21vZGVsOwogICAgICAgIF9fdTggeDg2X21hc2s7CiAgICAgICAgY2hhciB3
cF93b3Jrc19vazsKICAgICAgICBjaGFyIGhsdF93b3Jrc19vazsKICAgICAgICBjaGFyIGhhcmRf
bWF0aDsKICAgICAgICBjaGFyIHJmdTsKICAgICAgICBpbnQgY3B1aWRfbGV2ZWw7CiAgICAgICAg
X191MzIgeDg2X2NhcGFiaWxpdHlbNF07CiAgICAgICAgY2hhciB4ODZfdmVuZG9yX2lkWzE2XTsK
ICAgICAgICBjaGFyIHg4Nl9tb2RlbF9pZFs2NF07CiAgICAgICAgaW50IHg4Nl9jYWNoZV9zaXpl
OwoKICAgICAgICBpbnQgZmRpdl9idWc7CiAgICAgICAgaW50IGYwMGZfYnVnOwogICAgICAgIGlu
dCBjb21hX2J1ZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvb3BzX3Blcl9qaWZmeV9SYmE0OTdm
MTM7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcGdkX3F1aWNrOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgKnBtZF9xdWljazsKICAgICAgICB1bnNpZ25lZCBsb25nICpwdGVfcXVpY2s7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBwZ3RhYmxlX2NhY2hlX3N6Owp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25l
ZF9fKCgxIDw8ICgoNSkpKSkpKTsKIyA4MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiBzdHJ1Y3QgY3B1aW5mb194ODYgYm9vdF9jcHVfZGF0
YV9SMDY1N2QwMzc7CmV4dGVybiBzdHJ1Y3QgdHNzX3N0cnVjdCBpbml0X3Rzc1sxXTsKIyAxMDQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpleHRlcm4g
Y2hhciBpZ25vcmVfaXJxMTM7CgpleHRlcm4gdm9pZCBpZGVudGlmeV9jcHUoc3RydWN0IGNwdWlu
Zm9feDg2ICopOwpleHRlcm4gdm9pZCBwcmludF9jcHVfaW5mbyhzdHJ1Y3QgY3B1aW5mb194ODYg
Kik7CmV4dGVybiB2b2lkIGRvZGd5X3RzYyh2b2lkKTsKIyAxMzQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdGF0aWMgaW5saW5lIHZvaWQgY3B1aWQo
aW50IG9wLCBpbnQgKmVheCwgaW50ICplYngsIGludCAqZWN4LCBpbnQgKmVkeCkKewogICAgICAg
IF9fYXNtX18oImNwdWlkIgogICAgICAgICAgICAgICAgOiAiPWEiICgqZWF4KSwKICAgICAgICAg
ICAgICAgICAgIj1iIiAoKmVieCksCiAgICAgICAgICAgICAgICAgICI9YyIgKCplY3gpLAogICAg
ICAgICAgICAgICAgICAiPWQiICgqZWR4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKSk7Cn0K
CgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VheCh1bnNpZ25lZCBpbnQgb3Ap
CnsKICAgICAgICB1bnNpZ25lZCBpbnQgZWF4OwoKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAg
ICAgICAgICAgICAgIDogIj1hIiAoZWF4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKQogICAg
ICAgICAgICAgICAgOiAiYngiLCAiY3giLCAiZHgiKTsKICAgICAgICByZXR1cm4gZWF4Owp9CnN0
YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VieCh1bnNpZ25lZCBpbnQgb3ApCnsKICAg
ICAgICB1bnNpZ25lZCBpbnQgZWF4LCBlYng7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgogICAg
ICAgICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpCiAgICAgICAgICAgICAgICA6ICIw
IiAob3ApCiAgICAgICAgICAgICAgICA6ICJjeCIsICJkeCIgKTsKICAgICAgICByZXR1cm4gZWJ4
Owp9CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VjeCh1bnNpZ25lZCBpbnQgb3Ap
CnsKICAgICAgICB1bnNpZ25lZCBpbnQgZWF4LCBlY3g7CgogICAgICAgIF9fYXNtX18oImNwdWlk
IgogICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWMiIChlY3gpCiAgICAgICAgICAgICAg
ICA6ICIwIiAob3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJkeCIgKTsKICAgICAgICByZXR1
cm4gZWN4Owp9CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VkeCh1bnNpZ25lZCBp
bnQgb3ApCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZWF4LCBlZHg7CgogICAgICAgIF9fYXNtX18o
ImNwdWlkIgogICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWQiIChlZHgpCiAgICAgICAg
ICAgICAgICA6ICIwIiAob3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJjeCIpOwogICAgICAg
IHJldHVybiBlZHg7Cn0KIyAyMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNt
L3Byb2Nlc3Nvci5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBtbXVfY3I0X2ZlYXR1cmVzOwoKc3Rh
dGljIGlubGluZSB2b2lkIHNldF9pbl9jcjQgKHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAg
IG1tdV9jcjRfZmVhdHVyZXMgfD0gbWFzazsKICAgICAgICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUl
ZWF4XG5cdCIKICAgICAgICAgICAgICAgICJvcmwgJTAsJSVlYXhcblx0IgogICAgICAgICAgICAg
ICAgIm1vdmwgJSVlYXgsJSVjcjRcbiIKICAgICAgICAgICAgICAgIDogOiAiaXJnIiAobWFzaykK
ICAgICAgICAgICAgICAgIDoiYXgiKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2luX2Ny
NCAodW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgbW11X2NyNF9mZWF0dXJlcyAmPSB+bWFz
azsKICAgICAgICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUlZWF4XG5cdCIKICAgICAgICAgICAgICAg
ICJhbmRsICUwLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsICUlZWF4LCUlY3I0XG4i
CiAgICAgICAgICAgICAgICA6IDogImlyZyIgKH5tYXNrKQogICAgICAgICAgICAgICAgOiJheCIp
Owp9CiMgMjY1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9wcm9jZXNzb3Iu
aCIKZXh0ZXJuIGludCBFSVNBX2J1c19SNzQxMzc5M2E7CgoKCmV4dGVybiBpbnQgTUNBX2J1c19S
ZjQ4YTJjNGM7CgoKCmV4dGVybiB1bnNpZ25lZCBpbnQgbWFjaGluZV9pZDsKZXh0ZXJuIHVuc2ln
bmVkIGludCBtYWNoaW5lX3N1Ym1vZGVsX2lkOwpleHRlcm4gdW5zaWduZWQgaW50IEJJT1NfcmV2
aXNpb247CmV4dGVybiB1bnNpZ25lZCBpbnQgbWNhX3BlbnRpdW1fZmxhZzsKIyAyOTUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgaTM4N19m
c2F2ZV9zdHJ1Y3QgewogICAgICAgIGxvbmcgY3dkOwogICAgICAgIGxvbmcgc3dkOwogICAgICAg
IGxvbmcgdHdkOwogICAgICAgIGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxv
bmcgZm9vOwogICAgICAgIGxvbmcgZm9zOwogICAgICAgIGxvbmcgc3Rfc3BhY2VbMjBdOwogICAg
ICAgIGxvbmcgc3RhdHVzOwp9OwoKc3RydWN0IGkzODdfZnhzYXZlX3N0cnVjdCB7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgY3dkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN3ZDsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCB0d2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZm9wOwogICAgICAgIGxv
bmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxvbmcgZm9vOwogICAgICAgIGxvbmcg
Zm9zOwogICAgICAgIGxvbmcgbXhjc3I7CiAgICAgICAgbG9uZyByZXNlcnZlZDsKICAgICAgICBs
b25nIHN0X3NwYWNlWzMyXTsKICAgICAgICBsb25nIHhtbV9zcGFjZVszMl07CiAgICAgICAgbG9u
ZyBwYWRkaW5nWzU2XTsKfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoMTYpKSk7CgpzdHJ1Y3Qg
aTM4N19zb2Z0X3N0cnVjdCB7CiAgICAgICAgbG9uZyBjd2Q7CiAgICAgICAgbG9uZyBzd2Q7CiAg
ICAgICAgbG9uZyB0d2Q7CiAgICAgICAgbG9uZyBmaXA7CiAgICAgICAgbG9uZyBmY3M7CiAgICAg
ICAgbG9uZyBmb287CiAgICAgICAgbG9uZyBmb3M7CiAgICAgICAgbG9uZyBzdF9zcGFjZVsyMF07
CiAgICAgICAgdW5zaWduZWQgY2hhciBmdG9wLCBjaGFuZ2VkLCBsb29rYWhlYWQsIG5vX3VwZGF0
ZSwgcm0sIGFsaW1pdDsKICAgICAgICBzdHJ1Y3QgaW5mbyAqaW5mbzsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVudHJ5X2VpcDsKfTsKCnVuaW9uIGkzODdfdW5pb24gewogICAgICAgIHN0cnVjdCBp
Mzg3X2ZzYXZlX3N0cnVjdCBmc2F2ZTsKICAgICAgICBzdHJ1Y3QgaTM4N19meHNhdmVfc3RydWN0
IGZ4c2F2ZTsKICAgICAgICBzdHJ1Y3QgaTM4N19zb2Z0X3N0cnVjdCBzb2Z0Owp9OwoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VnOwp9IG1tX3NlZ21lbnRfdDsKCnN0
cnVjdCB0c3Nfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBiYWNrX2xpbmssX19ibGg7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNzMCxf
X3NzMGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AxOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHNzMSxfX3NzMWg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3AyOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHNzMixfX3NzMmg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX2NyMzsKICAgICAgICB1
bnNpZ25lZCBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVmbGFnczsKICAgICAgICB1
bnNpZ25lZCBsb25nIGVheCxlY3gsZWR4LGVieDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGVicDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzaTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGVkaTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19lc2g7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3MsIF9fY3NoOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHNzLCBfX3NzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZHQsIF9fbGR0aDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCB0cmFjZSwgYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9fYml0bWFwWzMyICsxXTsK
CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9fY2FjaGVsaW5lX2ZpbGxlcls1XTsKfTsKCnN0cnVj
dCB0aHJlYWRfc3RydWN0IHsKCiAgICAgICAgc3RydWN0IGRlc2Nfc3RydWN0IHRsc19hcnJheVsz
XTsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlaXA7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmczsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGdzOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGRlYnVncmVnWzhd
OwoKICAgICAgICB1bnNpZ25lZCBsb25nIGNyMiwgdHJhcF9ubywgZXJyb3JfY29kZTsKCiAgICAg
ICAgdW5pb24gaTM4N191bmlvbiBpMzg3OwoKICAgICAgICBzdHJ1Y3Qgdm04Nl9zdHJ1Y3QgKiB2
bTg2X2luZm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3JlZW5fYml0bWFwOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgdjg2ZmxhZ3MsIHY4Nm1hc2ssIHNhdmVkX2VzcDA7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHNhdmVkX2ZzLCBzYXZlZF9nczsKCiAgICAgICAgaW50IGlvcGVybTsKICAgICAgICB1
bnNpZ25lZCBsb25nIGlvX2JpdG1hcFszMiArMV07Cn07CiMgNDQyICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IHRhc2tfc3RydWN0OwpzdHJ1
Y3QgbW1fc3RydWN0OwoKCmV4dGVybiB2b2lkIHJlbGVhc2VfdGhyZWFkKHN0cnVjdCB0YXNrX3N0
cnVjdCAqKTsKCgoKZXh0ZXJuIGludCBhcmNoX2tlcm5lbF90aHJlYWQoaW50ICgqZm4pKHZvaWQg
KiksIHZvaWQgKiBhcmcsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwoKCgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCBjb3B5X3NlZ21lbnRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IG1tX3N0cnVj
dCAqIG1tKSB7IH0Kc3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2Vfc2VnbWVudHMoc3RydWN0IG1t
X3N0cnVjdCAqIG1tKSB7IH0KCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0aHJlYWRf
c2F2ZWRfcGMoc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnQpCnsKICAgICAgICByZXR1cm4gKCh1bnNp
Z25lZCBsb25nICopdC0+ZXNwKVszXTsKfQoKdW5zaWduZWQgbG9uZyBnZXRfd2NoYW5fUjA5ZjBj
ZGY1KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7CiMgNDc4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IG1pY3JvY29kZSB7CiAgICAgICAgdW5z
aWduZWQgaW50IGhkcnZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcmV2OwogICAgICAgIHVuc2ln
bmVkIGludCBkYXRlOwogICAgICAgIHVuc2lnbmVkIGludCBzaWc7CiAgICAgICAgdW5zaWduZWQg
aW50IGNrc3VtOwogICAgICAgIHVuc2lnbmVkIGludCBsZHJ2ZXI7CiAgICAgICAgdW5zaWduZWQg
aW50IHBmOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZFs1XTsKICAgICAgICB1bnNpZ25l
ZCBpbnQgYml0c1s1MDBdOwp9OwoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCByZXBfbm9wKHZvaWQp
CnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmVwO25vcCIpOwp9CiMgMTQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMgojIDQzICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiCnN0YXRpYyBpbmxp
bmUgdm9pZCBwcmVmZXRjaChjb25zdCB2b2lkICp4KSB7O30KCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBwcmVmZXRjaHcoY29uc3Qgdm9pZCAqeCkgezt9CiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9saXN0LmgiIDIKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9saXN0LmgiCnR5cGVkZWYgc3RydWN0IGxpc3RfaGVhZCB7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCAqbmV4dCwgKnByZXY7Cn0gbGlzdF90OwojIDM3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSB2b2lkIF9f
bGlzdF9hZGQoc3RydWN0IGxpc3RfaGVhZCAqbmV3LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwcmV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0KQp7CiAgICAgICAgbmV4dC0+cHJldiA9IG5ldzsKICAg
ICAgICBuZXctPm5leHQgPSBuZXh0OwogICAgICAgIG5ldy0+cHJldiA9IHByZXY7CiAgICAgICAg
cHJldi0+bmV4dCA9IG5ldzsKfQojIDU1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSB2b2lkIGxpc3RfYWRkKHN0cnVjdCBsaXN0X2hl
YWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAgIF9fbGlzdF9hZGQobmV3
LCBoZWFkLCBoZWFkLT5uZXh0KTsKfQojIDY4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSB2b2lkIGxpc3RfYWRkX3RhaWwoc3RydWN0
IGxpc3RfaGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19saXN0
X2FkZChuZXcsIGhlYWQtPnByZXYsIGhlYWQpOwp9CiMgODAgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgX19saXN0X2RlbChz
dHJ1Y3QgbGlzdF9oZWFkICpwcmV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0KQp7CiAgICAgICAg
bmV4dC0+cHJldiA9IHByZXY7CiAgICAgICAgcHJldi0+bmV4dCA9IG5leHQ7Cn0KCgoKCgoKc3Rh
dGljIGlubGluZSB2b2lkIGxpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAg
ICAgX19saXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5leHQpOwogICAgICAgIGVudHJ5LT5u
ZXh0ID0gKHZvaWQgKikgMDsKICAgICAgICBlbnRyeS0+cHJldiA9ICh2b2lkICopIDA7Cn0KCgoK
CgpzdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9kZWxfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICplbnRy
eSkKewogICAgICAgIF9fbGlzdF9kZWwoZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKICAgICAg
ICBkbyB7IChlbnRyeSktPm5leHQgPSAoZW50cnkpOyAoZW50cnkpLT5wcmV2ID0gKGVudHJ5KTsg
fSB3aGlsZSAoMCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGxpc3RfbW92ZShzdHJ1Y3Qg
bGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19saXN0
X2RlbChsaXN0LT5wcmV2LCBsaXN0LT5uZXh0KTsKICAgICAgICBsaXN0X2FkZChsaXN0LCBoZWFk
KTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9tb3ZlX3RhaWwoc3RydWN0IGxpc3Rf
aGVhZCAqbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgKmhlYWQpCnsKICAgICAgICBfX2xpc3RfZGVsKGxpc3QtPnByZXYsIGxpc3QtPm5leHQp
OwogICAgICAgIGxpc3RfYWRkX3RhaWwobGlzdCwgaGVhZCk7Cn0KCgoKCgpzdGF0aWMgaW5saW5l
IGludCBsaXN0X2VtcHR5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAgICByZXR1cm4g
aGVhZC0+bmV4dCA9PSBoZWFkOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19saXN0X3NwbGljZShz
dHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZmlyc3Qg
PSBsaXN0LT5uZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmxhc3QgPSBsaXN0LT5wcmV2
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmF0ID0gaGVhZC0+bmV4dDsKCiAgICAgICAgZmly
c3QtPnByZXYgPSBoZWFkOwogICAgICAgIGhlYWQtPm5leHQgPSBmaXJzdDsKCiAgICAgICAgbGFz
dC0+bmV4dCA9IGF0OwogICAgICAgIGF0LT5wcmV2ID0gbGFzdDsKfQoKCgoKCgpzdGF0aWMgaW5s
aW5lIHZvaWQgbGlzdF9zcGxpY2Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc3RydWN0IGxpc3Rf
aGVhZCAqaGVhZCkKewogICAgICAgIGlmICghbGlzdF9lbXB0eShsaXN0KSkKICAgICAgICAgICAg
ICAgIF9fbGlzdF9zcGxpY2UobGlzdCwgaGVhZCk7Cn0KIyAxNzIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9zcGxp
Y2VfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgaWYgKCFsaXN0X2Vt
cHR5KGxpc3QpKSB7CiAgICAgICAgICAgICAgICBfX2xpc3Rfc3BsaWNlKGxpc3QsIGhlYWQpOwog
ICAgICAgICAgICAgICAgZG8geyAobGlzdCktPm5leHQgPSAobGlzdCk7IChsaXN0KS0+cHJldiA9
IChsaXN0KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgfQp9CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvd2FpdC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDQwICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9zdHJpbmdpZnkuaCIgMQojIDQxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDIKIyA3NSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgogIHR5cGVkZWYgc3RydWN0IHsgfSBzcGlu
bG9ja190OwojIDEzOSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zcGlu
bG9jay5oIgogIHR5cGVkZWYgc3RydWN0IHsgfSByd2xvY2tfdDsKIyAxNzAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgc3BpbmxvY2tfdCBsb2NrOwp9IHNwaW5sb2NrX2NhY2hlbGluZV90OwojIDE3ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDMxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKc3RydWN0IF9fd2FpdF9xdWV1ZSB7
CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KiB0YXNrOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGFza19saXN0OwoKCgoKfTsKdHlwZWRl
ZiBzdHJ1Y3QgX193YWl0X3F1ZXVlIHdhaXRfcXVldWVfdDsKIyA4MSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC93YWl0LmgiCnN0cnVjdCBfX3dhaXRfcXVldWVfaGVhZCB7
CiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGFza19s
aXN0OwoKCgoKfTsKdHlwZWRlZiBzdHJ1Y3QgX193YWl0X3F1ZXVlX2hlYWQgd2FpdF9xdWV1ZV9o
ZWFkX3Q7CiMgMTU5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3dhaXQu
aCIKc3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1ZXVlX2hlYWQod2FpdF9xdWV1ZV9oZWFk
X3QgKnEpCnsKCgoKCiAgICAgICAgcS0+bG9jayA9IChzcGlubG9ja190KSB7IH07CiAgICAgICAg
ZG8geyAoJnEtPnRhc2tfbGlzdCktPm5leHQgPSAoJnEtPnRhc2tfbGlzdCk7ICgmcS0+dGFza19s
aXN0KS0+cHJldiA9ICgmcS0+dGFza19saXN0KTsgfSB3aGlsZSAoMCk7CgoKCgp9CgpzdGF0aWMg
aW5saW5lIHZvaWQgaW5pdF93YWl0cXVldWVfZW50cnkod2FpdF9xdWV1ZV90ICpxLCBzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnApCnsKCgoKCiAgICAgICAgcS0+ZmxhZ3MgPSAwOwogICAgICAgIHEtPnRh
c2sgPSBwOwoKCgp9CgpzdGF0aWMgaW5saW5lIGludCB3YWl0cXVldWVfYWN0aXZlKHdhaXRfcXVl
dWVfaGVhZF90ICpxKQp7CgoKCgoKCiAgICAgICAgcmV0dXJuICFsaXN0X2VtcHR5KCZxLT50YXNr
X2xpc3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19hZGRfd2FpdF9xdWV1ZSh3YWl0X3F1ZXVl
X2hlYWRfdCAqaGVhZCwgd2FpdF9xdWV1ZV90ICpuZXcpCnsKIyAyMDcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvd2FpdC5oIgogICAgICAgIGxpc3RfYWRkKCZuZXctPnRh
c2tfbGlzdCwgJmhlYWQtPnRhc2tfbGlzdCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Fk
ZF93YWl0X3F1ZXVlX3RhaWwod2FpdF9xdWV1ZV9oZWFkX3QgKmhlYWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRfcXVldWVfdCAqbmV3KQp7CiMg
MjI0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKICAgICAg
ICBsaXN0X2FkZF90YWlsKCZuZXctPnRhc2tfbGlzdCwgJmhlYWQtPnRhc2tfbGlzdCk7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpo
ZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdhaXRfcXVldWVfdCAqb2xkKQp7CgoKCgoKICAgICAgICBsaXN0X2RlbCgmb2xkLT50YXNr
X2xpc3QpOwp9CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMu
aCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3Zmcy5oIiAx
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vc3RhdGZzLmgiIDEK
CgoKCgoKCnR5cGVkZWYgX19rZXJuZWxfZnNpZF90IGZzaWRfdDsKCgoKc3RydWN0IHN0YXRmcyB7
CiAgICAgICAgbG9uZyBmX3R5cGU7CiAgICAgICAgbG9uZyBmX2JzaXplOwogICAgICAgIGxvbmcg
Zl9ibG9ja3M7CiAgICAgICAgbG9uZyBmX2JmcmVlOwogICAgICAgIGxvbmcgZl9iYXZhaWw7CiAg
ICAgICAgbG9uZyBmX2ZpbGVzOwogICAgICAgIGxvbmcgZl9mZnJlZTsKICAgICAgICBfX2tlcm5l
bF9mc2lkX3QgZl9mc2lkOwogICAgICAgIGxvbmcgZl9uYW1lbGVuOwogICAgICAgIGxvbmcgZl9z
cGFyZVs2XTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3Zm
cy5oIiAyCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbmV0LmgiIDEKIyAy
MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9uZXQuaCIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAxCgoKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9zb2NrZXQuaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3NvY2tpb3MuaCIgMQojIDUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3NvY2tldC5oIiAyCiMgNyAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc29ja2lvcy5oIiAxCiMgOCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdWlvLmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC91aW8uaCIKc3RydWN0IGlvdmVjCnsKICAgICAgICB2b2lkICpp
b3ZfYmFzZTsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgaW92X2xlbjsKfTsKIyA5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAyCgoKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBzYV9mYW1pbHlfdDsKCgoKCgpzdHJ1Y3Qgc29ja2FkZHIgewogICAgICAgIHNh
X2ZhbWlseV90IHNhX2ZhbWlseTsKICAgICAgICBjaGFyIHNhX2RhdGFbMTRdOwp9OwoKc3RydWN0
IGxpbmdlciB7CiAgICAgICAgaW50IGxfb25vZmY7CiAgICAgICAgaW50IGxfbGluZ2VyOwp9OwoK
CgoKCgoKc3RydWN0IG1zZ2hkciB7CiAgICAgICAgdm9pZCAqIG1zZ19uYW1lOwogICAgICAgIGlu
dCBtc2dfbmFtZWxlbjsKICAgICAgICBzdHJ1Y3QgaW92ZWMgKiBtc2dfaW92OwogICAgICAgIF9f
a2VybmVsX3NpemVfdCBtc2dfaW92bGVuOwogICAgICAgIHZvaWQgKiBtc2dfY29udHJvbDsKICAg
ICAgICBfX2tlcm5lbF9zaXplX3QgbXNnX2NvbnRyb2xsZW47CiAgICAgICAgdW5zaWduZWQgbXNn
X2ZsYWdzOwp9OwoKCgoKCgoKc3RydWN0IGNtc2doZHIgewogICAgICAgIF9fa2VybmVsX3NpemVf
dCBjbXNnX2xlbjsKICAgICAgICBpbnQgY21zZ19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBl
Owp9OwojIDEwMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zb2NrZXQu
aCIKc3RhdGljIGlubGluZSBzdHJ1Y3QgY21zZ2hkciAqIF9fY21zZ19ueHRoZHIodm9pZCAqX19j
dGwsIF9fa2VybmVsX3NpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IGNtc2doZHIgKl9fY21zZykKewogICAgICAgIHN0cnVj
dCBjbXNnaGRyICogX19wdHI7CgogICAgICAgIF9fcHRyID0gKHN0cnVjdCBjbXNnaGRyKikoKCh1
bnNpZ25lZCBjaGFyICopIF9fY21zZykgKyAoICgoX19jbXNnLT5jbXNnX2xlbikrc2l6ZW9mKGxv
bmcpLTEpICYgfihzaXplb2YobG9uZyktMSkgKSk7CiAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25n
KSgoY2hhciopKF9fcHRyKzEpIC0gKGNoYXIgKikgX19jdGwpID4gX19zaXplKQogICAgICAgICAg
ICAgICAgcmV0dXJuIChzdHJ1Y3QgY21zZ2hkciAqKTA7CgogICAgICAgIHJldHVybiBfX3B0cjsK
fQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgY21zZ2hkciAqIGNtc2dfbnh0aGRyIChzdHJ1Y3QgbXNn
aGRyICpfX21zZywgc3RydWN0IGNtc2doZHIgKl9fY21zZykKewogICAgICAgIHJldHVybiBfX2Nt
c2dfbnh0aGRyKF9fbXNnLT5tc2dfY29udHJvbCwgX19tc2ctPm1zZ19jb250cm9sbGVuLCBfX2Nt
c2cpOwp9CgoKCgoKCgpzdHJ1Y3QgdWNyZWQgewogICAgICAgIF9fdTMyIHBpZDsKICAgICAgICBf
X3UzMiB1aWQ7CiAgICAgICAgX191MzIgZ2lkOwp9OwojIDI0OSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIKZXh0ZXJuIGludCBtZW1jcHlfZnJvbWlvdmVj
X1I5ZmIzZGQzMCh1bnNpZ25lZCBjaGFyICprZGF0YSwgc3RydWN0IGlvdmVjICppb3YsIGludCBs
ZW4pOwpleHRlcm4gaW50IG1lbWNweV9mcm9taW92ZWNlbmRfUjZlNDQwYjU4KHVuc2lnbmVkIGNo
YXIgKmtkYXRhLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgb2Zmc2V0LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBjc3VtX3BhcnRpYWxfY29weV9m
cm9taW92ZWNlbmRfUjAyODc2NjU3KHVuc2lnbmVkIGNoYXIgKmtkYXRhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbiwgaW50ICpjc3Vt
cCk7CgpleHRlcm4gaW50IHZlcmlmeV9pb3ZlYyhzdHJ1Y3QgbXNnaGRyICptLCBzdHJ1Y3QgaW92
ZWMgKmlvdiwgY2hhciAqYWRkcmVzcywgaW50IG1vZGUpOwpleHRlcm4gaW50IG1lbWNweV90b2lv
dmVjX1I5Y2ViMTYzYyhzdHJ1Y3QgaW92ZWMgKnYsIHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBpbnQg
bGVuKTsKZXh0ZXJuIHZvaWQgbWVtY3B5X3Rva2VybmVsaW92ZWNfUmMxMjVlMDg4KHN0cnVjdCBp
b3ZlYyAqaW92LCB1bnNpZ25lZCBjaGFyICprZGF0YSwgaW50IGxlbik7CmV4dGVybiBpbnQgbW92
ZV9hZGRyX3RvX3VzZXJfUjM4Yzk5MDkzKHZvaWQgKmthZGRyLCBpbnQga2xlbiwgdm9pZCAqdWFk
ZHIsIGludCAqdWxlbik7CmV4dGVybiBpbnQgbW92ZV9hZGRyX3RvX2tlcm5lbF9SNWRmYTQ2OTYo
dm9pZCAqdWFkZHIsIGludCB1bGVuLCB2b2lkICprYWRkcik7CmV4dGVybiBpbnQgcHV0X2Ntc2df
UmYzOWJmNGQ5KHN0cnVjdCBtc2doZHIqLCBpbnQgbGV2ZWwsIGludCB0eXBlLCBpbnQgbGVuLCB2
b2lkICpkYXRhKTsKc3RydWN0IHNvY2tldDsKc3RydWN0IGZpbGUgKiBzb2NrX21hcF9maWxlKHN0
cnVjdCBzb2NrZXQgKnNvY2spOwpleHRlcm4gaW50IHNvY2tfbWFwX2ZkX1IyNDAxYzQ2OChzdHJ1
Y3Qgc29ja2V0ICpzb2NrKTsKZXh0ZXJuIHN0cnVjdCBzb2NrZXQgKnNvY2tmZF9sb29rdXBfUjgz
NmJlNDgwKGludCBmZCwgaW50ICplcnIpOwojIDIzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L25ldC5oIiAyCgoKc3RydWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDQ5ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L25ldC5oIgp0eXBlZGVmIGVudW0g
ewogIFNTX0ZSRUUgPSAwLAogIFNTX1VOQ09OTkVDVEVELAogIFNTX0NPTk5FQ1RJTkcsCiAgU1Nf
Q09OTkVDVEVELAogIFNTX0RJU0NPTk5FQ1RJTkcKfSBzb2NrZXRfc3RhdGU7CiMgNjUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbmV0LmgiCnN0cnVjdCBzb2NrZXQKewog
ICAgICAgIHNvY2tldF9zdGF0ZSBzdGF0ZTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK
ICAgICAgICBzdHJ1Y3QgcHJvdG9fb3BzICpvcHM7CiAgICAgICAgc3RydWN0IGlub2RlICppbm9k
ZTsKICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jX2xpc3Q7CiAgICAgICAgc3Ry
dWN0IGZpbGUgKmZpbGU7CiAgICAgICAgc3RydWN0IHNvY2sgKnNrOwogICAgICAgIHdhaXRfcXVl
dWVfaGVhZF90IHdhaXQ7CgogICAgICAgIHNob3J0IHR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBwYXNzY3JlZDsKfTsKCgoKc3RydWN0IHNjbV9jb29raWU7CnN0cnVjdCB2bV9hcmVhX3N0cnVj
dDsKc3RydWN0IHBhZ2U7CgpzdHJ1Y3QgcHJvdG9fb3BzIHsKICBpbnQgZmFtaWx5OwoKICBpbnQg
KCpyZWxlYXNlKSAoc3RydWN0IHNvY2tldCAqc29jayk7CiAgaW50ICgqYmluZCkgKHN0cnVjdCBz
b2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdW15YWRkciwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzb2NrYWRkcl9sZW4pOwogIGludCAoKmNvbm5lY3QpIChzdHJ1Y3Qgc29ja2V0
ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVzZXJ2YWRkciwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzb2NrYWRkcl9sZW4sIGludCBmbGFncyk7CiAgaW50ICgqc29ja2V0cGFpcikgKHN0
cnVjdCBzb2NrZXQgKnNvY2sxLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrMik7CiAgaW50ICgqYWNjZXB0
KSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jaywKICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBmbGFncyk7CiAgaW50ICgqZ2V0bmFtZV9SN2M2MGQ2NmUpIChz
dHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgaW50ICp1c29ja2FkZHJfbGVuLCBpbnQgcGVlcik7CiAgdW5zaWduZWQgaW50
ICgqcG9sbCkgKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg
cG9sbF90YWJsZV9zdHJ1Y3QgKndhaXQpOwogIGludCAoKmlvY3RsKSAoc3RydWN0IHNvY2tldCAq
c29jaywgdW5zaWduZWQgaW50IGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgYXJnKTsKICBpbnQgKCpsaXN0ZW4pIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGVu
KTsKICBpbnQgKCpzaHV0ZG93bikgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBmbGFncyk7CiAg
aW50ICgqc2V0c29ja29wdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9w
dG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpvcHR2YWwsIGludCBvcHRsZW4p
OwogIGludCAoKmdldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGlu
dCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgKm9w
dGxlbik7CiAgaW50ICgqc2VuZG1zZykgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2do
ZHIgKm0sIGludCB0b3RhbF9sZW4sIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKnJl
Y3Ztc2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxf
bGVuLCBpbnQgZmxhZ3MsIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKm1tYXApIChz
dHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHZtX2FyZWFfc3Ry
dWN0ICogdm1hKTsKICBzc2l6ZV90ICgqc2VuZHBhZ2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBz
dHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9mZnNldCwgc2l6ZV90IHNpemUsIGludCBmbGFncyk7Cn07
CgpzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseQp7CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBp
bnQgKCpjcmVhdGUpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCk7CgoKICAgICAg
ICBzaG9ydCBhdXRoZW50aWNhdGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0aW9uOwogICAgICAg
IHNob3J0IGVuY3J5cHRfbmV0Owp9OwoKc3RydWN0IG5ldF9wcm90bwp7CiAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZTsKICAgICAgICB2b2lkICgqaW5pdF9mdW5jKShzdHJ1Y3QgbmV0X3Byb3RvICop
Owp9OwoKZXh0ZXJuIGludCBzb2NrX3dha2VfYXN5bmNfUmJhOTUwYzg2KHN0cnVjdCBzb2NrZXQg
KnNrLCBpbnQgaG93LCBpbnQgYmFuZCk7CmV4dGVybiBpbnQgc29ja19yZWdpc3Rlcl9SZTFjMWQ4
ODIoc3RydWN0IG5ldF9wcm90b19mYW1pbHkgKmZhbSk7CmV4dGVybiBpbnQgc29ja191bnJlZ2lz
dGVyX1IyMzk0YTA2MihpbnQgZmFtaWx5KTsKZXh0ZXJuIHN0cnVjdCBzb2NrZXQgKnNvY2tfYWxs
b2NfUmZlMjg2NzJlKHZvaWQpOwpleHRlcm4gaW50IHNvY2tfY3JlYXRlX1IxMzE3OGI3MihpbnQg
ZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvLCBzdHJ1Y3Qgc29ja2V0ICoqKTsKZXh0ZXJuIHZv
aWQgc29ja19yZWxlYXNlX1I2OWJjZWM5ZihzdHJ1Y3Qgc29ja2V0ICopOwpleHRlcm4gaW50IHNv
Y2tfc2VuZG1zZ19SNTdjZTMxYzUoc3RydWN0IHNvY2tldCAqLCBzdHJ1Y3QgbXNnaGRyICptLCBp
bnQgbGVuKTsKZXh0ZXJuIGludCBzb2NrX3JlY3Ztc2dfUjEyNDRhMGMyKHN0cnVjdCBzb2NrZXQg
Kiwgc3RydWN0IG1zZ2hkciAqbSwgaW50IGxlbiwgaW50IGZsYWdzKTsKZXh0ZXJuIGludCBzb2Nr
X3JlYWR2X3dyaXRldihpbnQgdHlwZSwgc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxl
ICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBp
b3ZlYyAqIGlvdiwgbG9uZyBjb3VudCwgbG9uZyBzaXplKTsKCmV4dGVybiBpbnQgbmV0X3JhdGVs
aW1pdF9SZjZlYmMwM2Iodm9pZCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIG5ldF9yYW5kb21fUjFj
NjZmNjRjKHZvaWQpOwpleHRlcm4gdm9pZCBuZXRfc3JhbmRvbV9SZmY5NjNlZDgodW5zaWduZWQg
bG9uZyk7CiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgva2Rldl90LmgiIDEK
IyA2NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBrZGV2X3Q7CiMgNzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgva2Rldl90LmgiCmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWVfUmMy
NThjOTA2KGtkZXZfdCk7CiMgOTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgva2Rldl90LmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGtkZXZfdF90b19ucihrZGV2
X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVkIGludCkgKChkZXYpID4+IDgpKTw8
OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCA4KSAtIDEpKSk7Cn0KCnN0YXRp
YyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7CiAgICAgICAgaW50IG1ham9yLCBt
aW5vcjsKIyAxMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgva2Rldl90
LmgiCiAgICAgICAgbWFqb3IgPSAoZGV2ID4+IDgpOwogICAgICAgIG1pbm9yID0gKGRldiAmIDB4
ZmYpOwoKICAgICAgICByZXR1cm4gKCgobWFqb3IpIDw8IDgpIHwgKG1pbm9yKSk7Cn0KIyAxNyAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pb2N0bC5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vaW9jdGwuaCIgMQojIDUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaW9jdGwuaCIgMgojIDE4ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9hc20vYXRvbWljLmgiCnR5cGVkZWYgc3RydWN0IHsgdm9sYXRpbGUgaW50
IGNvdW50ZXI7IH0gYXRvbWljX3Q7CiMgNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19hZGQoaW50IGks
IGF0b21pY190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAg
ICAgICAiIiAiYWRkbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQog
ICAgICAgICAgICAgICAgOiJpciIgKGkpLCAibSIgKHYtPmNvdW50ZXIpKTsKfQojIDY5ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5l
X18gdm9pZCBhdG9taWNfc3ViKGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgInN1YmwgJTEsJTAiCiAgICAgICAgICAg
ICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2
LT5jb3VudGVyKSk7Cn0KIyA4NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20v
YXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfc3ViX2FuZF90ZXN0KGludCBp
LCBhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAic3VibCAlMiwlMDsgc2V0ZSAlMSIK
ICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAg
ICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0
dXJuIGM7Cn0KIyAxMDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2F0b21p
Yy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19pbmMoYXRvbWljX3QgKnYpCnsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJpbmNsICUwIgog
ICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6Im0iICh2
LT5jb3VudGVyKSk7Cn0KIyAxMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNt
L2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19kZWMoYXRvbWljX3QgKnYp
CnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJkZWNs
ICUwIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6
Im0iICh2LT5jb3VudGVyKSk7Cn0KIyAxMzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19hbmRfdGVz
dChhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiZGVjbCAlMDsgc2V0ZSAlMSIKICAg
ICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAg
ICA6Im0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYyAhPSAwOwp9
CiMgMTU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3Rh
dGljIF9faW5saW5lX18gaW50IGF0b21pY19pbmNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCnsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGM7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAg
ICAgICAgICAgICAgIiIgImluY2wgJTA7IHNldGUgJTEiCiAgICAgICAgICAgICAgICA6Ij1tIiAo
di0+Y291bnRlciksICI9cW0iIChjKQogICAgICAgICAgICAgICAgOiJtIiAodi0+Y291bnRlcikg
OiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGMgIT0gMDsKfQojIDE3OCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBh
dG9taWNfYWRkX25lZ2F0aXZlKGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVk
IGNoYXIgYzsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAi
IiAiYWRkbCAlMiwlMDsgc2V0cyAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVy
KSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikg
OiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0KIyA3ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9tb3VudC5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvbW91bnQuaCIKc3RydWN0IHZmc21vdW50CnsKICAgICAgICBzdHJ1Y3Qg
bGlzdF9oZWFkIG1udF9oYXNoOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50X3BhcmVudDsK
ICAgICAgICBzdHJ1Y3QgZGVudHJ5ICptbnRfbW91bnRwb2ludDsKICAgICAgICBzdHJ1Y3QgZGVu
dHJ5ICptbnRfcm9vdDsKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKm1udF9zYjsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9tb3VudHM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBt
bnRfY2hpbGQ7CiAgICAgICAgYXRvbWljX3QgbW50X2NvdW50OwogICAgICAgIGludCBtbnRfZmxh
Z3M7CiAgICAgICAgY2hhciAqbW50X2Rldm5hbWU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBt
bnRfbGlzdDsKfTsKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHZmc21vdW50ICptbnRnZXQoc3RydWN0
IHZmc21vdW50ICptbnQpCnsKICAgICAgICBpZiAobW50KQogICAgICAgICAgICAgICAgYXRvbWlj
X2luYygmbW50LT5tbnRfY291bnQpOwogICAgICAgIHJldHVybiBtbnQ7Cn0KCmV4dGVybiB2b2lk
IF9fbW50cHV0X1JlMTQzNjU1MihzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CgpzdGF0aWMgaW5saW5l
IHZvaWQgbW50cHV0KHN0cnVjdCB2ZnNtb3VudCAqbW50KQp7CiAgICAgICAgaWYgKG1udCkgewog
ICAgICAgICAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm1udC0+bW50X2NvdW50KSkK
ICAgICAgICAgICAgICAgICAgICAgICAgX19tbnRwdXRfUmUxNDM2NTUyKG1udCk7CiAgICAgICAg
fQp9CiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIg
MgojIDI1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpz
dHJ1Y3QgcXN0ciB7CiAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqIG5hbWU7CiAgICAgICAg
dW5zaWduZWQgaW50IGxlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgaGFzaDsKfTsKCnN0cnVjdCBk
ZW50cnlfc3RhdF90IHsKICAgICAgICBpbnQgbnJfZGVudHJ5OwogICAgICAgIGludCBucl91bnVz
ZWQ7CiAgICAgICAgaW50IGFnZV9saW1pdDsKICAgICAgICBpbnQgd2FudF9wYWdlczsKICAgICAg
ICBpbnQgZHVtbXlbMl07Cn07CmV4dGVybiBzdHJ1Y3QgZGVudHJ5X3N0YXRfdCBkZW50cnlfc3Rh
dDsKCgoKCgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBwYXJ0aWFsX25hbWVfaGFz
aCh1bnNpZ25lZCBsb25nIGMsIHVuc2lnbmVkIGxvbmcgcHJldmhhc2gpCnsKICAgICAgICByZXR1
cm4gKHByZXZoYXNoICsgKGMgPDwgNCkgKyAoYyA+PiA0KSkgKiAxMTsKfQoKCnN0YXRpYyBfX2lu
bGluZV9fIHVuc2lnbmVkIGxvbmcgZW5kX25hbWVfaGFzaCh1bnNpZ25lZCBsb25nIGhhc2gpCnsK
ICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGludCkgaGFzaDsKfQoKCnN0YXRpYyBfX2lubGluZV9f
IHVuc2lnbmVkIGludCBmdWxsX25hbWVfaGFzaChjb25zdCB1bnNpZ25lZCBjaGFyICogbmFtZSwg
dW5zaWduZWQgaW50IGxlbikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgaGFzaCA9IDA7CiAgICAg
ICAgd2hpbGUgKGxlbi0tKQogICAgICAgICAgICAgICAgaGFzaCA9IHBhcnRpYWxfbmFtZV9oYXNo
KCpuYW1lKyssIGhhc2gpOwogICAgICAgIHJldHVybiBlbmRfbmFtZV9oYXNoKGhhc2gpOwp9CgoK
CgpzdHJ1Y3QgZGNvb2tpZV9zdHJ1Y3Q7CgpzdHJ1Y3QgZGVudHJ5IHsKICAgICAgICBhdG9taWNf
dCBkX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBkX2ZsYWdzOwogICAgICAgIHN0cnVjdCBp
bm9kZSAqIGRfaW5vZGU7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqIGRfcGFyZW50OwogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgZF9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9scnU7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX2NoaWxkOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgZF9zdWJkaXJzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9hbGlhczsKICAgICAgICBp
bnQgZF9tb3VudGVkOwogICAgICAgIHN0cnVjdCBxc3RyIGRfbmFtZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGRfdGltZTsKICAgICAgICBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgKmRfb3A7CiAg
ICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICogZF9zYjsKICAgICAgICB1bnNpZ25lZCBsb25nIGRf
dmZzX2ZsYWdzOwogICAgICAgIHZvaWQgKiBkX2ZzZGF0YTsKICAgICAgICB2b2lkICogZF9leHRy
YV9hdHRyaWJ1dGVzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF9pbmFtZVsyNF07CiAgICAgICAg
c3RydWN0IGRjb29raWVfc3RydWN0ICogZF9jb29raWU7Cn07CgpzdHJ1Y3QgZGVudHJ5X29wZXJh
dGlvbnMgewogICAgICAgIGludCAoKmRfcmV2YWxpZGF0ZSkoc3RydWN0IGRlbnRyeSAqLCBpbnQp
OwogICAgICAgIGludCAoKmRfaGFzaCkgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7
CiAgICAgICAgaW50ICgqZF9jb21wYXJlKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAq
LCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAgICBpbnQgKCpkX2RlbGV0ZV9SMzc3YjViN2MpKHN0cnVj
dCBkZW50cnkgKik7CiAgICAgICAgdm9pZCAoKmRfcmVsZWFzZSkoc3RydWN0IGRlbnRyeSAqKTsK
ICAgICAgICB2b2lkICgqZF9pcHV0KShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsK
fTsKIyAxMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZGNhY2hlLmgi
CmV4dGVybiBzcGlubG9ja190IGRjYWNoZV9sb2NrX1I3MzQ2M2NlZjsKIyAxNTIgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgZF9kcm9wKHN0cnVjdCBkZW50cnkgKiBkZW50cnkpCnsKICAgICAgICAodm9pZCkoJmRj
YWNoZV9sb2NrX1I3MzQ2M2NlZik7CiAgICAgICAgbGlzdF9kZWwoJmRlbnRyeS0+ZF9oYXNoKTsK
ICAgICAgICBkbyB7ICgmZGVudHJ5LT5kX2hhc2gpLT5uZXh0ID0gKCZkZW50cnktPmRfaGFzaCk7
ICgmZGVudHJ5LT5kX2hhc2gpLT5wcmV2ID0gKCZkZW50cnktPmRfaGFzaCk7IH0gd2hpbGUgKDAp
OwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IGRuYW1l
X2V4dGVybmFsKHN0cnVjdCBkZW50cnkgKmQpCnsKICAgICAgICByZXR1cm4gZC0+ZF9uYW1lLm5h
bWUgIT0gZC0+ZF9pbmFtZTsKfQoKCgoKZXh0ZXJuIHZvaWQgZF9pbnN0YW50aWF0ZV9SYjQ4MThh
M2Qoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfZGVsZXRl
X1IzNzdiNWI3YyhzdHJ1Y3QgZGVudHJ5ICopOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9h
bGxvY19SMDY3ZDJjNDAoc3RydWN0IGRlbnRyeSAqLCBjb25zdCBzdHJ1Y3QgcXN0ciAqKTsKZXh0
ZXJuIHZvaWQgc2hyaW5rX2RjYWNoZV9zYl9SZGE5ZDRjNzgoc3RydWN0IHN1cGVyX2Jsb2NrICop
OwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX3BhcmVudF9SOTgwMWM0OTAoc3RydWN0IGRlbnRy
eSAqKTsKZXh0ZXJuIGludCBkX2ludmFsaWRhdGVfUjIyNGI5Njc5KHN0cnVjdCBkZW50cnkgKik7
CmV4dGVybiB2b2lkIGZsdXNoX2RlbnRyeV9hdHRyaWJ1dGVzX1JkNDZjNDY5MSh2b2lkKTsKCgpz
dHJ1Y3Qgem9uZV9zdHJ1Y3Q7CgpleHRlcm4gaW50IHNocmlua19kY2FjaGVfbWVtb3J5KGludCwg
dW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVfZGNhY2hlX1I2Y2YyOGY3NyhpbnQpOwoK
CmV4dGVybiBpbnQgc2hyaW5rX2ljYWNoZV9tZW1vcnkoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBw
cnVuZV9pY2FjaGUoaW50KTsKCgpleHRlcm4gaW50IHNocmlua19kcWNhY2hlX21lbW9yeShpbnQs
IHVuc2lnbmVkIGludCk7CgoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jX3Jvb3RfUmVh
Yzk5ZGU4KHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gdm9pZCBkX2dlbm9jaWRlKHN0cnVjdCBk
ZW50cnkgKik7CgpleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9maW5kX2FsaWFzX1JiZWU4ZDEyZihz
dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfcHJ1bmVfYWxpYXNlc19SMTAxODcwMDYoc3Ry
dWN0IGlub2RlICopOwoKCmV4dGVybiBpbnQgaGF2ZV9zdWJtb3VudHNfUjI3YzFhN2JlKHN0cnVj
dCBkZW50cnkgKik7CgoKCgpleHRlcm4gdm9pZCBkX3JlaGFzaF9SMTY2ZmFlMWMoc3RydWN0IGRl
bnRyeSAqKTsKIyAyMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZGNh
Y2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgZF9hZGQoc3RydWN0IGRlbnRyeSAqIGVudHJ5
LCBzdHJ1Y3QgaW5vZGUgKiBpbm9kZSkKewogICAgICAgIGRfaW5zdGFudGlhdGVfUmI0ODE4YTNk
KGVudHJ5LCBpbm9kZSk7CiAgICAgICAgZF9yZWhhc2hfUjE2NmZhZTFjKGVudHJ5KTsKfQoKCmV4
dGVybiB2b2lkIGRfbW92ZV9SZmJjYjI4NzQoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5
ICopOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9sb29rdXBfUjQzMzM4NmEzKHN0cnVjdCBk
ZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CgoKZXh0ZXJuIGludCBkX3ZhbGlkYXRlX1I1MDUxZmE3
OShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7CgpleHRlcm4gY2hhciAqIF9fZF9w
YXRoX1JiN2JmOTAzNihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3Qg
ZGVudHJ5ICosCiAgICAgICAgc3RydWN0IHZmc21vdW50ICosIGNoYXIgKiwgaW50KTsKIyAyNTAg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBf
X2lubGluZV9fIHN0cnVjdCBkZW50cnkgKiBkZ2V0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewog
ICAgICAgIGlmIChkZW50cnkpIHsKICAgICAgICAgICAgICAgIGlmICghKCgmZGVudHJ5LT5kX2Nv
dW50KS0+Y291bnRlcikpCiAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X29mX2xpbmVfYnVn
X1I4YjBmZDNjNSgyNTQpOwogICAgICAgICAgICAgICAgYXRvbWljX2luYygmZGVudHJ5LT5kX2Nv
dW50KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJuIHN0cnVjdCBk
ZW50cnkgKiBkZ2V0X2xvY2tlZF9SZGE2ZmUxMmEoc3RydWN0IGRlbnRyeSAqKTsKIyAyNjkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lu
bGluZV9fIGludCBkX3VuaGFzaGVkKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJl
dHVybiBsaXN0X2VtcHR5KCZkZW50cnktPmRfaGFzaCk7Cn0KCmV4dGVybiB2b2lkIGRwdXRfUjNk
ZTgxM2E2KHN0cnVjdCBkZW50cnkgKik7CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF9tb3VudHBv
aW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBkZW50cnktPmRfbW91
bnRlZDsKfQoKZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqbG9va3VwX21udF9SN2Y5ZjJmZjIoc3Ry
dWN0IHZmc21vdW50ICosIHN0cnVjdCBkZW50cnkgKik7CiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2FzbS9zdGF0LmgiIDEKCgoKc3RydWN0IF9fb2xkX2tlcm5lbF9zdGF0IHsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfaW5v
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c3Rfbmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc3RfbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGlt
ZTsKfTsKCnN0cnVjdCBzdGF0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgX19wYWQxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfaW5vOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rf
bmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVuc2ln
bmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxvY2tz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBf
X3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2N0aW1lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ0
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ1Owp9OwoKCgoKc3RydWN0IHN0YXQ2NCB7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIGNoYXIgX19w
YWQwWzEwXTsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgX19zdF9pbm87CgogICAgICAgIHVuc2ln
bmVkIGludCBzdF9tb2RlOwogICAgICAgIHVuc2lnbmVkIGludCBzdF9ubGluazsKCiAgICAgICAg
dW5zaWduZWQgbG9uZyBzdF91aWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9naWQ7CgogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHN0X3JkZXY7CiAgICAgICAgdW5zaWduZWQgY2hhciBfX3BhZDNb
MTBdOwoKICAgICAgICBsb25nIGxvbmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0
X2Jsa3NpemU7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxvY2tzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgX19wYWQ0OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgX19wYWQ1OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210aW1lOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ2OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2N0
aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ3OwoKICAgICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgc3RfaW5vOwp9OwojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvc3RhdC5oIiAyCiMgNTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
c3RhdC5oIgpzdHJ1Y3Qga3N0YXRfUjU2ODZiNmRlIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGlu
bzsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAgdW1vZGVfdCBtb2RlOwogICAgICAgIG5saW5r
X3Qgbmxpbms7CiAgICAgICAgdWlkX3QgdWlkOwogICAgICAgIGdpZF90IGdpZDsKICAgICAgICBk
ZXZfdCByZGV2OwogICAgICAgIGxvZmZfdCBzaXplOwogICAgICAgIHRpbWVfdCBhdGltZTsKICAg
ICAgICB0aW1lX3QgbXRpbWU7CiAgICAgICAgdGltZV90IGN0aW1lOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgYmxrc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGJsb2NrczsKfTsKIyAyMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIiAyCgoKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMQojIDM3ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18g
dm9pZCBzZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAgICAgICAgICAgICJidHNsICUxLCUwIgogICAgICAg
ICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAg
ICA6IklyIiAobnIpKTsKfQojIDU0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2Fz
bS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3NldF9iaXQoaW50IG5yLCB2b2xh
dGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18oCiAgICAgICAgICAgICAgICAiYnRz
bCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIp
KQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyA3MiAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2xlYXJf
Yml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggIiIKICAgICAgICAgICAgICAgICJidHJsICUxLCUwIgogICAgICAgICAgICAgICAg
OiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAo
bnIpKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0
aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
ICAgICAgICAiYnRybCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2b2xhdGlsZSBs
b25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyA5OSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgX19jaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAg
ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICJidGNsICUxLCUwIgogICAg
ICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAg
ICAgICA6IklyIiAobnIpKTsKfQojIDExNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2hhbmdlX2JpdChpbnQgbnIs
IHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICIi
CiAgICAgICAgICAgICAgICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2
b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyAx
MzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMg
X19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBh
ZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
ICIiCiAgICAgICAgICAgICAgICAiYnRzbCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAg
ICAgICAgOiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAg
ICAgICAgICAgICAgIDoiSXIiIChucikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIG9sZGJp
dDsKfQojIDE1MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vYml0b3BzLmgi
CnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGls
ZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18oCiAg
ICAgICAgICAgICAgICAiYnRzbCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAg
OiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAg
ICAgICAgIDoiSXIiIChucikpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAxNzEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVf
XyBpbnQgdGVzdF9hbmRfY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsK
ICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAg
ICAgICAgICAgICAgICJidHJsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6
Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAg
ICAgICAgOiJJciIgKG5yKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMg
MTkxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGlj
IF9faW5saW5lX18gaW50IF9fdGVzdF9hbmRfY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9p
ZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fKAogICAgICAg
ICAgICAgICAgImJ0cmwgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIi
IChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAg
ICA6IklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CgoKc3RhdGljIF9faW5saW5l
X18gaW50IF9fdGVzdF9hbmRfY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRy
KQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAg
ICAgICAgICAgICAgICAiYnRjbCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAg
OiI9ciIgKG9sZGJpdCksIj1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAg
ICAgICAgIDoiSXIiIChucikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQoj
IDIyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRp
YyBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdm9p
ZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXyggIiIKICAgICAgICAgICAgICAgICJidGNsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAg
ICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIp
KQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4g
b2xkYml0Owp9CiMgMjQyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9iaXRv
cHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGNvbnN0YW50X3Rlc3RfYml0KGludCBuciwgY29u
c3Qgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICByZXR1cm4gKCgxVUwgPDwgKG5yICYg
MzEpKSAmICgoKGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSBhZGRyKVtuciA+PiA1XSkp
ICE9IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCB2YXJpYWJsZV90ZXN0X2JpdChpbnQgbnIs
IHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiYnRsICUyLCUxXG5cdHNiYmwgJTAs
JTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KQogICAgICAgICAgICAgICAgOiJtIiAo
KCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSksIklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xk
Yml0Owp9CiMgMjcxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9iaXRvcHMu
aCIKc3RhdGljIF9faW5saW5lX18gaW50IGZpbmRfZmlyc3RfemVyb19iaXQodm9pZCAqIGFkZHIs
IHVuc2lnbmVkIHNpemUpCnsKICAgICAgICBpbnQgZDAsIGQxLCBkMjsKICAgICAgICBpbnQgcmVz
OwoKICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKCiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibW92bCAkLTEsJSVlYXhcblx0
IgogICAgICAgICAgICAgICAgInhvcmwgJSVlZHgsJSVlZHhcblx0IgogICAgICAgICAgICAgICAg
InJlcGU7IHNjYXNsXG5cdCIKICAgICAgICAgICAgICAgICJqZSAxZlxuXHQiCiAgICAgICAgICAg
ICAgICAieG9ybCAtNCglJWVkaSksJSVlYXhcblx0IgogICAgICAgICAgICAgICAgInN1YmwgJDQs
JSVlZGlcblx0IgogICAgICAgICAgICAgICAgImJzZmwgJSVlYXgsJSVlZHhcbiIKICAgICAgICAg
ICAgICAgICIxOlx0c3VibCAlJWVieCwlJWVkaVxuXHQiCiAgICAgICAgICAgICAgICAic2hsbCAk
MywlJWVkaVxuXHQiCiAgICAgICAgICAgICAgICAiYWRkbCAlJWVkaSwlJWVkeCIKICAgICAgICAg
ICAgICAgIDoiPWQiIChyZXMpLCAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZhIiAoZDIpCiAg
ICAgICAgICAgICAgICA6IjEiICgoc2l6ZSArIDMxKSA+PiA1KSwgIjIiIChhZGRyKSwgImIiIChh
ZGRyKSk7CiAgICAgICAgcmV0dXJuIHJlczsKfQojIDMwMyAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5kX2ZpcnN0
X2JpdCh2b2lkICogYWRkciwgdW5zaWduZWQgc2l6ZSkKewogICAgICAgIGludCBkMCwgZDE7CiAg
ICAgICAgaW50IHJlczsKCgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAg
ICAgICAgInhvcmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgInJlcGU7IHNjYXNs
XG5cdCIKICAgICAgICAgICAgICAgICJqeiAxZlxuXHQiCiAgICAgICAgICAgICAgICAibGVhbCAt
NCglJWVkaSksJSVlZGlcblx0IgogICAgICAgICAgICAgICAgImJzZmwgKCUlZWRpKSwlJWVheFxu
IgogICAgICAgICAgICAgICAgIjE6XHRzdWJsICUlZWJ4LCUlZWRpXG5cdCIKICAgICAgICAgICAg
ICAgICJzaGxsICQzLCUlZWRpXG5cdCIKICAgICAgICAgICAgICAgICJhZGRsICUlZWRpLCUlZWF4
IgogICAgICAgICAgICAgICAgOiI9YSIgKHJlcyksICI9JmMiIChkMCksICI9JkQiIChkMSkKICAg
ICAgICAgICAgICAgIDoiMSIgKChzaXplICsgMzEpID4+IDUpLCAiMiIgKGFkZHIpLCAiYiIgKGFk
ZHIpKTsKICAgICAgICByZXR1cm4gcmVzOwp9CgoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg
ZmluZF9uZXh0X3plcm9fYml0ICh2b2lkICogYWRkciwgaW50IHNpemUsIGludCBvZmZzZXQpCnsK
ICAgICAgICB1bnNpZ25lZCBsb25nICogcCA9ICgodW5zaWduZWQgbG9uZyAqKSBhZGRyKSArIChv
ZmZzZXQgPj4gNSk7CiAgICAgICAgaW50IHNldCA9IDAsIGJpdCA9IG9mZnNldCAmIDMxLCByZXM7
CgogICAgICAgIGlmIChiaXQpIHsKCgoKICAgICAgICAgICAgICAgIF9fYXNtX18oImJzZmwgJTEs
JTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAiam5lIDFmXG5cdCIKICAgICAgICAgICAg
ICAgICAgICAgICAgIm1vdmwgJDMyLCAlMFxuIgogICAgICAgICAgICAgICAgICAgICAgICAiMToi
CiAgICAgICAgICAgICAgICAgICAgICAgIDogIj1yIiAoc2V0KQogICAgICAgICAgICAgICAgICAg
ICAgICA6ICJyIiAofigqcCA+PiBiaXQpKSk7CiAgICAgICAgICAgICAgICBpZiAoc2V0IDwgKDMy
IC0gYml0KSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldCArIG9mZnNldDsKICAg
ICAgICAgICAgICAgIHNldCA9IDMyIC0gYml0OwogICAgICAgICAgICAgICAgcCsrOwogICAgICAg
IH0KCgoKICAgICAgICByZXMgPSBmaW5kX2ZpcnN0X3plcm9fYml0IChwLCBzaXplIC0gMzIgKiAo
cCAtICh1bnNpZ25lZCBsb25nICopIGFkZHIpKTsKICAgICAgICByZXR1cm4gKG9mZnNldCArIHNl
dCArIHJlcyk7Cn0KCgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5kX25leHRfYml0ICh2
b2lkICogYWRkciwgaW50IHNpemUsIGludCBvZmZzZXQpCnsKICAgICAgICB1bnNpZ25lZCBsb25n
ICogcCA9ICgodW5zaWduZWQgbG9uZyAqKSBhZGRyKSArIChvZmZzZXQgPj4gNSk7CiAgICAgICAg
aW50IHNldCA9IDAsIGJpdCA9IG9mZnNldCAmIDMxLCByZXM7CgogICAgICAgIGlmIChiaXQpIHsK
CgoKICAgICAgICAgICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTBcblx0IgogICAgICAgICAgICAg
ICAgICAgICAgICAiam5lIDFmXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgIm1vdmwgJDMy
LCAlMFxuIgogICAgICAgICAgICAgICAgICAgICAgICAiMToiCiAgICAgICAgICAgICAgICAgICAg
ICAgIDogIj1yIiAoc2V0KQogICAgICAgICAgICAgICAgICAgICAgICA6ICJyIiAoKnAgPj4gYml0
KSk7CiAgICAgICAgICAgICAgICBpZiAoc2V0IDwgKDMyIC0gYml0KSkKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNldCArIG9mZnNldDsKICAgICAgICAgICAgICAgIHNldCA9IDMyIC0g
Yml0OwogICAgICAgICAgICAgICAgcCsrOwogICAgICAgIH0KCgoKICAgICAgICByZXMgPSBmaW5k
X2ZpcnN0X2JpdCAocCwgc2l6ZSAtIDMyICogKHAgLSAodW5zaWduZWQgbG9uZyAqKSBhZGRyKSk7
CiAgICAgICAgcmV0dXJuIChvZmZzZXQgKyBzZXQgKyByZXMpOwp9CgoKCgoKCgpzdGF0aWMgX19p
bmxpbmVfXyB1bnNpZ25lZCBsb25nIGZmeih1bnNpZ25lZCBsb25nIHdvcmQpCnsKICAgICAgICBf
X2FzbV9fKCJic2ZsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKHdvcmQpCiAgICAgICAg
ICAgICAgICA6InIiICh+d29yZCkpOwogICAgICAgIHJldHVybiB3b3JkOwp9CgoKCgoKCgpzdGF0
aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIF9fZmZzKHVuc2lnbmVkIGxvbmcgd29yZCkKewog
ICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAod29yZCkK
ICAgICAgICAgICAgICAgIDoicm0iICh3b3JkKSk7CiAgICAgICAgcmV0dXJuIHdvcmQ7Cn0KIyA0
MjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMg
aW5saW5lIGludCBzY2hlZF9maW5kX2ZpcnN0X2JpdCh1bnNpZ25lZCBsb25nICpiKQp7CiAgICAg
ICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoKGJbMF0pLDApKQogICAgICAgICAgICAgICAgcmV0dXJu
IF9fZmZzKGJbMF0pOwogICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KChiWzFdKSwwKSkKICAg
ICAgICAgICAgICAgIHJldHVybiBfX2ZmcyhiWzFdKSArIDMyOwogICAgICAgIGlmIChfX2J1aWx0
aW5fZXhwZWN0KChiWzJdKSwwKSkKICAgICAgICAgICAgICAgIHJldHVybiBfX2ZmcyhiWzJdKSAr
IDY0OwogICAgICAgIGlmIChiWzNdKQogICAgICAgICAgICAgICAgcmV0dXJuIF9fZmZzKGJbM10p
ICsgOTY7CiAgICAgICAgcmV0dXJuIF9fZmZzKGJbNF0pICsgMTI4Owp9CiMgNDQ2ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18g
aW50IGZmcyhpbnQgeCkKewogICAgICAgIGludCByOwoKICAgICAgICBfX2FzbV9fKCJic2ZsICUx
LCUwXG5cdCIKICAgICAgICAgICAgICAgICJqbnogMWZcblx0IgogICAgICAgICAgICAgICAgIm1v
dmwgJC0xLCUwXG4iCiAgICAgICAgICAgICAgICAiMToiIDogIj1yIiAocikgOiAicm0iICh4KSk7
CiAgICAgICAgcmV0dXJuIHIrMTsKfQojIDI3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKCnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA1MCAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgZmlsZXNfc3RhdF9z
dHJ1Y3QgewogICAgICAgIGludCBucl9maWxlczsKICAgICAgICBpbnQgbnJfZnJlZV9maWxlczsK
ICAgICAgICBpbnQgbWF4X2ZpbGVzOwp9OwpleHRlcm4gc3RydWN0IGZpbGVzX3N0YXRfc3RydWN0
IGZpbGVzX3N0YXRfUjAzY2FkYTI3OwoKc3RydWN0IGlub2Rlc19zdGF0X3QgewogICAgICAgIGlu
dCBucl9pbm9kZXM7CiAgICAgICAgaW50IG5yX3VudXNlZDsKICAgICAgICBpbnQgZHVtbXlbNV07
Cn07CmV4dGVybiBzdHJ1Y3QgaW5vZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKCmV4dGVybiBpbnQg
bGVhc2VzX2VuYWJsZSwgZGlyX25vdGlmeV9lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CiMgMjAw
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDEKIyAzOSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDEKCgoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaW5pdC5oIiAxCiMgMTMxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2luaXQuaCIKdHlwZWRlZiBpbnQgKCpfX2luaXRf
bW9kdWxlX2Z1bmNfdCkodm9pZCk7CnR5cGVkZWYgdm9pZCAoKl9fY2xlYW51cF9tb2R1bGVfZnVu
Y190KSh2b2lkKTsKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9zeXN0
ZW0uaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2JpdG9w
cy5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvYml0b3Bz
LmgiCnN0YXRpYyBpbmxpbmUgaW50IGdlbmVyaWNfZmZzKGludCB4KQp7CiAgICAgICAgaW50IHIg
PSAxOwoKICAgICAgICBpZiAoIXgpCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBp
ZiAoISh4ICYgMHhmZmZmKSkgewogICAgICAgICAgICAgICAgeCA+Pj0gMTY7CiAgICAgICAgICAg
ICAgICByICs9IDE2OwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMHhmZikpIHsKICAgICAg
ICAgICAgICAgIHggPj49IDg7CiAgICAgICAgICAgICAgICByICs9IDg7CiAgICAgICAgfQogICAg
ICAgIGlmICghKHggJiAweGYpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSA0OwogICAgICAgICAg
ICAgICAgciArPSA0OwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMykpIHsKICAgICAgICAg
ICAgICAgIHggPj49IDI7CiAgICAgICAgICAgICAgICByICs9IDI7CiAgICAgICAgfQogICAgICAg
IGlmICghKHggJiAxKSkgewogICAgICAgICAgICAgICAgeCA+Pj0gMTsKICAgICAgICAgICAgICAg
IHIgKz0gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHI7Cn0KCgoKCgoKc3RhdGljIGlubGlu
ZSB1bnNpZ25lZCBpbnQgZ2VuZXJpY19od2VpZ2h0MzIodW5zaWduZWQgaW50IHcpCnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgcmVzID0gKHcgJiAweDU1NTU1NTU1KSArICgodyA+PiAxKSAmIDB4NTU1
NTU1NTUpOwogICAgICAgIHJlcyA9IChyZXMgJiAweDMzMzMzMzMzKSArICgocmVzID4+IDIpICYg
MHgzMzMzMzMzMyk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MEYwRjBGMEYpICsgKChyZXMgPj4g
NCkgJiAweDBGMEYwRjBGKTsKICAgICAgICByZXMgPSAocmVzICYgMHgwMEZGMDBGRikgKyAoKHJl
cyA+PiA4KSAmIDB4MDBGRjAwRkYpOwogICAgICAgIHJldHVybiAocmVzICYgMHgwMDAwRkZGRikg
KyAoKHJlcyA+PiAxNikgJiAweDAwMDBGRkZGKTsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBp
bnQgZ2VuZXJpY19od2VpZ2h0MTYodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNpZ25lZCBp
bnQgcmVzID0gKHcgJiAweDU1NTUpICsgKCh3ID4+IDEpICYgMHg1NTU1KTsKICAgICAgICByZXMg
PSAocmVzICYgMHgzMzMzKSArICgocmVzID4+IDIpICYgMHgzMzMzKTsKICAgICAgICByZXMgPSAo
cmVzICYgMHgwRjBGKSArICgocmVzID4+IDQpICYgMHgwRjBGKTsKICAgICAgICByZXR1cm4gKHJl
cyAmIDB4MDBGRikgKyAoKHJlcyA+PiA4KSAmIDB4MDBGRik7Cn0KCnN0YXRpYyBpbmxpbmUgdW5z
aWduZWQgaW50IGdlbmVyaWNfaHdlaWdodDgodW5zaWduZWQgaW50IHcpCnsKICAgICAgICB1bnNp
Z25lZCBpbnQgcmVzID0gKHcgJiAweDU1KSArICgodyA+PiAxKSAmIDB4NTUpOwogICAgICAgIHJl
cyA9IChyZXMgJiAweDMzKSArICgocmVzID4+IDIpICYgMHgzMyk7CiAgICAgICAgcmV0dXJuIChy
ZXMgJiAweDBGKSArICgocmVzID4+IDQpICYgMHgwRik7Cn0KIyA5ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMgoKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CmV4
dGVybiB2b2lkIF9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldiwgc3RydWN0IHRh
c2tfc3RydWN0ICpuZXh0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgNjEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGxvbmcgX2dldF9iYXNlKGNoYXIgKiBhZGRyKQp7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBfX2Jhc2U7CiAgICAgICAgX19hc21fXygibW92YiAlMywlJWRoXG5cdCIKICAgICAgICAgICAg
ICAgICJtb3ZiICUyLCUlZGxcblx0IgogICAgICAgICAgICAgICAgInNobGwgJDE2LCUlZWR4XG5c
dCIKICAgICAgICAgICAgICAgICJtb3Z3ICUxLCUlZHgiCiAgICAgICAgICAgICAgICA6Ij0mZCIg
KF9fYmFzZSkKICAgICAgICAgICAgICAgIDoibSIgKCooKGFkZHIpKzIpKSwKICAgICAgICAgICAg
ICAgICAibSIgKCooKGFkZHIpKzQpKSwKICAgICAgICAgICAgICAgICAibSIgKCooKGFkZHIpKzcp
KSk7CiAgICAgICAgcmV0dXJuIF9fYmFzZTsKfQojIDEyOCAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBnZXRf
bGltaXQodW5zaWduZWQgbG9uZyBzZWdtZW50KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX2xp
bWl0OwogICAgICAgIF9fYXNtX18oImxzbGwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAo
X19saW1pdCk6InIiIChzZWdtZW50KSk7CiAgICAgICAgcmV0dXJuIF9fbGltaXQrMTsKfQoKCgoK
CgoKc3RydWN0IF9feGNoZ19kdW1teSB7IHVuc2lnbmVkIGxvbmcgYVsxMDBdOyB9OwojIDE2MCAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxp
bmUgdm9pZCBfX3NldF82NGJpdCAodW5zaWduZWQgbG9uZyBsb25nICogcHRyLAogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGxvdywgdW5zaWduZWQgaW50IGhpZ2gpCnsKICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXyAoCiAgICAgICAgICAgICAgICAiXG4xOlx0IgogICAgICAgICAgICAg
ICAgIm1vdmwgKCUwKSwgJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm1vdmwgNCglMCksICUl
ZWR4XG5cdCIKICAgICAgICAgICAgICAgICJsb2NrIGNtcHhjaGc4YiAoJTApXG5cdCIKICAgICAg
ICAgICAgICAgICJqbnogMWIiCiAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICA6ICJE
IihwdHIpLAogICAgICAgICAgICAgICAgICAgICAgICAiYiIobG93KSwKICAgICAgICAgICAgICAg
ICAgICAgICAgImMiKGhpZ2gpCiAgICAgICAgICAgICAgICA6ICJheCIsImR4IiwibWVtb3J5Iik7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF9jb25zdGFudCAodW5zaWduZWQgbG9u
ZyBsb25nICpwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCnsKICAgICAgICBfX3NldF82NGJpdChwdHIs
KHVuc2lnbmVkIGludCkodmFsdWUpLCAodW5zaWduZWQgaW50KSgodmFsdWUpPj4zMlVMTCkpOwp9
CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdF92YXIgKHVuc2lnbmVkIGxvbmcgbG9u
ZyAqcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVl
KQp7CiAgICAgICAgX19zZXRfNjRiaXQocHRyLCooKCh1bnNpZ25lZCBpbnQqKSYodmFsdWUpKSsw
KSwgKigoKHVuc2lnbmVkIGludCopJih2YWx1ZSkpKzEpKTsKfQojIDIwNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
bG9uZyBfX3hjaGcodW5zaWduZWQgbG9uZyB4LCB2b2xhdGlsZSB2b2lkICogcHRyLCBpbnQgc2l6
ZSkKewogICAgICAgIHN3aXRjaCAoc2l6ZSkgewogICAgICAgICAgICAgICAgY2FzZSAxOgogICAg
ICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ2IgJWIwLCUxIgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoiPXEiICh4KQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAi
MCIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Y2hndyAldzAsJTEiCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9ciIgKHgpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIiAo
eCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAg
ICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGdsICUwLCUxIgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDoiPXIiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDoibSIgKCooKHN0cnVjdCBfX3hjaGdfZHVtbXkgKikocHRyKSkpLCAiMCIgKHgpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiB4Owp9CiMgMjM5ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBsb25nIF9fY21weGNoZyh2b2xhdGlsZSB2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcg
b2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bmV3LCBpbnQgc2l6ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJldjsKICAgICAgICBzd2l0
Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygiIiAiY21weGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihv
bGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAg
ICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCIiICJjbXB4Y2hndyAldzEsJTIiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICop
KHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog
Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAgICAgY2FzZSA0Ogog
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiIgImNtcHhjaGdsICUxLCUyIgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9f
eGNoZ19kdW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAg
ICAgIH0KICAgICAgICByZXR1cm4gb2xkOwp9CiMgMzczICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKdm9pZCBkaXNhYmxlX2hsdF9SNzk0NDg3ZWUodm9pZCk7
CnZvaWQgZW5hYmxlX2hsdF9SOWM3MDc3YmQodm9pZCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBk
bWlfYnJva2VuOwpleHRlcm4gaW50IGlzX3NvbnlfdmFpb19sYXB0b3BfUjc0NjJkNWU0OwojIDQw
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMgoKCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAxCiMgMjQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcndzZW0uaCIKc3RydWN0IHJ3
X3NlbWFwaG9yZTsKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20v
cndzZW0uaCIgMQojIDQ3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9yd3Nl
bS5oIgpzdHJ1Y3QgcndzZW1fd2FpdGVyOwoKZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgKnJ3
c2VtX2Rvd25fcmVhZF9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKSBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlICpyd3NlbV9kb3du
X3dyaXRlX2ZhaWxlZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgKnJ3c2VtX3dha2Uoc3RydWN0
IHJ3X3NlbWFwaG9yZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoKCgpzdHJ1Y3Qg
cndfc2VtYXBob3JlIHsKICAgICAgICBzaWduZWQgbG9uZyBjb3VudDsKCgoKCgoKICAgICAgICBz
cGlubG9ja190IHdhaXRfbG9jazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRfbGlzdDsK
CgoKfTsKIyA4NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcndzZW0uaCIK
c3RhdGljIGlubGluZSB2b2lkIGluaXRfcndzZW1fUmFjNDU4Mzc1KHN0cnVjdCByd19zZW1hcGhv
cmUgKnNlbSkKewogICAgICAgIHNlbS0+Y291bnQgPSAweDAwMDAwMDAwOwogICAgICAgIGRvIHsg
fSB3aGlsZSgwKTsKICAgICAgICBkbyB7ICgmc2VtLT53YWl0X2xpc3QpLT5uZXh0ID0gKCZzZW0t
PndhaXRfbGlzdCk7ICgmc2VtLT53YWl0X2xpc3QpLT5wcmV2ID0gKCZzZW0tPndhaXRfbGlzdCk7
IH0gd2hpbGUgKDApOwoKCgp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19kb3duX3JlYWRfUjZl
YmQ0NmE1KHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIGRvd25fcmVhZFxuXHQiCiIiICIg
IGluY2wgICAgICAoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAgICIgIGpzICAgICAgICAyZlxu
XHQiCiAgICAgICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9u
IDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNrZ2Vwbm1pIiAiXG5cdCIgIi50
ZXh0LmxvY2suIiAic2tnZXBubWkiICI6XG5cdCIgIi5lbmRpZlxuXHQiCiAgICAgICAgICAgICAg
ICAiMjpcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWN4XG5cdCIKICAgICAg
ICAgICAgICAgICIgIHB1c2hsICAgICAlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAiICBjYWxs
ICAgICAgcndzZW1fZG93bl9yZWFkX2ZhaWxlZFxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3Bs
ICAgICAgJSVlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIK
ICAgICAgICAgICAgICAgICIgIGptcCAgICAgICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2
aW91c1xuXHQiCiAgICAgICAgICAgICAgICAiIyBlbmRpbmcgZG93bl9yZWFkXG5cdCIKICAgICAg
ICAgICAgICAgIDogIittIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAiYSIoc2VtKQog
ICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNjIik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgaW50
IF9fZG93bl9yZWFkX3RyeWxvY2tfUmExNTI5ZGNjKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkK
ewogICAgICAgIF9fczMyIHJlc3VsdCwgdG1wOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fZG93bl9yZWFkX3RyeWxvY2tcblx0Igog
ICAgICAgICAgICAgICAgIiAgbW92bCAgICAgICUwLCUxXG5cdCIKICAgICAgICAgICAgICAgICIx
OlxuXHQiCiAgICAgICAgICAgICAgICAiICBtb3ZsCSAgICAgJTEsJTJcblx0IgogICAgICAgICAg
ICAgICAgIiAgYWRkbCAgICAgICUzLCUyXG5cdCIKICAgICAgICAgICAgICAgICIgIGpsZQkgICAg
IDJmXG5cdCIKIiIgIiAgY21weGNoZ2wgICUyLCUwXG5cdCIKICAgICAgICAgICAgICAgICIgIGpu
egkgICAgIDFiXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAi
IyBlbmRpbmcgX19kb3duX3JlYWRfdHJ5bG9ja1xuXHQiCiAgICAgICAgICAgICAgICA6ICIrbSIo
c2VtLT5jb3VudCksICI9JmEiKHJlc3VsdCksICI9JnIiKHRtcCkKICAgICAgICAgICAgICAgIDog
ImkiKDB4MDAwMDAwMDEpCiAgICAgICAgICAgICAgICA6ICJtZW1vcnkiLCAiY2MiKTsKICAgICAg
ICByZXR1cm4gcmVzdWx0Pj0wID8gMSA6IDA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX2Rv
d25fd3JpdGVfUjdmZDU0YzVjKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIGlu
dCB0bXA7CgogICAgICAgIHRtcCA9ICgoLTB4MDAwMTAwMDApICsgMHgwMDAwMDAwMSk7CiAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgZG93
bl93cml0ZVxuXHQiCiIiICIgIHhhZGQgICAgICAlMCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAg
ICAgICIgIHRlc3RsICAgICAlMCwlMFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbnogICAgICAg
MmZcblx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAgICAgICAgICIuc3Vic2Vj
dGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJza2dlcG5taSIgIlxuXHQi
ICIudGV4dC5sb2NrLiIgInNrZ2Vwbm1pIiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAg
ICAgICAgIjI6XG5cdCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAg
ICAgICAgICAgICAgICAiICBjYWxsICAgICAgcndzZW1fZG93bl93cml0ZV9mYWlsZWRcblx0Igog
ICAgICAgICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIg
IGptcCAgICAgICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91c1xuXHQiCiAgICAgICAg
ICAgICAgICAiIyBlbmRpbmcgZG93bl93cml0ZSIKICAgICAgICAgICAgICAgIDogIitkIih0bXAp
LCAiK20iKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ICJhIihzZW0pCiAgICAgICAgICAg
ICAgICA6ICJtZW1vcnkiLCAiY2MiKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgX19kb3duX3dy
aXRlX3RyeWxvY2tfUjk5YzVkZTJhKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAg
IHNpZ25lZCBsb25nIHJldCA9ICgoX190eXBlb2ZfXygqKCZzZW0tPmNvdW50KSkpX19jbXB4Y2hn
KCgmc2VtLT5jb3VudCksKHVuc2lnbmVkIGxvbmcpKDB4MDAwMDAwMDApLCAodW5zaWduZWQgbG9u
ZykoKCgtMHgwMDAxMDAwMCkgKyAweDAwMDAwMDAxKSksc2l6ZW9mKCooJnNlbS0+Y291bnQpKSkp
OwoKCiAgICAgICAgaWYgKHJldCA9PSAweDAwMDAwMDAwKQogICAgICAgICAgICAgICAgcmV0dXJu
IDE7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3JlYWRf
UjU3ODNlOGVjKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fczMyIHRtcCA9
IC0weDAwMDAwMDAxOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAg
ICAgIiMgYmVnaW5uaW5nIF9fdXBfcmVhZFxuXHQiCiIiICIgIHhhZGQgICAgICAlJWVkeCwoJSVl
YXgpXG5cdCIKICAgICAgICAgICAgICAgICIgIGpzICAgICAgICAyZlxuXHQiCiAgICAgICAgICAg
ICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlm
bmRlZiAiICIudGV4dC5sb2NrLiIgInNrZ2Vwbm1pIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAic2tn
ZXBubWkiICI6XG5cdCIgIi5lbmRpZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAg
ICAgICAgICAgICAgIiAgZGVjdyAgICAgICUlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgam56
ICAgICAgIDFiXG5cdCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAg
ICAgICAgICAgICAgICAiICBjYWxsICAgICAgcndzZW1fd2FrZVxuXHQiCiAgICAgICAgICAgICAg
ICAiICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFi
XG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgICIjIGVu
ZGluZyBfX3VwX3JlYWRcbiIKICAgICAgICAgICAgICAgIDogIittIihzZW0tPmNvdW50KSwgIitk
Iih0bXApCiAgICAgICAgICAgICAgICA6ICJhIihzZW0pCiAgICAgICAgICAgICAgICA6ICJtZW1v
cnkiLCAiY2MiKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fdXBfd3JpdGVfUjcwZWM4YmM2
KHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfd3JpdGVcblx0IgogICAgICAgICAg
ICAgICAgIiAgbW92bCAgICAgICUyLCUlZWR4XG5cdCIKIiIgIiAgeGFkZGwgICAgICUlZWR4LCgl
JWVheClcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDJmXG5cdCIKICAgICAgICAg
ICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rpb24gMVxuXHQiICIiICIu
aWZuZGVmICIgIi50ZXh0LmxvY2suIiAic2tnZXBubWkiICJcblx0IiAiLnRleHQubG9jay4iICJz
a2dlcG5taSIgIjpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAg
ICAgICAgICAgICAgICAiICBkZWN3ICAgICAgJSVkeFxuXHQiCiAgICAgICAgICAgICAgICAiICBq
bnogICAgICAgMWJcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWN4XG5cdCIK
ICAgICAgICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV93YWtlXG5cdCIKICAgICAgICAgICAg
ICAgICIgIHBvcGwgICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAg
MWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgIiMg
ZW5kaW5nIF9fdXBfd3JpdGVcbiIKICAgICAgICAgICAgICAgIDogIittIihzZW0tPmNvdW50KQog
ICAgICAgICAgICAgICAgOiAiYSIoc2VtKSwgImkiKC0oKC0weDAwMDEwMDAwKSArIDB4MDAwMDAw
MDEpKQogICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNjIiwgImVkeCIpOwp9CgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgcndzZW1fYXRvbWljX2FkZChpbnQgZGVsdGEsIHN0cnVjdCByd19zZW1h
cGhvcmUgKnNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAoiIiAiYWRkbCAlMSwl
MCIKICAgICAgICAgICAgICAgIDoiPW0iKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6Imly
IihkZWx0YSksICJtIihzZW0tPmNvdW50KSk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgaW50IHJ3c2Vt
X2F0b21pY191cGRhdGUoaW50IGRlbHRhLCBzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAg
ICAgICBpbnQgdG1wID0gZGVsdGE7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAoiIiAi
eGFkZCAlMCwoJTIpIgogICAgICAgICAgICAgICAgOiAiK3IiKHRtcCksICI9bSIoc2VtLT5jb3Vu
dCkKICAgICAgICAgICAgICAgIDogInIiKHNlbSksICJtIihzZW0tPmNvdW50KQogICAgICAgICAg
ICAgICAgOiAibWVtb3J5Iik7CgogICAgICAgIHJldHVybiB0bXArZGVsdGE7Cn0KIyAzMCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCiMgNDMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcndzZW0uaCIKc3RhdGljIGlubGluZSB2
b2lkIGRvd25fcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICA7CiAgICAg
ICAgX19kb3duX3JlYWRfUjZlYmQ0NmE1KHNlbSk7CiAgICAgICAgOwp9CgoKCgpzdGF0aWMgaW5s
aW5lIGludCBkb3duX3JlYWRfdHJ5bG9jayhzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAg
ICAgICBpbnQgcmV0OwogICAgICAgIDsKICAgICAgICByZXQgPSBfX2Rvd25fcmVhZF90cnlsb2Nr
X1JhMTUyOWRjYyhzZW0pOwogICAgICAgIDsKICAgICAgICByZXR1cm4gcmV0Owp9CgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgZG93bl93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAg
ICAgICA7CiAgICAgICAgX19kb3duX3dyaXRlX1I3ZmQ1NGM1YyhzZW0pOwogICAgICAgIDsKfQoK
CgoKc3RhdGljIGlubGluZSBpbnQgZG93bl93cml0ZV90cnlsb2NrKHN0cnVjdCByd19zZW1hcGhv
cmUgKnNlbSkKewogICAgICAgIGludCByZXQ7CiAgICAgICAgOwogICAgICAgIHJldCA9IF9fZG93
bl93cml0ZV90cnlsb2NrX1I5OWM1ZGUyYShzZW0pOwogICAgICAgIDsKICAgICAgICByZXR1cm4g
cmV0Owp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgdXBfcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3Jl
ICpzZW0pCnsKICAgICAgICA7CiAgICAgICAgX191cF9yZWFkX1I1NzgzZThlYyhzZW0pOwogICAg
ICAgIDsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIHVwX3dyaXRlKHN0cnVjdCByd19zZW1hcGhv
cmUgKnNlbSkKewogICAgICAgIDsKICAgICAgICBfX3VwX3dyaXRlX1I3MGVjOGJjNihzZW0pOwog
ICAgICAgIDsKfQojIDQzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9zZW1h
cGhvcmUuaCIgMgoKc3RydWN0IHNlbWFwaG9yZSB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAg
ICAgICAgaW50IHNsZWVwZXJzOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgoKCn07
CiMgNzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIgpz
dGF0aWMgaW5saW5lIHZvaWQgc2VtYV9pbml0IChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0sIGludCB2
YWwpCnsKCgoKCgoKICAgICAgICAoKCgmc2VtLT5jb3VudCktPmNvdW50ZXIpID0gKHZhbCkpOwog
ICAgICAgIHNlbS0+c2xlZXBlcnMgPSAwOwogICAgICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJnNl
bS0+d2FpdCk7CgoKCn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X01VVEVYIChzdHJ1Y3Qgc2Vt
YXBob3JlICpzZW0pCnsKICAgICAgICBzZW1hX2luaXQoc2VtLCAxKTsKfQoKc3RhdGljIGlubGlu
ZSB2b2lkIGluaXRfTVVURVhfTE9DS0VEIChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCnsKICAgICAg
ICBzZW1hX2luaXQoc2VtLCAwKTsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lk
IF9fZG93bl9mYWlsZWQodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBf
X2Rvd25fZmFpbGVkX2ludGVycnVwdGlibGUodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFy
bSgwKSkpIGludCBfX2Rvd25fZmFpbGVkX3RyeWxvY2sodm9pZCApOwogX19hdHRyaWJ1dGVfXygo
cmVncGFybSgwKSkpIHZvaWQgX191cF93YWtldXAodm9pZCApOwoKIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSB2b2lkIF9fZG93bihzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3duX2ludGVycnVwdGlibGUoc3RydWN0IHNlbWFw
aG9yZSAqIHNlbSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93bl90cnls
b2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkp
IHZvaWQgX191cChzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKCgoKCgoKc3RhdGljIGlubGluZSB2
b2lkIGRvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgoKICAgICAgICBfX2FzbV9fIF9f
dm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGF0b21pYyBkb3duIG9wZXJhdGlvblxuXHQi
CiAgICAgICAgICAgICAgICAiIiAiZGVjbCAlMFxuXHQiCiAgICAgICAgICAgICAgICAianMgMmZc
biIKICAgICAgICAgICAgICAgICIxOlxuIgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFc
blx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNrZ2Vwbm1pIiAiXG5cdCIgIi50ZXh0
LmxvY2suIiAic2tnZXBubWkiICI6XG5cdCIgIi5lbmRpZlxuXHQiCiAgICAgICAgICAgICAgICAi
MjpcdGNhbGwgX19kb3duX2ZhaWxlZFxuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAg
ICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgIDoiPW0iIChzZW0t
PmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJtZW1v
cnkiKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGRvd25faW50ZXJydXB0aWJsZShzdHJ1Y3Qg
c2VtYXBob3JlICogc2VtKQp7CiAgICAgICAgaW50IHJlc3VsdDsKCgoKCgogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYXRvbWljIGludGVycnVwdGlibGUg
ZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAgICAgIiIgImRlY2wgJTFcblx0IgogICAg
ICAgICAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUwLCUwXG4iCiAg
ICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc3Vic2VjdGlvbiAxXG5cdCIg
IiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJza2dlcG5taSIgIlxuXHQiICIudGV4dC5sb2Nr
LiIgInNrZ2Vwbm1pIiAiOlxuXHQiICIuZW5kaWZcblx0IgogICAgICAgICAgICAgICAgIjI6XHRj
YWxsIF9fZG93bl9mYWlsZWRfaW50ZXJydXB0aWJsZVxuXHQiCiAgICAgICAgICAgICAgICAiam1w
IDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgIDoi
PWEiIChyZXN1bHQpLCAiPW0iIChzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2Vt
KQogICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoK
CgoKc3RhdGljIGlubGluZSBpbnQgZG93bl90cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0p
CnsKICAgICAgICBpbnQgcmVzdWx0OwoKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgICAgICAgICAiIyBhdG9taWMgaW50ZXJydXB0aWJsZSBkb3duIG9wZXJhdGlvblxu
XHQiCiAgICAgICAgICAgICAgICAiIiAiZGVjbCAlMVxuXHQiCiAgICAgICAgICAgICAgICAianMg
MmZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgJTAsJTBcbiIKICAgICAgICAgICAgICAgICIx
OlxuIgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIu
dGV4dC5sb2NrLiIgInNrZ2Vwbm1pIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAic2tnZXBubWkiICI6
XG5cdCIgIi5lbmRpZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2ZhaWxl
ZF90cnlsb2NrXG5cdCIKICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAg
ICIucHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgOiI9YSIgKHJlc3VsdCksICI9bSIgKHNl
bS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1l
bW9yeSIpOwogICAgICAgIHJldHVybiByZXN1bHQ7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCB1cChzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQp7CgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9taWMgdXAgb3BlcmF0aW9uXG5cdCIKICAgICAg
ICAgICAgICAgICIiICJpbmNsICUwXG5cdCIKICAgICAgICAgICAgICAgICJqbGUgMmZcbiIKICAg
ICAgICAgICAgICAgICIxOlxuIgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAi
IiAiLmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNrZ2Vwbm1pIiAiXG5cdCIgIi50ZXh0LmxvY2su
IiAic2tnZXBubWkiICI6XG5cdCIgIi5lbmRpZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcdGNh
bGwgX191cF93YWtldXBcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAgICAg
ICAgICAgIi5wcmV2aW91c1xuXHQiCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rpb24gMFxuIgog
ICAgICAgICAgICAgICAgOiI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChz
ZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIGludCBzZW1f
Z2V0Y291bnQoc3RydWN0IHNlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAgcmV0dXJuICgoJnNlbS0+
Y291bnQpLT5jb3VudGVyKTsKfQojIDIwMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCgoKZXh0ZXJuIHZvaWQgdXBkYXRlX2F0aW1lX1I0ZGUyZDBmMSAoc3Ry
dWN0IGlub2RlICopOwoKCmV4dGVybiB2b2lkIGJ1ZmZlcl9pbml0KHVuc2lnbmVkIGxvbmcpOwpl
eHRlcm4gdm9pZCBpbm9kZV9pbml0KHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBtbnRfaW5p
dCh1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgZmlsZXNfaW5pdCh1bnNpZ25lZCBsb25nIG1l
bXBhZ2VzKTsKZXh0ZXJuIHZvaWQgbWFqb3Job2dfaW5pdCh2b2lkKTsKCgplbnVtIGJoX3N0YXRl
X2JpdHMgewogICAgICAgIEJIX1VwdG9kYXRlLAogICAgICAgIEJIX0RpcnR5LAogICAgICAgIEJI
X0xvY2ssCiAgICAgICAgQkhfUmVxLAogICAgICAgIEJIX01hcHBlZCwKICAgICAgICBCSF9OZXcs
CiAgICAgICAgQkhfQXN5bmMsCiAgICAgICAgQkhfV2FpdF9JTywKICAgICAgICBCSF9MYXVuZGVy
LAogICAgICAgIEJIX0F0dGFjaGVkLAogICAgICAgIEJIX0pCRCwKCiAgICAgICAgQkhfUHJpdmF0
ZVN0YXJ0LAoKCn07CiMgMjQ0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L2ZzLmgiCnN0cnVjdCBidWZmZXJfaGVhZCB7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq
Yl9uZXh0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9ibG9ja25yOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IGJfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBiX2xpc3Q7CiAgICAgICAga2Rl
dl90IGJfZGV2OwoKICAgICAgICBhdG9taWNfdCBiX2NvdW50OwogICAgICAgIGtkZXZfdCBiX3Jk
ZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX3N0YXRlOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
Yl9mbHVzaHRpbWU7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9uZXh0X2ZyZWU7CiAg
ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3ByZXZfZnJlZTsKICAgICAgICBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKmJfdGhpc19wYWdlOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9yZXFu
ZXh0OwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipiX3BwcmV2OwogICAgICAgIGNoYXIg
KiBiX2RhdGE7CiAgICAgICAgc3RydWN0IHBhZ2UgKmJfcGFnZTsKICAgICAgICB2b2lkICgqYl9l
bmRfaW8pKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCB1cHRvZGF0ZSk7CiAgICAgICAgdm9p
ZCAqYl9wcml2YXRlOwogICAgICAgIHZvaWQgKmJfam91cm5hbF9oZWFkOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgYl9yc2VjdG9yOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGJfd2FpdDsKCiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBiX2lub2RlX2J1ZmZlcnM7Cn07Cgp0eXBlZGVmIHZvaWQg
KGJoX2VuZF9pb190KShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOwp2b2lk
IGluaXRfYnVmZmVyX1I4ZDVhYzYwMShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgYmhfZW5kX2lvX3Qg
Kiwgdm9pZCAqKTsKIyAyOTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
ZnMuaCIKZXh0ZXJuIHZvaWQgc2V0X2JoX3BhZ2VfUjI4NjM0ODQ1KHN0cnVjdCBidWZmZXJfaGVh
ZCAqYmgsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiIDEKCgoK
CnN0cnVjdCBwaXBlX2lub2RlX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7
CiAgICAgICAgY2hhciAqYmFzZTsKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVu
c2lnbmVkIGludCBzdGFydDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVhZGVyczsKICAgICAgICB1
bnNpZ25lZCBpbnQgd3JpdGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ19yZWFkZXJz
OwogICAgICAgIHVuc2lnbmVkIGludCB3YWl0aW5nX3dyaXRlcnM7CiAgICAgICAgdW5zaWduZWQg
aW50IHJfY291bnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgd19jb3VudGVyOwp9OwojIDQyICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3BpcGVfZnNfaS5oIgp2b2lkIHBp
cGVfd2FpdChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSk7CgpzdHJ1Y3QgaW5vZGUqIHBpcGVfbmV3KHN0
cnVjdCBpbm9kZSogaW5vZGUpOwojIDI5NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9taW5peF9mc19pLmgiIDEKCgoKCgoKc3RydWN0IG1pbml4X2lub2RlX2luZm8gewogICAgICAg
IHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTE2IGkxX2RhdGFbMTZdOwogICAgICAgICAgICAg
ICAgX191MzIgaTJfZGF0YVsxNl07CiAgICAgICAgfSB1Owp9OwojIDI5NyAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9leHQyX2ZzX2kuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L2V4dDJfZnNfaS5oIgpzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZv
IHsKICAgICAgICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAg
ICAgX191MzIgaV9mYWRkcjsKICAgICAgICBfX3U4IGlfZnJhZ19ubzsKICAgICAgICBfX3U4IGlf
ZnJhZ19zaXplOwogICAgICAgIF9fdTMyIGlfZmlsZV9hY2w7CiAgICAgICAgX191MzIgaV9kaXJf
YWNsOwogICAgICAgIF9fdTMyIGlfZHRpbWU7CiAgICAgICAgX191MzIgaV9ibG9ja19ncm91cDsK
ICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9uZXh0X2Fs
bG9jX2dvYWw7CiAgICAgICAgX191MzIgaV9wcmVhbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBp
X3ByZWFsbG9jX2NvdW50OwogICAgICAgIF9fdTMyIGlfZGlyX3N0YXJ0X2xvb2t1cDsKICAgICAg
ICBpbnQgaV9uZXdfaW5vZGU6MTsKfTsKIyAyOTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvZXh0M19mc19pLmgiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9leHQzX2ZzX2kuaCIKc3RydWN0IGV4dDNfaW5vZGVfaW5mbyB7CiAgICAgICAgX191
MzIgaV9kYXRhWzE1XTsKICAgICAgICBfX3UzMiBpX2ZsYWdzOwoKCgoKCgogICAgICAgIF9fdTMy
IGlfZmlsZV9hY2w7CiAgICAgICAgX191MzIgaV9kaXJfYWNsOwogICAgICAgIF9fdTMyIGlfZHRp
bWU7CiAgICAgICAgX191MzIgaV9ibG9ja19ncm91cDsKICAgICAgICBfX3UzMiBpX3N0YXRlOwog
ICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxs
b2NfZ29hbDsKCgoKCiAgICAgICAgX191MzIgaV9kaXJfc3RhcnRfbG9va3VwOwoKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGlfb3JwaGFuOwojIDYzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L2V4dDNfZnNfaS5oIgogICAgICAgIGxvZmZfdCBpX2Rpc2tzaXplOwojIDc1
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNfaS5oIgogICAg
ICAgIHN0cnVjdCByd19zZW1hcGhvcmUgdHJ1bmNhdGVfc2VtOwp9OwojIDI5OSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9ocGZzX2ZzX2kuaCIgMQoKCgpzdHJ1Y3QgaHBmc19pbm9k
ZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIGlub190
IGlfcGFyZW50X2RpcjsKICAgICAgICB1bnNpZ25lZCBpX2RubzsKICAgICAgICB1bnNpZ25lZCBp
X2Rwb3M7CiAgICAgICAgdW5zaWduZWQgaV9kc3ViZG5vOwogICAgICAgIHVuc2lnbmVkIGlfZmls
ZV9zZWM7CiAgICAgICAgdW5zaWduZWQgaV9kaXNrX3NlYzsKICAgICAgICB1bnNpZ25lZCBpX25f
c2VjczsKICAgICAgICB1bnNpZ25lZCBpX2VhX3NpemU7CiAgICAgICAgdW5zaWduZWQgaV9jb252
IDogMjsKICAgICAgICB1bnNpZ25lZCBpX2VhX21vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlf
ZWFfdWlkIDogMTsKICAgICAgICB1bnNpZ25lZCBpX2VhX2dpZCA6IDE7CiAgICAgICAgdW5zaWdu
ZWQgaV9kaXJ0eSA6IDE7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX3NlbTsKICAgICAgICBs
b2ZmX3QgKippX3JkZGlyX29mZjsKfTsKIyAzMDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbnRmc19mc19pLmgiIDEKCgoKCgoKc3RydWN0IG50ZnNfYXR0cmlidXRlOwpzdHJ1Y3Qg
bnRmc19zYl9pbmZvOwoKCgoKdHlwZWRlZiB1OCBudGZzX3U4Owp0eXBlZGVmIHUxNiBudGZzX3Ux
NjsKdHlwZWRlZiB1MzIgbnRmc191MzI7CnR5cGVkZWYgdTY0IG50ZnNfdTY0Owp0eXBlZGVmIHM4
IG50ZnNfczg7CnR5cGVkZWYgczE2IG50ZnNfczE2Owp0eXBlZGVmIHMzMiBudGZzX3MzMjsKdHlw
ZWRlZiBzNjQgbnRmc19zNjQ7CgoKCgp0eXBlZGVmIF9fa2VybmVsX21vZGVfdCBudG1vZGVfdDsK
CgoKdHlwZWRlZiB1aWRfdCBudGZzX3VpZF90OwoKCgp0eXBlZGVmIGdpZF90IG50ZnNfZ2lkX3Q7
CgoKCnR5cGVkZWYgX19rZXJuZWxfc2l6ZV90IG50ZnNfc2l6ZV90OwoKCgp0eXBlZGVmIF9fa2Vy
bmVsX3RpbWVfdCBudGZzX3RpbWVfdDsKCgoKCgp0eXBlZGVmIHUxNiBudGZzX3djaGFyX3Q7CgoK
Cgp0eXBlZGVmIHM2NCBudGZzX29mZnNldF90OwoKCgoKdHlwZWRlZiB1NjQgbnRmc190aW1lNjRf
dDsKIyA2OSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9udGZzX2ZzX2ku
aCIKdHlwZWRlZiBzMzIgbnRmc19jbHVzdGVyX3Q7CgoKCnN0cnVjdCBudGZzX2lub2RlX2luZm8g
ewogICAgICAgIHN0cnVjdCBudGZzX3NiX2luZm8gKnZvbDsKICAgICAgICB1bnNpZ25lZCBsb25n
IGlfbnVtYmVyOwogICAgICAgIF9fdTE2IHNlcXVlbmNlX251bWJlcjsKICAgICAgICB1bnNpZ25l
ZCBjaGFyICphdHRyOwogICAgICAgIGludCBhdHRyX2NvdW50OwogICAgICAgIHN0cnVjdCBudGZz
X2F0dHJpYnV0ZSAqYXR0cnM7CiAgICAgICAgaW50IHJlY29yZF9jb3VudDsKICAgICAgICBpbnQg
KnJlY29yZHM7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGludCByZWNvcmRzaXplOwogICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgY2x1c3RlcnNfcGVyX3JlY29yZDsKICAgICAgICAgICAgICAgIH0gaW5kZXg7CiAgICAg
ICAgfSB1Owp9OwojIDMwMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9m
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tc2Rvc19m
c19pLmgiIDEKCgoKCgoKCnN0cnVjdCBtc2Rvc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25l
ZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIGludCBpX3N0YXJ0OwogICAgICAgIGludCBpX2xv
Z3N0YXJ0OwogICAgICAgIGludCBpX2F0dHJzOwogICAgICAgIGludCBpX2N0aW1lX21zOwogICAg
ICAgIGludCBpX2xvY2F0aW9uOwogICAgICAgIHN0cnVjdCBpbm9kZSAqaV9mYXRfaW5vZGU7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2ZhdF9oYXNoOwp9OwojIDMwMiAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC91bXNkb3NfZnNfaS5oIiAxCiMgMzkgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdW1zZG9zX2ZzX2kuaCIKc3RydWN0IGRpcl9sb2NraW5n
X2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHA7CiAgICAgICAgc2hvcnQgaW50IGxv
b2tpbmc7CiAgICAgICAgc2hvcnQgaW50IGNyZWF0aW5nOwoKCgogICAgICAgIGxvbmcgcGlkOwoK
fTsKCnN0cnVjdCB1bXNkb3NfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IG1zZG9zX2lub2Rl
X2luZm8gbXNkb3NfaW5mbzsKICAgICAgICBzdHJ1Y3QgZGlyX2xvY2tpbmdfaW5mbyBkaXJfaW5m
bzsKICAgICAgICBpbnQgaV9wYXRjaGVkOwogICAgICAgIGludCBpX2lzX2hsaW5rOwogICAgICAg
IG9mZl90IHBvczsKfTsKIyAzMDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaXNv
X2ZzX2kuaCIgMQoKCgplbnVtIGlzb2ZzX2ZpbGVfZm9ybWF0IHsKICAgICAgICBpc29mc19maWxl
X25vcm1hbCA9IDAsCiAgICAgICAgaXNvZnNfZmlsZV9zcGFyc2UgPSAxLAogICAgICAgIGlzb2Zz
X2ZpbGVfY29tcHJlc3NlZCA9IDIsCn07CgoKCgpzdHJ1Y3QgaXNvX2lub2RlX2luZm8gewogICAg
ICAgIHVuc2lnbmVkIGludCBpX2ZpcnN0X2V4dGVudDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlf
ZmlsZV9mb3JtYXQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBpX2Zvcm1hdF9wYXJtWzNdOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgaV9uZXh0X3NlY3Rpb25faW5vOwogICAgICAgIG9mZl90IGlfc2Vj
dGlvbl9zaXplOwp9OwojIDMwNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9uZnNf
ZnNfaS5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L25mcy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbmZz
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zdW5ycGMvbXNn
X3Byb3QuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3N1
bnJwYy9tc2dfcHJvdC5oIgplbnVtIHJwY19hdXRoX2ZsYXZvciB7CiAgICAgICAgUlBDX0FVVEhf
TlVMTCA9IDAsCiAgICAgICAgUlBDX0FVVEhfVU5JWCA9IDEsCiAgICAgICAgUlBDX0FVVEhfU0hP
UlQgPSAyLAogICAgICAgIFJQQ19BVVRIX0RFUyA9IDMsCiAgICAgICAgUlBDX0FVVEhfS1JCID0g
NCwKfTsKCmVudW0gcnBjX21zZ190eXBlIHsKICAgICAgICBSUENfQ0FMTCA9IDAsCiAgICAgICAg
UlBDX1JFUExZID0gMQp9OwoKZW51bSBycGNfcmVwbHlfc3RhdCB7CiAgICAgICAgUlBDX01TR19B
Q0NFUFRFRCA9IDAsCiAgICAgICAgUlBDX01TR19ERU5JRUQgPSAxCn07CgplbnVtIHJwY19hY2Nl
cHRfc3RhdCB7CiAgICAgICAgUlBDX1NVQ0NFU1MgPSAwLAogICAgICAgIFJQQ19QUk9HX1VOQVZB
SUwgPSAxLAogICAgICAgIFJQQ19QUk9HX01JU01BVENIID0gMiwKICAgICAgICBSUENfUFJPQ19V
TkFWQUlMID0gMywKICAgICAgICBSUENfR0FSQkFHRV9BUkdTID0gNCwKICAgICAgICBSUENfU1lT
VEVNX0VSUiA9IDUKfTsKCmVudW0gcnBjX3JlamVjdF9zdGF0IHsKICAgICAgICBSUENfTUlTTUFU
Q0ggPSAwLAogICAgICAgIFJQQ19BVVRIX0VSUk9SID0gMQp9OwoKZW51bSBycGNfYXV0aF9zdGF0
IHsKICAgICAgICBSUENfQVVUSF9PSyA9IDAsCiAgICAgICAgUlBDX0FVVEhfQkFEQ1JFRCA9IDEs
CiAgICAgICAgUlBDX0FVVEhfUkVKRUNURURDUkVEID0gMiwKICAgICAgICBSUENfQVVUSF9CQURW
RVJGID0gMywKICAgICAgICBSUENfQVVUSF9SRUpFQ1RFRFZFUkYgPSA0LAogICAgICAgIFJQQ19B
VVRIX1RPT1dFQUsgPSA1Cn07CiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbmZzLmgiIDIKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9uZnMuaCIKIGVudW0gbmZzX3N0YXQgewogICAgICAgIE5GU19PSyA9IDAsCiAgICAgICAgTkZT
RVJSX1BFUk0gPSAxLAogICAgICAgIE5GU0VSUl9OT0VOVCA9IDIsCiAgICAgICAgTkZTRVJSX0lP
ID0gNSwKICAgICAgICBORlNFUlJfTlhJTyA9IDYsCiAgICAgICAgTkZTRVJSX0VBR0FJTiA9IDEx
LAogICAgICAgIE5GU0VSUl9BQ0NFUyA9IDEzLAogICAgICAgIE5GU0VSUl9FWElTVCA9IDE3LAog
ICAgICAgIE5GU0VSUl9YREVWID0gMTgsCiAgICAgICAgTkZTRVJSX05PREVWID0gMTksCiAgICAg
ICAgTkZTRVJSX05PVERJUiA9IDIwLAogICAgICAgIE5GU0VSUl9JU0RJUiA9IDIxLAogICAgICAg
IE5GU0VSUl9JTlZBTCA9IDIyLAogICAgICAgIE5GU0VSUl9GQklHID0gMjcsCiAgICAgICAgTkZT
RVJSX05PU1BDID0gMjgsCiAgICAgICAgTkZTRVJSX1JPRlMgPSAzMCwKICAgICAgICBORlNFUlJf
TUxJTksgPSAzMSwKICAgICAgICBORlNFUlJfT1BOT1RTVVBQID0gNDUsCiAgICAgICAgTkZTRVJS
X05BTUVUT09MT05HID0gNjMsCiAgICAgICAgTkZTRVJSX05PVEVNUFRZID0gNjYsCiAgICAgICAg
TkZTRVJSX0RRVU9UID0gNjksCiAgICAgICAgTkZTRVJSX1NUQUxFID0gNzAsCiAgICAgICAgTkZT
RVJSX1JFTU9URSA9IDcxLAogICAgICAgIE5GU0VSUl9XRkxVU0ggPSA5OSwKICAgICAgICBORlNF
UlJfQkFESEFORExFID0gMTAwMDEsCiAgICAgICAgTkZTRVJSX05PVF9TWU5DID0gMTAwMDIsCiAg
ICAgICAgTkZTRVJSX0JBRF9DT09LSUUgPSAxMDAwMywKICAgICAgICBORlNFUlJfTk9UU1VQUCA9
IDEwMDA0LAogICAgICAgIE5GU0VSUl9UT09TTUFMTCA9IDEwMDA1LAogICAgICAgIE5GU0VSUl9T
RVJWRVJGQVVMVCA9IDEwMDA2LAogICAgICAgIE5GU0VSUl9CQURUWVBFID0gMTAwMDcsCiAgICAg
ICAgTkZTRVJSX0pVS0VCT1ggPSAxMDAwOAogfTsKCgoKZW51bSBuZnNfZnR5cGUgewogICAgICAg
IE5GTk9OID0gMCwKICAgICAgICBORlJFRyA9IDEsCiAgICAgICAgTkZESVIgPSAyLAogICAgICAg
IE5GQkxLID0gMywKICAgICAgICBORkNIUiA9IDQsCiAgICAgICAgTkZMTksgPSA1LAogICAgICAg
IE5GU09DSyA9IDYsCiAgICAgICAgTkZCQUQgPSA3LAogICAgICAgIE5GRklGTyA9IDgKfTsKCgoK
CgoKc3RydWN0IG5mc19maCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2l6ZTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGRhdGFbNjRdOwp9OwojIDEwNyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9uZnMuaCIKZW51bSBuZnMzX3N0YWJsZV9ob3cgewogICAgICAgIE5GU19V
TlNUQUJMRSA9IDAsCiAgICAgICAgTkZTX0RBVEFfU1lOQyA9IDEsCiAgICAgICAgTkZTX0ZJTEVf
U1lOQyA9IDIKfTsKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L25m
c19mc19pLmgiIDIKCgoKCnN0cnVjdCBuZnNfaW5vZGVfaW5mbyB7CgoKCiAgICAgICAgX191NjQg
ZmlsZWlkOwoKCgoKICAgICAgICBzdHJ1Y3QgbmZzX2ZoIGZoOwoKCgoKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBmbGFnczsKIyA0NCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9uZnNfZnNfaS5oIgogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVhZF9jYWNoZV9qaWZmaWVzOwog
ICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfY3RpbWU7CiAgICAgICAgX191NjQgcmVhZF9jYWNoZV9t
dGltZTsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX2lzaXplOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgYXR0cnRpbWVvOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYXR0cnRpbWVvX3RpbWVzdGFtcDsK
CgoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgY2FjaGVfbXRpbWVfamlmZmllczsKCgoKCgogICAg
ICAgIF9fdTMyIGNvb2tpZXZlcmZbMl07CgoKCgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcmVh
ZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5OwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgY29tbWl0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgd3JpdGViYWNrOwoKICAgICAgICB1
bnNpZ25lZCBpbnQgbnJlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpcnR5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5jb21taXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnBhZ2VzOwoKCiAgICAgICAgc3RydWN0IHJwY19jcmVkICptbV9j
cmVkOwp9OwojIDkyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L25mc19m
c19pLmgiCnN0cnVjdCBuZnNfbG9ja19pbmZvIHsKICAgICAgICB1MzIgc3RhdGU7CiAgICAgICAg
dTMyIGZsYWdzOwogICAgICAgIHN0cnVjdCBubG1faG9zdCAqaG9zdDsKfTsKIyAzMDUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc3lzdl9mc19pLmgiIDEKCgoKCgoKc3RydWN0IHN5
c3ZfaW5vZGVfaW5mbyB7CiAgICAgICAgdTMyIGlfZGF0YVsxMCsxKzErMV07CgoKCgogICAgICAg
IHUzMiBpX2Rpcl9zdGFydF9sb29rdXA7Cn07CiMgMzA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9hLm91dC5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvYXNtL2Eub3V0LmgiIDEKCgoKc3RydWN0IGV4ZWMKewogIHVuc2lnbmVkIGxv
bmcgYV9pbmZvOwogIHVuc2lnbmVkIGFfdGV4dDsKICB1bnNpZ25lZCBhX2RhdGE7CiAgdW5zaWdu
ZWQgYV9ic3M7CiAgdW5zaWduZWQgYV9zeW1zOwogIHVuc2lnbmVkIGFfZW50cnk7CiAgdW5zaWdu
ZWQgYV90cnNpemU7CiAgdW5zaWduZWQgYV9kcnNpemU7Cn07CiMgOSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9hLm91dC5oIiAyCgoKCgplbnVtIG1hY2hpbmVfdHlwZSB7
CgoKCiAgTV9PTERTVU4yID0gMCwKCgoKCiAgTV82ODAxMCA9IDEsCgoKCgogIE1fNjgwMjAgPSAy
LAoKCgoKICBNX1NQQVJDID0gMywKCgogIE1fMzg2ID0gMTAwLAogIE1fTUlQUzEgPSAxNTEsCiAg
TV9NSVBTMiA9IDE1Mgp9OwojIDE1NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9hLm91dC5oIgpzdHJ1Y3Qgbmxpc3QgewogIHVuaW9uIHsKICAgIGNoYXIgKm5fbmFtZTsK
ICAgIHN0cnVjdCBubGlzdCAqbl9uZXh0OwogICAgbG9uZyBuX3N0cng7CiAgfSBuX3VuOwogIHVu
c2lnbmVkIGNoYXIgbl90eXBlOwogIGNoYXIgbl9vdGhlcjsKICBzaG9ydCBuX2Rlc2M7CiAgdW5z
aWduZWQgbG9uZyBuX3ZhbHVlOwp9OwojIDIzNSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9hLm91dC5oIgpzdHJ1Y3QgcmVsb2NhdGlvbl9pbmZvCnsKCiAgaW50IHJfYWRk
cmVzczsKCiAgdW5zaWduZWQgaW50IHJfc3ltYm9sbnVtOjI0OwoKCgogIHVuc2lnbmVkIGludCBy
X3BjcmVsOjE7CgoKICB1bnNpZ25lZCBpbnQgcl9sZW5ndGg6MjsKCgoKCgoKICB1bnNpZ25lZCBp
bnQgcl9leHRlcm46MTsKCgoKCgoKCiAgdW5zaWduZWQgaW50IHJfcGFkOjQ7Cgp9OwojIDUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDIKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdGltZS5oIiAxCiMgOSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC90aW1lLmgiCnN0cnVjdCB0aW1lc3Bl
YyB7CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBsb25nIHR2X25zZWM7Cn07CiMgMzEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdGltZS5oIgpzdGF0aWMgX19p
bmxpbmVfXyB1bnNpZ25lZCBsb25nCnRpbWVzcGVjX3RvX2ppZmZpZXMoc3RydWN0IHRpbWVzcGVj
ICp2YWx1ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VjID0gdmFsdWUtPnR2X3NlYzsKICAg
ICAgICBsb25nIG5zZWMgPSB2YWx1ZS0+dHZfbnNlYzsKCiAgICAgICAgaWYgKHNlYyA+PSAoKCh+
MFVMID4+IDEpLTEpIC8gMTAwKSkKICAgICAgICAgICAgICAgIHJldHVybiAoKH4wVUwgPj4gMSkt
MSk7CiAgICAgICAgbnNlYyArPSAxMDAwMDAwMDAwTCAvIDEwMCAtIDE7CiAgICAgICAgbnNlYyAv
PSAxMDAwMDAwMDAwTCAvIDEwMDsKICAgICAgICByZXR1cm4gMTAwICogc2VjICsgbnNlYzsKfQoK
c3RhdGljIF9faW5saW5lX18gdm9pZApqaWZmaWVzX3RvX3RpbWVzcGVjKHVuc2lnbmVkIGxvbmcg
amlmZmllc19SMGRhMDJkNjcsIHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsKICAgICAgICB2YWx1
ZS0+dHZfbnNlYyA9IChqaWZmaWVzX1IwZGEwMmQ2NyAlIDEwMCkgKiAoMTAwMDAwMDAwMEwgLyAx
MDApOwogICAgICAgIHZhbHVlLT50dl9zZWMgPSBqaWZmaWVzX1IwZGEwMmQ2NyAvIDEwMDsKfQoj
IDY3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBsb25nCm1rdGltZSAodW5zaWduZWQgaW50IHllYXIsIHVuc2lnbmVk
IGludCBtb24sCiAgICAgICAgdW5zaWduZWQgaW50IGRheSwgdW5zaWduZWQgaW50IGhvdXIsCiAg
ICAgICAgdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IHNlYykKewogICAgICAgIGlmICgw
ID49IChpbnQpIChtb24gLT0gMikpIHsKICAgICAgICAgICAgICAgIG1vbiArPSAxMjsKICAgICAg
ICAgICAgICAgIHllYXIgLT0gMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoKCgKICAgICAg
ICAgICAgICAgICh1bnNpZ25lZCBsb25nKSAoeWVhci80IC0geWVhci8xMDAgKyB5ZWFyLzQwMCAr
IDM2Nyptb24vMTIgKyBkYXkpICsKICAgICAgICAgICAgICAgICAgICAgICAgeWVhciozNjUgLSA3
MTk0OTkKICAgICAgICAgICAgKSoyNCArIGhvdXIKICAgICAgICAgICkqNjAgKyBtaW4KICAgICAg
ICApKjYwICsgc2VjOwp9CgoKCgpzdHJ1Y3QgdGltZXZhbCB7CiAgICAgICAgdGltZV90IHR2X3Nl
YzsKICAgICAgICBzdXNlY29uZHNfdCB0dl91c2VjOwp9OwoKc3RydWN0IHRpbWV6b25lIHsKICAg
ICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICAgICAgaW50IHR6X2RzdHRpbWU7Cn07CgoKCgpl
eHRlcm4gdm9pZCBkb19nZXR0aW1lb2ZkYXlfUjcyMjcwZTM1KHN0cnVjdCB0aW1ldmFsICp0dik7
CmV4dGVybiB2b2lkIGRvX3NldHRpbWVvZmRheV9SMTlkN2IxZmYoc3RydWN0IHRpbWV2YWwgKnR2
KTsKIyAxMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdGltZS5oIgpz
dHJ1Y3QgaXRpbWVyc3BlYyB7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwog
ICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKfTsKCnN0cnVjdCBpdGltZXJ2YWwgewog
ICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1ldmFs
IGl0X3ZhbHVlOwp9OwojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
YWZmc19mc19pLmgiIDIKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9hZmZzX2ZzX2kuaCIKc3RydWN0IGFmZnNfZXh0X2tleSB7CiAgICAgICAgdTMyIGV4dDsKICAg
ICAgICB1MzIga2V5Owp9OwoKCgoKc3RydWN0IGFmZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdTMy
IGlfb3BlbmNudDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfbGlua19sb2NrOwogICAgICAg
IHN0cnVjdCBzZW1hcGhvcmUgaV9leHRfbG9jazsKCiAgICAgICAgdTMyIGlfYmxrY250OwogICAg
ICAgIHUzMiBpX2V4dGNudDsKICAgICAgICB1MzIgKmlfbGM7CiAgICAgICAgdTMyIGlfbGNfc2l6
ZTsKICAgICAgICB1MzIgaV9sY19zaGlmdDsKICAgICAgICB1MzIgaV9sY19tYXNrOwogICAgICAg
IHN0cnVjdCBhZmZzX2V4dF9rZXkgKmlfYWM7CiAgICAgICAgdTMyIGlfZXh0X2xhc3Q7CiAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICppX2V4dF9iaDsKICAgICAgICB1bnNpZ25lZCBsb25nIG1t
dV9wcml2YXRlOwogICAgICAgIHUzMiBpX3Byb3RlY3Q7CiAgICAgICAgdTMyIGlfbGFzdGFsbG9j
OwogICAgICAgIGludCBpX3BhX2NudDsKIyA1MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9hZmZzX2ZzX2kuaCIKfTsKIyAzMDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvdWZzX2ZzX2kuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L3Vmc19mc19pLmgiCnN0cnVjdCB1ZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5p
b24gewogICAgICAgICAgICAgICAgX191MzIgaV9kYXRhWzE1XTsKICAgICAgICAgICAgICAgIF9f
dTggaV9zeW1saW5rWzQqMTVdOwogICAgICAgIH0gaV91MTsKICAgICAgICBfX3UzMiBpX2ZsYWdz
OwogICAgICAgIF9fdTMyIGlfZ2VuOwogICAgICAgIF9fdTMyIGlfc2hhZG93OwogICAgICAgIF9f
dTMyIGlfdW51c2VkMTsKICAgICAgICBfX3UzMiBpX3VudXNlZDI7CiAgICAgICAgX191MzIgaV9v
ZWZ0ZmxhZzsKICAgICAgICBfX3UxNiBpX29zeW5jOwogICAgICAgIF9fdTMyIGlfbGFzdGZyYWc7
Cn07CiMgMzA4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2Vmc19mc19pLmgiIDEK
IyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIgp0
eXBlZGVmIGludDMyX3QgZWZzX2Jsb2NrX3Q7CnR5cGVkZWYgdWludDMyX3QgZWZzX2lub190OwoK
CgoKCgp0eXBlZGVmIHVuaW9uIGV4dGVudF91IHsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJhd1s4
XTsKICAgICAgICBzdHJ1Y3QgZXh0ZW50X3MgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGV4X21hZ2ljOjg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfYm46MjQ7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbGVuZ3RoOjg7CiAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgZXhfb2Zmc2V0OjI0OwogICAgICAgIH0gY29va2VkOwp9IGVmc19leHRlbnQ7Cgp0
eXBlZGVmIHN0cnVjdCBlZGV2cyB7CiAgICAgICAgc2hvcnQgb2RldjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbmRldjsKfSBlZnNfZGV2czsKCgoKCgpzdHJ1Y3QgZWZzX2Rpbm9kZSB7CiAgICAgICAg
dV9zaG9ydCBkaV9tb2RlOwogICAgICAgIHNob3J0IGRpX25saW5rOwogICAgICAgIHVfc2hvcnQg
ZGlfdWlkOwogICAgICAgIHVfc2hvcnQgZGlfZ2lkOwogICAgICAgIGludDMyX3QgZGlfc2l6ZTsK
ICAgICAgICBpbnQzMl90IGRpX2F0aW1lOwogICAgICAgIGludDMyX3QgZGlfbXRpbWU7CiAgICAg
ICAgaW50MzJfdCBkaV9jdGltZTsKICAgICAgICB1aW50MzJfdCBkaV9nZW47CiAgICAgICAgc2hv
cnQgZGlfbnVtZXh0ZW50czsKICAgICAgICB1X2NoYXIgZGlfdmVyc2lvbjsKICAgICAgICB1X2No
YXIgZGlfc3BhcmU7CiAgICAgICAgdW5pb24gZGlfYWRkciB7CiAgICAgICAgICAgICAgICBlZnNf
ZXh0ZW50IGRpX2V4dGVudHNbMTJdOwogICAgICAgICAgICAgICAgZWZzX2RldnMgZGlfZGV2Owog
ICAgICAgIH0gZGlfdTsKfTsKCgpzdHJ1Y3QgZWZzX2lub2RlX2luZm8gewogICAgICAgIGludCBu
dW1leHRlbnRzOwogICAgICAgIGludCBsYXN0ZXh0ZW50OwoKICAgICAgICBlZnNfZXh0ZW50IGV4
dGVudHNbMTJdOwp9OwojIDMwOSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9jb2Rh
X2ZzX2kuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2Nv
ZGFfZnNfaS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvY29k
YS5oIiAxCiMgMTA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2NvZGEu
aCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdV9xdWFkX3Q7CiMgMTY0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0IHZlbnVzX2RpcmVudCB7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX2ZpbGVubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBk
X3JlY2xlbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRfdHlwZTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIGRfbmFtbGVuOwogICAgICAgIGNoYXIgZF9uYW1lWzI1NSArIDFdOwp9OwojIDE5OCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdV9sb25n
IFZvbHVtZUlkOwp0eXBlZGVmIHVfbG9uZyBWbm9kZUlkOwp0eXBlZGVmIHVfbG9uZyBVbmlxdWVf
dDsKdHlwZWRlZiB1X2xvbmcgRmlsZVZlcnNpb247CgoKCgp0eXBlZGVmIHN0cnVjdCBWaWNlRmlk
IHsKICAgIFZvbHVtZUlkIFZvbHVtZTsKICAgIFZub2RlSWQgVm5vZGU7CiAgICBVbmlxdWVfdCBV
bmlxdWU7Cn0gVmljZUZpZDsKCgoKCnN0YXRpYyBfX2lubGluZV9fIGlub190IGNvZGFfZjJpKHN0
cnVjdCBWaWNlRmlkICpmaWQpCnsKICAgICAgICBpZiAoICEgZmlkICkKICAgICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgIGlmIChmaWQtPlZub2RlID09IDB4ZmZmZmZmZmUgfHwgZmlkLT5W
bm9kZSA9PSAweGZmZmZmZmZmKQogICAgICAgICAgICAgICAgcmV0dXJuICgoZmlkLT5Wb2x1bWUg
PDwgMjApIHwgKGZpZC0+VW5pcXVlICYgMHhmZmZmZikpOwogICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgIHJldHVybiAoZmlkLT5VbmlxdWUgKyAoZmlkLT5Wbm9kZTw8MTApICsgKGZpZC0+Vm9s
dW1lPDwyMCkpOwp9CiMgMjMzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L2NvZGEuaCIKdHlwZWRlZiB1X2ludDMyX3QgdnVpZF90Owp0eXBlZGVmIHVfaW50MzJfdCB2Z2lk
X3Q7CgoKCgpzdHJ1Y3QgY29kYV9jcmVkIHsKICAgIHZ1aWRfdCBjcl91aWQsIGNyX2V1aWQsIGNy
X3N1aWQsIGNyX2ZzdWlkOwogICAgdmdpZF90IGNyX2dyb3VwaWQsIGNyX2VnaWQsIGNyX3NnaWQs
IGNyX2ZzZ2lkOwp9OwoKCgoKCgoKZW51bSBjb2RhX3Z0eXBlIHsgQ19WTk9OLCBDX1ZSRUcsIENf
VkRJUiwgQ19WQkxLLCBDX1ZDSFIsIENfVkxOSywgQ19WU09DSywgQ19WRklGTywgQ19WQkFEIH07
CgpzdHJ1Y3QgY29kYV92YXR0ciB7CiAgICAgICAgbG9uZyB2YV90eXBlOwogICAgICAgIHVfc2hv
cnQgdmFfbW9kZTsKICAgICAgICBzaG9ydCB2YV9ubGluazsKICAgICAgICB2dWlkX3QgdmFfdWlk
OwogICAgICAgIHZnaWRfdCB2YV9naWQ7CiAgICAgICAgbG9uZyB2YV9maWxlaWQ7CiAgICAgICAg
dV9xdWFkX3QgdmFfc2l6ZTsKICAgICAgICBsb25nIHZhX2Jsb2Nrc2l6ZTsKICAgICAgICBzdHJ1
Y3QgdGltZXNwZWMgdmFfYXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHZhX210aW1lOwog
ICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9jdGltZTsKICAgICAgICB1X2xvbmcgdmFfZ2VuOwog
ICAgICAgIHVfbG9uZyB2YV9mbGFnczsKICAgICAgICB1X3F1YWRfdCB2YV9yZGV2OwogICAgICAg
IHVfcXVhZF90IHZhX2J5dGVzOwogICAgICAgIHVfcXVhZF90IHZhX2ZpbGVyZXY7Cn07CgoKCgpz
dHJ1Y3QgY29kYV9zdGF0ZnMgewogICAgaW50MzJfdCBmX2Jsb2NrczsKICAgIGludDMyX3QgZl9i
ZnJlZTsKICAgIGludDMyX3QgZl9iYXZhaWw7CiAgICBpbnQzMl90IGZfZmlsZXM7CiAgICBpbnQz
Ml90IGZfZmZyZWU7Cn07CiMgMzM3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L2NvZGEuaCIKc3RydWN0IGNvZGFfaW5faGRyIHsKICAgIHVuc2lnbmVkIGxvbmcgb3Bjb2Rl
OwogICAgdW5zaWduZWQgbG9uZyB1bmlxdWU7CiAgICB1X3Nob3J0IHBpZDsKICAgIHVfc2hvcnQg
cGdpZDsKICAgIHVfc2hvcnQgc2lkOwogICAgc3RydWN0IGNvZGFfY3JlZCBjcmVkOwp9OwoKCnN0
cnVjdCBjb2RhX291dF9oZHIgewogICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25l
ZCBsb25nIHVuaXF1ZTsKICAgIHVuc2lnbmVkIGxvbmcgcmVzdWx0Owp9OwoKCnN0cnVjdCBjb2Rh
X3Jvb3Rfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7
Cn07CgpzdHJ1Y3QgY29kYV9yb290X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpbjsKfTsK
CgpzdHJ1Y3QgY29kYV9vcGVuX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZp
Y2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fb3V0IHsKICAg
IHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICB1X3F1YWRfdCBkZXY7CiAgICBpbm9fdCBpbm9k
ZTsKfTsKCgoKc3RydWN0IGNvZGFfc3RvcmVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGlo
OwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfc3RvcmVf
b3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3JlbGVh
c2VfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAg
aW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfcmVsZWFzZV9vdXQgewogICAgc3RydWN0IGNvZGFf
b3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfY2xvc2VfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNv
ZGFfY2xvc2Vfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBj
b2RhX2lvY3RsX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZp
ZDsKICAgIGludCBjbWQ7CiAgICBpbnQgbGVuOwogICAgaW50IHJ3ZmxhZzsKICAgIGNoYXIgKmRh
dGE7Cn07CgpzdHJ1Y3QgY29kYV9pb2N0bF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBv
aDsKICAgIGludCBsZW47CiAgICBjYWRkcl90IGRhdGE7Cn07CgoKCnN0cnVjdCBjb2RhX2dldGF0
dHJfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9OwoK
c3RydWN0IGNvZGFfZ2V0YXR0cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAg
IHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07CgoKCnN0cnVjdCBjb2RhX3NldGF0dHJfaW4gewog
ICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNv
ZGFfdmF0dHIgYXR0cjsKfTsKCnN0cnVjdCBjb2RhX3NldGF0dHJfb3V0IHsKICAgIHN0cnVjdCBj
b2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX2FjY2Vzc19pbiB7CiAgICBzdHJ1Y3Qg
Y29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1
Y3QgY29kYV9hY2Nlc3Nfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCgoK
CgoKc3RydWN0IGNvZGFfbG9va3VwX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAg
IFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNv
ZGFfbG9va3VwX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBW
RmlkOwogICAgaW50IHZ0eXBlOwp9OwoKCgpzdHJ1Y3QgY29kYV9jcmVhdGVfaW4gewogICAgc3Ry
dWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0
dHIgYXR0cjsKICAgIGludCBleGNsOwogICAgaW50IG1vZGU7CiAgICBpbnQgbmFtZTsKfTsKCnN0
cnVjdCBjb2RhX2NyZWF0ZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZp
Y2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07CgoKCnN0cnVjdCBjb2Rh
X3JlbW92ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7
CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBjb2RhX3JlbW92ZV9vdXQgewogICAgc3RydWN0IGNv
ZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfbGlua19pbiB7CiAgICBzdHJ1Y3QgY29k
YV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIHNvdXJjZUZpZDsKICAgIFZpY2VGaWQgZGVzdEZpZDsK
ICAgIGludCB0bmFtZTsKfTsKCnN0cnVjdCBjb2RhX2xpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2Rh
X291dF9oZHIgb3V0Owp9OwoKCgpzdHJ1Y3QgY29kYV9yZW5hbWVfaW4gewogICAgc3RydWN0IGNv
ZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBzb3VyY2VGaWQ7CiAgICBpbnQgc3JjbmFtZTsKICAg
IFZpY2VGaWQgZGVzdEZpZDsKICAgIGludCBkZXN0bmFtZTsKfTsKCnN0cnVjdCBjb2RhX3JlbmFt
ZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfbWtk
aXJfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAg
c3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfbWtk
aXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAg
ICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKCgpzdHJ1Y3QgY29kYV9ybWRpcl9pbiB7CiAg
ICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgbmFtZTsK
fTsKCnN0cnVjdCBjb2RhX3JtZGlyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsK
fTsKCgpzdHJ1Y3QgY29kYV9zeW1saW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsK
ICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBzcmNuYW1lOwogICAgc3RydWN0IGNvZGFfdmF0dHIg
YXR0cjsKICAgIGludCB0bmFtZTsKfTsKCnN0cnVjdCBjb2RhX3N5bWxpbmtfb3V0IHsKICAgIHN0
cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3JlYWRsaW5rX2luIHsKICAg
IHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2Rh
X3JlYWRsaW5rX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGNvdW50
OwogICAgY2FkZHJfdCBkYXRhOwp9OwoKCgpzdHJ1Y3QgY29kYV9mc3luY19pbiB7CiAgICBzdHJ1
Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9mc3lu
Y19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfdmdl
dF9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07Cgpz
dHJ1Y3QgY29kYV92Z2V0X291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmlj
ZUZpZCBWRmlkOwogICAgaW50IHZ0eXBlOwp9OwojIDYxNiAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBjb2RhX3B1cmdldXNlcl9vdXQgewogICAg
c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX2NyZWQgY3JlZDsKfTsKCgoK
c3RydWN0IGNvZGFfemFwZmlsZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAg
IFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwZGlyX291dCB7CiAgICBzdHJ1
Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoKCgpzdHJ1Y3QgY29k
YV96YXB2bm9kZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBj
b2RhX2NyZWQgY3JlZDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCgoKc3RydWN0IGNvZGFfcHVyZ2Vm
aWRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIENvZGFGaWQ7
Cn07CgoKCnN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIg
b2g7CiAgICBWaWNlRmlkIE5ld0ZpZDsKICAgIFZpY2VGaWQgT2xkRmlkOwp9OwoKCnN0cnVjdCBj
b2RhX29wZW5fYnlfZmRfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZp
ZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9vdXQgewog
ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGludCBmZDsKCgogICAgc3RydWN0IGZpbGUg
KmZoOwoKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNv
ZGFfb3Blbl9ieV9wYXRoX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgICAg
IGludCBwYXRoOwp9OwoKCnN0cnVjdCBjb2RhX3N0YXRmc19pbiB7CiAgICBzdHJ1Y3QgY29kYV9p
bl9oZHIgaW47Cn07CgpzdHJ1Y3QgY29kYV9zdGF0ZnNfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291
dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnMgc3RhdDsKfTsKIyA3MDMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvY29kYS5oIgp1bmlvbiBpbnB1dEFyZ3Mgewog
ICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgc3RydWN0IGNvZGFfb3Blbl9pbiBjb2RhX29w
ZW47CiAgICBzdHJ1Y3QgY29kYV9zdG9yZV9pbiBjb2RhX3N0b3JlOwogICAgc3RydWN0IGNvZGFf
cmVsZWFzZV9pbiBjb2RhX3JlbGVhc2U7CiAgICBzdHJ1Y3QgY29kYV9jbG9zZV9pbiBjb2RhX2Ns
b3NlOwogICAgc3RydWN0IGNvZGFfaW9jdGxfaW4gY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2Rh
X2dldGF0dHJfaW4gY29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFfc2V0YXR0cl9pbiBjb2Rh
X3NldGF0dHI7CiAgICBzdHJ1Y3QgY29kYV9hY2Nlc3NfaW4gY29kYV9hY2Nlc3M7CiAgICBzdHJ1
Y3QgY29kYV9sb29rdXBfaW4gY29kYV9sb29rdXA7CiAgICBzdHJ1Y3QgY29kYV9jcmVhdGVfaW4g
Y29kYV9jcmVhdGU7CiAgICBzdHJ1Y3QgY29kYV9yZW1vdmVfaW4gY29kYV9yZW1vdmU7CiAgICBz
dHJ1Y3QgY29kYV9saW5rX2luIGNvZGFfbGluazsKICAgIHN0cnVjdCBjb2RhX3JlbmFtZV9pbiBj
b2RhX3JlbmFtZTsKICAgIHN0cnVjdCBjb2RhX21rZGlyX2luIGNvZGFfbWtkaXI7CiAgICBzdHJ1
Y3QgY29kYV9ybWRpcl9pbiBjb2RhX3JtZGlyOwogICAgc3RydWN0IGNvZGFfc3ltbGlua19pbiBj
b2RhX3N5bWxpbms7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19pbiBjb2RhX3JlYWRsaW5rOwog
ICAgc3RydWN0IGNvZGFfZnN5bmNfaW4gY29kYV9mc3luYzsKICAgIHN0cnVjdCBjb2RhX3ZnZXRf
aW4gY29kYV92Z2V0OwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiBjb2RhX29wZW5fYnlf
ZmQ7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4gY29kYV9vcGVuX2J5X3BhdGg7CiAg
ICBzdHJ1Y3QgY29kYV9zdGF0ZnNfaW4gY29kYV9zdGF0ZnM7Cn07Cgp1bmlvbiBvdXRwdXRBcmdz
IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9yb290X291dCBj
b2RhX3Jvb3Q7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX291dCBjb2RhX29wZW47CiAgICBzdHJ1Y3Qg
Y29kYV9pb2N0bF9vdXQgY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2RhX2dldGF0dHJfb3V0IGNv
ZGFfZ2V0YXR0cjsKICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9vdXQgY29kYV9sb29rdXA7CiAgICBz
dHJ1Y3QgY29kYV9jcmVhdGVfb3V0IGNvZGFfY3JlYXRlOwogICAgc3RydWN0IGNvZGFfbWtkaXJf
b3V0IGNvZGFfbWtkaXI7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19vdXQgY29kYV9yZWFkbGlu
azsKICAgIHN0cnVjdCBjb2RhX3ZnZXRfb3V0IGNvZGFfdmdldDsKICAgIHN0cnVjdCBjb2RhX3B1
cmdldXNlcl9vdXQgY29kYV9wdXJnZXVzZXI7CiAgICBzdHJ1Y3QgY29kYV96YXBmaWxlX291dCBj
b2RhX3phcGZpbGU7CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IGNvZGFfemFwZGlyOwogICAg
c3RydWN0IGNvZGFfemFwdm5vZGVfb3V0IGNvZGFfemFwdm5vZGU7CiAgICBzdHJ1Y3QgY29kYV9w
dXJnZWZpZF9vdXQgY29kYV9wdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IGNv
ZGFfcmVwbGFjZTsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0IGNvZGFfb3Blbl9ieV9m
ZDsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9vdXQgY29kYV9vcGVuX2J5X3BhdGg7CiAg
ICBzdHJ1Y3QgY29kYV9zdGF0ZnNfb3V0IGNvZGFfc3RhdGZzOwp9OwoKdW5pb24gY29kYV9kb3du
Y2FsbHMgewoKCiAgICBzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHB1cmdldXNlcjsKICAgIHN0
cnVjdCBjb2RhX3phcGZpbGVfb3V0IHphcGZpbGU7CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0
IHphcGRpcjsKICAgIHN0cnVjdCBjb2RhX3phcHZub2RlX291dCB6YXB2bm9kZTsKICAgIHN0cnVj
dCBjb2RhX3B1cmdlZmlkX291dCBwdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0
IHJlcGxhY2U7Cn07CgoKCgoKCgpzdHJ1Y3QgVmljZUlvY3RsIHsKICAgICAgICBjYWRkcl90IGlu
LCBvdXQ7CiAgICAgICAgc2hvcnQgaW5fc2l6ZTsKICAgICAgICBzaG9ydCBvdXRfc2l6ZTsKfTsK
CnN0cnVjdCBQaW9jdGxEYXRhIHsKICAgICAgICBjb25zdCBjaGFyICpwYXRoOwogICAgICAgIGlu
dCBmb2xsb3c7CiAgICAgICAgc3RydWN0IFZpY2VJb2N0bCB2aTsKfTsKIyA3OTcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9tb3VudF9k
YXRhIHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICBpbnQgZmQ7Cn07CiMgMTUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDIKCgoKCnN0cnVj
dCBjb2RhX2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBWaWNlRmlkIGNfZmlkOwogICAgICAg
IHVfc2hvcnQgY19mbGFnczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNfY2lsaXN0OwogICAg
ICAgIGludCBjX21hcGNvdW50OwogICAgICAgIHN0cnVjdCBjb2RhX2NyZWQgY19jYWNoZWRfY3Jl
ZDsKICAgICAgICB1bnNpZ25lZCBpbnQgY19jYWNoZWRfcGVybTsKfTsKCgoKCgpzdHJ1Y3QgY29k
YV9maWxlX2luZm8gewogICAgICAgIGludCBjZmlfbWFnaWM7CiAgICAgICAgaW50IGNmaV9tYXBj
b3VudDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqY2ZpX2NvbnRhaW5lcjsKICAgICAgICBzdHJ1Y3Qg
Y29kYV9jcmVkIGNmaV9jcmVkOwp9OwojIDQ3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L2NvZGFfZnNfaS5oIgppbnQgY29kYV9jbm9kZV9tYWtlKHN0cnVjdCBpbm9kZSAq
Kiwgc3RydWN0IFZpY2VGaWQgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICopOwpzdHJ1Y3QgaW5vZGUg
KmNvZGFfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgVmljZUZpZCAqZmlkLCBz
dHJ1Y3QgY29kYV92YXR0ciAqYXR0cik7CmludCBjb2RhX2Nub2RlX21ha2VjdGwoc3RydWN0IGlu
b2RlICoqaW5vZGUsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpzdHJ1Y3QgaW5vZGUgKmNvZGFf
ZmlkX3RvX2lub2RlKFZpY2VGaWQgKmZpZCwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnZvaWQg
Y29kYV9yZXBsYWNlX2ZpZChzdHJ1Y3QgaW5vZGUgKiwgVmljZUZpZCAqLCBWaWNlRmlkICopOwoj
IDMxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9yb21mc19mc19pLmgiIDEKCgoK
CgpzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX21ldGFz
aXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kYXRhb2Zmc2V0Owp9OwojIDMxMSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zaG1lbV9mcy5oIiAxCiMgMTYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2htZW1fZnMuaCIKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsOwp9IHN3cF9lbnRyeV90OwoKZXh0ZXJuIGF0b21pY190
IHNobWVtX25ycGFnZXM7CgpzdHJ1Y3Qgc2htZW1faW5vZGVfaW5mbyB7CiAgICAgICAgc3Bpbmxv
Y2tfdCBsb2NrOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgbmV4dF9pbmRleDsKICAgICAgICBzd3BfZW50cnlfdCBpX2RpcmVjdFsxNl07CiAgICAg
ICAgdm9pZCAqKmlfaW5kaXJlY3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzd2FwcGVkOwogICAg
ICAgIGludCBsb2NrZWQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAgIHN0
cnVjdCBpbm9kZSAqaW5vZGU7Cn07CgpzdHJ1Y3Qgc2htZW1fc2JfaW5mbyB7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBtYXhfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9ibG9ja3M7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBtYXhfaW5vZGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZnJlZV9pbm9kZXM7CiAgICAgICAgc3BpbmxvY2tfdCBzdGF0X2xvY2s7Cn07CiMgMzEyICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NtYl9mc19pLmgiIDEKIyAxOCAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIgpzdHJ1Y3Qgc21iX2lub2Rl
X2luZm8gewoKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IG9wZW47CiAgICAgICAgX191MTYgZmls
ZWlkOwogICAgICAgIF9fdTE2IGF0dHI7CgogICAgICAgIF9fdTE2IGFjY2VzczsKICAgICAgICBf
X3UxNiBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG10aW1lOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgY2xvc2VkOwogICAgICAgIHVuc2lnbmVkIG9wZW5lcnM7Cn07CiMgMzEzICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2hmc19mc19pLmgiIDEKIyAxOSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9oZnNfZnNfaS5oIgpzdHJ1Y3QgaGZzX2lub2Rl
X2luZm8gewogICAgICAgIGludCBtYWdpYzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJp
dmF0ZTsKICAgICAgICBzdHJ1Y3QgaGZzX2NhdF9lbnRyeSAqZW50cnk7CgoKICAgICAgICBzdHJ1
Y3QgaGZzX2ZvcmsgKmZvcms7CiAgICAgICAgaW50IGNvbnZlcnQ7CgoKICAgICAgICBpbm9fdCBm
aWxlX3R5cGU7CiAgICAgICAgY2hhciBkaXJfc2l6ZTsKCgogICAgICAgIGNvbnN0IHN0cnVjdCBo
ZnNfaGRyX2xheW91dCAqZGVmYXVsdF9sYXlvdXQ7CiAgICAgICAgc3RydWN0IGhmc19oZHJfbGF5
b3V0ICpsYXlvdXQ7CgoKICAgICAgICBpbnQgdHpfc2Vjb25kc3dlc3Q7CgoKICAgICAgICB2b2lk
ICgqZF9kcm9wX29wKShzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGlub190KTsKfTsKIyAzMTQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvYWRmc19mc19pLmgiIDEKIyAxMyAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9hZGZzX2ZzX2kuaCIKc3RydWN0IGFkZnNf
aW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIHBhcmVudF9pZDsKICAgICAgICBfX3UzMiBsb2FkYWRkcjsKICAgICAgICBf
X3UzMiBleGVjYWRkcjsKICAgICAgICB1bnNpZ25lZCBpbnQgZmlsZXR5cGU7CiAgICAgICAgdW5z
aWduZWQgaW50IGF0dHI7CiAgICAgICAgaW50IHN0YW1wZWQ6MTsKfTsKIyAzMTUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcW54NF9mc19pLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9xbng0X2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3FueHR5cGVzLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9xbnh0eXBlcy5oIgp0eXBlZGVmIF9fdTE2IHFueDRf
bnh0bnRfdDsKdHlwZWRlZiBfX3U4IHFueDRfZnR5cGVfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAg
ICAgICBfX3UzMiB4dG50X2JsazsKICAgICAgICBfX3UzMiB4dG50X3NpemU7Cn0gcW54NF94dG50
X3Q7Cgp0eXBlZGVmIF9fdTE2IHFueDRfbW9kZV90Owp0eXBlZGVmIF9fdTE2IHFueDRfbXVpZF90
Owp0eXBlZGVmIF9fdTE2IHFueDRfbWdpZF90Owp0eXBlZGVmIF9fdTMyIHFueDRfb2ZmX3Q7CnR5
cGVkZWYgX191MTYgcW54NF9ubGlua190OwojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAyCgoKCgpzdHJ1Y3QgcW54NF9pbm9kZV9pbmZvIHsK
ICAgICAgICBjaGFyIGlfcmVzZXJ2ZWRbMTZdOwogICAgICAgIHFueDRfb2ZmX3QgaV9zaXplOwog
ICAgICAgIHFueDRfeHRudF90IGlfZmlyc3RfeHRudDsKICAgICAgICBfX3UzMiBpX3hibGs7CiAg
ICAgICAgX19zMzIgaV9mdGltZTsKICAgICAgICBfX3MzMiBpX210aW1lOwogICAgICAgIF9fczMy
IGlfYXRpbWU7CiAgICAgICAgX19zMzIgaV9jdGltZTsKICAgICAgICBxbng0X254dG50X3QgaV9u
dW1feHRudHM7CiAgICAgICAgcW54NF9tb2RlX3QgaV9tb2RlOwogICAgICAgIHFueDRfbXVpZF90
IGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90IGlfZ2lkOwogICAgICAgIHFueDRfbmxpbmtfdCBp
X25saW5rOwogICAgICAgIF9fdTggaV96ZXJvWzRdOwogICAgICAgIHFueDRfZnR5cGVfdCBpX3R5
cGU7CiAgICAgICAgX191OCBpX3N0YXR1czsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2
YXRlOwp9OwojIDMxNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19m
c19pLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9yZWlz
ZXJmc19mc19pLmgiCnR5cGVkZWYgZW51bSB7CgoKCiAgICBpX2l0ZW1fa2V5X3ZlcnNpb25fbWFz
ayA9IDB4MDAwMSwKCgogICAgaV9zdGF0X2RhdGFfdmVyc2lvbl9tYXNrID0gMHgwMDAyLAoKICAg
IGlfcGFja19vbl9jbG9zZV9tYXNrID0gMHgwMDA0LAoKICAgIGlfbm9wYWNrX21hc2sgPSAweDAw
MDgsCgoKCiAgICBpX2xpbmtfc2F2ZWRfdW5saW5rX21hc2sgPSAweDAwMTAsCiAgICBpX2xpbmtf
c2F2ZWRfdHJ1bmNhdGVfbWFzayA9IDB4MDAyMAp9IHJlaXNlcmZzX2lub2RlX2ZsYWdzOwoKCnN0
cnVjdCByZWlzZXJmc19pbm9kZV9pbmZvIHsKICAgIF9fdTMyIGlfa2V5IFs0XTsKCgoKICAgIF9f
dTMyIGlfZmxhZ3M7CgogICAgX191MzIgaV9maXJzdF9kaXJlY3RfYnl0ZTsKCgogICAgX191MzIg
aV9hdHRyczsKCiAgICBpbnQgaV9wcmVhbGxvY19ibG9jazsKICAgIGludCBpX3ByZWFsbG9jX2Nv
dW50OwogICAgc3RydWN0IGxpc3RfaGVhZCBpX3ByZWFsbG9jX2xpc3Q7CgoKICAgIGludCBuZXdf
cGFja2luZ19sb2NhbGl0eToxOwoKCgoKCgogICAgdW5zaWduZWQgbG9uZyBpX3RyYW5zX2lkIDsK
ICAgIHVuc2lnbmVkIGxvbmcgaV90cmFuc19pbmRleCA7Cn07CiMgMzE3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L2Jmc19mc19pLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIgpzdHJ1Y3QgYmZzX2lub2RlX2luZm8gewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kc2tfaW5vOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9z
YmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2VibG9jazsKfTsKIyAzMTggIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdWRmX2ZzX2kuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiCnR5cGVkZWYgc3RydWN0CnsKICAg
ICAgICBfX3UzMiBsb2dpY2FsQmxvY2tOdW07CiAgICAgICAgX191MTYgcGFydGl0aW9uUmVmZXJl
bmNlTnVtOwp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBsYl9hZGRyOwoKCnN0cnVjdCB1ZGZf
aW5vZGVfaW5mbwp7CiAgICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0aW1l
OwogICAgICAgIGxvbmcgaV9jcnRpbWU7CiAgICAgICAgbG9uZyBpX3VjcnRpbWU7CgogICAgICAg
IGxiX2FkZHIgaV9sb2NhdGlvbjsKICAgICAgICBfX3U2NCBpX3VuaXF1ZTsKICAgICAgICBfX3Uz
MiBpX2xlbkVBdHRyOwogICAgICAgIF9fdTMyIGlfbGVuQWxsb2M7CiAgICAgICAgX191NjQgaV9s
ZW5FeHRlbnRzOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3Uz
MiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAgICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAzOwog
ICAgICAgIHVuc2lnbmVkIGlfZXh0ZW5kZWRfZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfc3Ry
YXRfNDA5NiA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAgIHVu
c2lnbmVkIHJlc2VydmVkIDogMjY7Cn07CiMgMzE5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L25jcF9mc19pLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9uY3BfZnNfaS5oIgpzdHJ1Y3QgbmNwX2lub2RlX2luZm8gewogICAgICAgIF9fdTMy
IGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBEb3NEaXJO
dW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9sTnVtYmVyIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0cjsKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9wZW5lZDsKICAgICAgICBpbnQg
YWNjZXNzOwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRsZSBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlvbiBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwp9OwojIDMyMCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9wcm9jX2ZzX2ku
aCIgMQpzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnRhc2s7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg
aW50ICgqcHJvY19nZXRfbGluaykoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiosIHN0
cnVjdCB2ZnNtb3VudCAqKik7CiAgICAgICAgICAgICAgICBpbnQgKCpwcm9jX3JlYWQpKHN0cnVj
dCB0YXNrX3N0cnVjdCAqdGFzaywgY2hhciAqcGFnZSk7CiAgICAgICAgfSBvcDsKICAgICAgICBz
dHJ1Y3QgZmlsZSAqZmlsZTsKfTsKIyAzMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvdXNiZGV2X2ZzX2kuaCIgMQpzdHJ1Y3QgdXNiX2RldmljZTsKc3RydWN0IHVzYl9idXM7Cgpz
dHJ1Y3QgdXNiZGV2X2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGxpc3Q7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzbGlzdDsKICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgdXNiX2RldmljZSAqZGV2OwogICAgICAgICAgICAgICAgc3RydWN0IHVz
Yl9idXMgKmJ1czsKICAgICAgICB9IHA7Cn07CiMgMzIyICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKc3RydWN0IGpmZnMyX2lub2RlX2luZm8gewojIDI2
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKICAg
ICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIF9fdTMyIGhpZ2hlc3RfdmVyc2lv
bjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcgKmZyYWdsaXN0OwoKCgoKCgogICAg
ICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0YTsKCgogICAgICAgIHN0cnVjdCBq
ZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2Fj
aGUgKmlub2NhY2hlOwoKCgoKCiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgX191OCB1c2Vy
Y29tcHI7Cn07CiMgMzIzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2NyYW1mc19m
c19zYi5oIiAxCgoKCgoKCnN0cnVjdCBjcmFtZnNfc2JfaW5mbyB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgbWFnaWM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBibG9j
a3M7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmlsZXM7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cn07CiMgMzI0ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAzNTAgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGlhdHRyIHsKICAgICAgICB1bnNp
Z25lZCBpbnQgaWFfdmFsaWQ7CiAgICAgICAgdW1vZGVfdCBpYV9tb2RlOwogICAgICAgIHVpZF90
IGlhX3VpZDsKICAgICAgICBnaWRfdCBpYV9naWQ7CiAgICAgICAgbG9mZl90IGlhX3NpemU7CiAg
ICAgICAgdGltZV90IGlhX2F0aW1lOwogICAgICAgIHRpbWVfdCBpYV9tdGltZTsKICAgICAgICB0
aW1lX3QgaWFfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGlhX2F0dHJfZmxhZ3M7Cn07CiMg
Mzc0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9xdW90YS5oIiAxCiMgNDggIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKdHlwZWRlZiBfX2tlcm5l
bF91aWQzMl90IHFpZF90Owp0eXBlZGVmIF9fdTY0IHFzaXplX3Q7CiMgMTA3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBpZl9kcWJsayB7CiAg
ICAgICAgX191NjQgZHFiX2JoYXJkbGltaXQ7CiAgICAgICAgX191NjQgZHFiX2Jzb2Z0bGltaXQ7
CiAgICAgICAgX191NjQgZHFiX2N1cnNwYWNlOwogICAgICAgIF9fdTY0IGRxYl9paGFyZGxpbWl0
OwogICAgICAgIF9fdTY0IGRxYl9pc29mdGxpbWl0OwogICAgICAgIF9fdTY0IGRxYl9jdXJpbm9k
ZXM7CiAgICAgICAgX191NjQgZHFiX2J0aW1lOwogICAgICAgIF9fdTY0IGRxYl9pdGltZTsKICAg
ICAgICBfX3UzMiBkcWJfdmFsaWQ7Cn07CiMgMTI4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBpZl9kcWluZm8gewogICAgICAgIF9fdTY0IGRx
aV9iZ3JhY2U7CiAgICAgICAgX191NjQgZHFpX2lncmFjZTsKICAgICAgICBfX3UzMiBkcWlfZmxh
Z3M7CiAgICAgICAgX191MzIgZHFpX3ZhbGlkOwp9OwoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvZHFibGtfeGZzLmgiIDEKIyA1OCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9kcWJsa194ZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgZnNfZGlz
a19xdW90YSB7CiAgICAgICAgX19zOCBkX3ZlcnNpb247CiAgICAgICAgX19zOCBkX2ZsYWdzOwog
ICAgICAgIF9fdTE2IGRfZmllbGRtYXNrOwogICAgICAgIF9fdTMyIGRfaWQ7CiAgICAgICAgX191
NjQgZF9ibGtfaGFyZGxpbWl0OwogICAgICAgIF9fdTY0IGRfYmxrX3NvZnRsaW1pdDsKICAgICAg
ICBfX3U2NCBkX2lub19oYXJkbGltaXQ7CiAgICAgICAgX191NjQgZF9pbm9fc29mdGxpbWl0Owog
ICAgICAgIF9fdTY0IGRfYmNvdW50OwogICAgICAgIF9fdTY0IGRfaWNvdW50OwogICAgICAgIF9f
czMyIGRfaXRpbWVyOwoKICAgICAgICBfX3MzMiBkX2J0aW1lcjsKICAgICAgICBfX3UxNiBkX2l3
YXJuczsKICAgICAgICBfX3UxNiBkX2J3YXJuczsKICAgICAgICBfX3MzMiBkX3BhZGRpbmcyOwog
ICAgICAgIF9fdTY0IGRfcnRiX2hhcmRsaW1pdDsKICAgICAgICBfX3U2NCBkX3J0Yl9zb2Z0bGlt
aXQ7CiAgICAgICAgX191NjQgZF9ydGJjb3VudDsKICAgICAgICBfX3MzMiBkX3J0YnRpbWVyOwog
ICAgICAgIF9fdTE2IGRfcnRid2FybnM7CiAgICAgICAgX19zMTYgZF9wYWRkaW5nMzsKICAgICAg
ICBjaGFyIGRfcGFkZGluZzRbOF07Cn0gZnNfZGlza19xdW90YV90OwojIDEzOSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9kcWJsa194ZnMuaCIKdHlwZWRlZiBzdHJ1Y3Qg
ZnNfcWZpbGVzdGF0IHsKICAgICAgICBfX3U2NCBxZnNfaW5vOwogICAgICAgIF9fdTY0IHFmc19u
YmxrczsKICAgICAgICBfX3UzMiBxZnNfbmV4dGVudHM7Cn0gZnNfcWZpbGVzdGF0X3Q7Cgp0eXBl
ZGVmIHN0cnVjdCBmc19xdW90YV9zdGF0IHsKICAgICAgICBfX3M4IHFzX3ZlcnNpb247CiAgICAg
ICAgX191MTYgcXNfZmxhZ3M7CiAgICAgICAgX19zOCBxc19wYWQ7CiAgICAgICAgZnNfcWZpbGVz
dGF0X3QgcXNfdXF1b3RhOwogICAgICAgIGZzX3FmaWxlc3RhdF90IHFzX2dxdW90YTsKICAgICAg
ICBfX3UzMiBxc19pbmNvcmVkcXM7CiAgICAgICAgX19zMzIgcXNfYnRpbWVsaW1pdDsKICAgICAg
ICBfX3MzMiBxc19pdGltZWxpbWl0OwogICAgICAgIF9fczMyIHFzX3J0YnRpbWVsaW1pdDsKICAg
ICAgICBfX3UxNiBxc19id2FybmxpbWl0OwogICAgICAgIF9fdTE2IHFzX2l3YXJubGltaXQ7Cn0g
ZnNfcXVvdGFfc3RhdF90OwojIDEzOCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9xdW90YS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9kcWJsa192MS5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvZHFibGtfdjEuaCIKc3RydWN0IHYxX21lbV9kcWluZm8gewp9OwojIDEzOSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9xdW90YS5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9kcWJsa192Mi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZHFibGtfdjIuaCIKc3RydWN0IHYyX21lbV9kcWlu
Zm8gewogICAgICAgIHVuc2lnbmVkIGludCBkcWlfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGlu
dCBkcWlfZnJlZV9ibGs7CiAgICAgICAgdW5zaWduZWQgaW50IGRxaV9mcmVlX2VudHJ5Owp9Owoj
IDE0MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9xdW90YS5oIiAyCgoK
CgpzdHJ1Y3QgbWVtX2RxYmxrIHsKICAgICAgICBfX3UzMiBkcWJfYmhhcmRsaW1pdDsKICAgICAg
ICBfX3UzMiBkcWJfYnNvZnRsaW1pdDsKICAgICAgICBxc2l6ZV90IGRxYl9jdXJzcGFjZTsKICAg
ICAgICBfX3UzMiBkcWJfaWhhcmRsaW1pdDsKICAgICAgICBfX3UzMiBkcWJfaXNvZnRsaW1pdDsK
ICAgICAgICBfX3UzMiBkcWJfY3VyaW5vZGVzOwogICAgICAgIHRpbWVfdCBkcWJfYnRpbWU7CiAg
ICAgICAgdGltZV90IGRxYl9pdGltZTsKfTsKCgoKCnN0cnVjdCBxdW90YV9mb3JtYXRfdHlwZTsK
CnN0cnVjdCBtZW1fZHFpbmZvIHsKICAgICAgICBzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGUgKmRx
aV9mb3JtYXQ7CiAgICAgICAgaW50IGRxaV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgZHFp
X2JncmFjZTsKICAgICAgICB1bnNpZ25lZCBpbnQgZHFpX2lncmFjZTsKICAgICAgICB1bmlvbiB7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdjFfbWVtX2RxaW5mbyB2MV9pOwogICAgICAgICAgICAg
ICAgc3RydWN0IHYyX21lbV9kcWluZm8gdjJfaTsKICAgICAgICB9IHU7Cn07CgoKCgoKZXh0ZXJu
IGlubGluZSB2b2lkIG1hcmtfaW5mb19kaXJ0eShzdHJ1Y3QgbWVtX2RxaW5mbyAqaW5mbykKewog
ICAgICAgIGluZm8tPmRxaV9mbGFncyB8PSAweDEwMDAwOwp9CiMgMTg3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcXN0YXRzX1JmNGY1MmY5
MyB7CiAgICAgICAgaW50IGxvb2t1cHM7CiAgICAgICAgaW50IGRyb3BzOwogICAgICAgIGludCBy
ZWFkczsKICAgICAgICBpbnQgd3JpdGVzOwogICAgICAgIGludCBjYWNoZV9oaXRzOwogICAgICAg
IGludCBhbGxvY2F0ZWRfZHF1b3RzOwogICAgICAgIGludCBmcmVlX2RxdW90czsKICAgICAgICBp
bnQgc3luY3M7Cn07CgpleHRlcm4gc3RydWN0IGRxc3RhdHNfUmY0ZjUyZjkzIGRxc3RhdHNfUmY0
ZjUyZjkzOwojIDIwOSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9xdW90
YS5oIgpzdHJ1Y3QgZHF1b3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZHFfaGFzaDsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRxX2ludXNlOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
ZHFfZnJlZTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0X2xvY2s7CiAgICAgICAg
d2FpdF9xdWV1ZV9oZWFkX3QgZHFfd2FpdF9mcmVlOwogICAgICAgIGludCBkcV9jb3VudDsKICAg
ICAgICBpbnQgZHFfZHVwX3JlZjsKCgogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqZHFfc2I7
CiAgICAgICAgdW5zaWduZWQgaW50IGRxX2lkOwogICAgICAgIGtkZXZfdCBkcV9kZXY7CiAgICAg
ICAgbG9mZl90IGRxX29mZjsKICAgICAgICBzaG9ydCBkcV90eXBlOwogICAgICAgIHNob3J0IGRx
X2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZHFfcmVmZXJlbmNlZDsKCiAgICAgICAgc3Ry
dWN0IG1lbV9kcWJsayBkcV9kcWI7Cn07CgoKCgoKCgpzdHJ1Y3QgcXVvdGFfZm9ybWF0X29wcyB7
CiAgICAgICAgaW50ICgqY2hlY2tfcXVvdGFfZmlsZSkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg
aW50IHR5cGUpOwogICAgICAgIGludCAoKnJlYWRfZmlsZV9pbmZvKShzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKnNiLCBpbnQgdHlwZSk7CiAgICAgICAgaW50ICgqd3JpdGVfZmlsZV9pbmZvKShzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSk7CiAgICAgICAgaW50ICgqZnJlZV9maWxlX2luZm8p
KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB0eXBlKTsKICAgICAgICBpbnQgKCpyZWFkX2Rx
YmxrKShzdHJ1Y3QgZHF1b3QgKmRxdW90KTsKICAgICAgICBpbnQgKCpjb21taXRfZHFibGspKHN0
cnVjdCBkcXVvdCAqZHF1b3QpOwp9OwoKCnN0cnVjdCBkcXVvdF9vcGVyYXRpb25zIHsKICAgICAg
ICB2b2lkICgqaW5pdGlhbGl6ZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAgIHZvaWQg
KCpkcm9wKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIGludCAoKmFsbG9jX3NwYWNlKSAoc3Ry
dWN0IGlub2RlICosIHFzaXplX3QsIGludCk7CiAgICAgICAgaW50ICgqYWxsb2NfaW5vZGUpIChj
b25zdCBzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgdm9pZCAoKmZyZWVf
c3BhY2UpIChzdHJ1Y3QgaW5vZGUgKiwgcXNpemVfdCk7CiAgICAgICAgdm9pZCAoKmZyZWVfaW5v
ZGUpIChjb25zdCBzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgq
dHJhbnNmZXIpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlhdHRyICopOwp9OwoKCnN0cnVjdCBx
dW90YWN0bF9vcHMgewogICAgICAgIGludCAoKnF1b3RhX29uKShzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KiwgaW50LCBpbnQsIGNoYXIgKik7CiAgICAgICAgaW50ICgqcXVvdGFfb2ZmKShzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKiwgaW50KTsKICAgICAgICBpbnQgKCpxdW90YV9zeW5jKShzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKiwgaW50KTsKICAgICAgICBpbnQgKCpnZXRfaW5mbykoc3RydWN0IHN1cGVyX2Jsb2Nr
ICosIGludCwgc3RydWN0IGlmX2RxaW5mbyAqKTsKICAgICAgICBpbnQgKCpzZXRfaW5mbykoc3Ry
dWN0IHN1cGVyX2Jsb2NrICosIGludCwgc3RydWN0IGlmX2RxaW5mbyAqKTsKICAgICAgICBpbnQg
KCpnZXRfZHFibGspKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQsIHFpZF90LCBzdHJ1Y3QgaWZf
ZHFibGsgKik7CiAgICAgICAgaW50ICgqc2V0X2RxYmxrKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwg
aW50LCBxaWRfdCwgc3RydWN0IGlmX2RxYmxrICopOwogICAgICAgIGludCAoKmdldF94c3RhdGUp
KHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3QgZnNfcXVvdGFfc3RhdCAqKTsKICAgICAgICBp
bnQgKCpzZXRfeHN0YXRlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgaW50LCBpbnQp
OwogICAgICAgIGludCAoKmdldF94cXVvdGEpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQsIHFp
ZF90LCBzdHJ1Y3QgZnNfZGlza19xdW90YSAqKTsKICAgICAgICBpbnQgKCpzZXRfeHF1b3RhKShz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50LCBxaWRfdCwgc3RydWN0IGZzX2Rpc2tfcXVvdGEgKik7
Cn07CgpzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGUgewogICAgICAgIGludCBxZl9mbXRfaWQ7CiAg
ICAgICAgc3RydWN0IHF1b3RhX2Zvcm1hdF9vcHMgKnFmX29wczsKICAgICAgICBzdHJ1Y3QgbW9k
dWxlICpxZl9vd25lcjsKICAgICAgICBzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGUgKnFmX25leHQ7
Cn07CgoKCgpzdHJ1Y3QgcXVvdGFfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwog
ICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgZHFpb19zZW07CiAgICAgICAgc3RydWN0IHNlbWFwaG9y
ZSBkcW9mZl9zZW07CiAgICAgICAgc3RydWN0IGZpbGUgKmZpbGVzWzJdOwogICAgICAgIHN0cnVj
dCBtZW1fZHFpbmZvIGluZm9bMl07CiAgICAgICAgc3RydWN0IHF1b3RhX2Zvcm1hdF9vcHMgKm9w
c1syXTsKfTsKIyAyOTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcXVv
dGEuaCIKc3RhdGljIGlubGluZSBpbnQgaXNfZW5hYmxlZChzdHJ1Y3QgcXVvdGFfaW5mbyAqZHFv
cHQsIGludCB0eXBlKQp7CiAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgICAgICAgICBj
YXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkcW9wdC0+ZmxhZ3MgJiAweDAx
OwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZHFvcHQtPmZsYWdzICYgMHgwMjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCgpp
bnQgcmVnaXN0ZXJfcXVvdGFfZm9ybWF0X1IyNmYyMmMwYihzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5
cGUgKmZtdCk7CnZvaWQgdW5yZWdpc3Rlcl9xdW90YV9mb3JtYXRfUjNkY2IxMjY0KHN0cnVjdCBx
dW90YV9mb3JtYXRfdHlwZSAqZm10KTsKIyAzNzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgoKCgoKCnN0cnVjdCBwYWdlOwpzdHJ1Y3QgYWRkcmVzc19zcGFj
ZTsKc3RydWN0IGtpb2J1ZjsKCnN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgewogICAg
ICAgIGludCAoKndyaXRlcGFnZSkoc3RydWN0IHBhZ2UgKik7CiAgICAgICAgaW50ICgqcmVhZHBh
Z2UpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICopOwogICAgICAgIGludCAoKnN5bmNfcGFn
ZSkoc3RydWN0IHBhZ2UgKik7CgoKCgogICAgICAgIGludCAoKnByZXBhcmVfd3JpdGUpKHN0cnVj
dCBmaWxlICosIHN0cnVjdCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAgICAgICAgaW50
ICgqY29tbWl0X3dyaXRlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCwg
dW5zaWduZWQpOwoKICAgICAgICBpbnQgKCpibWFwX1I4Y2MzMGY3NSkoc3RydWN0IGFkZHJlc3Nf
c3BhY2UgKiwgbG9uZyk7CiAgICAgICAgaW50ICgqZmx1c2hwYWdlKSAoc3RydWN0IHBhZ2UgKiwg
dW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgqcmVsZWFzZXBhZ2UpIChzdHJ1Y3QgcGFnZSAq
LCBpbnQpOwoKICAgICAgICBpbnQgKCpkaXJlY3RfSU8pKGludCwgc3RydWN0IGlub2RlICosIHN0
cnVjdCBraW9idWYgKiwgdW5zaWduZWQgbG9uZywgaW50KTsKICAgICAgICB2b2lkICgqcmVtb3Zl
cGFnZSkoc3RydWN0IHBhZ2UgKik7Cn07CgpzdHJ1Y3QgYWRkcmVzc19zcGFjZSB7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBjbGVhbl9wYWdlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRp
cnR5X3BhZ2VzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbG9ja2VkX3BhZ2VzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgbnJwYWdlczsKICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVy
YXRpb25zICphX29wczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhvc3Q7CiAgICAgICAgc3RydWN0
IHZtX2FyZWFfc3RydWN0ICppX21tYXA7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpp
X21tYXBfc2hhcmVkOwogICAgICAgIHNwaW5sb2NrX3QgaV9zaGFyZWRfbG9jazsKICAgICAgICBp
bnQgZ2ZwX21hc2s7Cn07CgpzdHJ1Y3QgY2hhcl9kZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgaGFzaDsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBkZXZfdCBkZXY7CiAg
ICAgICAgYXRvbWljX3Qgb3BlbmVyczsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKfTsK
CnN0cnVjdCBibG9ja19kZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmRfaGFzaDsK
ICAgICAgICBhdG9taWNfdCBiZF9jb3VudDsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBiZF9pbm9k
ZTsKICAgICAgICBkZXZfdCBiZF9kZXY7CiAgICAgICAgaW50IGJkX29wZW5lcnM7CiAgICAgICAg
Y29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpiZF9vcDsKICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlIGJkX3NlbTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2lub2RlczsK
fTsKCnN0cnVjdCBpbm9kZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2hhc2g7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBpX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2Rl
bnRyeTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2J1ZmZlcnM7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2RhdGFfYnVmZmVyczsKCiAgICAgICAgdW5zaWduZWQg
bG9uZyBpX2lubzsKICAgICAgICBhdG9taWNfdCBpX2NvdW50OwogICAgICAgIGtkZXZfdCBpX2Rl
djsKICAgICAgICB1bW9kZV90IGlfbW9kZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9ubGluazsK
ICAgICAgICB1aWRfdCBpX3VpZDsKICAgICAgICBnaWRfdCBpX2dpZDsKICAgICAgICBrZGV2X3Qg
aV9yZGV2OwogICAgICAgIGxvZmZfdCBpX3NpemU7CiAgICAgICAgdGltZV90IGlfYXRpbWU7CiAg
ICAgICAgdGltZV90IGlfbXRpbWU7CiAgICAgICAgdGltZV90IGlfY3RpbWU7CiAgICAgICAgdW5z
aWduZWQgaW50IGlfYmxrYml0czsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfYmxrc2l6ZTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGlfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV92ZXJz
aW9uOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGlfYnl0ZXM7CiAgICAgICAgc3RydWN0IHNlbWFw
aG9yZSBpX3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfem9tYmllOwogICAgICAgIHN0
cnVjdCBpbm9kZV9vcGVyYXRpb25zICppX29wOwogICAgICAgIHN0cnVjdCBmaWxlX29wZXJhdGlv
bnMgKmlfZm9wOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqaV9zYjsKICAgICAgICB3YWl0
X3F1ZXVlX2hlYWRfdCBpX3dhaXQ7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqaV9mbG9jazsK
ICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqaV9tYXBwaW5nOwogICAgICAgIHN0cnVjdCBh
ZGRyZXNzX3NwYWNlIGlfZGF0YTsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKmlfZHF1b3RbMl07Cgog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kZXZpY2VzOwogICAgICAgIHN0cnVjdCBwaXBlX2lu
b2RlX2luZm8gKmlfcGlwZTsKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICppX2JkZXY7CiAg
ICAgICAgc3RydWN0IGNoYXJfZGV2aWNlICppX2NkZXY7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
aV9kbm90aWZ5X21hc2s7CiAgICAgICAgc3RydWN0IGRub3RpZnlfc3RydWN0ICppX2Rub3RpZnk7
CgogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9zdGF0ZTsKCiAgICAgICAgdW5zaWduZWQgaW50IGlf
ZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBpX3NvY2s7CgogICAgICAgIGF0b21pY190IGlf
d3JpdGVjb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgaV9hdHRyX2ZsYWdzOwogICAgICAgIF9f
dTMyIGlfZ2VuZXJhdGlvbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
bWluaXhfaW5vZGVfaW5mbyBtaW5peF9pOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDJfaW5v
ZGVfaW5mbyBleHQyX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0M19pbm9kZV9pbmZvIGV4
dDNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBocGZzX2lub2RlX2luZm8gaHBmc19pOwogICAg
ICAgICAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyBudGZzX2k7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgbXNkb3NfaW5vZGVfaW5mbyBtc2Rvc19pOwogICAgICAgICAgICAgICAgc3RydWN0
IHVtc2Rvc19pbm9kZV9pbmZvIHVtc2Rvc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGlzb19p
bm9kZV9pbmZvIGlzb2ZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX2lub2RlX2luZm8g
bmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3lzdl9pbm9kZV9pbmZvIHN5c3ZfaTsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBhZmZzX2lub2RlX2luZm8gYWZmc19pOwogICAgICAgICAgICAg
ICAgc3RydWN0IHVmc19pbm9kZV9pbmZvIHVmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGVm
c19pbm9kZV9pbmZvIGVmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHJvbWZzX2lub2RlX2lu
Zm8gcm9tZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBzaG1lbV9pbm9kZV9pbmZvIHNobWVt
X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgY29kYV9pbm9kZV9pbmZvIGNvZGFfaTsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBzbWJfaW5vZGVfaW5mbyBzbWJmc19pOwogICAgICAgICAgICAgICAg
c3RydWN0IGhmc19pbm9kZV9pbmZvIGhmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGFkZnNf
aW5vZGVfaW5mbyBhZGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9pbmZv
IHFueDRfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCByZWlzZXJmc19pbm9kZV9pbmZvIHJlaXNl
cmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYmZzX2lub2RlX2luZm8gYmZzX2k7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgdWRmX2lub2RlX2luZm8gdWRmX2k7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgbmNwX2lub2RlX2luZm8gbmNwZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBwcm9j
X2lub2RlX2luZm8gcHJvY19pOwogICAgICAgICAgICAgICAgc3RydWN0IHNvY2tldCBzb2NrZXRf
aTsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JkZXZfaW5vZGVfaW5mbyB1c2JkZXZfaTsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBqZmZzMl9pbm9kZV9pbmZvIGpmZnMyX2k7CiAgICAgICAgICAg
ICAgICB2b2lkICpnZW5lcmljX2lwOwogICAgICAgIH0gdTsKfTsKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBpbm9kZV9hZGRfYnl0ZXMoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGJ5dGVzKQp7CiAg
ICAgICAgaW5vZGUtPmlfYmxvY2tzICs9IGJ5dGVzID4+IDk7CiAgICAgICAgYnl0ZXMgJj0gNTEx
OwogICAgICAgIGlub2RlLT5pX2J5dGVzICs9IGJ5dGVzOwogICAgICAgIGlmIChpbm9kZS0+aV9i
eXRlcyA+PSA1MTIpIHsKICAgICAgICAgICAgICAgIGlub2RlLT5pX2Jsb2NrcysrOwogICAgICAg
ICAgICAgICAgaW5vZGUtPmlfYnl0ZXMgLT0gNTEyOwogICAgICAgIH0KfQoKc3RhdGljIGlubGlu
ZSB2b2lkIGlub2RlX3N1Yl9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0ZXMp
CnsKICAgICAgICBpbm9kZS0+aV9ibG9ja3MgLT0gYnl0ZXMgPj4gOTsKICAgICAgICBieXRlcyAm
PSA1MTE7CiAgICAgICAgaWYgKGlub2RlLT5pX2J5dGVzIDwgYnl0ZXMpIHsKICAgICAgICAgICAg
ICAgIGlub2RlLT5pX2Jsb2Nrcy0tOwogICAgICAgICAgICAgICAgaW5vZGUtPmlfYnl0ZXMgKz0g
NTEyOwogICAgICAgIH0KICAgICAgICBpbm9kZS0+aV9ieXRlcyAtPSBieXRlczsKfQoKc3RhdGlj
IGlubGluZSBsb2ZmX3QgaW5vZGVfZ2V0X2J5dGVzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAg
ICAgICByZXR1cm4gKCgobG9mZl90KWlub2RlLT5pX2Jsb2NrcykgPDwgOSkgKyBpbm9kZS0+aV9i
eXRlczsKfQoKc3RhdGljIGlubGluZSB2b2lkIGlub2RlX3NldF9ieXRlcyhzdHJ1Y3QgaW5vZGUg
Kmlub2RlLCBsb2ZmX3QgYnl0ZXMpCnsKICAgICAgICBpbm9kZS0+aV9ibG9ja3MgPSBieXRlcyA+
PiA5OwogICAgICAgIGlub2RlLT5pX2J5dGVzID0gYnl0ZXMgJiA1MTE7Cn0KCnN0cnVjdCBmb3du
X3N0cnVjdCB7CiAgICAgICAgaW50IHBpZDsKICAgICAgICB1aWRfdCB1aWQsIGV1aWQ7CiAgICAg
ICAgaW50IHNpZ251bTsKfTsKCnN0cnVjdCBmaWxlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk
IGZfbGlzdDsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpmX2RlbnRyeTsKICAgICAgICBzdHJ1Y3Qg
dmZzbW91bnQgKmZfdmZzbW50OwogICAgICAgIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZfb3A7
CiAgICAgICAgYXRvbWljX3QgZl9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgZl9mbGFnczsK
ICAgICAgICBtb2RlX3QgZl9tb2RlOwogICAgICAgIGxvZmZfdCBmX3BvczsKICAgICAgICB1bnNp
Z25lZCBsb25nIGZfcmVhZGEsIGZfcmFtYXgsIGZfcmFlbmQsIGZfcmFsZW4sIGZfcmF3aW47CiAg
ICAgICAgc3RydWN0IGZvd25fc3RydWN0IGZfb3duZXI7CiAgICAgICAgdW5zaWduZWQgaW50IGZf
dWlkLCBmX2dpZDsKICAgICAgICBpbnQgZl9lcnJvcjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBm
X3ZlcnNpb247CgoKICAgICAgICB2b2lkICpwcml2YXRlX2RhdGE7CgoKICAgICAgICBzdHJ1Y3Qg
a2lvYnVmICpmX2lvYnVmOwogICAgICAgIGxvbmcgZl9pb2J1Zl9sb2NrOwp9OwpleHRlcm4gc3Bp
bmxvY2tfdCBmaWxlc19sb2NrX1JmOWVmYjE2YTsKCgoKCgoKZXh0ZXJuIGludCBpbml0X3ByaXZh
dGVfZmlsZV9SYjQxZDFiZWQoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwoj
IDYxNSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIgp0eXBlZGVm
IHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZsX293bmVyX3Q7CgpzdHJ1Y3QgZmlsZV9sb2NrIHsKICAg
ICAgICBzdHJ1Y3QgZmlsZV9sb2NrICpmbF9uZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
ZmxfbGluazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2Jsb2NrOwogICAgICAgIGZsX293
bmVyX3QgZmxfb3duZXI7CiAgICAgICAgdW5zaWduZWQgaW50IGZsX3BpZDsKICAgICAgICB3YWl0
X3F1ZXVlX2hlYWRfdCBmbF93YWl0OwogICAgICAgIHN0cnVjdCBmaWxlICpmbF9maWxlOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgZmxfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbF90eXBl
OwogICAgICAgIGxvZmZfdCBmbF9zdGFydDsKICAgICAgICBsb2ZmX3QgZmxfZW5kOwoKICAgICAg
ICB2b2lkICgqZmxfbm90aWZ5KShzdHJ1Y3QgZmlsZV9sb2NrICopOwogICAgICAgIHZvaWQgKCpm
bF9pbnNlcnQpKHN0cnVjdCBmaWxlX2xvY2sgKik7CiAgICAgICAgdm9pZCAoKmZsX3JlbW92ZSko
c3RydWN0IGZpbGVfbG9jayAqKTsKCiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiBmbF9m
YXN5bmM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbF9icmVha190aW1lOwoKICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX2xvY2tfaW5mbyBuZnNfZmw7CiAgICAgICAg
fSBmbF91Owp9OwojIDY0OSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9m
cy5oIgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBmaWxlX2xvY2tfbGlzdF9SNmU4NTExOWQ7Cgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZmNudGwuaCIgMQoKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2ZjbnRsLmgiIDEKIyA3MCAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vZmNudGwuaCIKc3RydWN0IGZsb2Nr
IHsKICAgICAgICBzaG9ydCBsX3R5cGU7CiAgICAgICAgc2hvcnQgbF93aGVuY2U7CiAgICAgICAg
b2ZmX3QgbF9zdGFydDsKICAgICAgICBvZmZfdCBsX2xlbjsKICAgICAgICBwaWRfdCBsX3BpZDsK
fTsKCnN0cnVjdCBmbG9jazY0IHsKICAgICAgICBzaG9ydCBsX3R5cGU7CiAgICAgICAgc2hvcnQg
bF93aGVuY2U7CiAgICAgICAgbG9mZl90IGxfc3RhcnQ7CiAgICAgICAgbG9mZl90IGxfbGVuOwog
ICAgICAgIHBpZF90IGxfcGlkOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvZmNudGwuaCIgMgojIDY1MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCgpleHRlcm4gaW50IGZjbnRsX2dldGxrKHVuc2lnbmVkIGludCwgc3Ry
dWN0IGZsb2NrICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxrKHVuc2lnbmVkIGludCwgdW5zaWdu
ZWQgaW50LCBzdHJ1Y3QgZmxvY2sgKik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDAp
KSkgbG9uZyBzeXNfZmNudGxfUmM5NDQ2MzFmKHVuc2lnbmVkIGludCBmZCwgdW5zaWduZWQgaW50
IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgw
KSkpIGxvbmcgc3lzX2R1cF9SNzNkYTNlOWEodW5zaWduZWQgaW50IGZpbGRlcyk7CmV4dGVybiBf
X2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfZHVwMih1bnNpZ25lZCBpbnQgb2xk
ZmQsIHVuc2lnbmVkIGludCBuZXdmZCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDAp
KSkgc3NpemVfdCBzeXNfcmVhZF9SMTZiZDM5NDgodW5zaWduZWQgaW50IGZkLCBjaGFyICogYnVm
LCBzaXplX3QgY291bnQpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHNzaXpl
X3Qgc3lzX3dyaXRlX1JkYzJkZjBhMCh1bnNpZ25lZCBpbnQgZmQsIGNvbnN0IGNoYXIgKiBidWYs
IHNpemVfdCBjb3VudCk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBz
eXNfY2hyb290X1IwNjViNDRlOChjb25zdCBjaGFyICogZmlsZW5hbWUpOwpleHRlcm4gX19hdHRy
aWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX2NoZGlyX1JmMDUzZTdhZihjb25zdCBjaGFy
ICogZmlsZW5hbWUpOwoKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGs2NCh1bnNpZ25lZCBpbnQsIHN0
cnVjdCBmbG9jazY0ICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxrNjQodW5zaWduZWQgaW50LCB1
bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwoKCmV4dGVybiB2b2lkIGxvY2tzX2luaXRf
bG9ja19SZGM4ZWMxYTIoc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9ja3NfY29w
eV9sb2NrX1JmNWMyMjdmZihzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sgKik7
CmV4dGVybiB2b2lkIGxvY2tzX3JlbW92ZV9wb3NpeChzdHJ1Y3QgZmlsZSAqLCBmbF9vd25lcl90
KTsKZXh0ZXJuIHZvaWQgbG9ja3NfcmVtb3ZlX2Zsb2NrKHN0cnVjdCBmaWxlICopOwpleHRlcm4g
c3RydWN0IGZpbGVfbG9jayAqcG9zaXhfdGVzdF9sb2NrX1IxOTExZjYxZShzdHJ1Y3QgZmlsZSAq
LCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IHBvc2l4X2xvY2tfZmlsZV9SMDE0Nzlk
ZDIoc3RydWN0IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAqLCB1bnNpZ25lZCBpbnQpOwpleHRl
cm4gdm9pZCBwb3NpeF9ibG9ja19sb2NrX1I2MzQ3NTViMShzdHJ1Y3QgZmlsZV9sb2NrICosIHN0
cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiB2b2lkIHBvc2l4X3VuYmxvY2tfbG9ja19SMDQzMzdk
M2Eoc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBwb3NpeF9sb2Nrc19kZWFkbG9ja19S
NmJjZjFjYjkoc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4g
aW50IF9fZ2V0X2xlYXNlX1I0YWQ0NDI5MihzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBp
bnQgZmxhZ3MpOwpleHRlcm4gdGltZV90IGxlYXNlX2dldF9tdGltZV9SMDE2ZmQ4Yjkoc3RydWN0
IGlub2RlICopOwpleHRlcm4gaW50IGxvY2tfbWF5X3JlYWRfUmY2NTRiNmQzKHN0cnVjdCBpbm9k
ZSAqLCBsb2ZmX3Qgc3RhcnQsIHVuc2lnbmVkIGxvbmcgY291bnQpOwpleHRlcm4gaW50IGxvY2tf
bWF5X3dyaXRlX1JjMjRjZTViZChzdHJ1Y3QgaW5vZGUgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25l
ZCBsb25nIGNvdW50KTsKCnN0cnVjdCBmYXN5bmNfc3RydWN0IHsKICAgICAgICBpbnQgbWFnaWM7
CiAgICAgICAgaW50IGZhX2ZkOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYV9uZXh0
OwogICAgICAgIHN0cnVjdCBmaWxlICpmYV9maWxlOwp9OwoKCgoKZXh0ZXJuIGludCBmYXN5bmNf
aGVscGVyX1I1MzE2M2JiNyhpbnQsIHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZhc3luY19z
dHJ1Y3QgKiopOwoKZXh0ZXJuIHZvaWQga2lsbF9mYXN5bmNfUjIzODNjZDhhKHN0cnVjdCBmYXN5
bmNfc3RydWN0ICoqLCBpbnQsIGludCk7CgpleHRlcm4gdm9pZCBfX2tpbGxfZmFzeW5jX1IzNmQ3
MGE3ZChzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqLCBpbnQsIGludCk7CgpzdHJ1Y3QgbmFtZWlkYXRh
IHsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAgICAgICAgc3RydWN0IHZmc21vdW50
ICptbnQ7CiAgICAgICAgc3RydWN0IHFzdHIgbGFzdDsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxh
Z3M7CiAgICAgICAgaW50IGxhc3RfdHlwZTsKfTsKIyA3MTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L21pbml4X2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IG1pbml4X3NiX2luZm8gewog
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbmlub2RlczsKICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25lczsKICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxvY2tzOwogICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzX21heF9zaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19kaXJzaXpl
OwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19uYW1lbGVuOwogICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc19saW5rX21heDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1
ZmZlcl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICoqIHNfem1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9o
ZWFkICogc19zYmg7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9zdXBlcl9i
bG9jayAqIHNfbXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91
bnRfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNfdmVyc2lv
bjsKfTsKIyA3MTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZXh0Ml9mc19zYi5o
IiAxCiMgMzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZXh0Ml9mc19z
Yi5oIgpzdHJ1Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ19z
aXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxvY2s7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2Zy
YWdzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzX3Blcl9ncm91cDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ2RiX2NvdW50
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfc2Jo
OwogICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsKICAgICAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9h
ZGVkX2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfYmxvY2tf
Yml0bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0bWFwX251bWJlclszMl07
CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19pbm9kZV9iaXRtYXBbMzJdOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc19ibG9ja19iaXRtYXBfbnVtYmVyWzMyXTsKICAgICAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFszMl07CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
X21vdW50X29wdDsKICAgICAgICB1aWRfdCBzX3Jlc3VpZDsKICAgICAgICBnaWRfdCBzX3Jlc2dp
ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHNfcGFkOwogICAgICAgIGludCBzX2FkZHJfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAg
aW50IHNfZGVzY19wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQgc19pbm9kZV9zaXplOwogICAg
ICAgIGludCBzX2ZpcnN0X2lubzsKfTsKIyA3MTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvZXh0M19mc19zYi5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvZXh0M19mc19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvdGltZXIuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L3RpbWVyLmgiCnN0cnVjdCB0aW1lcl9saXN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIGxpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBleHBpcmVzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZGF0YTsKICAgICAgICB2b2lkICgqZnVuY3Rpb24pKHVuc2lnbmVkIGxvbmcpOwp9OwoK
ZXh0ZXJuIHZvaWQgYWRkX3RpbWVyX1JhMTllYWNmOChzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVy
KTsKZXh0ZXJuIGludCBkZWxfdGltZXJfUmZjNjJmMTZkKHN0cnVjdCB0aW1lcl9saXN0ICogdGlt
ZXIpOwojIDQxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3RpbWVyLmgi
CmludCBtb2RfdGltZXJfUjFmMTNkMzA5KHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lciwgdW5zaWdu
ZWQgbG9uZyBleHBpcmVzKTsKCmV4dGVybiB2b2lkIGl0X3JlYWxfZm4odW5zaWduZWQgbG9uZyk7
CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVy
KQp7CiAgICAgICAgdGltZXItPmxpc3QubmV4dCA9IHRpbWVyLT5saXN0LnByZXYgPSAoKHZvaWQg
KikwKTsKfQoKc3RhdGljIGlubGluZSBpbnQgdGltZXJfcGVuZGluZyAoY29uc3Qgc3RydWN0IHRp
bWVyX2xpc3QgKiB0aW1lcikKewogICAgICAgIHJldHVybiB0aW1lci0+bGlzdC5uZXh0ICE9ICgo
dm9pZCAqKTApOwp9CiMgMjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
ZXh0M19mc19zYi5oIiAyCiMgMzUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvZXh0M19mc19zYi5oIgpzdHJ1Y3QgZXh0M19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfZnJhZ19zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxvY2s7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzX2ZyYWdzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tz
X3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNfZ2RiX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqIHNfc2JoOwogICAgICAgIHN0cnVjdCBleHQzX3N1cGVyX2Jsb2NrICogc19lczsKICAg
ICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHNfbG9hZGVkX2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19s
b2FkZWRfYmxvY2tfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0bWFw
X251bWJlclszMl07CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19pbm9kZV9iaXRtYXBb
MzJdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja19iaXRtYXBfbnVtYmVyWzMyXTsKICAg
ICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFszMl07CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzX21vdW50X29wdDsKICAgICAgICB1aWRfdCBzX3Jlc3VpZDsKICAgICAgICBn
aWRfdCBzX3Jlc2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNfcGFkOwogICAgICAgIGludCBzX2FkZHJfcGVyX2Jsb2NrX2Jp
dHM7CiAgICAgICAgaW50IHNfZGVzY19wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQgc19pbm9k
ZV9zaXplOwogICAgICAgIGludCBzX2ZpcnN0X2lubzsKICAgICAgICB1MzIgc19uZXh0X2dlbmVy
YXRpb247CgoKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBzX2pvdXJuYWxfaW5vZGU7CiAgICAgICAg
c3RydWN0IGpvdXJuYWxfcyAqIHNfam91cm5hbDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNf
b3JwaGFuOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19jb21taXRfaW50ZXJ2YWw7CiAgICAgICAg
c3RydWN0IGJsb2NrX2RldmljZSAqam91cm5hbF9iZGV2OwoKCgoKfTsKIyA3MTYgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaHBmc19mc19zYi5oIiAxCgoKCnN0cnVjdCBocGZzX3Ni
X2luZm8gewogICAgICAgIGlub190IHNiX3Jvb3Q7CiAgICAgICAgdW5zaWduZWQgc2JfZnNfc2l6
ZTsKICAgICAgICB1bnNpZ25lZCBzYl9iaXRtYXBzOwogICAgICAgIHVuc2lnbmVkIHNiX2RpcmJh
bmRfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgc2JfZGlyYmFuZF9zaXplOwogICAgICAgIHVuc2ln
bmVkIHNiX2RtYXA7CiAgICAgICAgdW5zaWduZWQgc2Jfbl9mcmVlOwogICAgICAgIHVuc2lnbmVk
IHNiX25fZnJlZV9kbm9kZXM7CiAgICAgICAgdWlkX3Qgc2JfdWlkOwogICAgICAgIGdpZF90IHNi
X2dpZDsKICAgICAgICB1bW9kZV90IHNiX21vZGU7CiAgICAgICAgdW5zaWduZWQgc2JfY29udiA6
IDI7CiAgICAgICAgdW5zaWduZWQgc2JfZWFzIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9lcnIg
OiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2NoayA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfbG93
ZXJjYXNlIDogMTsKICAgICAgICB1bnNpZ25lZCBzYl93YXNfZXJyb3IgOiAxOwogICAgICAgIHVu
c2lnbmVkIHNiX2Noa2RzayA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfcmRfZm5vZGUgOiAyOwog
ICAgICAgIHVuc2lnbmVkIHNiX3JkX2lub2RlIDogMjsKCgogICAgICAgIHdhaXRfcXVldWVfaGVh
ZF90IHNiX2lnZXRfcTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpzYl9jcF90YWJsZTsKCgogICAg
ICAgIHVuc2lnbmVkICpzYl9ibXBfZGlyOwogICAgICAgIHVuc2lnbmVkIHNiX2NfYml0bWFwOwog
ICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHNiX2NyZWF0aW9uX2RlOwoKICAgICAgICB1bnNpZ25l
ZCBzYl9jcmVhdGlvbl9kZV9sb2NrIDogMTsKCiAgICAgICAgaW50IHNiX3RpbWVzaGlmdDsKfTsK
IyA3MTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbnRmc19mc19zYi5oIiAxCgoK
CgoKc3RydWN0IG50ZnNfc2JfaW5mb3sKCiAgICAgICAgbnRmc191aWRfdCB1aWQ7CiAgICAgICAg
bnRmc19naWRfdCBnaWQ7CiAgICAgICAgbnRtb2RlX3QgdW1hc2s7CiAgICAgICAgdm9pZCAqbmxz
X21hcDsKICAgICAgICB1bnNpZ25lZCBpbnQgbmd0OwogICAgICAgIGNoYXIgbWZ0X3pvbmVfbXVs
dGlwbGllcjsKICAgICAgICB1bnNpZ25lZCBsb25nIG1mdF9kYXRhX3BvczsKICAgICAgICBudGZz
X2NsdXN0ZXJfdCBtZnRfem9uZV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X3pvbmVf
c3RhcnQ7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X3pvbmVfZW5kOwogICAgICAgIG50ZnNf
Y2x1c3Rlcl90IGRhdGExX3pvbmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IGRhdGEyX3pv
bmVfcG9zOwoKCiAgICAgICAgbnRmc19zaXplX3QgcGFydGl0aW9uX2JpYXM7CgogICAgICAgIG50
ZnNfdTMyIGF0X3N0YW5kYXJkX2luZm9ybWF0aW9uOwogICAgICAgIG50ZnNfdTMyIGF0X2F0dHJp
YnV0ZV9saXN0OwogICAgICAgIG50ZnNfdTMyIGF0X2ZpbGVfbmFtZTsKICAgICAgICBudGZzX3Uz
MiBhdF92b2x1bWVfdmVyc2lvbjsKICAgICAgICBudGZzX3UzMiBhdF9zZWN1cml0eV9kZXNjcmlw
dG9yOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVtZV9uYW1lOwogICAgICAgIG50ZnNfdTMyIGF0
X3ZvbHVtZV9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9kYXRhOwogICAgICAgIG50
ZnNfdTMyIGF0X2luZGV4X3Jvb3Q7CiAgICAgICAgbnRmc191MzIgYXRfaW5kZXhfYWxsb2NhdGlv
bjsKICAgICAgICBudGZzX3UzMiBhdF9iaXRtYXA7CiAgICAgICAgbnRmc191MzIgYXRfc3ltbGlu
azsKCiAgICAgICAgaW50IHNlY3Rvcl9zaXplOwogICAgICAgIGludCBjbHVzdGVyX3NpemU7CiAg
ICAgICAgaW50IGNsdXN0ZXJfc2l6ZV9iaXRzOwogICAgICAgIGludCBtZnRfY2x1c3RlcnNfcGVy
X3JlY29yZDsKICAgICAgICBpbnQgbWZ0X3JlY29yZF9zaXplOwogICAgICAgIGludCBtZnRfcmVj
b3JkX3NpemVfYml0czsKICAgICAgICBpbnQgaW5kZXhfY2x1c3RlcnNfcGVyX3JlY29yZDsKICAg
ICAgICBpbnQgaW5kZXhfcmVjb3JkX3NpemU7CiAgICAgICAgaW50IGluZGV4X3JlY29yZF9zaXpl
X2JpdHM7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbnJfY2x1c3RlcnM7CiAgICAgICAgbnRmc19j
bHVzdGVyX3QgbWZ0X2xjbjsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBtZnRfbWlycl9sY247Cgog
ICAgICAgIHVuc2lnbmVkIGNoYXIgKm1mdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqdXBjYXNl
OwogICAgICAgIHVuc2lnbmVkIGludCB1cGNhc2VfbGVuZ3RoOwoKICAgICAgICBzdHJ1Y3QgbnRm
c19pbm9kZV9pbmZvICptZnRfaW5vOwogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKm1m
dG1pcnI7CiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyAqYml0bWFwOwogICAgICAgIHN0
cnVjdCBzdXBlcl9ibG9jayAqc2I7CiAgICAgICAgdW5zaWduZWQgY2hhciBpbm9fZmxhZ3M7Cn07
CiMgNzE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX3NiLmgiIDEK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZmF0X2N2Zi5oIiAx
CgoKCgoKc3RydWN0IGN2Zl9mb3JtYXQKeyBpbnQgY3ZmX3ZlcnNpb247CiAgY2hhciogY3ZmX3Zl
cnNpb25fdGV4dDsKICB1bnNpZ25lZCBsb25nIGZsYWdzOwogIGludCAoKmRldGVjdF9jdmYpIChz
dHJ1Y3Qgc3VwZXJfYmxvY2sqc2IpOwogIGludCAoKm1vdW50X2N2ZikgKHN0cnVjdCBzdXBlcl9i
bG9jaypzYixjaGFyKm9wdGlvbnMpOwogIGludCAoKnVubW91bnRfY3ZmKSAoc3RydWN0IHN1cGVy
X2Jsb2NrKnNiKTsKICBzdHJ1Y3QgYnVmZmVyX2hlYWQqICgqY3ZmX2JyZWFkKSAoc3RydWN0IHN1
cGVyX2Jsb2NrKnNiLGludCBibG9jayk7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkKiAoKmN2Zl9nZXRi
bGspIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsaW50IGJsb2NrKTsKICB2b2lkICgqY3ZmX2JyZWxz
ZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Isc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7CiAgdm9p
ZCAoKmN2Zl9tYXJrX2J1ZmZlcl9kaXJ0eSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQg
KCpjdmZfc2V0X3VwdG9kYXRlKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgdmFsKTsKICBpbnQgKCpjdmZfaXNfdXB0b2RhdGUpIChzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKnNiLHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfbGxfcndfYmxvY2sp
IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3By
LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmJyZXEsCiAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYmhbMzJdKTsKICBpbnQgKCpmYXRfYWNjZXNzKSAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzYixpbnQgbnIsaW50IG5ld192YWx1ZSk7CiAgaW50ICgqY3ZmX3N0
YXRmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Isc3RydWN0IHN0YXRmcyAqYnVmLCBpbnQgYnVm
c2l6KTsKICBpbnQgKCpjdmZfYm1hcCkgKHN0cnVjdCBpbm9kZSAqaW5vZGUsaW50IGJsb2NrKTsK
ICBzc2l6ZV90ICgqY3ZmX2ZpbGVfcmVhZCkgKCBzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVf
dCwgbG9mZl90ICopOwogIHNzaXplX3QgKCpjdmZfZmlsZV93cml0ZSkgKCBzdHJ1Y3QgZmlsZSAq
LCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogIGludCAoKmN2Zl9tbWFwKSAoc3Ry
dWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwogIGludCAoKmN2Zl9yZWFkcGFn
ZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICBpbnQgKCpjdmZfd3JpdGVwYWdl
KSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBwYWdlICopOwogIGludCAoKmN2Zl9kaXJfaW9jdGwp
IChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwLAogICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiAgdm9pZCAo
Knplcm9fb3V0X2NsdXN0ZXIpIChzdHJ1Y3QgaW5vZGUqLCBpbnQgY2x1c3Rlcm5yKTsKfTsKCmlu
dCByZWdpc3Rlcl9jdmZfZm9ybWF0X1JiYWYzZDk2MShzdHJ1Y3QgY3ZmX2Zvcm1hdCpjdmZfZm9y
bWF0KTsKaW50IHVucmVnaXN0ZXJfY3ZmX2Zvcm1hdF9SZmM0ZDBhYTUoc3RydWN0IGN2Zl9mb3Jt
YXQqY3ZmX2Zvcm1hdCk7CnZvaWQgZGVjX2N2Zl9mb3JtYXRfdXNlX2NvdW50X2J5X3ZlcnNpb24o
aW50IHZlcnNpb24pOwppbnQgZGV0ZWN0X2N2ZihzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsY2hhcipm
b3JjZSk7CgpleHRlcm4gc3RydWN0IGN2Zl9mb3JtYXQgKmN2Zl9mb3JtYXRzW107CmV4dGVybiBp
bnQgY3ZmX2Zvcm1hdF91c2VfY291bnRbXTsKIyA0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L21zZG9zX2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgZmF0X21vdW50X29wdGlv
bnMgewogICAgICAgIHVpZF90IGZzX3VpZDsKICAgICAgICBnaWRfdCBmc19naWQ7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgZnNfdW1hc2s7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY29kZXBhZ2U7
CiAgICAgICAgY2hhciAqaW9jaGFyc2V0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNob3J0bmFt
ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG5hbWVfY2hlY2s7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBjb252ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIHF1aWV0OjEsCiAgICAgICAgICAgICAgICAg
c2hvd2V4ZWM6MSwKICAgICAgICAgICAgICAgICBzeXNfaW1tdXRhYmxlOjEsCiAgICAgICAgICAg
ICAgICAgZG90c09LOjEsCiAgICAgICAgICAgICAgICAgaXN2ZmF0OjEsCiAgICAgICAgICAgICAg
ICAgdXRmODoxLAogICAgICAgICAgICAgICAgIHVuaWNvZGVfeGxhdGU6MSwKICAgICAgICAgICAg
ICAgICBwb3NpeGZzOjEsCiAgICAgICAgICAgICAgICAgbnVtdGFpbDoxLAogICAgICAgICAgICAg
ICAgIGF0YXJpOjEsCiAgICAgICAgICAgICAgICAgZmF0MzI6MSwKICAgICAgICAgICAgICAgICBu
b2Nhc2U6MTsKfTsKCnN0cnVjdCBtc2Rvc19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBjbHVzdGVyX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY2x1c3Rlcl9iaXRzOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgZmF0cyxmYXRfYml0czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBm
YXRfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmYXRfbGVuZ3RoOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZGlyX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRpcl9lbnRyaWVzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNs
dXN0ZXJzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcm9vdF9jbHVzdGVyOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZnNpbmZvX3NlY3RvcjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGZhdF9sb2Nr
OwogICAgICAgIGludCBwcmV2X2ZyZWU7CiAgICAgICAgaW50IGZyZWVfY2x1c3RlcnM7CiAgICAg
ICAgc3RydWN0IGZhdF9tb3VudF9vcHRpb25zIG9wdGlvbnM7CiAgICAgICAgc3RydWN0IG5sc190
YWJsZSAqbmxzX2Rpc2s7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxzX2lvOwogICAgICAg
IHN0cnVjdCBjdmZfZm9ybWF0KiBjdmZfZm9ybWF0OwogICAgICAgIHZvaWQgKmRpcl9vcHM7CiAg
ICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwogICAgICAgIGludCBkaXJfcGVyX2Jsb2NrOwogICAg
ICAgIGludCBkaXJfcGVyX2Jsb2NrX2JpdHM7Cn07CiMgNzE5ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L2lzb19mc19zYi5oIiAxCgoKCgoKCnN0cnVjdCBpc29mc19zYl9pbmZvIHsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfbmlub2RlczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf
bnpvbmVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc19sb2dfem9uZV9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tYXhf
c2l6ZTsKCiAgICAgICAgdW5zaWduZWQgY2hhciBzX2hpZ2hfc2llcnJhOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgc19tYXBwaW5nOwogICAgICAgIGludCBzX3JvY2tfb2Zmc2V0OwogICAgICAgIHVu
c2lnbmVkIGNoYXIgc19yb2NrOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19qb2xpZXRfbGV2ZWw7
CiAgICAgICAgdW5zaWduZWQgY2hhciBzX3V0Zjg7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2Ny
dWZ0OwoKCiAgICAgICAgdW5zaWduZWQgY2hhciBzX3VuaGlkZTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHNfbm9zdWlkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub2RldjsKICAgICAgICB1bnNp
Z25lZCBjaGFyIHNfbm9jb21wcmVzczsKCiAgICAgICAgbW9kZV90IHNfbW9kZTsKICAgICAgICBn
aWRfdCBzX2dpZDsKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxl
ICpzX25sc19pb2NoYXJzZXQ7Cn07CiMgNzIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L25mc19mc19zYi5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9uZnNfZnNfc2IuaCIKc3RydWN0IG5mc19zZXJ2ZXIgewogICAgICAgIHN0cnVjdCBycGNf
Y2xudCAqIGNsaWVudDsKICAgICAgICBzdHJ1Y3QgbmZzX3JwY19vcHMgKiBycGNfb3BzOwogICAg
ICAgIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgcnNpemU7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHJwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgd3NpemU7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHdwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgZHRzaXplOwogICAgICAgIHVuc2ln
bmVkIGludCBic2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNyZWdtaW47CiAgICAgICAgdW5z
aWduZWQgaW50IGFjcmVnbWF4OwogICAgICAgIHVuc2lnbmVkIGludCBhY2Rpcm1pbjsKICAgICAg
ICB1bnNpZ25lZCBpbnQgYWNkaXJtYXg7CiAgICAgICAgdW5zaWduZWQgaW50IG5hbWVsZW47CiAg
ICAgICAgY2hhciAqIGhvc3RuYW1lOwogICAgICAgIHN0cnVjdCBuZnNfcmVxbGlzdCAqIHJ3X3Jl
cXVlc3RzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbHJ1X3JlYWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbHJ1X2RpcnR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxydV9jb21taXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHJ1X2J1c3k7
Cn07CgoKCgpzdHJ1Y3QgbmZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBuZnNfc2VydmVyIHNf
c2VydmVyOwp9OwojIDcyMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9m
cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zeXN2X2Zz
X3NiLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zeXN2
X2ZzX3NiLmgiCnN0cnVjdCBzeXN2X3NiX2luZm8gewogICAgICAgIGludCBzX3R5cGU7CiAgICAg
ICAgY2hhciBzX2J5dGVzZXg7CiAgICAgICAgY2hhciBzX3RydW5jYXRlOwoKICAgICAgICBubGlu
a190IHNfbGlua19tYXg7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9jazsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrXzE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHNfaW5vZGVzX3Blcl9ibG9ja19iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBzX2lu
ZF9wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9ja19iaXRzOwog
ICAgICAgIHVuc2lnbmVkIGludCBzX2luZF9wZXJfYmxvY2tfMjsKICAgICAgICB1bnNpZ25lZCBp
bnQgc190b29iaWdfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfYmxvY2tfYmFzZTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzX2ZpY19zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNf
ZmxjX3NpemU7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19iaDE7CiAgICAgICAgc3Ry
dWN0IGJ1ZmZlcl9oZWFkICpzX2JoMjsKCgogICAgICAgIGNoYXIgKiBzX3NiZDE7CiAgICAgICAg
Y2hhciAqIHNfc2JkMjsKICAgICAgICB1MTYgKnNfc2JfZmljX2NvdW50OwogICAgICAgIHUxNiAq
c19zYl9maWNfaW5vZGVzOwogICAgICAgIHUxNiAqc19zYl90b3RhbF9mcmVlX2lub2RlczsKICAg
ICAgICB1MTYgKnNfYmNhY2hlX2NvdW50OwogICAgICAgIHUzMiAqc19iY2FjaGU7CiAgICAgICAg
dTMyICpzX2ZyZWVfYmxvY2tzOwogICAgICAgIHUzMiAqc19zYl90aW1lOwogICAgICAgIHUzMiAq
c19zYl9zdGF0ZTsKCgogICAgICAgIHUzMiBzX2ZpcnN0aW5vZGV6b25lOwogICAgICAgIHUzMiBz
X2ZpcnN0ZGF0YXpvbmU7CiAgICAgICAgdTMyIHNfbmlub2RlczsKICAgICAgICB1MzIgc19uZGF0
YXpvbmVzOwogICAgICAgIHUzMiBzX256b25lczsKICAgICAgICB1MTYgc19uYW1lbGVuOwp9Owoj
IDcyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX3NiLmgiIDEKIyAx
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX3NiLmgiCnN0
cnVjdCBhZmZzX2JtX2luZm8gewogICAgICAgIHUzMiBibV9rZXk7CiAgICAgICAgdTMyIGJtX2Zy
ZWU7Cn07CgpzdHJ1Y3QgYWZmc19zYl9pbmZvIHsKICAgICAgICBpbnQgc19wYXJ0aXRpb25fc2l6
ZTsKICAgICAgICBpbnQgc19yZXNlcnZlZDsKCiAgICAgICAgdTMyIHNfZGF0YV9ibGtzaXplOwog
ICAgICAgIHUzMiBzX3Jvb3RfYmxvY2s7CiAgICAgICAgaW50IHNfaGFzaHNpemU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzX2ZsYWdzOwogICAgICAgIHVpZF90IHNfdWlkOwogICAgICAgIGdpZF90
IHNfZ2lkOwogICAgICAgIHVtb2RlX3Qgc19tb2RlOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVh
ZCAqc19yb290X2JoOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc19ibWxvY2s7CiAgICAgICAg
c3RydWN0IGFmZnNfYm1faW5mbyAqc19iaXRtYXA7CiAgICAgICAgdTMyIHNfYm1hcF9jb3VudDsK
ICAgICAgICB1MzIgc19ibWFwX2JpdHM7CiAgICAgICAgdTMyIHNfbGFzdF9ibWFwOwogICAgICAg
IHN0cnVjdCBidWZmZXJfaGVhZCAqc19ibWFwX2JoOwogICAgICAgIGNoYXIgKnNfcHJlZml4Owog
ICAgICAgIGludCBzX3ByZWZpeF9sZW47CiAgICAgICAgY2hhciBzX3ZvbHVtZVszMl07Cn07CiMg
NzIzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIiAxCiMgMTcg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMQojIDIzNyAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIKc3RydWN0IHVm
c190aW1ldmFsIHsKICAgICAgICBfX3MzMiB0dl9zZWM7CiAgICAgICAgX19zMzIgdHZfdXNlYzsK
fTsKCnN0cnVjdCB1ZnNfZGlyX2VudHJ5IHsKICAgICAgICBfX3UzMiBkX2lubzsKICAgICAgICBf
X3UxNiBkX3JlY2xlbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBfX3UxNiBkX25h
bWxlbjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
dTggZF90eXBlOwogICAgICAgICAgICAgICAgICAgICAgICBfX3U4IGRfbmFtbGVuOwogICAgICAg
ICAgICAgICAgfSBkXzQ0OwogICAgICAgIH0gZF91OwogICAgICAgIF9fdTggZF9uYW1lWzI1NSAr
IDFdOwp9OwoKc3RydWN0IHVmc19jc3VtIHsKICAgICAgICBfX3UzMiBjc19uZGlyOwogICAgICAg
IF9fdTMyIGNzX25iZnJlZTsKICAgICAgICBfX3UzMiBjc19uaWZyZWU7CiAgICAgICAgX191MzIg
Y3NfbmZmcmVlOwp9OwoKCgoKc3RydWN0IHVmc19zdXBlcl9ibG9jayB7CiAgICAgICAgX191MzIg
ZnNfbGluazsKICAgICAgICBfX3UzMiBmc19ybGluazsKICAgICAgICBfX3UzMiBmc19zYmxrbm87
CiAgICAgICAgX191MzIgZnNfY2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2libGtubzsKICAgICAg
ICBfX3UzMiBmc19kYmxrbm87CiAgICAgICAgX191MzIgZnNfY2dvZmZzZXQ7CiAgICAgICAgX191
MzIgZnNfY2dtYXNrOwogICAgICAgIF9fdTMyIGZzX3RpbWU7CiAgICAgICAgX191MzIgZnNfc2l6
ZTsKICAgICAgICBfX3UzMiBmc19kc2l6ZTsKICAgICAgICBfX3UzMiBmc19uY2c7CiAgICAgICAg
X191MzIgZnNfYnNpemU7CiAgICAgICAgX191MzIgZnNfZnNpemU7CiAgICAgICAgX191MzIgZnNf
ZnJhZzsKCiAgICAgICAgX191MzIgZnNfbWluZnJlZTsKICAgICAgICBfX3UzMiBmc19yb3RkZWxh
eTsKICAgICAgICBfX3UzMiBmc19ycHM7CgogICAgICAgIF9fdTMyIGZzX2JtYXNrOwogICAgICAg
IF9fdTMyIGZzX2ZtYXNrOwogICAgICAgIF9fdTMyIGZzX2JzaGlmdDsKICAgICAgICBfX3UzMiBm
c19mc2hpZnQ7CgogICAgICAgIF9fdTMyIGZzX21heGNvbnRpZzsKICAgICAgICBfX3UzMiBmc19t
YXhicGc7CgogICAgICAgIF9fdTMyIGZzX2ZyYWdzaGlmdDsKICAgICAgICBfX3UzMiBmc19mc2J0
b2RiOwogICAgICAgIF9fdTMyIGZzX3Nic2l6ZTsKICAgICAgICBfX3UzMiBmc19jc21hc2s7CiAg
ICAgICAgX191MzIgZnNfY3NzaGlmdDsKICAgICAgICBfX3UzMiBmc19uaW5kaXI7CiAgICAgICAg
X191MzIgZnNfaW5vcGI7CiAgICAgICAgX191MzIgZnNfbnNwZjsKCiAgICAgICAgX191MzIgZnNf
b3B0aW07CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAgIH0gZnNfc3Vu
OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIg
ZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAgICB9IGZzX3UxOwog
ICAgICAgIF9fdTMyIGZzX2ludGVybGVhdmU7CiAgICAgICAgX191MzIgZnNfdHJhY2tza2V3OwoK
CgoKICAgICAgICBfX3UzMiBmc19pZFsyXTsKCiAgICAgICAgX191MzIgZnNfY3NhZGRyOwogICAg
ICAgIF9fdTMyIGZzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBmc19jZ3NpemU7CgogICAgICAgIF9f
dTMyIGZzX250cmFrOwogICAgICAgIF9fdTMyIGZzX25zZWN0OwogICAgICAgIF9fdTMyIGZzX3Nw
YzsKCiAgICAgICAgX191MzIgZnNfbmN5bDsKCiAgICAgICAgX191MzIgZnNfY3BnOwogICAgICAg
IF9fdTMyIGZzX2lwZzsKICAgICAgICBfX3UzMiBmc19mcGc7CgogICAgICAgIHN0cnVjdCB1ZnNf
Y3N1bSBmc19jc3RvdGFsOwoKICAgICAgICBfX3M4IGZzX2Ztb2Q7CiAgICAgICAgX19zOCBmc19j
bGVhbjsKICAgICAgICBfX3M4IGZzX3Jvbmx5OwogICAgICAgIF9fczggZnNfZmxhZ3M7CiAgICAg
ICAgX19zOCBmc19mc21udFs1MTJdOwoKICAgICAgICBfX3UzMiBmc19jZ3JvdG9yOwogICAgICAg
IF9fdTMyIGZzX2NzcFszMV07CiAgICAgICAgX191MzIgZnNfbWF4Y2x1c3RlcjsKICAgICAgICBf
X3UzMiBmc19jcGM7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFsxNl1bOF07CiAgICAgICAgdW5p
b24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19z
MzIgZnNfc3BhcmVjb25bNTNdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19yZWNs
YWltOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbjJbMV07CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3Fm
bWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0
IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTNdOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3MzMiBmc19yZWNsYWltOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3MzMiBmc19zcGFyZWNvbjJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZz
X25wc2VjdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICB9
IGZzX3N1bng4NjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fczMyIGZzX3NwYXJlY29uWzUwXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIg
ZnNfY29udGlnc3Vtc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfbWF4c3lt
bGlua2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfaW5vZGVmbXQ7CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX21heGZpbGVzaXplWzJdOwogICAgICAgICAgICAg
ICAgICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
dTMyIGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7
CiAgICAgICAgICAgICAgICB9IGZzXzQ0OwogICAgICAgIH0gZnNfdTI7CiAgICAgICAgX19zMzIg
ZnNfcG9zdGJsZm9ybWF0OwogICAgICAgIF9fczMyIGZzX25ycG9zOwogICAgICAgIF9fczMyIGZz
X3Bvc3RibG9mZjsKICAgICAgICBfX3MzMiBmc19yb3RibG9mZjsKICAgICAgICBfX3MzMiBmc19t
YWdpYzsKICAgICAgICBfX3U4IGZzX3NwYWNlWzFdOwp9OwojIDQxNSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIKc3RydWN0IHVmc19jeWxpbmRlcl9ncm91
cCB7CiAgICAgICAgX191MzIgY2dfbGluazsKICAgICAgICBfX3UzMiBjZ19tYWdpYzsKICAgICAg
ICBfX3UzMiBjZ190aW1lOwogICAgICAgIF9fdTMyIGNnX2NneDsKICAgICAgICBfX3UxNiBjZ19u
Y3lsOwogICAgICAgIF9fdTE2IGNnX25pYmxrOwogICAgICAgIF9fdTMyIGNnX25kYmxrOwogICAg
ICAgIHN0cnVjdCB1ZnNfY3N1bSBjZ19jczsKICAgICAgICBfX3UzMiBjZ19yb3RvcjsKICAgICAg
ICBfX3UzMiBjZ19mcm90b3I7CiAgICAgICAgX191MzIgY2dfaXJvdG9yOwogICAgICAgIF9fdTMy
IGNnX2Zyc3VtWyg4MTkyIC8gMTAyNCldOwogICAgICAgIF9fdTMyIGNnX2J0b3RvZmY7CiAgICAg
ICAgX191MzIgY2dfYm9mZjsKICAgICAgICBfX3UzMiBjZ19pdXNlZG9mZjsKICAgICAgICBfX3Uz
MiBjZ19mcmVlb2ZmOwogICAgICAgIF9fdTMyIGNnX25leHRmcmVlb2ZmOwogICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMy
IGNnX2NsdXN0ZXJzdW1vZmY7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX2NsdXN0
ZXJvZmY7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX25jbHVzdGVyYmxrczsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfc3BhcmVjb25bMTNdOwogICAgICAgICAgICAg
ICAgfSBjZ180NDsKICAgICAgICAgICAgICAgIF9fdTMyIGNnX3NwYXJlY29uWzE2XTsKICAgICAg
ICB9IGNnX3U7CiAgICAgICAgX191OCBjZ19zcGFjZVsxXTsKCn07CgoKCgpzdHJ1Y3QgdWZzX2lu
b2RlIHsKICAgICAgICBfX3UxNiB1aV9tb2RlOwogICAgICAgIF9fdTE2IHVpX25saW5rOwogICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTE2IHVpX3N1aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX3NnaWQ7
CiAgICAgICAgICAgICAgICB9IG9sZGlkczsKICAgICAgICAgICAgICAgIF9fdTMyIHVpX2ludW1i
ZXI7CiAgICAgICAgICAgICAgICBfX3UzMiB1aV9hdXRob3I7CiAgICAgICAgfSB1aV91MTsKICAg
ICAgICBfX3U2NCB1aV9zaXplOwogICAgICAgIHN0cnVjdCB1ZnNfdGltZXZhbCB1aV9hdGltZTsK
ICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwgdWlfbXRpbWU7CiAgICAgICAgc3RydWN0IHVmc190
aW1ldmFsIHVpX2N0aW1lOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2RiWzEyXTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX191MzIgdWlfaWJbM107CiAgICAgICAgICAgICAgICB9IHVpX2FkZHI7CiAgICAg
ICAgICAgICAgICBfX3U4IHVpX3N5bWxpbmtbNCooMTIgKzMpXTsKICAgICAgICB9IHVpX3UyOwog
ICAgICAgIF9fdTMyIHVpX2ZsYWdzOwogICAgICAgIF9fdTMyIHVpX2Jsb2NrczsKICAgICAgICBf
X3UzMiB1aV9nZW47CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfc2hhZG93OwogICAgICAgICAgICAgICAgICAg
ICAgICBfX3UzMiB1aV91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsK
ICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfb2VmdGZsYWc7CiAgICAgICAgICAgICAg
ICB9IHVpX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZ2lkOwog
ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiB1aV9zcGFyZVsyXTsKICAgICAgICAgICAgICAg
IH0gdWlfNDQ7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAg
ICBfX3UzMiB1aV91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfbW9kZWg7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTE2IHVpX3NwYXJlOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV90cmFu
czsKICAgICAgICAgICAgICAgIH0gdWlfaHVyZDsKICAgICAgICB9IHVpX3UzOwp9OwojIDUxNCAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIKZXh0ZXJuIHZv
aWQgdWZzX2ZyZWVfZnJhZ21lbnRzIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVk
KTsKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfYmxvY2tzIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQs
IHVuc2lnbmVkKTsKZXh0ZXJuIHVuc2lnbmVkIHVmc19uZXdfZnJhZ21lbnRzIChzdHJ1Y3QgaW5v
ZGUgKiwgdTMyICosIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIGludCAqKTsKCgpleHRl
cm4gc3RydWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiB1ZnNfbG9hZF9jeWxpbmRlciAoc3RydWN0
IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgdWZzX3B1dF9jeWxpbmRlciAo
c3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29w
ZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gaW50IHVmc19jaGVja19k
aXJfZW50cnkgKGNvbnN0IGNoYXIgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCB1ZnNfZGlyX2Vu
dHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIGludCB1
ZnNfYWRkX2xpbmsgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4gaW5v
X3QgdWZzX2lub2RlX2J5X25hbWUoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4
dGVybiBpbnQgdWZzX21ha2VfZW1wdHkoc3RydWN0IGlub2RlICosIHN0cnVjdCBpbm9kZSAqKTsK
ZXh0ZXJuIHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICogdWZzX2ZpbmRfZW50cnkgKHN0cnVjdCBkZW50
cnkgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICoqKTsKZXh0ZXJuIGludCB1ZnNfZGVsZXRlX2VudHJ5
IChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50cnkgKiwgc3RydWN0IGJ1ZmZlcl9o
ZWFkICopOwpleHRlcm4gaW50IHVmc19lbXB0eV9kaXIgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJu
IHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICogdWZzX2RvdGRvdCAoc3RydWN0IGlub2RlICosIHN0cnVj
dCBidWZmZXJfaGVhZCAqKik7CmV4dGVybiB2b2lkIHVmc19zZXRfbGluayhzdHJ1Y3QgaW5vZGUg
Kiwgc3RydWN0IHVmc19kaXJfZW50cnkgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVjdCBp
bm9kZSAqKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2ZpbGVfaW5vZGVf
b3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdWZzX2ZpbGVfb3BlcmF0
aW9uczsKCmV4dGVybiBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHVmc19hb3BzOwoK
CmV4dGVybiB2b2lkIHVmc19mcmVlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJu
IHN0cnVjdCBpbm9kZSAqIHVmc19uZXdfaW5vZGUgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCBpbnQp
OwoKCmV4dGVybiBpbnQgdWZzX2ZyYWdfbWFwIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJu
IHZvaWQgdWZzX3JlYWRfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX3B1
dF9pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCB1ZnNfd3JpdGVfaW5vZGUgKHN0
cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IHVmc19zeW5jX2lub2RlIChzdHJ1Y3QgaW5v
ZGUgKik7CmV4dGVybiB2b2lkIHVmc19kZWxldGVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0
ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIHVmc19nZXRmcmFnIChzdHJ1Y3QgaW5vZGUgKiwgdW5z
aWduZWQsIGludCwgaW50ICopOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogdWZzX2JyZWFk
IChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIGludCwgaW50ICopOwoKCmV4dGVybiBzdHJ1Y3Qg
ZmlsZV9vcGVyYXRpb25zIHVmc19kaXJfb3BlcmF0aW9uczsKCgpleHRlcm4gc3RydWN0IGZpbGVf
c3lzdGVtX3R5cGUgdWZzX2ZzX3R5cGU7CmV4dGVybiB2b2lkIHVmc193YXJuaW5nIChzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1
dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNfZXJyb3IgKHN0
cnVjdCBzdXBlcl9ibG9jayAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0
dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc19wYW5p
YyAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4p
IF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZz
X3dyaXRlX3N1cGVyIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CgoKZXh0ZXJuIHN0cnVjdCBpbm9k
ZV9vcGVyYXRpb25zIHVmc19mYXN0X3N5bWxpbmtfaW5vZGVfb3BlcmF0aW9uczsKCgpleHRlcm4g
dm9pZCB1ZnNfdHJ1bmNhdGUgKHN0cnVjdCBpbm9kZSAqKTsKIyAxOCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC91ZnNfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCB1ZnNfYnVm
ZmVyX2hlYWQgewogICAgICAgIHVuc2lnbmVkIGZyYWdtZW50OwogICAgICAgIHVuc2lnbmVkIGNv
dW50OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoWyg4MTkyIC8gMTAyNCldOwp9OwoK
c3RydWN0IHVmc19jZ19wcml2YXRlX2luZm8gewogICAgICAgIHN0cnVjdCB1ZnNfY3lsaW5kZXJf
Z3JvdXAgdWNnOwogICAgICAgIF9fdTMyIGNfY2d4OwogICAgICAgIF9fdTE2IGNfbmN5bDsKICAg
ICAgICBfX3UxNiBjX25pYmxrOwogICAgICAgIF9fdTMyIGNfbmRibGs7CiAgICAgICAgX191MzIg
Y19yb3RvcjsKICAgICAgICBfX3UzMiBjX2Zyb3RvcjsKICAgICAgICBfX3UzMiBjX2lyb3RvcjsK
ICAgICAgICBfX3UzMiBjX2J0b3RvZmY7CiAgICAgICAgX191MzIgY19ib2ZmOwogICAgICAgIF9f
dTMyIGNfaXVzZWRvZmY7CiAgICAgICAgX191MzIgY19mcmVlb2ZmOwogICAgICAgIF9fdTMyIGNf
bmV4dGZyZWVvZmY7CiAgICAgICAgX191MzIgY19jbHVzdGVyc3Vtb2ZmOwogICAgICAgIF9fdTMy
IGNfY2x1c3Rlcm9mZjsKICAgICAgICBfX3UzMiBjX25jbHVzdGVyYmxrczsKfTsKCnN0cnVjdCB1
ZnNfc2JfcHJpdmF0ZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX2J1ZmZlcl9oZWFkIHNfdWJo
OwogICAgICAgIF9fdTMyIHNfc2Jsa25vOwogICAgICAgIF9fdTMyIHNfY2Jsa25vOwogICAgICAg
IF9fdTMyIHNfaWJsa25vOwogICAgICAgIF9fdTMyIHNfZGJsa25vOwogICAgICAgIF9fdTMyIHNf
Y2dvZmZzZXQ7CiAgICAgICAgX191MzIgc19jZ21hc2s7CiAgICAgICAgX191MzIgc19zaXplOwog
ICAgICAgIF9fdTMyIHNfZHNpemU7CiAgICAgICAgX191MzIgc19uY2c7CiAgICAgICAgX191MzIg
c19ic2l6ZTsKICAgICAgICBfX3UzMiBzX2ZzaXplOwogICAgICAgIF9fdTMyIHNfZnBiOwogICAg
ICAgIF9fdTMyIHNfbWluZnJlZTsKICAgICAgICBfX3UzMiBzX2JtYXNrOwogICAgICAgIF9fdTMy
IHNfZm1hc2s7CiAgICAgICAgX191MzIgc19ic2hpZnQ7CiAgICAgICAgX191MzIgc19mc2hpZnQ7
CiAgICAgICAgX191MzIgc19mcGJzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZzYnRvZGI7CiAgICAg
ICAgX191MzIgc19zYnNpemU7CiAgICAgICAgX191MzIgc19jc21hc2s7CiAgICAgICAgX191MzIg
c19jc3NoaWZ0OwogICAgICAgIF9fdTMyIHNfbmluZGlyOwogICAgICAgIF9fdTMyIHNfaW5vcGI7
CiAgICAgICAgX191MzIgc19uc3BmOwogICAgICAgIF9fdTMyIHNfbnBzZWN0OwogICAgICAgIF9f
dTMyIHNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3UzMiBzX3RyYWNrc2tldzsKICAgICAgICBfX3Uz
MiBzX2NzYWRkcjsKICAgICAgICBfX3UzMiBzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBzX2Nnc2l6
ZTsKICAgICAgICBfX3UzMiBzX250cmFrOwogICAgICAgIF9fdTMyIHNfbnNlY3Q7CiAgICAgICAg
X191MzIgc19zcGM7CiAgICAgICAgX191MzIgc19pcGc7CiAgICAgICAgX191MzIgc19mcGc7CiAg
ICAgICAgX191MzIgc19jcGM7CiAgICAgICAgX19zMzIgc19jb250aWdzdW1zaXplOwogICAgICAg
IF9fczY0IHNfcWJtYXNrOwogICAgICAgIF9fczY0IHNfcWZtYXNrOwogICAgICAgIF9fczMyIHNf
cG9zdGJsZm9ybWF0OwogICAgICAgIF9fczMyIHNfbnJwb3M7CiAgICAgICAgX19zMzIgc19wb3N0
YmxvZmY7CiAgICAgICAgX19zMzIgc19yb3RibG9mZjsKCiAgICAgICAgX191MzIgc19mcGJtYXNr
OwogICAgICAgIF9fdTMyIHNfYXBiOwogICAgICAgIF9fdTMyIHNfMmFwYjsKICAgICAgICBfX3Uz
MiBzXzNhcGI7CiAgICAgICAgX191MzIgc19hcGJtYXNrOwogICAgICAgIF9fdTMyIHNfYXBic2hp
ZnQ7CiAgICAgICAgX191MzIgc18yYXBic2hpZnQ7CiAgICAgICAgX191MzIgc18zYXBic2hpZnQ7
CiAgICAgICAgX191MzIgc19uc3Bmc2hpZnQ7CiAgICAgICAgX191MzIgc19uc3BiOwogICAgICAg
IF9fdTMyIHNfaW5vcGY7CiAgICAgICAgX191MzIgc19zYmJhc2U7CiAgICAgICAgX191MzIgc19i
cGY7CiAgICAgICAgX191MzIgc19icGZzaGlmdDsKICAgICAgICBfX3UzMiBzX2JwZm1hc2s7Cgog
ICAgICAgIF9fdTMyIHNfbWF4c3ltbGlua2xlbjsKfTsKCgoKCgpzdHJ1Y3QgdWZzX3NiX2luZm8g
ewogICAgICAgIHN0cnVjdCB1ZnNfc2JfcHJpdmF0ZV9pbmZvICogc191c3BpOwogICAgICAgIHN0
cnVjdCB1ZnNfY3N1bSAqIHNfY3NwWzMxXTsKICAgICAgICB1bnNpZ25lZCBzX2J5dGVzZXg7CiAg
ICAgICAgdW5zaWduZWQgc19mbGFnczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc191
Y2c7CiAgICAgICAgc3RydWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiBzX3VjcGlbOF07CiAgICAg
ICAgdW5zaWduZWQgc19jZ25vWzhdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfY2dfbG9hZGVk
OwogICAgICAgIHVuc2lnbmVkIHNfbW91bnRfb3B0Owp9OwoKCgoKCgoKc3RydWN0IHVmc19zdXBl
cl9ibG9ja19maXJzdCB7CiAgICAgICAgX191MzIgZnNfbGluazsKICAgICAgICBfX3UzMiBmc19y
bGluazsKICAgICAgICBfX3UzMiBmc19zYmxrbm87CiAgICAgICAgX191MzIgZnNfY2Jsa25vOwog
ICAgICAgIF9fdTMyIGZzX2libGtubzsKICAgICAgICBfX3UzMiBmc19kYmxrbm87CiAgICAgICAg
X191MzIgZnNfY2dvZmZzZXQ7CiAgICAgICAgX191MzIgZnNfY2dtYXNrOwogICAgICAgIF9fdTMy
IGZzX3RpbWU7CiAgICAgICAgX191MzIgZnNfc2l6ZTsKICAgICAgICBfX3UzMiBmc19kc2l6ZTsK
ICAgICAgICBfX3UzMiBmc19uY2c7CiAgICAgICAgX191MzIgZnNfYnNpemU7CiAgICAgICAgX191
MzIgZnNfZnNpemU7CiAgICAgICAgX191MzIgZnNfZnJhZzsKICAgICAgICBfX3UzMiBmc19taW5m
cmVlOwogICAgICAgIF9fdTMyIGZzX3JvdGRlbGF5OwogICAgICAgIF9fdTMyIGZzX3JwczsKICAg
ICAgICBfX3UzMiBmc19ibWFzazsKICAgICAgICBfX3UzMiBmc19mbWFzazsKICAgICAgICBfX3Uz
MiBmc19ic2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX21h
eGNvbnRpZzsKICAgICAgICBfX3UzMiBmc19tYXhicGc7CiAgICAgICAgX191MzIgZnNfZnJhZ3No
aWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXplOwog
ICAgICAgIF9fdTMyIGZzX2NzbWFzazsKICAgICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAgICAg
IF9fdTMyIGZzX25pbmRpcjsKICAgICAgICBfX3UzMiBmc19pbm9wYjsKICAgICAgICBfX3UzMiBm
c19uc3BmOwogICAgICAgIF9fdTMyIGZzX29wdGltOwogICAgICAgIHVuaW9uIHsKICAgICAgICAg
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsK
ICAgICAgICAgICAgICAgIH0gZnNfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzX3N1
bng4NjsKICAgICAgICB9IGZzX3UxOwogICAgICAgIF9fdTMyIGZzX2ludGVybGVhdmU7CiAgICAg
ICAgX191MzIgZnNfdHJhY2tza2V3OwogICAgICAgIF9fdTMyIGZzX2lkWzJdOwogICAgICAgIF9f
dTMyIGZzX2NzYWRkcjsKICAgICAgICBfX3UzMiBmc19jc3NpemU7CiAgICAgICAgX191MzIgZnNf
Y2dzaXplOwogICAgICAgIF9fdTMyIGZzX250cmFrOwogICAgICAgIF9fdTMyIGZzX25zZWN0Owog
ICAgICAgIF9fdTMyIGZzX3NwYzsKICAgICAgICBfX3UzMiBmc19uY3lsOwogICAgICAgIF9fdTMy
IGZzX2NwZzsKICAgICAgICBfX3UzMiBmc19pcGc7CiAgICAgICAgX191MzIgZnNfZnBnOwogICAg
ICAgIHN0cnVjdCB1ZnNfY3N1bSBmc19jc3RvdGFsOwogICAgICAgIF9fczggZnNfZm1vZDsKICAg
ICAgICBfX3M4IGZzX2NsZWFuOwogICAgICAgIF9fczggZnNfcm9ubHk7CiAgICAgICAgX19zOCBm
c19mbGFnczsKICAgICAgICBfX3M4IGZzX2ZzbW50WzUxMiAtIDIxMl07Cgp9OwoKc3RydWN0IHVm
c19zdXBlcl9ibG9ja19zZWNvbmQgewogICAgICAgIF9fczggZnNfZnNtbnRbMjEyXTsKICAgICAg
ICBfX3UzMiBmc19jZ3JvdG9yOwogICAgICAgIF9fdTMyIGZzX2NzcFszMV07CiAgICAgICAgX191
MzIgZnNfbWF4Y2x1c3RlcjsKICAgICAgICBfX3UzMiBmc19jcGM7CiAgICAgICAgX191MTYgZnNf
b3Bvc3RibFs4Ml07Cn07CgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX3RoaXJkIHsKICAgICAgICBf
X3UxNiBmc19vcG9zdGJsWzQ2XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIg
ZnNfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAg
fSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAg
ICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZz
X3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMy
IGZzX3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBd
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19jb250aWdzdW1zaXplOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAgICAgICAgICAgICAg
ICAgICAgICBfX3MzMiBmc19pbm9kZWZtdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg
ZnNfbWF4ZmlsZXNpemVbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFz
a1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7
CiAgICAgICAgfSBmc191MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAg
X19zMzIgZnNfbnJwb3M7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMy
IGZzX3JvdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAgIF9fdTggZnNfc3Bh
Y2VbMV07Cn07CiMgNzI0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2Vmc19mc19z
Yi5oIiAxCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZWZzX2Zz
X3NiLmgiCnN0cnVjdCBlZnNfc3VwZXIgewogICAgICAgIGludDMyX3QgZnNfc2l6ZTsKICAgICAg
ICBpbnQzMl90IGZzX2ZpcnN0Y2c7CiAgICAgICAgaW50MzJfdCBmc19jZ2ZzaXplOwogICAgICAg
IHNob3J0IGZzX2NnaXNpemU7CiAgICAgICAgc2hvcnQgZnNfc2VjdG9yczsKICAgICAgICBzaG9y
dCBmc19oZWFkczsKICAgICAgICBzaG9ydCBmc19uY2c7CiAgICAgICAgc2hvcnQgZnNfZGlydHk7
CiAgICAgICAgaW50MzJfdCBmc190aW1lOwogICAgICAgIGludDMyX3QgZnNfbWFnaWM7CiAgICAg
ICAgY2hhciBmc19mbmFtZVs2XTsKICAgICAgICBjaGFyIGZzX2ZwYWNrWzZdOwogICAgICAgIGlu
dDMyX3QgZnNfYm1zaXplOwogICAgICAgIGludDMyX3QgZnNfdGZyZWU7CiAgICAgICAgaW50MzJf
dCBmc190aW5vZGU7CiAgICAgICAgaW50MzJfdCBmc19ibWJsb2NrOwogICAgICAgIGludDMyX3Qg
ZnNfcmVwbHNiOwogICAgICAgIGludDMyX3QgZnNfbGFzdGlhbGxvYzsKICAgICAgICBjaGFyIGZz
X3NwYXJlWzIwXTsKICAgICAgICBpbnQzMl90IGZzX2NoZWNrc3VtOwp9OwoKCnN0cnVjdCBlZnNf
c2JfaW5mbyB7CiAgICAgICAgaW50MzJfdCBmc19tYWdpYzsKICAgICAgICBpbnQzMl90IGZzX3N0
YXJ0OwogICAgICAgIGludDMyX3QgZmlyc3RfYmxvY2s7CiAgICAgICAgaW50MzJfdCB0b3RhbF9i
bG9ja3M7CiAgICAgICAgaW50MzJfdCBncm91cF9zaXplOwogICAgICAgIGludDMyX3QgZGF0YV9m
cmVlOwogICAgICAgIGludDMyX3QgaW5vZGVfZnJlZTsKICAgICAgICBzaG9ydCBpbm9kZV9ibG9j
a3M7CiAgICAgICAgc2hvcnQgdG90YWxfZ3JvdXBzOwp9OwojIDcyNSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9yb21mc19mc19zYi5oIiAxCgoKCgoKc3RydWN0IHJvbWZzX3NiX2lu
Zm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tYXhzaXplOwp9OwojIDcyNiAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc21iLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9zbWIuaCIKZW51bSBzbWJfcHJvdG9jb2wgewogICAgICAgIFNN
Ql9QUk9UT0NPTF9OT05FLAogICAgICAgIFNNQl9QUk9UT0NPTF9DT1JFLAogICAgICAgIFNNQl9Q
Uk9UT0NPTF9DT1JFUExVUywKICAgICAgICBTTUJfUFJPVE9DT0xfTEFOTUFOMSwKICAgICAgICBT
TUJfUFJPVE9DT0xfTEFOTUFOMiwKICAgICAgICBTTUJfUFJPVE9DT0xfTlQxCn07CgplbnVtIHNt
Yl9jYXNlX2huZGwgewogICAgICAgIFNNQl9DQVNFX0RFRkFVTFQsCiAgICAgICAgU01CX0NBU0Vf
TE9XRVIsCiAgICAgICAgU01CX0NBU0VfVVBQRVIKfTsKCnN0cnVjdCBzbWJfZHNrYXR0ciB7CiAg
ICAgICAgX191MTYgdG90YWw7CiAgICAgICAgX191MTYgYWxsb2NibG9ja3M7CiAgICAgICAgX191
MTYgYmxvY2tzaXplOwogICAgICAgIF9fdTE2IGZyZWU7Cn07CgpzdHJ1Y3Qgc21iX2Nvbm5fb3B0
IHsKCgogICAgICAgIHVuc2lnbmVkIGludCBmZDsKCiAgICAgICAgZW51bSBzbWJfcHJvdG9jb2wg
cHJvdG9jb2w7CiAgICAgICAgZW51bSBzbWJfY2FzZV9obmRsIGNhc2VfaGFuZGxpbmc7CgoKCiAg
ICAgICAgX191MzIgbWF4X3htaXQ7CiAgICAgICAgX191MTYgc2VydmVyX3VpZDsKICAgICAgICBf
X3UxNiB0aWQ7CgoKICAgICAgICBfX3UxNiBzZWNtb2RlOwogICAgICAgIF9fdTE2IG1heG11eDsK
ICAgICAgICBfX3UxNiBtYXh2Y3M7CiAgICAgICAgX191MTYgcmF3bW9kZTsKICAgICAgICBfX3Uz
MiBzZXNza2V5OwoKCiAgICAgICAgX191MzIgbWF4cmF3OwogICAgICAgIF9fdTMyIGNhcGFiaWxp
dGllczsKICAgICAgICBfX3MxNiBzZXJ2ZXJ6b25lOwp9OwoKCgoKc3RydWN0IHNtYl9ubHNfY29k
ZXBhZ2UgewogICAgICAgIGNoYXIgbG9jYWxfbmFtZVsyMF07CiAgICAgICAgY2hhciByZW1vdGVf
bmFtZVsyMF07Cn07CiMgNzggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
c21iLmgiCnN0cnVjdCBzbWJfZmF0dHIgewoKICAgICAgICBfX3UxNiBhdHRyOwoKICAgICAgICB1
bnNpZ25lZCBsb25nIGZfaW5vOwogICAgICAgIHVtb2RlX3QgZl9tb2RlOwogICAgICAgIG5saW5r
X3QgZl9ubGluazsKICAgICAgICB1aWRfdCBmX3VpZDsKICAgICAgICBnaWRfdCBmX2dpZDsKICAg
ICAgICBrZGV2X3QgZl9yZGV2OwogICAgICAgIG9mZl90IGZfc2l6ZTsKICAgICAgICB0aW1lX3Qg
Zl9hdGltZTsKICAgICAgICB0aW1lX3QgZl9tdGltZTsKICAgICAgICB0aW1lX3QgZl9jdGltZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZfYmxrc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZf
YmxvY2tzOwp9OwoKZW51bSBzbWJfY29ubl9zdGF0ZSB7CiAgICAgICAgQ09OTl9WQUxJRCwKICAg
ICAgICBDT05OX0lOVkFMSUQsCgogICAgICAgIENPTk5fUkVUUklFRCwKICAgICAgICBDT05OX1JF
VFJZSU5HCn07CiMgMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc21i
X2ZzX3NiLmgiIDIKCgoKCgoKCnN0cnVjdCBzbWJfc2JfaW5mbyB7CiAgICAgICAgZW51bSBzbWJf
Y29ubl9zdGF0ZSBzdGF0ZTsKICAgICAgICBzdHJ1Y3QgZmlsZSAqIHNvY2tfZmlsZTsKCiAgICAg
ICAgc3RydWN0IHNtYl9tb3VudF9kYXRhX2tlcm5lbCAqbW50OwogICAgICAgIHVuc2lnbmVkIGNo
YXIgKnRlbXBfYnVmOwoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgZ2VuZXJhdGlvbjsKICAgICAg
ICBwaWRfdCBjb25uX3BpZDsKICAgICAgICBzdHJ1Y3Qgc21iX2Nvbm5fb3B0IG9wdDsKCiAgICAg
ICAgc3RydWN0IHNlbWFwaG9yZSBzZW07CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsK
CiAgICAgICAgX191MzIgcGFja2V0X3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciAqIHBhY2tl
dDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByY2xzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVy
cjsKCgogICAgICAgIHZvaWQgKmRhdGFfcmVhZHk7CgoKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxl
ICpyZW1vdGVfbmxzOwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKmxvY2FsX25sczsKCgoKCiAg
ICAgICAgY2hhciAqbmFtZV9idWY7CgogICAgICAgIGludCAoKmNvbnZlcnQpKGNoYXIgKiwgaW50
LCBjb25zdCBjaGFyICosIGludCwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmxzX3Rh
YmxlICosIHN0cnVjdCBubHNfdGFibGUgKik7Cn07CgoKc3RhdGljIGlubGluZSB2b2lkCnNtYl9s
b2NrX3NlcnZlcihzdHJ1Y3Qgc21iX3NiX2luZm8gKnNlcnZlcikKewogICAgICAgIGRvd24oJihz
ZXJ2ZXItPnNlbSkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQKc21iX3VubG9ja19zZXJ2ZXIoc3Ry
dWN0IHNtYl9zYl9pbmZvICpzZXJ2ZXIpCnsKICAgICAgICB1cCgmKHNlcnZlci0+c2VtKSk7Cn0K
IyA3MjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaGZzX2ZzX3NiLmgiIDEKIyAx
NSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9oZnNfZnNfc2IuaCIKc3Ry
dWN0IGhmc19uYW1lOwoKdHlwZWRlZiBpbnQgKCpoZnNfbmFtZWluX2ZuKSAoY2hhciAqLCBjb25z
dCBzdHJ1Y3QgaGZzX25hbWUgKik7CnR5cGVkZWYgdm9pZCAoKmhmc19uYW1lb3V0X2ZuKSAoc3Ry
dWN0IGhmc19uYW1lICosIGNvbnN0IGNoYXIgKiwgaW50KTsKdHlwZWRlZiB2b2lkICgqaGZzX2lm
aWxsX2ZuKSAoc3RydWN0IGlub2RlICosIGlub190LCBjb25zdCBpbnQpOwoKCgoKCgpzdHJ1Y3Qg
aGZzX3NiX2luZm8gewogICAgICAgIGludCBtYWdpYzsKICAgICAgICBzdHJ1Y3QgaGZzX21kYiAq
c19tZGI7CiAgICAgICAgaW50IHNfcXVpZXQ7CgogICAgICAgIGludCBzX2xvd2VyY2FzZTsKICAg
ICAgICBpbnQgc19hZnBkOwogICAgICAgIGludCBzX3ZlcnNpb247CiAgICAgICAgaGZzX25hbWVp
bl9mbiBzX25hbWVpbjsKCgogICAgICAgIGhmc19uYW1lb3V0X2ZuIHNfbmFtZW91dDsKCgogICAg
ICAgIGhmc19pZmlsbF9mbiBzX2lmaWxsOwoKICAgICAgICBjb25zdCBzdHJ1Y3QgaGZzX25hbWUg
KnNfcmVzZXJ2ZWQxOwogICAgICAgIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDI7
CiAgICAgICAgX191MzIgc190eXBlOwogICAgICAgIF9fdTMyIHNfY3JlYXRvcjsKICAgICAgICB1
bW9kZV90IHNfdW1hc2s7CgogICAgICAgIHVpZF90IHNfdWlkOwogICAgICAgIGdpZF90IHNfZ2lk
OwogICAgICAgIGNoYXIgc19jb252Owp9OwojIDcyOCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9hZGZzX2ZzX3NiLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9hZGZzX2ZzX3NiLmgiCnN0cnVjdCBhZGZzX2Rpc2NtYXA7CnN0cnVjdCBhZGZz
X2Rpcl9vcHM7CgoKCgpzdHJ1Y3QgYWRmc19zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgYWRmc19k
aXNjbWFwICpzX21hcDsKICAgICAgICBzdHJ1Y3QgYWRmc19kaXJfb3BzICpzX2RpcjsKCiAgICAg
ICAgdWlkX3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgdW1vZGVfdCBzX293
bmVyX21hc2s7CiAgICAgICAgdW1vZGVfdCBzX290aGVyX21hc2s7CgogICAgICAgIF9fdTMyIHNf
aWRzX3Blcl96b25lOwogICAgICAgIF9fdTMyIHNfaWRsZW47CiAgICAgICAgX191MzIgc19tYXBf
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfc2l6ZTsKICAgICAgICBzaWduZWQgaW50IHNf
bWFwMmJsazsKICAgICAgICB1bnNpZ25lZCBpbnQgc19sb2cyc2hhcmVzaXplOwogICAgICAgIHVu
c2lnbmVkIGludCBzX3ZlcnNpb247CiAgICAgICAgdW5zaWduZWQgaW50IHNfbmFtZWxlbjsKfTsK
IyA3MjkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIiAxCiMg
MTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcW54NF9mcy5oIiAxCiMg
NDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcW54NF9mcy5oIgpzdHJ1
Y3QgcW54NF9pbm9kZV9lbnRyeSB7CiAgICAgICAgY2hhciBkaV9mbmFtZVsxNl07CiAgICAgICAg
cW54NF9vZmZfdCBkaV9zaXplOwogICAgICAgIHFueDRfeHRudF90IGRpX2ZpcnN0X3h0bnQ7CiAg
ICAgICAgX191MzIgZGlfeGJsazsKICAgICAgICBfX3MzMiBkaV9mdGltZTsKICAgICAgICBfX3Mz
MiBkaV9tdGltZTsKICAgICAgICBfX3MzMiBkaV9hdGltZTsKICAgICAgICBfX3MzMiBkaV9jdGlt
ZTsKICAgICAgICBxbng0X254dG50X3QgZGlfbnVtX3h0bnRzOwogICAgICAgIHFueDRfbW9kZV90
IGRpX21vZGU7CiAgICAgICAgcW54NF9tdWlkX3QgZGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90
IGRpX2dpZDsKICAgICAgICBxbng0X25saW5rX3QgZGlfbmxpbms7CiAgICAgICAgX191OCBkaV96
ZXJvWzRdOwogICAgICAgIHFueDRfZnR5cGVfdCBkaV90eXBlOwogICAgICAgIF9fdTggZGlfc3Rh
dHVzOwp9OwoKc3RydWN0IHFueDRfbGlua19pbmZvIHsKICAgICAgICBjaGFyIGRsX2ZuYW1lWzQ4
XTsKICAgICAgICBfX3UzMiBkbF9pbm9kZV9ibGs7CiAgICAgICAgX191OCBkbF9pbm9kZV9uZHg7
CiAgICAgICAgX191OCBkbF9zcGFyZVsxMF07CiAgICAgICAgX191OCBkbF9zdGF0dXM7Cn07Cgpz
dHJ1Y3QgcW54NF94YmxrIHsKICAgICAgICBfX3UzMiB4YmxrX25leHRfeGJsazsKICAgICAgICBf
X3UzMiB4YmxrX3ByZXZfeGJsazsKICAgICAgICBfX3U4IHhibGtfbnVtX3h0bnRzOwogICAgICAg
IF9fdTggeGJsa19zcGFyZVszXTsKICAgICAgICBfX3MzMiB4YmxrX251bV9ibG9ja3M7CiAgICAg
ICAgcW54NF94dG50X3QgeGJsa194dG50c1s2MF07CiAgICAgICAgY2hhciB4YmxrX3NpZ25hdHVy
ZVs4XTsKICAgICAgICBxbng0X3h0bnRfdCB4YmxrX2ZpcnN0X3h0bnQ7Cn07CgpzdHJ1Y3QgcW54
NF9zdXBlcl9ibG9jayB7CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgUm9vdERpcjsK
ICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBJbm9kZTsKICAgICAgICBzdHJ1Y3QgcW54
NF9pbm9kZV9lbnRyeSBCb290OwogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IEFsdEJv
b3Q7Cn07CiMgMTAwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3FueDRf
ZnMuaCIKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKnFueDRfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGly
LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBxbng0X2NvdW50
X2ZyZWVfYmxvY2tzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpleHRlcm4gdW5zaWduZWQgbG9u
ZyBxbng0X2Jsb2NrX21hcChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGlibG9jayk7CgpleHRl
cm4gc3RydWN0IGJ1ZmZlcl9oZWFkICpxbng0X2dldGJsayhzdHJ1Y3QgaW5vZGUgKiwgaW50LCBp
bnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICpxbng0X2JyZWFkKHN0cnVjdCBpbm9kZSAq
LCBpbnQsIGludCk7CgpleHRlcm4gaW50IHFueDRfY3JlYXRlKHN0cnVjdCBpbm9kZSAqZGlyLCBz
dHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCBtb2RlKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVy
YXRpb25zIHFueDRfZmlsZV9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGlub2RlX29w
ZXJhdGlvbnMgcW54NF9kaXJfaW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29w
ZXJhdGlvbnMgcW54NF9maWxlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp
b25zIHFueDRfZGlyX29wZXJhdGlvbnM7CmV4dGVybiBpbnQgcW54NF9pc19mcmVlKHN0cnVjdCBz
dXBlcl9ibG9jayAqc2IsIGxvbmcgYmxvY2spOwpleHRlcm4gaW50IHFueDRfc2V0X2JpdG1hcChz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBsb25nIGJsb2NrLCBpbnQgYnVzeSk7CmV4dGVybiBpbnQg
cW54NF9jcmVhdGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBp
bnQgbW9kZSk7CmV4dGVybiB2b2lkIHFueDRfdHJ1bmNhdGUoc3RydWN0IGlub2RlICppbm9kZSk7
CmV4dGVybiB2b2lkIHFueDRfZnJlZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJu
IGludCBxbng0X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5
KTsKZXh0ZXJuIGludCBxbng0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5
ICpkZW50cnkpOwpleHRlcm4gaW50IHFueDRfc3luY19maWxlKHN0cnVjdCBmaWxlICpmaWxlLCBz
dHJ1Y3QgZGVudHJ5ICpkZW50cnksIGludCk7CmV4dGVybiBpbnQgcW54NF9zeW5jX2lub2RlKHN0
cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gaW50IHFueDRfZ2V0X2Jsb2NrKHN0cnVjdCBpbm9k
ZSAqaW5vZGUsIGxvbmcgaWJsb2NrLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgY3JlYXRl
KTsKIyAxNSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9xbng0X2ZzX3Ni
LmgiIDIKCgoKCgpzdHJ1Y3QgcW54NF9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKnNiX2J1ZjsKICAgICAgICBzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayAqc2I7CiAgICAgICAg
dW5zaWduZWQgaW50IFZlcnNpb247CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgKkJp
dE1hcDsKfTsKIyA3MzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcmVpc2VyZnNf
ZnNfc2IuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L3RxdWV1ZS5oIiAxCiMgMzggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvdHF1ZXVlLmgiCnN0cnVjdCB0cV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
bGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHN5bmM7CiAgICAgICAgdm9pZCAoKnJvdXRpbmUp
KHZvaWQgKik7CiAgICAgICAgdm9pZCAqZGF0YTsKfTsKIyA2NCAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC90cXVldWUuaCIKdHlwZWRlZiBzdHJ1Y3QgbGlzdF9oZWFkIHRh
c2tfcXVldWU7CgoKCgpleHRlcm4gdGFza19xdWV1ZSB0cV90aW1lcl9SZmEzZTlhY2MsIHRxX2lt
bWVkaWF0ZV9SMGRhMGRjZDEsIHRxX2Rpc2tfUjUzNzNkYmI2OwojIDk0ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgpleHRlcm4gc3BpbmxvY2tfdCB0cXVl
dWVfbG9jazsKCgoKCgpzdGF0aWMgaW5saW5lIGludCBxdWV1ZV90YXNrKHN0cnVjdCB0cV9zdHJ1
Y3QgKmJoX3BvaW50ZXIsIHRhc2tfcXVldWUgKmJoX2xpc3QpCnsKICAgICAgICBpbnQgcmV0ID0g
MDsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoMCwmYmhfcG9pbnRlci0+c3luYykpIHsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgICAgICAgICBkbyB7
IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAiOiI9ZyIgKGZsYWdz
KTogKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSgw
KTs7ICh2b2lkKSgmdHF1ZXVlX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIGxp
c3RfYWRkX3RhaWwoJmJoX3BvaW50ZXItPmxpc3QsIGJoX2xpc3QpOwogICAgICAgICAgICAgICAg
ZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBv
cGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
ICAgICAgICByZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0Owp9CgoKCgoKZXh0
ZXJuIHZvaWQgX19ydW5fdGFza19xdWV1ZV9SMzg4OWIxMWModGFza19xdWV1ZSAqbGlzdCk7Cgpz
dGF0aWMgaW5saW5lIHZvaWQgcnVuX3Rhc2tfcXVldWUodGFza19xdWV1ZSAqbGlzdCkKewogICAg
ICAgIGlmICgoIWxpc3RfZW1wdHkoJipsaXN0KSkpCiAgICAgICAgICAgICAgICBfX3J1bl90YXNr
X3F1ZXVlX1IzODg5YjExYyhsaXN0KTsKfQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMgojIDI2ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnN0cnVjdCByZWlzZXJmc19zdXBl
cl9ibG9jawp7CiAgX191MzIgc19ibG9ja19jb3VudDsKICBfX3UzMiBzX2ZyZWVfYmxvY2tzOwog
IF9fdTMyIHNfcm9vdF9ibG9jazsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2s7CiAgX191MzIgc19q
b3VybmFsX2RldjsKIyA0MyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9y
ZWlzZXJmc19mc19zYi5oIgogIF9fdTMyIHNfb3JpZ19qb3VybmFsX3NpemU7CiAgX191MzIgc19q
b3VybmFsX3RyYW5zX21heCA7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrX2NvdW50IDsKICBfX3Uz
MiBzX2pvdXJuYWxfbWF4X2JhdGNoIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9hZ2Ug
OwogIF9fdTMyIHNfam91cm5hbF9tYXhfdHJhbnNfYWdlIDsKICBfX3UxNiBzX2Jsb2Nrc2l6ZTsK
ICBfX3UxNiBzX29pZF9tYXhzaXplOwogIF9fdTE2IHNfb2lkX2N1cnNpemU7CiAgX191MTYgc19z
dGF0ZTsKICBjaGFyIHNfbWFnaWNbMTJdOwogIF9fdTMyIHNfaGFzaF9mdW5jdGlvbl9jb2RlOwog
IF9fdTE2IHNfdHJlZV9oZWlnaHQ7CiAgX191MTYgc19ibWFwX25yOwogIF9fdTE2IHNfdmVyc2lv
bjsKCgoKCiAgX191MTYgc19yZXNlcnZlZDsKICBfX3UzMiBzX2lub2RlX2dlbmVyYXRpb247CiAg
X191MzIgc19mbGFnczsKICB1bnNpZ25lZCBjaGFyIHNfdXVpZFsxNl07CiAgdW5zaWduZWQgY2hh
ciBzX2xhYmVsWzE2XTsKICBjaGFyIHNfdW51c2VkWzg4XSA7CgoKCn0gX19hdHRyaWJ1dGVfXyAo
KF9fcGFja2VkX18pKTsKCnR5cGVkZWYgZW51bSB7CiAgcmVpc2VyZnNfYXR0cnNfY2xlYXJlZCA9
IDB4MDAwMDAwMDEsCn0gcmVpc2VyZnNfc3VwZXJfYmxvY2tfZmxhZ3M7CiMgMTMxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnN0cnVjdCBy
ZWlzZXJmc19zdXBlcl9ibG9ja192MQp7CiAgX191MzIgc19ibG9ja19jb3VudDsKICBfX3UzMiBz
X2ZyZWVfYmxvY2tzOwogIF9fdTMyIHNfcm9vdF9ibG9jazsKICBfX3UzMiBzX2pvdXJuYWxfYmxv
Y2s7CiAgX191MzIgc19qb3VybmFsX2RldjsKICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwog
IF9fdTMyIHNfam91cm5hbF90cmFuc19tYXggOwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3Vu
dCA7CiAgX191MzIgc19qb3VybmFsX21heF9iYXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9j
b21taXRfYWdlIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19i
bG9ja3NpemU7CiAgX191MTYgc19vaWRfbWF4c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwog
IF9fdTE2IHNfc3RhdGU7CiAgY2hhciBzX21hZ2ljWzE2XTsKICBfX3UxNiBzX3RyZWVfaGVpZ2h0
OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UzMiBzX3Jlc2VydmVkOwp9IF9fYXR0cmlidXRlX18g
KChfX3BhY2tlZF9fKSk7CiMgMjEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlIHsKICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoIDsKICBrZGV2X3QgZGV2IDsKICB1bnNpZ25lZCBsb25nIGJs
b2NrbnIgOwogIGxvbmcgc3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgKmps
aXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7CiAgc3RydWN0IHJl
aXNlcmZzX2pvdXJuYWxfY25vZGUgKnByZXYgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nu
b2RlICpocHJldiA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmhuZXh0IDsKfTsK
CnN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9kZSB7CiAgaW50IGlkIDsKICBjaGFyICpkYXRhIDsK
ICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3QgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1h
cCB7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCAqam91cm5hbF9saXN0IDsKICBzdHJ1
Y3QgcmVpc2VyZnNfYml0bWFwX25vZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpzdHJ1Y3QgcmVpc2Vy
ZnNfdHJhbnNhY3Rpb25faGFuZGxlIHsKCiAgY2hhciAqdF9jYWxsZXIgOwogIGludCB0X2Jsb2Nr
c19sb2dnZWQgOwogIGludCB0X2Jsb2Nrc19hbGxvY2F0ZWQgOwogIHVuc2lnbmVkIGxvbmcgdF90
cmFuc19pZCA7CiAgc3RydWN0IHN1cGVyX2Jsb2NrICp0X3N1cGVyIDsKCiAgaW50IGRpc3BsYWNl
X25ld19ibG9ja3M6MTsKCn0gOwoKCgoKCgoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCB7
CiAgdW5zaWduZWQgbG9uZyBqX3N0YXJ0IDsKICB1bnNpZ25lZCBsb25nIGpfbGVuIDsKICBhdG9t
aWNfdCBqX25vbnplcm9sZW4gOwogIGF0b21pY190IGpfY29tbWl0X2xlZnQgOwogIGF0b21pY190
IGpfZmx1c2hpbmcgOwogIGF0b21pY190IGpfY29tbWl0X2ZsdXNoaW5nIDsKICBhdG9taWNfdCBq
X29sZGVyX2NvbW1pdHNfZG9uZSA7CiAgdW5zaWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB0aW1l
X3Qgal90aW1lc3RhbXAgOwogIHN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCAqal9saXN0X2Jp
dG1hcCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpqX2NvbW1pdF9iaCA7CiAgc3RydWN0IHJlaXNl
cmZzX2pvdXJuYWxfY25vZGUgKmpfcmVhbGJsb2NrIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5h
bF9jbm9kZSAqal9mcmVlZGxpc3QgOwogIHdhaXRfcXVldWVfaGVhZF90IGpfY29tbWl0X3dhaXQg
OwogIHdhaXRfcXVldWVfaGVhZF90IGpfZmx1c2hfd2FpdCA7Cn0gOwoKc3RydWN0IHJlaXNlcmZz
X3BhZ2VfbGlzdCA7CgpzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbCB7CiAgc3RydWN0IGJ1ZmZlcl9o
ZWFkICoqIGpfYXBfYmxvY2tzIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9s
YXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9maXJzdCA7CgogIGxvbmcg
al9zdGF0ZSA7CiAgdW5zaWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpf
bW91bnRfaWQgOwogIHVuc2lnbmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xl
biA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwog
IHVuc2lnbmVkIGxvbmcgal9iY291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNo
ZWRfb2Zmc2V0IDsKICB1bnNpZ25lZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3Ry
dWN0IGJ1ZmZlcl9oZWFkICpqX2hlYWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdl
X2xpc3QgKmpfZmx1c2hfcGFnZXMgOwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdh
aXRfcXVldWVfaGVhZF90IGpfd2FpdCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1
ZV9oZWFkX3Qgal9qb2luX3dhaXQgOwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJu
YWxfbGlzdF9pbmRleCA7CiAgaW50IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rf
d2FpdCA7CiAgaW50IGpfbmV4dF9mdWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNo
IDsKCiAgaW50IGpfY25vZGVfdXNlZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCBy
ZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNl
cmZzX2pvdXJuYWxfY25vZGUgKmpfY25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRt
YXBfbm9kZXMgOwogIGludCBqX3VzZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFk
IGpfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfZGlydHlfYnVmZmVycyA7CiAg
c3RydWN0IHJlaXNlcmZzX2xpc3RfYml0bWFwIGpfbGlzdF9iaXRtYXBbNV0gOwogIHN0cnVjdCBy
ZWlzZXJmc19qb3VybmFsX2xpc3Qgal9qb3VybmFsX2xpc3RbNjRdIDsKICBzdHJ1Y3QgcmVpc2Vy
ZnNfam91cm5hbF9jbm9kZSAqal9oYXNoX3RhYmxlWzgxOTJdIDsKICBzdHJ1Y3QgcmVpc2VyZnNf
am91cm5hbF9jbm9kZSAqal9saXN0X2hhc2hfdGFibGVbODE5Ml0gOwoKICBzdHJ1Y3QgbGlzdF9o
ZWFkIGpfcHJlYWxsb2NfbGlzdDsKfTsKCgoKCnR5cGVkZWYgX191MzIgKCpoYXNoZl90KSAoY29u
c3Qgc2lnbmVkIGNoYXIgKiwgaW50KTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfaW5mbwp7Cgog
ICAgX191MTYgZmlyc3RfemVyb19oaW50OwogICAgX191MTYgZnJlZV9jb3VudDsKICAgIHN0cnVj
dCBidWZmZXJfaGVhZCAqYmg7Cn07CgpzdHJ1Y3QgcHJvY19kaXJfZW50cnk7CgoKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGludCBzdGF0X2NudF90Owp0eXBlZGVmIHN0cnVjdCByZWlzZXJmc19wcm9j
X2luZm9fZGF0YQp7CiAgc3BpbmxvY2tfdCBsb2NrOwogIGludCBleGl0aW5nOwogIGludCBtYXhf
aGFzaF9jb2xsaXNpb25zOwoKICBzdGF0X2NudF90IGJyZWFkczsKICBzdGF0X2NudF90IGJyZWFk
X21pc3M7CiAgc3RhdF9jbnRfdCBzZWFyY2hfYnlfa2V5OwogIHN0YXRfY250X3Qgc2VhcmNoX2J5
X2tleV9mc19jaGFuZ2VkOwogIHN0YXRfY250X3Qgc2VhcmNoX2J5X2tleV9yZXN0YXJ0ZWQ7Cgog
IHN0YXRfY250X3QgaW5zZXJ0X2l0ZW1fcmVzdGFydGVkOwogIHN0YXRfY250X3QgcGFzdGVfaW50
b19pdGVtX3Jlc3RhcnRlZDsKICBzdGF0X2NudF90IGN1dF9mcm9tX2l0ZW1fcmVzdGFydGVkOwog
IHN0YXRfY250X3QgZGVsZXRlX3NvbGlkX2l0ZW1fcmVzdGFydGVkOwogIHN0YXRfY250X3QgZGVs
ZXRlX2l0ZW1fcmVzdGFydGVkOwoKICBzdGF0X2NudF90IGxlYWtlZF9vaWQ7CiAgc3RhdF9jbnRf
dCBsZWF2ZXNfcmVtb3ZhYmxlOwoKCiAgc3RhdF9jbnRfdCBiYWxhbmNlX2F0WyA1IF07CgogIHN0
YXRfY250X3Qgc2JrX3JlYWRfYXRbIDUgXTsKICBzdGF0X2NudF90IHNia19mc19jaGFuZ2VkWyA1
IF07CiAgc3RhdF9jbnRfdCBzYmtfcmVzdGFydGVkWyA1IF07CiAgc3RhdF9jbnRfdCBpdGVtc19h
dFsgNSBdOwogIHN0YXRfY250X3QgZnJlZV9hdFsgNSBdOwogIHN0YXRfY250X3QgY2FuX25vZGVf
YmVfcmVtb3ZlZFsgNSBdOwogIGxvbmcgaW50IGxudW1bIDUgXTsKICBsb25nIGludCBybnVtWyA1
IF07CiAgbG9uZyBpbnQgbGJ5dGVzWyA1IF07CiAgbG9uZyBpbnQgcmJ5dGVzWyA1IF07CiAgc3Rh
dF9jbnRfdCBnZXRfbmVpZ2hib3JzWyA1IF07CiAgc3RhdF9jbnRfdCBnZXRfbmVpZ2hib3JzX3Jl
c3RhcnRbIDUgXTsKICBzdGF0X2NudF90IG5lZWRfbF9uZWlnaGJvclsgNSBdOwogIHN0YXRfY250
X3QgbmVlZF9yX25laWdoYm9yWyA1IF07CgogIHN0YXRfY250X3QgZnJlZV9ibG9jazsKICBzdHJ1
Y3QgX19zY2FuX2JpdG1hcF9zdGF0cyB7CiAgICAgICAgc3RhdF9jbnRfdCBjYWxsOwogICAgICAg
IHN0YXRfY250X3Qgd2FpdDsKICAgICAgICBzdGF0X2NudF90IGJtYXBfUjhjYzMwZjc1OwogICAg
ICAgIHN0YXRfY250X3QgcmV0cnk7CiAgICAgICAgc3RhdF9jbnRfdCBpbl9qb3VybmFsX2hpbnQ7
CiAgICAgICAgc3RhdF9jbnRfdCBpbl9qb3VybmFsX25vaGludDsKICAgICAgICBzdGF0X2NudF90
IHN0b2xlbjsKICB9IHNjYW5fYml0bWFwOwogIHN0cnVjdCBfX2pvdXJuYWxfc3RhdHMgewogICAg
ICAgIHN0YXRfY250X3QgaW5fam91cm5hbDsKICAgICAgICBzdGF0X2NudF90IGluX2pvdXJuYWxf
Yml0bWFwOwogICAgICAgIHN0YXRfY250X3QgaW5fam91cm5hbF9yZXVzYWJsZTsKICAgICAgICBz
dGF0X2NudF90IGxvY2tfam91cm5hbDsKICAgICAgICBzdGF0X2NudF90IGxvY2tfam91cm5hbF93
YWl0OwogICAgICAgIHN0YXRfY250X3Qgam91cm5hbF9iZWluZzsKICAgICAgICBzdGF0X2NudF90
IGpvdXJuYWxfcmVsb2NrX3dyaXRlcnM7CiAgICAgICAgc3RhdF9jbnRfdCBqb3VybmFsX3JlbG9j
a193Y291bnQ7CiAgICAgICAgc3RhdF9jbnRfdCBtYXJrX2RpcnR5OwogICAgICAgIHN0YXRfY250
X3QgbWFya19kaXJ0eV9hbHJlYWR5OwogICAgICAgIHN0YXRfY250X3QgbWFya19kaXJ0eV9ub3Rq
b3VybmFsOwogICAgICAgIHN0YXRfY250X3QgcmVzdG9yZV9wcmVwYXJlZDsKICAgICAgICBzdGF0
X2NudF90IHByZXBhcmU7CiAgICAgICAgc3RhdF9jbnRfdCBwcmVwYXJlX3JldHJ5OwogIH0gam91
cm5hbDsKfSByZWlzZXJmc19wcm9jX2luZm9fZGF0YV90OwoKCgoKCgpzdHJ1Y3QgcmVpc2VyZnNf
c2JfaW5mbwp7CiAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX3NiaDsKCgogICAgc3RydWN0IHJl
aXNlcmZzX3N1cGVyX2Jsb2NrICogc19yczsKICAgIHN0cnVjdCByZWlzZXJmc19iaXRtYXBfaW5m
byAqIHNfYXBfYml0bWFwOwogICAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgKnNfam91cm5hbCA7
CiAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwoKCiAgICB2b2lkICgqZW5kX2lvX2hh
bmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFzaGZfdCBzX2hhc2hfZnVu
Y3Rpb247CgoKICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CgoKCiAgICBzdHJ1Y3Qgewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgYml0czsKICAgICAgICB1bnNpZ25lZCBsb25nIGxhcmdlX2Zp
bGVfc2l6ZTsKICAgICAgICBpbnQgYm9yZGVyOwogICAgICAgIGludCBwcmVhbGxvY21pbjsKICAg
ICAgICBpbnQgcHJlYWxsb2NzaXplOwoKCiAgICB9IHNfYWxsb2Nfb3B0aW9uczsKCgogICAgd2Fp
dF9xdWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0b21pY190IHNfZ2VuZXJhdGlvbl9jb3VudGVy
OwoKICAgIHVuc2lnbmVkIGxvbmcgc19wcm9wZXJ0aWVzOwoKCgogICAgaW50IHNfa21hbGxvY3M7
CiAgICBpbnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNfZGlza193cml0ZXM7CiAgICBpbnQgc19m
aXhfbm9kZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwogICAgaW50IHNfdW5uZWVkZWRfbGVmdF9u
ZWlnaGJvcjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5X2tleV9yZWFkYTsKICAgIGludCBzX2Jt
YXBzOwogICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFyY2g7CiAgICBpbnQgc19kaXJlY3QyaW5k
aXJlY3Q7CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7CgoKCiAgICBpbnQgc19pc191bmxpbmtl
ZF9vazsKICAgIHJlaXNlcmZzX3Byb2NfaW5mb19kYXRhX3Qgc19wcm9jX2luZm9fZGF0YTsKICAg
IHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY2RpcjsKICAgIGludCByZXNlcnZlZF9ibG9ja3M7
Cn07CiMgNTM0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZz
X2ZzX3NiLmgiCnZvaWQgcmVpc2VyZnNfZmlsZV9idWZmZXIgKHN0cnVjdCBidWZmZXJfaGVhZCAq
IGJoLCBpbnQgbGlzdCk7CmludCByZWlzZXJmc19pc19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KnMpIDsKaW50IGpvdXJuYWxfbWFya19kaXJ0eShzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25f
aGFuZGxlICosIHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSA7
CmludCBmbHVzaF9vbGRfY29tbWl0cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsIGludCkgOwppbnQg
c2hvd19yZWlzZXJmc19sb2Nrcyh2b2lkKSA7CmludCByZWlzZXJmc19yZXNpemUoc3RydWN0IHN1
cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcpIDsKIyA3MzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9iZnNfZnNfc2IuaCIKc3RydWN0IGJmc19zYl9pbmZvIHsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNpX2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2ZyZWViOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfZnJlZWk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9s
Zl9pb2ZmOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfc2JsazsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNpX2xmX2VibGs7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9sYXN0aTsKICAgICAg
ICBjaGFyICogc2lfaW1hcDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzaV9zYmg7CiAg
ICAgICAgc3RydWN0IGJmc19zdXBlcl9ibG9jayAqIHNpX2Jmc19zYjsKfTsKIyA3MzIgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEKIyAyMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIKI3ByYWdtYSBwYWNrKDEp
CiMgMzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgi
CnN0cnVjdCB1ZGZfc3BhcmluZ19kYXRhCnsKICAgICAgICBfX3UxNiBzX3BhY2tldF9sZW47CiAg
ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX3NwYXJfbWFwWzRdOwp9OwoKc3RydWN0IHVkZl92
aXJ0dWFsX2RhdGEKewogICAgICAgIF9fdTMyIHNfbnVtX2VudHJpZXM7CiAgICAgICAgX191MTYg
c19zdGFydF9vZmZzZXQ7Cn07CgpzdHJ1Y3QgdWRmX2JpdG1hcAp7CiAgICAgICAgX191MzIgc19l
eHRMZW5ndGg7CiAgICAgICAgX191MzIgc19leHRQb3NpdGlvbjsKICAgICAgICBfX3UxNiBzX25y
X2dyb3VwczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipzX2Jsb2NrX2JpdG1hcDsKfTsK
CnN0cnVjdCB1ZGZfcGFydF9tYXAKewogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAg
ICAgICAgc3RydWN0IHVkZl9iaXRtYXAgKnNfYml0bWFwOwogICAgICAgICAgICAgICAgc3RydWN0
IGlub2RlICpzX3RhYmxlOwogICAgICAgIH0gc191c3BhY2U7CiAgICAgICAgdW5pb24KICAgICAg
ICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX2JpdG1hcCAqc19iaXRtYXA7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNfdGFibGU7CiAgICAgICAgfSBzX2ZzcGFjZTsKICAgICAg
ICBfX3UzMiBzX3BhcnRpdGlvbl9yb290OwogICAgICAgIF9fdTMyIHNfcGFydGl0aW9uX2xlbjsK
ICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbl90eXBlOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9u
X251bTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZf
c3BhcmluZ19kYXRhIHNfc3BhcmluZzsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfdmlydHVh
bF9kYXRhIHNfdmlydHVhbDsKICAgICAgICB9IHNfdHlwZV9zcGVjaWZpYzsKICAgICAgICBfX3Uz
MiAoKnNfcGFydGl0aW9uX2Z1bmMpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBfX3UzMiwgX191MTYs
IF9fdTMyKTsKICAgICAgICBfX3UxNiBzX3ZvbHVtZXNlcW51bTsKICAgICAgICBfX3UxNiBzX3Bh
cnRpdGlvbl9mbGFnczsKfTsKCiNwcmFnbWEgcGFjaygpCgpzdHJ1Y3QgdWRmX3NiX2luZm8Kewog
ICAgICAgIHN0cnVjdCB1ZGZfcGFydF9tYXAgKnNfcGFydG1hcHM7CiAgICAgICAgX191OCBzX3Zv
bGlkZW50WzMyXTsKCgogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uczsKICAgICAgICBfX3UxNiBz
X3BhcnRpdGlvbjsKCgogICAgICAgIF9fczMyIHNfc2Vzc2lvbjsKICAgICAgICBfX3UzMiBzX2Fu
Y2hvcls0XTsKICAgICAgICBfX3UzMiBzX2xhc3RibG9jazsKCiAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICpzX2x2aWRiaDsKCgogICAgICAgIG1vZGVfdCBzX3VtYXNrOwogICAgICAgIGdpZF90
IHNfZ2lkOwogICAgICAgIHVpZF90IHNfdWlkOwoKCiAgICAgICAgdGltZV90IHNfcmVjb3JkdGlt
ZTsKCgogICAgICAgIF9fdTE2IHNfc2VyaWFsbnVtOwoKCiAgICAgICAgX191MTYgc191ZGZyZXY7
CgoKICAgICAgICBfX3UzMiBzX2ZsYWdzOwoKCiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqc19u
bHNfbWFwOwoKCiAgICAgICAgc3RydWN0IGlub2RlICpzX3ZhdDsKfTsKIyA3MzMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAxCiMgMTIgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbmNwX21vdW50LmgiCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9uY3AuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbmNwX3JlcXVlc3RfaGVhZGVyIHsK
ICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTgg
c2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191OCBmdW5jdGlvbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCgpzdHJ1Y3QgbmNwX3Jl
cGx5X2hlYWRlciB7CiAgICAgICAgX191MTYgdHlwZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3U4IHNlcXVlbmNlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f
dTggY29ubl9sb3cgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCB0YXNrIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9oaWdoIF9fYXR0cmlidXRl
X18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29tcGxldGlvbl9jb2RlIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubmVjdGlvbl9zdGF0ZSBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07
CgoKCnN0cnVjdCBuY3Bfdm9sdW1lX2luZm8gewogICAgICAgIF9fdTMyIHRvdGFsX2Jsb2NrczsK
ICAgICAgICBfX3UzMiBmcmVlX2Jsb2NrczsKICAgICAgICBfX3UzMiBwdXJnZWFibGVfYmxvY2tz
OwogICAgICAgIF9fdTMyIG5vdF95ZXRfcHVyZ2VhYmxlX2Jsb2NrczsKICAgICAgICBfX3UzMiB0
b3RhbF9kaXJfZW50cmllczsKICAgICAgICBfX3UzMiBhdmFpbGFibGVfZGlyX2VudHJpZXM7CiAg
ICAgICAgX191OCBzZWN0b3JzX3Blcl9ibG9jazsKICAgICAgICBjaGFyIHZvbHVtZV9uYW1lWygx
NikgKyAxXTsKfTsKIyAxMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
bmNwLmgiCnN0cnVjdCBud19pbmZvX3N0cnVjdCB7CiAgICAgICAgX191MzIgc3BhY2VBbGxvYyBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhdHRyaWJ1dGVzIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGZsYWdzIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTMyIGRhdGFTdHJlYW1TaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTMyIHRvdGFsU3RyZWFtU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UxNiBudW1iZXJPZlN0cmVhbXMgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAg
ICAgICAgX191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTE2IGNyZWF0aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3Uz
MiBjcmVhdG9ySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5
VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBtb2RpZnlEYXRlIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG1vZGlmaWVySUQgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191MTYgYXJjaGl2ZVRpbWUgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191MTYgYXJjaGl2ZURhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191MzIgYXJjaGl2ZXJJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3UxNiBpbmhlcml0ZWRSaWdodHNNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3Uz
MiBEb3NEaXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9sTnVt
YmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBRGF0YVNpemUgX19h
dHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRUFLZXlDb3VudCBfX2F0dHJpYnV0
ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQUtleVNpemUgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191MzIgTlNDcmVhdG9yIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTggbmFtZUxlbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4
IGVudHJ5TmFtZVsyNTZdIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDE1NiAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9uY3AuaCIKc3RydWN0IG53X21vZGlmeV9k
b3NfaW5mbyB7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAg
ICAgICAgX191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTMyIGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBt
b2RpZnlEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRp
bWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgbW9kaWZpZXJJRCBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlRGF0ZSBfX2F0dHJpYnV0
ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGltZSBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTE2IGluaGVyaXRhbmNlR3JhbnRNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTE2IGluaGVyaXRhbmNlUmV2b2tlTWFzayBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICAgICAgICBfX3UzMiBtYXhpbXVtU3BhY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
Cn07CgpzdHJ1Y3Qgbndfc2VhcmNoX3NlcXVlbmNlIHsKICAgICAgICBfX3U4IHZvbE51bWJlciBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBkaXJCYXNlIF9fYXR0cmlidXRl
X18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHNlcXVlbmNlIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwp9OwojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L25jcF9t
b3VudC5oIiAyCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbmNw
X21vdW50LmgiCnN0cnVjdCBuY3BfbW91bnRfZGF0YSB7CiAgICAgICAgaW50IHZlcnNpb247CiAg
ICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICBfX2tlcm5lbF91aWRfdCBtb3VudGVk
X3VpZDsKICAgICAgICBfX2tlcm5lbF9waWRfdCB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQg
Y2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVfb3V0
OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50
IGZsYWdzOwoKICAgICAgICBfX2tlcm5lbF91aWRfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lk
X3QgZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBmaWxlX21vZGU7CiAgICAgICAgX19rZXJu
ZWxfbW9kZV90IGRpcl9tb2RlOwp9OwoKCgpzdHJ1Y3QgbmNwX21vdW50X2RhdGFfdjQgewogICAg
ICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgoKICAgICAgICB1
bnNpZ25lZCBsb25nIG1vdW50ZWRfdWlkOwoKICAgICAgICBsb25nIHdkb2dfcGlkOwoKICAgICAg
ICB1bnNpZ25lZCBpbnQgbmNwX2ZkOwogICAgICAgIHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAg
ICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50OwoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcg
dWlkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZ2lkOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZp
bGVfbW9kZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGRpcl9tb2RlOwp9OwoKCgpzdHJ1Y3QgbmNw
X21vdW50X2RhdGFfa2VybmVsIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAg
IHVuc2lnbmVkIGludCBpbnRfZmxhZ3M7CgogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgbW91bnRl
ZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19waWQ7CiAgICAgICAgdW5zaWduZWQg
aW50IG5jcF9mZDsKICAgICAgICB1bnNpZ25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2ln
bmVkIGludCByZXRyeV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1vdW50ZWRfdm9sWygx
NikgKyAxXTsKICAgICAgICBfX2tlcm5lbF91aWQzMl90IHVpZDsKICAgICAgICBfX2tlcm5lbF9n
aWQzMl90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmlsZV9tb2RlOwogICAgICAgIF9f
a2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBuY3Bfc2VydmVyIHsKCiAg
ICAgICAgc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCBtOwoKCgogICAgICAgIF9fdTggbmFt
ZV9zcGFjZVsoNjQpICsgMl07CgogICAgICAgIHN0cnVjdCBmaWxlICpuY3BfZmlscDsKCiAgICAg
ICAgdTggc2VxdWVuY2U7CiAgICAgICAgdTggdGFzazsKICAgICAgICB1MTYgY29ubmVjdGlvbjsK
CiAgICAgICAgdTggY29tcGxldGlvbjsKICAgICAgICB1OCBjb25uX3N0YXR1czsKCgoKICAgICAg
ICBpbnQgYnVmZmVyX3NpemU7CgogICAgICAgIGludCByZXBseV9zaXplOwoKICAgICAgICBpbnQg
cGFja2V0X3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciAqcGFja2V0OwoKCiAgICAgICAgaW50
IGxvY2s7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07CgogICAgICAgIGludCBjdXJyZW50
X3NpemU7CiAgICAgICAgaW50IGhhc19zdWJmdW5jdGlvbjsKICAgICAgICBpbnQgbmNwX3JlcGx5
X3NpemU7CgogICAgICAgIGludCByb290X3NldHVwZWQ7CgoKICAgICAgICBpbnQgc2lnbl93YW50
ZWQ7CiAgICAgICAgaW50IHNpZ25fYWN0aXZlOwogICAgICAgIGNoYXIgc2lnbl9yb290WzhdOwog
ICAgICAgIGNoYXIgc2lnbl9sYXN0WzE2XTsKCgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICBpbnQgYXV0aF90eXBlOwogICAgICAgICAgICAgICAgc2l6ZV90IG9iamVjdF9uYW1lX2xl
bjsKICAgICAgICAgICAgICAgIHZvaWQqIG9iamVjdF9uYW1lOwogICAgICAgICAgICAgICAgaW50
IG9iamVjdF90eXBlOwogICAgICAgIH0gYXV0aDsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgIHNpemVfdCBsZW47CiAgICAgICAgICAgICAgICB2b2lkKiBkYXRhOwogICAgICAgIH0g
cHJpdjsKCgogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc192b2w7CiAgICAgICAgc3RydWN0
IG5sc190YWJsZSAqbmxzX2lvOwoKCiAgICAgICAgaW50IGRlbnRyeV90dGw7CgoKICAgICAgICB1
bnNpZ25lZCBpbnQgZmxhZ3M7Cn07CiMgOTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbmNwX2ZzX3NiLmgiCnN0YXRpYyBpbmxpbmUgaW50IG5jcF9jb25uX3ZhbGlkKHN0
cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICByZXR1cm4gKChzZXJ2ZXItPmNvbm5f
c3RhdHVzICYgMHgxMSkgPT0gMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuY3BfaW52YWxpZGF0
ZV9jb25uKHN0cnVjdCBuY3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICBzZXJ2ZXItPmNvbm5f
c3RhdHVzIHw9IDB4MDE7Cn0KIyA3MzQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
dXNiZGV2X2ZzX3NiLmgiIDEKc3RydWN0IHVzYmRldl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3Qg
bGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaWxpc3Q7CiAgICAgICAg
dWlkX3QgZGV2dWlkOwogICAgICAgIGdpZF90IGRldmdpZDsKICAgICAgICB1bW9kZV90IGRldm1v
ZGU7CiAgICAgICAgdWlkX3QgYnVzdWlkOwogICAgICAgIGdpZF90IGJ1c2dpZDsKICAgICAgICB1
bW9kZV90IGJ1c21vZGU7CiAgICAgICAgdWlkX3QgbGlzdHVpZDsKICAgICAgICBnaWRfdCBsaXN0
Z2lkOwogICAgICAgIHVtb2RlX3QgbGlzdG1vZGU7Cn07CiMgNzM1ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9qZmZzMl9mc19zYi5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIiAxCiMgMTMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIgpzdHJ1Y3QgY29tcGxl
dGlvbiB7CiAgICAgICAgdW5zaWduZWQgaW50IGRvbmU7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk
X3Qgd2FpdDsKfTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2NvbXBsZXRpb24oc3Ry
dWN0IGNvbXBsZXRpb24gKngpCnsKICAgICAgICB4LT5kb25lID0gMDsKICAgICAgICBpbml0X3dh
aXRxdWV1ZV9oZWFkKCZ4LT53YWl0KTsKfQoKZXh0ZXJuIHZvaWQgd2FpdF9mb3JfY29tcGxldGlv
bl9SZGMwMTY0ODgoc3RydWN0IGNvbXBsZXRpb24gKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwpleHRlcm4gdm9pZCBjb21wbGV0ZV9SOTQyNjEzYWQoc3RydWN0IGNvbXBsZXRpb24gKikg
X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBjb21wbGV0ZV9hbGwoc3Ry
dWN0IGNvbXBsZXRpb24gKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDkgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDIxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3NiLmgiCnN0cnVj
dCBqZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXRkX2luZm8gKm10ZDsKCiAgICAgICAg
X191MzIgaGlnaGVzdF9pbm87CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHNw
aW5sb2NrX3Qgbm9kZWxpc3RfbG9jazsKCgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2Nf
dGFzazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGdjX3RocmVhZF9zdGFydDsKICAgICAgICBz
dHJ1Y3QgY29tcGxldGlvbiBnY190aHJlYWRfZXhpdDsKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBo
b3JlIGFsbG9jX3NlbTsKCgoKCiAgICAgICAgX191MzIgZmxhc2hfc2l6ZTsKICAgICAgICBfX3Uz
MiB1c2VkX3NpemU7CiAgICAgICAgX191MzIgZGlydHlfc2l6ZTsKICAgICAgICBfX3UzMiBmcmVl
X3NpemU7CiAgICAgICAgX191MzIgZXJhc2luZ19zaXplOwogICAgICAgIF9fdTMyIGJhZF9zaXpl
OwogICAgICAgIF9fdTMyIHNlY3Rvcl9zaXplOwoKCgogICAgICAgIF9fdTMyIG5yX2ZyZWVfYmxv
Y2tzOwogICAgICAgIF9fdTMyIG5yX2VyYXNpbmdfYmxvY2tzOwoKICAgICAgICBfX3UzMiBucl9i
bG9ja3M7CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmJsb2NrczsKCiAgICAgICAg
c3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKm5leHRibG9jazsKCiAgICAgICAgc3RydWN0IGpmZnMy
X2VyYXNlYmxvY2sgKmdjYmxvY2s7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY2xlYW5fbGlz
dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X2xpc3Q7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBlcmFzaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5k
aW5nX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9jb21wbGV0ZV9saXN0Owog
ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgYmFkX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBiYWRfdXNlZF9saXN0OwoKICAg
ICAgICBzcGlubG9ja190IGVyYXNlX2NvbXBsZXRpb25fbG9jazsKCiAgICAgICAgd2FpdF9xdWV1
ZV9oZWFkX3QgZXJhc2Vfd2FpdDsKICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlu
b2NhY2hlX2xpc3RbMV07CiAgICAgICAgc3BpbmxvY2tfdCBpbm9jYWNoZV9sb2NrOwp9OwojIDcz
NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIiAyCgpleHRlcm4g
c3RydWN0IGxpc3RfaGVhZCBzdXBlcl9ibG9ja3M7CmV4dGVybiBzcGlubG9ja190IHNiX2xvY2s7
CgoKCnN0cnVjdCBzdXBlcl9ibG9jayB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2xpc3Q7
CiAgICAgICAga2Rldl90IHNfZGV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja3NpemU7
CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2Jsb2Nrc2l6ZV9iaXRzOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgc19kaXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzX21heGJ5dGVzOwogICAg
ICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpzX3R5cGU7CiAgICAgICAgc3RydWN0IHN1cGVy
X29wZXJhdGlvbnMgKnNfb3A7CiAgICAgICAgc3RydWN0IGRxdW90X29wZXJhdGlvbnMgKmRxX29w
OwogICAgICAgIHN0cnVjdCBxdW90YWN0bF9vcHMgKnNfcWNvcDsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX21hZ2ljOwogICAgICAgIHN0cnVj
dCBkZW50cnkgKnNfcm9vdDsKICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIHNfdW1vdW50Owog
ICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc19sb2NrOwogICAgICAgIGludCBzX2NvdW50OwogICAg
ICAgIGF0b21pY190IHNfYWN0aXZlOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZGlydHk7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2xvY2tlZF9pbm9kZXM7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBzX2ZpbGVzOwoKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpzX2JkZXY7
CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2luc3RhbmNlczsKICAgICAgICBzdHJ1Y3QgcXVv
dGFfaW5mbyBzX2RxdW90OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
bWluaXhfc2JfaW5mbyBtaW5peF9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQyX3NiX2lu
Zm8gZXh0Ml9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX3NiX2luZm8gZXh0M19zYjsK
ICAgICAgICAgICAgICAgIHN0cnVjdCBocGZzX3NiX2luZm8gaHBmc19zYjsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBudGZzX3NiX2luZm8gbnRmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBt
c2Rvc19zYl9pbmZvIG1zZG9zX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGlzb2ZzX3NiX2lu
Zm8gaXNvZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX3NiX2luZm8gbmZzX3NiOwog
ICAgICAgICAgICAgICAgc3RydWN0IHN5c3Zfc2JfaW5mbyBzeXN2X3NiOwogICAgICAgICAgICAg
ICAgc3RydWN0IGFmZnNfc2JfaW5mbyBhZmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHVm
c19zYl9pbmZvIHVmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBlZnNfc2JfaW5mbyBlZnNf
c2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2htZW1fc2JfaW5mbyBzaG1lbV9zYjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCByb21mc19zYl9pbmZvIHJvbWZzX3NiOwogICAgICAgICAgICAgICAg
c3RydWN0IHNtYl9zYl9pbmZvIHNtYmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGhmc19z
Yl9pbmZvIGhmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZGZzX3NiX2luZm8gYWRmc19z
YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0X3NiX2luZm8gcW54NF9zYjsKICAgICAgICAg
ICAgICAgIHN0cnVjdCByZWlzZXJmc19zYl9pbmZvIHJlaXNlcmZzX3NiOwogICAgICAgICAgICAg
ICAgc3RydWN0IGJmc19zYl9pbmZvIGJmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZf
c2JfaW5mbyB1ZGZfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmNwX3NlcnZlciBuY3Bmc19z
YjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JkZXZfc2JfaW5mbyB1c2JkZXZmc19zYjsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBqZmZzMl9zYl9pbmZvIGpmZnMyX3NiOwogICAgICAgICAgICAg
ICAgc3RydWN0IGNyYW1mc19zYl9pbmZvIGNyYW1mc19zYjsKICAgICAgICAgICAgICAgIHZvaWQg
KmdlbmVyaWNfc2JwOwogICAgICAgIH0gdTsKCgoKCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBz
X3Zmc19yZW5hbWVfc2VtOwojIDgxMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9mcy5oIgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc19uZnNkX2ZyZWVfcGF0aF9zZW07
Cn07CgoKCgpleHRlcm4gaW50IHZmc19jcmVhdGVfUmU4YjUyYmU1KHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rZGlyX1IzYzllNzVjYShzdHJ1
Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19ta25vZF9S
OThmNTZlMjcoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgaW50LCBkZXZfdCk7CmV4
dGVybiBpbnQgdmZzX3N5bWxpbmtfUjZlNjJkMTVlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVu
dHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2xpbmtfUjNmODVlZDNmKHN0cnVj
dCBkZW50cnkgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQg
dmZzX3JtZGlyX1I5YjAzMmVjZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0
ZXJuIGludCB2ZnNfdW5saW5rX1IzMjE2MzhmZChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy
eSAqKTsKZXh0ZXJuIGludCB2ZnNfcmVuYW1lX1IyNTQ5M2I0YyhzdHJ1Y3QgaW5vZGUgKiwgc3Ry
dWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKIyA4NDUgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBpbnQgKCpm
aWxsZGlyX3QpKHZvaWQgKiwgY29uc3QgY2hhciAqLCBpbnQsIGxvZmZfdCwgaW5vX3QsIHVuc2ln
bmVkKTsKCnN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqb3Bl
bikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpyZWxlYXNl
KSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmlvY3RsKSAo
c3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsK
ICAgICAgICBpbnQgKCpjaGVja19tZWRpYV9jaGFuZ2UpIChrZGV2X3QpOwogICAgICAgIGludCAo
KnJldmFsaWRhdGUpIChrZGV2X3QpOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwp9OwoK
CgoKCgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25l
cjsKICAgICAgICBsb2ZmX3QgKCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGludCk7
CiAgICAgICAgc3NpemVfdCAoKnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwg
bG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSkgKHN0cnVjdCBmaWxlICosIGNvbnN0
IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAgICAgICAgaW50ICgqcmVhZGRpcikgKHN0cnVj
dCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKICAgICAgICB1bnNpZ25lZCBpbnQgKCpwb2xs
KSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwogICAgICAgIGlu
dCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwg
dW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVj
dCB2bV9hcmVhX3N0cnVjdCAqKTsKICAgICAgICBpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICos
IHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKik7CiAg
ICAgICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAg
ICAgICBpbnQgKCpmc3luYykgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50IGRh
dGFzeW5jKTsKICAgICAgICBpbnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICosIGludCk7
CiAgICAgICAgaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9j
ayAqKTsKICAgICAgICBzc2l6ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1
Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3
cml0ZXYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9u
ZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCpzZW5kcGFnZSkgKHN0cnVjdCBmaWxlICos
IHN0cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3QgKiwgaW50KTsKICAgICAgICB1bnNp
Z25lZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWFfUjUxNDdlNDIzKShzdHJ1Y3QgZmlsZSAqLCB1
bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25n
KTsKfTsKCnN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHsKICAgICAgICBpbnQgKCpjcmVhdGUpIChz
dHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosaW50KTsKICAgICAgICBzdHJ1Y3QgZGVudHJ5
ICogKCpsb29rdXApIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGlu
dCAoKmxpbmspIChzdHJ1Y3QgZGVudHJ5ICosc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAq
KTsKICAgICAgICBpbnQgKCp1bmxpbmspIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICop
OwogICAgICAgIGludCAoKnN5bWxpbmspIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICos
Y29uc3QgY2hhciAqKTsKICAgICAgICBpbnQgKCpta2RpcikgKHN0cnVjdCBpbm9kZSAqLHN0cnVj
dCBkZW50cnkgKixpbnQpOwogICAgICAgIGludCAoKnJtZGlyKSAoc3RydWN0IGlub2RlICosc3Ry
dWN0IGRlbnRyeSAqKTsKICAgICAgICBpbnQgKCpta25vZCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVj
dCBkZW50cnkgKixpbnQsaW50KTsKICAgICAgICBpbnQgKCpyZW5hbWUpIChzdHJ1Y3QgaW5vZGUg
Kiwgc3RydWN0IGRlbnRyeSAqLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUg
Kiwgc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICBpbnQgKCpyZWFkbGluaykgKHN0cnVjdCBkZW50
cnkgKiwgY2hhciAqLGludCk7CiAgICAgICAgaW50ICgqZm9sbG93X2xpbmspIChzdHJ1Y3QgZGVu
dHJ5ICosIHN0cnVjdCBuYW1laWRhdGEgKik7CiAgICAgICAgdm9pZCAoKnRydW5jYXRlKSAoc3Ry
dWN0IGlub2RlICopOwogICAgICAgIGludCAoKnBlcm1pc3Npb25fUmM0MzI1ODQ5KSAoc3RydWN0
IGlub2RlICosIGludCk7CiAgICAgICAgaW50ICgqcmV2YWxpZGF0ZSkgKHN0cnVjdCBkZW50cnkg
Kik7CiAgICAgICAgaW50ICgqc2V0YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRy
ICopOwogICAgICAgIGludCAoKmdldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0
ciAqKTsKICAgICAgICBpbnQgKCpzZXR4YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hh
ciAqLCB2b2lkICosIHNpemVfdCwgaW50KTsKICAgICAgICBzc2l6ZV90ICgqZ2V0eGF0dHIpIChz
dHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqLCBzaXplX3QpOwogICAgICAgIHNz
aXplX3QgKCpsaXN0eGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgc2l6ZV90KTsKICAg
ICAgICBpbnQgKCpyZW1vdmV4YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hhciAqKTsK
fTsKCnN0cnVjdCBzZXFfZmlsZTsKCgoKCgpzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyB7CiAgICAg
ICAgc3RydWN0IGlub2RlICooKmFsbG9jX2lub2RlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsK
ICAgICAgICB2b2lkICgqZGVzdHJveV9pbm9kZSkoc3RydWN0IGlub2RlICopOwoKICAgICAgICB2
b2lkICgqcmVhZF9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKCgoKCgoKCiAgICAgICAgdm9pZCAo
KnJlYWRfaW5vZGUyKSAoc3RydWN0IGlub2RlICosIHZvaWQgKikgOwogICAgICAgIHZvaWQgKCpk
aXJ0eV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfaW5vZGUp
IChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKICAgICAgICB2b2lkICgqcHV0X2lub2RlKSAoc3RydWN0
IGlub2RlICopOwogICAgICAgIHZvaWQgKCpkZWxldGVfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7
CiAgICAgICAgdm9pZCAoKnB1dF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAg
ICB2b2lkICgqd3JpdGVfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAgICAgICAgaW50
ICgqc3luY19mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVf
c3VwZXJfbG9ja2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp1bmxv
Y2tmc19SMmNlYjFiZGIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiAgICAgICAgaW50ICgqc3Rh
dGZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBzdGF0ZnMgKik7CiAgICAgICAgaW50
ICgqcmVtb3VudF9mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQgKiwgY2hhciAqKTsKICAg
ICAgICB2b2lkICgqY2xlYXJfaW5vZGVfUjNiZDNhZmI4KSAoc3RydWN0IGlub2RlICopOwogICAg
ICAgIHZvaWQgKCp1bW91bnRfYmVnaW4pIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CiMgOTYxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiAgICAgICAgc3RydWN0
IGRlbnRyeSAqICgqZmhfdG9fZGVudHJ5KShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBfX3UzMiAq
ZmgsIGludCBsZW4sIGludCBmaHR5cGUsIGludCBwYXJlbnQpOwogICAgICAgIGludCAoKmRlbnRy
eV90b19maCkoc3RydWN0IGRlbnRyeSAqLCBfX3UzMiAqZmgsIGludCAqbGVucCwgaW50IG5lZWRf
cGFyZW50KTsKICAgICAgICBpbnQgKCpzaG93X29wdGlvbnMpKHN0cnVjdCBzZXFfZmlsZSAqLCBz
dHJ1Y3QgdmZzbW91bnQgKik7Cn07CiMgOTc2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L2ZzLmgiCmV4dGVybiB2b2lkIF9fbWFya19pbm9kZV9kaXJ0eV9SNzM2NDdiYWEo
c3RydWN0IGlub2RlICosIGludCk7CnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2lub2RlX2RpcnR5
KHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5vZGVfZGlydHlfUjczNjQ3
YmFhKGlub2RlLCAoMSB8IDIgfCA0KSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2lub2Rl
X2RpcnR5X3N5bmMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9kZV9k
aXJ0eV9SNzM2NDdiYWEoaW5vZGUsIDEpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19pbm9k
ZV9kaXJ0eV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lub2Rl
X2RpcnR5X1I3MzY0N2JhYShpbm9kZSwgNCk7Cn0KCnN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHsK
ICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIGludCBmc19mbGFnczsKICAgICAgICBz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKigqcmVhZF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2
b2lkICosIGludCk7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXI7CiAgICAgICAgc3RydWN0
IGZpbGVfc3lzdGVtX3R5cGUgKiBuZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnNfc3Vw
ZXJzOwp9OwojIDEwMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnMu
aCIKZXh0ZXJuIGludCByZWdpc3Rlcl9maWxlc3lzdGVtX1I4MGMxMDEyOShzdHJ1Y3QgZmlsZV9z
eXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2ZpbGVzeXN0ZW1fUjFkMTI0YTZh
KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50ICprZXJu
X21vdW50X1IxY2E5ZWUyOChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCBt
YXlfdW1vdW50X1I2MTliNWQ2NihzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBsb25nIGRvX21v
dW50KGNoYXIgKiwgY2hhciAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CgoKCmV4
dGVybiBpbnQgdmZzX3N0YXRmc19SYzJlNjBkZWUoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVj
dCBzdGF0ZnMgKik7CiMgMTA0MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9mcy5oIgpleHRlcm4gaW50IGxvY2tzX21hbmRhdG9yeV9sb2NrZWQoc3RydWN0IGlub2RlICop
OwpleHRlcm4gaW50IGxvY2tzX21hbmRhdG9yeV9hcmVhX1I2ZmY3MzZjMihpbnQsIHN0cnVjdCBp
bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIHNpemVfdCk7CiMgMTA1MiAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIGludCBsb2Nr
c192ZXJpZnlfbG9ja2VkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBpZiAoKCgoaW5v
ZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAw
IHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5k
YXRvcnlfbG9ja2VkKGlub2RlKTsKICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBp
bnQgbG9ja3NfdmVyaWZ5X2FyZWEoaW50IHJlYWRfd3JpdGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlICpmaWxwLCBs
b2ZmX3Qgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
Y291bnQpCnsKICAgICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5z
X2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9
PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYV9S
NmZmNzM2YzIocmVhZF93cml0ZSwgaW5vZGUsIGZpbHAsIG9mZnNldCwgY291bnQpOwogICAgICAg
IHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBsb2Nrc192ZXJpZnlfdHJ1bmNhdGUoc3Ry
dWN0IGlub2RlICppbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGZpbGUgKmZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZmZf
dCBzaXplKQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrICYmICgoKGlub2RlKS0+aV9zYi0+
c19mbGFncyAmICg2NCkpICYmICgoaW5vZGUpLT5pX21vZGUgJiAoMDAwMjAwMCB8IDAwMDEwKSkg
PT0gMDAwMjAwMCkpCiAgICAgICAgICAgICAgICByZXR1cm4gbG9ja3NfbWFuZGF0b3J5X2FyZWFf
UjZmZjczNmMyKAogICAgICAgICAgICAgICAgICAgICAgICAyLCBpbm9kZSwgZmlscCwKICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZSA8IGlub2RlLT5pX3NpemUgPyBzaXplIDogaW5vZGUtPmlf
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgKHNpemUgPCBpbm9kZS0+aV9zaXplID8gaW5v
ZGUtPmlfc2l6ZSAtIHNpemUKICAgICAgICAgICAgICAgICAgICAgICAgIDogc2l6ZSAtIGlub2Rl
LT5pX3NpemUpCiAgICAgICAgICAgICAgICApOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMg
aW5saW5lIGludCBnZXRfbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgaW50IG1v
ZGUpCnsKICAgICAgICBpZiAoaW5vZGUtPmlfZmxvY2spCiAgICAgICAgICAgICAgICByZXR1cm4g
X19nZXRfbGVhc2VfUjRhZDQ0MjkyKGlub2RlLCBtb2RlKTsKICAgICAgICByZXR1cm4gMDsKfQoK
CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX29wZW4oY29uc3QgY2hhciAq
LCBpbnQsIGludCk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfY2xvc2Vf
UjI2OGNjNmEyKHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgZG9fdHJ1bmNhdGUoc3RydWN0IGRl
bnRyeSAqLCBsb2ZmX3Qgc3RhcnQpOwoKZXh0ZXJuIHN0cnVjdCBmaWxlICpmaWxwX29wZW5fUmZh
NjBjNTViKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBkZW50
cnlfb3Blbl9SMjEzMzJmYTUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgdmZzbW91bnQgKiwgaW50
KTsKZXh0ZXJuIGludCBmaWxwX2Nsb3NlX1JjZDdjYzRkZChzdHJ1Y3QgZmlsZSAqLCBmbF9vd25l
cl90IGlkKTsKZXh0ZXJuIGNoYXIgKiBnZXRuYW1lX1I3YzYwZDY2ZShjb25zdCBjaGFyICopOwoK
CmV4dGVybiB2b2lkIHZmc19jYWNoZXNfaW5pdCh1bnNpZ25lZCBsb25nKTsKCgoKCmVudW0ge0JE
RVZfRklMRSwgQkRFVl9TV0FQLCBCREVWX0ZTLCBCREVWX1JBV307CmV4dGVybiBpbnQgcmVnaXN0
ZXJfYmxrZGV2X1I0ZTQ1MDUzZSh1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwgc3RydWN0IGJs
b2NrX2RldmljZV9vcGVyYXRpb25zICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfYmxrZGV2X1Jl
YWMxYzRhZih1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBzdHJ1Y3QgYmxvY2tf
ZGV2aWNlICpiZGdldF9SYzIwOWU3YTIoZGV2X3QpOwpleHRlcm4gaW50IGJkX2FjcXVpcmUoc3Ry
dWN0IGlub2RlICppbm9kZSk7CmV4dGVybiB2b2lkIGJkX2ZvcmdldChzdHJ1Y3QgaW5vZGUgKmlu
b2RlKTsKZXh0ZXJuIHZvaWQgYmRwdXRfUjk1NjRjY2NkKHN0cnVjdCBibG9ja19kZXZpY2UgKik7
CmV4dGVybiBzdHJ1Y3QgY2hhcl9kZXZpY2UgKmNkZ2V0X1JkZWU3MGYzZShkZXZfdCk7CmV4dGVy
biB2b2lkIGNkcHV0X1JkN2FiNGYxZChzdHJ1Y3QgY2hhcl9kZXZpY2UgKik7CmV4dGVybiBpbnQg
YmxrZGV2X29wZW5fUmQwNGJmMWM5KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0
ZXJuIGludCBibGtkZXZfY2xvc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRl
cm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfYmxrX2ZvcHNfUmYwMzBmYjQwOwpleHRlcm4g
c3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyBkZWZfYmxrX2FvcHM7CmV4dGVybiBzdHJ1
Y3QgZmlsZV9vcGVyYXRpb25zIGRlZl9maWZvX2ZvcHM7CmV4dGVybiBpbnQgaW9jdGxfYnlfYmRl
dl9SNWE4YTI3MTAoc3RydWN0IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9u
Zyk7CmV4dGVybiBpbnQgYmxrZGV2X2dldF9SZTQ5OGI1YzUoc3RydWN0IGJsb2NrX2RldmljZSAq
LCBtb2RlX3QsIHVuc2lnbmVkLCBpbnQpOwpleHRlcm4gaW50IGJsa2Rldl9wdXRfUjgzNjNkODA2
KHN0cnVjdCBibG9ja19kZXZpY2UgKiwgaW50KTsKCgpleHRlcm4gY29uc3Qgc3RydWN0IGJsb2Nr
X2RldmljZV9vcGVyYXRpb25zICpnZXRfYmxrZm9wcyh1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50
IHJlZ2lzdGVyX2NocmRldl9SODFhYWI2M2EodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICosIHN0
cnVjdCBmaWxlX29wZXJhdGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9jaHJkZXZfUmMx
OTJkNDkxKHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBjaHJkZXZfb3Bl
bihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4dGVybiBjb25zdCBjaGFyICogYmRl
dm5hbWVfUmQwNDc4MmU2KGtkZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICogY2Rldm5hbWVfUjk3
NTQ3NDFkKGtkZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWVfUmMyNThjOTA2KGtk
ZXZfdCk7CmV4dGVybiB2b2lkIGluaXRfc3BlY2lhbF9pbm9kZV9SYTU0ZTc5ZDQoc3RydWN0IGlu
b2RlICosIHVtb2RlX3QsIGludCk7CgoKZXh0ZXJuIHZvaWQgbWFrZV9iYWRfaW5vZGVfUmU5Zjcy
YjU0KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBpc19iYWRfaW5vZGVfUjAzODg3ODIyKHN0
cnVjdCBpbm9kZSAqKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfZmlmb19m
b3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9maWZvX2ZvcHM7CmV4dGVy
biBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJkd3JfZmlmb19mb3BzOwpleHRlcm4gc3RydWN0IGZp
bGVfb3BlcmF0aW9ucyByZWFkX3BpcGVfZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlv
bnMgd3JpdGVfcGlwZV9mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZHdyX3Bp
cGVfZm9wczsKCmV4dGVybiBpbnQgZnNfbWF5X3JlbW91bnRfcm8oc3RydWN0IHN1cGVyX2Jsb2Nr
ICopOwoKZXh0ZXJuIGludCB0cnlfdG9fZnJlZV9idWZmZXJzX1JkZjM1MTUwMChzdHJ1Y3QgcGFn
ZSAqLCB1bnNpZ25lZCBpbnQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZv
aWQgcmVmaWxlX2J1ZmZlcl9SZTYzMjY2NjAoc3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmKTsKZXh0
ZXJuIHZvaWQgY3JlYXRlX2VtcHR5X2J1ZmZlcnNfUjUxMWVkZjViKHN0cnVjdCBwYWdlICosIGtk
ZXZfdCwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIGVuZF9idWZmZXJfaW9fc3luYyhzdHJ1
Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOwoKCmV4dGVybiB2b2lkIHNldF9idWZm
ZXJfYXN5bmNfaW9fUjZhMTkwODA4KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIDsKCgoKCgoKc3Rh
dGljIGlubGluZSB2b2lkIGdldF9iaChzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAg
IGF0b21pY19pbmMoJihiaCktPmJfY291bnQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcHV0X2Jo
KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
IjogOiA6Im1lbW9yeSIpOwogICAgICAgIGF0b21pY19kZWMoJmJoLT5iX2NvdW50KTsKfQoKCgoK
c3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX3VwdG9kYXRlKHN0cnVjdCBidWZmZXJfaGVh
ZCAqIGJoLCBpbnQgb24pCnsKICAgICAgICBpZiAob24pCiAgICAgICAgICAgICAgICBzZXRfYml0
KEJIX1VwdG9kYXRlLCAmYmgtPmJfc3RhdGUpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
IGNsZWFyX2JpdChCSF9VcHRvZGF0ZSwgJmJoLT5iX3N0YXRlKTsKfQoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgX19tYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQp7CiAgICAg
ICAgcmVmaWxlX2J1ZmZlcl9SZTYzMjY2NjAoYmgpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFy
a19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBpZiAodGVz
dF9hbmRfY2xlYXJfYml0KEJIX0RpcnR5LCAmKGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAg
ICBfX21hcmtfYnVmZmVyX2NsZWFuKGJoKTsKfQoKZXh0ZXJuIHZvaWQgX19tYXJrX2RpcnR5KHN0
cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJu
IHZvaWQgX19tYXJrX2J1ZmZlcl9kaXJ0eV9SYmFiMDk1NWMoc3RydWN0IGJ1ZmZlcl9oZWFkICpi
aCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBtYXJrX2J1ZmZlcl9k
aXJ0eV9SYWM0NTZlZjQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwoKZXh0ZXJuIHZvaWQgYnVmZmVyX2luc2VydF9saXN0X1I0MmJjODMwYShzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGxpc3RfaGVhZCAqKSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CgpzdGF0aWMgaW5saW5lIHZvaWQgYnVmZmVyX2luc2VydF9pbm9kZV9xdWV1ZShz
dHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgYnVm
ZmVyX2luc2VydF9saXN0X1I0MmJjODMwYShiaCwgJmlub2RlLT5pX2RpcnR5X2J1ZmZlcnMpOwp9
CgpzdGF0aWMgaW5saW5lIHZvaWQgYnVmZmVyX2luc2VydF9pbm9kZV9kYXRhX3F1ZXVlKHN0cnVj
dCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBidWZmZXJf
aW5zZXJ0X2xpc3RfUjQyYmM4MzBhKGJoLCAmaW5vZGUtPmlfZGlydHlfZGF0YV9idWZmZXJzKTsK
fQoKc3RhdGljIGlubGluZSBpbnQgYXRvbWljX3NldF9idWZmZXJfZGlydHkoc3RydWN0IGJ1ZmZl
cl9oZWFkICpiaCkKewogICAgICAgIHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KEJIX0RpcnR5LCAm
YmgtPmJfc3RhdGUpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfYXN5bmMoc3Ry
dWN0IGJ1ZmZlcl9oZWFkICogYmgsIGludCBvbikKewogICAgICAgIGlmIChvbikKICAgICAgICAg
ICAgICAgIHNldF9iaXQoQkhfQXN5bmMsICZiaC0+Yl9zdGF0ZSk7CiAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgY2xlYXJfYml0KEJIX0FzeW5jLCAmYmgtPmJfc3RhdGUpOwp9CgpzdGF0aWMg
aW5saW5lIHZvaWQgc2V0X2J1ZmZlcl9hdHRhY2hlZChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQp7
CiAgICAgICAgc2V0X2JpdChCSF9BdHRhY2hlZCwgJmJoLT5iX3N0YXRlKTsKfQoKc3RhdGljIGlu
bGluZSB2b2lkIGNsZWFyX2J1ZmZlcl9hdHRhY2hlZChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQp7
CiAgICAgICAgY2xlYXJfYml0KEJIX0F0dGFjaGVkLCAmYmgtPmJfc3RhdGUpOwp9CgpzdGF0aWMg
aW5saW5lIGludCBidWZmZXJfYXR0YWNoZWQoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAg
ICAgIHJldHVybiAoX19idWlsdGluX2NvbnN0YW50X3AoQkhfQXR0YWNoZWQpID8gY29uc3RhbnRf
dGVzdF9iaXQoKEJIX0F0dGFjaGVkKSwoJmJoLT5iX3N0YXRlKSkgOiB2YXJpYWJsZV90ZXN0X2Jp
dCgoQkhfQXR0YWNoZWQpLCgmYmgtPmJfc3RhdGUpKSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCBidWZmZXJfSU9fZXJyb3Ioc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBt
YXJrX2J1ZmZlcl9jbGVhbihiaCk7CgoKCiAgICAgICAgYmgtPmJfZW5kX2lvKGJoLCAwKTsKfQoK
c3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5X2lub2RlKHN0cnVjdCBidWZmZXJf
aGVhZCAqYmgsIHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBtYXJrX2J1ZmZlcl9kaXJ0
eV9SYWM0NTZlZjQoYmgpOwogICAgICAgIGJ1ZmZlcl9pbnNlcnRfaW5vZGVfcXVldWUoYmgsIGlu
b2RlKTsKfQoKZXh0ZXJuIHZvaWQgc2V0X2J1ZmZlcl9mbHVzaHRpbWVfUmYyNDg2MjFmKHN0cnVj
dCBidWZmZXJfaGVhZCAqKTsKZXh0ZXJuIHZvaWQgYmFsYW5jZV9kaXJ0eSh2b2lkKTsKZXh0ZXJu
IGludCBjaGVja19kaXNrX2NoYW5nZV9SMTFkNDA3NmQoa2Rldl90KTsKZXh0ZXJuIGludCBpbnZh
bGlkYXRlX2lub2Rlc19SNTQ1ZmE4ODkoc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gaW50
IGludmFsaWRhdGVfZGV2aWNlX1IyNWE0YjBiMihrZGV2X3QsIGludCk7CmV4dGVybiB2b2lkIGlu
dmFsaWRhdGVfaW5vZGVfcGFnZXNfUjU1MmMzYjVhKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZv
aWQgaW52YWxpZGF0ZV9pbm9kZV9wYWdlczIoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVy
biB2b2lkIGludmFsaWRhdGVfaW5vZGVfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJu
IHZvaWQgaW52YWxpZGF0ZV9iZGV2X1JlZDk0NjM1NyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIGlu
dCk7CmV4dGVybiB2b2lkIF9faW52YWxpZGF0ZV9idWZmZXJzX1I5OGY1MTUzOChrZGV2X3QgZGV2
LCBpbnQpOwpleHRlcm4gdm9pZCBzeW5jX2lub2RlcyhrZGV2X3QpOwpleHRlcm4gdm9pZCBzeW5j
X3VubG9ja2VkX2lub2Rlcyh2b2lkKTsKZXh0ZXJuIHZvaWQgd3JpdGVfaW5vZGVfbm93X1I1MzZl
MGNmZChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBzeW5jX2J1ZmZlcnMoa2Rldl90
LCBpbnQpOwpleHRlcm4gdm9pZCBzeW5jX2Rldl9SZmMwYjBmNDkoa2Rldl90KTsKZXh0ZXJuIGlu
dCBmc3luY19kZXZfUjhlYTEyOGUyKGtkZXZfdCk7CmV4dGVybiBpbnQgZnN5bmNfZGV2X2xvY2tm
c19SMWI0YmY0NDEoa2Rldl90KTsKZXh0ZXJuIGludCBmc3luY19zdXBlcihzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKik7CmV4dGVybiBpbnQgZnN5bmNfbm9fc3VwZXJfUjU3NTIwNjQ0KGtkZXZfdCk7CmV4
dGVybiB2b2lkIHN5bmNfaW5vZGVzX3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGlu
dCBmc3luY19idWZmZXJzX2xpc3RfUmQyZTllYWI4KHN0cnVjdCBsaXN0X2hlYWQgKik7CnN0YXRp
YyBpbmxpbmUgaW50IGZzeW5jX2lub2RlX2J1ZmZlcnMoc3RydWN0IGlub2RlICppbm9kZSkKewog
ICAgICAgIHJldHVybiBmc3luY19idWZmZXJzX2xpc3RfUmQyZTllYWI4KCZpbm9kZS0+aV9kaXJ0
eV9idWZmZXJzKTsKfQpzdGF0aWMgaW5saW5lIGludCBmc3luY19pbm9kZV9kYXRhX2J1ZmZlcnMo
c3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIHJldHVybiBmc3luY19idWZmZXJzX2xpc3Rf
UmQyZTllYWI4KCZpbm9kZS0+aV9kaXJ0eV9kYXRhX2J1ZmZlcnMpOwp9CmV4dGVybiBpbnQgaW5v
ZGVfaGFzX2J1ZmZlcnMoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGZpbGVtYXBfZmRhdGFz
eW5jX1JlMGJjYWUxNyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKZXh0ZXJuIGludCBmaWxlbWFw
X2ZkYXRhd2FpdF9SOTY4ZDZkMDEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiB2b2lk
IHN5bmNfc3VwZXJzKGtkZXZfdCBkZXYsIGludCB3YWl0KTsKZXh0ZXJuIHZvaWQgc3luY19zdXBl
cnNfbG9ja2ZzKGtkZXZfdCk7CmV4dGVybiB2b2lkIHVubG9ja2ZzX1IyY2ViMWJkYihrZGV2X3Qp
OwpleHRlcm4gaW50IGJtYXBfUjhjYzMwZjc1KHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4g
aW50IG5vdGlmeV9jaGFuZ2VfUjIyMmQxOWY0KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRy
ICopOwpleHRlcm4gaW50IHBlcm1pc3Npb25fUmM0MzI1ODQ5KHN0cnVjdCBpbm9kZSAqLCBpbnQp
OwpleHRlcm4gaW50IHZmc19wZXJtaXNzaW9uX1I4ODE4ZTY5OShzdHJ1Y3QgaW5vZGUgKiwgaW50
KTsKZXh0ZXJuIGludCBnZXRfd3JpdGVfYWNjZXNzX1JjYjg5NTliNChzdHJ1Y3QgaW5vZGUgKik7
CmV4dGVybiBpbnQgZGVueV93cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKik7CnN0YXRpYyBpbmxp
bmUgdm9pZCBwdXRfd3JpdGVfYWNjZXNzKHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAgICAgICAg
YXRvbWljX2RlYygmaW5vZGUtPmlfd3JpdGVjb3VudCk7Cn0Kc3RhdGljIGlubGluZSB2b2lkIGFs
bG93X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqZmlsZSkKewogICAgICAgIGlmIChmaWxlKQog
ICAgICAgICAgICAgICAgYXRvbWljX2luYygmZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfd3Jp
dGVjb3VudCk7Cn0KZXh0ZXJuIGludCBkb19waXBlX1JmN2U5ZWQ3MChpbnQgKik7CgpleHRlcm4g
aW50IG9wZW5fbmFtZWkoY29uc3QgY2hhciAqLCBpbnQsIGludCwgc3RydWN0IG5hbWVpZGF0YSAq
KTsKCmV4dGVybiBpbnQga2VybmVsX3JlYWRfUjI1OTI0NDg2KHN0cnVjdCBmaWxlICosIHVuc2ln
bmVkIGxvbmcsIGNoYXIgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBzdHJ1Y3QgZmlsZSAqIG9w
ZW5fZXhlY19SZmFhNmQ2YjcoY29uc3QgY2hhciAqKTsKCgpleHRlcm4gaW50IGlzX3N1YmRpcl9S
ODRiMTQ2Zjkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW5vX3Qg
ZmluZF9pbm9kZV9udW1iZXJfUjFmYmYxM2Y5KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIg
Kik7CiMgMTMzMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIgpz
dGF0aWMgaW5saW5lIHZvaWQgKkVSUl9QVFIobG9uZyBlcnJvcikKewogICAgICAgIHJldHVybiAo
dm9pZCAqKSBlcnJvcjsKfQoKc3RhdGljIGlubGluZSBsb25nIFBUUl9FUlIoY29uc3Qgdm9pZCAq
cHRyKQp7CiAgICAgICAgcmV0dXJuIChsb25nKSBwdHI7Cn0KCnN0YXRpYyBpbmxpbmUgbG9uZyBJ
U19FUlIoY29uc3Qgdm9pZCAqcHRyKQp7CiAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKXB0
ciA+ICh1bnNpZ25lZCBsb25nKS0xMDAwTDsKfQojIDEzNjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvZnMuaCIKZW51bSB7TEFTVF9OT1JNLCBMQVNUX1JPT1QsIExBU1Rf
RE9ULCBMQVNUX0RPVERPVCwgTEFTVF9CSU5EfTsKIyAxMzc0ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBzaXplX3Qg
d3JpdHRlbjsKICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgY2hhciAqIGJ1ZjsKICAgICAg
ICBpbnQgZXJyb3I7Cn0gcmVhZF9kZXNjcmlwdG9yX3Q7Cgp0eXBlZGVmIGludCAoKnJlYWRfYWN0
b3JfdCkocmVhZF9kZXNjcmlwdG9yX3QgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZyk7CgoKZXh0ZXJuIGxvZmZfdCBkZWZhdWx0X2xsc2Vla19SNDUxYmQyZDgo
c3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCBvcmlnaW4pOwoKZXh0ZXJuIGlu
dCBfX3VzZXJfd2Fsa19SOTRhNjI0NzkoY29uc3QgY2hhciAqLCB1bnNpZ25lZCwgc3RydWN0IG5h
bWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgcGF0aF9p
bml0X1JhNzQ3NWYyYihjb25zdCBjaGFyICosIHVuc2lnbmVkLCBzdHJ1Y3QgbmFtZWlkYXRhICop
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGludCBwYXRoX3dhbGtfUjkyNTQ0
Yzk0KGNvbnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CmV4dGVybiBpbnQgcGF0aF9sb29rdXAoY29uc3QgY2hhciAqLCB1bnNpZ25lZCwg
c3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBp
bnQgbGlua19wYXRoX3dhbGsoY29uc3QgY2hhciAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgcGF0aF9yZWxlYXNlX1IyNTNjMjQ2
ZChzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gaW50IGZvbGxvd19kb3duX1JlMmM3MGRkNShz
dHJ1Y3QgdmZzbW91bnQgKiosIHN0cnVjdCBkZW50cnkgKiopOwpleHRlcm4gaW50IGZvbGxvd191
cF9SMGU1NDU4ZjQoc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3QgZGVudHJ5ICoqKTsKZXh0ZXJu
IHN0cnVjdCBkZW50cnkgKiBsb29rdXBfb25lX2xlbl9SMjE4YmY1OTIoY29uc3QgY2hhciAqLCBz
dHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogbG9va3VwX2hhc2hf
UmUwYzU4YzJiKHN0cnVjdCBxc3RyICosIHN0cnVjdCBkZW50cnkgKik7CgoKCmV4dGVybiB2b2lk
IGlub2RlX2luaXRfb25jZV9SYTVmOGYyMmUoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBp
cHV0X1I0ZTEwMzE0ZihzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGZvcmNlX2RlbGV0ZV9S
NjM5YWIyOTEoc3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGlub2RlICogaWdyYWJfUjgx
NTNiYmY1KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlub190IGl1bmlxdWVfUjI2ZjI5YmYxKHN0
cnVjdCBzdXBlcl9ibG9jayAqLCBpbm9fdCk7Cgp0eXBlZGVmIGludCAoKmZpbmRfaW5vZGVfdCko
c3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CmV4dGVybiBzdHJ1Y3QgaW5v
ZGUgKiBpZ2V0NF9SN2IzNjk0MzIoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcs
IGZpbmRfaW5vZGVfdCwgdm9pZCAqKTsKc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKmlnZXQo
c3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8pCnsKICAgICAgICByZXR1
cm4gaWdldDRfUjdiMzY5NDMyKHNiLCBpbm8sICgodm9pZCAqKTApLCAoKHZvaWQgKikwKSk7Cn0K
CmV4dGVybiB2b2lkIGNsZWFyX2lub2RlX1IzYmQzYWZiOChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVy
biBzdHJ1Y3QgaW5vZGUgKm5ld19pbm9kZV9SNDMyMzZiM2Ioc3RydWN0IHN1cGVyX2Jsb2NrICpz
Yik7CmV4dGVybiB2b2lkIHJlbW92ZV9zdWlkKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoKZXh0ZXJu
IHZvaWQgaW5zZXJ0X2lub2RlX2hhc2hfUjQ3MTk1OThjKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJu
IHZvaWQgcmVtb3ZlX2lub2RlX2hhc2hfUjc0MGIyZTdhKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJu
IHN0cnVjdCBmaWxlICogZ2V0X2VtcHR5X2ZpbHBfUmE1ZjY5YmE3KHZvaWQpOwpleHRlcm4gdm9p
ZCBmaWxlX21vdmUoc3RydWN0IGZpbGUgKmYsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpOwpleHRl
cm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0X2hhc2hfdGFibGVfUmY3MjAxNmE4KGtkZXZfdCwg
aW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0YmxrX1JlNzdkYWZmNShr
ZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgbGxfcndfYmxvY2tfUjhjNDkzMDk2KGludCwg
aW50LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaFtdKTsKZXh0ZXJuIHZvaWQgc3VibWl0X2JoX1I3
MzQ5MWI1YihpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqKTsKZXh0ZXJuIGludCBpc19yZWFkX29u
bHlfUjc0MDI3NGNhKGtkZXZfdCk7CmV4dGVybiB2b2lkIF9fYnJlbHNlX1I5ZmY0Mjk2MihzdHJ1
Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBpbmxpbmUgdm9pZCBicmVsc2Uoc3RydWN0IGJ1ZmZl
cl9oZWFkICpidWYpCnsKICAgICAgICBpZiAoYnVmKQogICAgICAgICAgICAgICAgX19icmVsc2Vf
UjlmZjQyOTYyKGJ1Zik7Cn0KZXh0ZXJuIHZvaWQgX19iZm9yZ2V0X1I3NWY4M2E4OShzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKik7CnN0YXRpYyBpbmxpbmUgdm9pZCBiZm9yZ2V0KHN0cnVjdCBidWZmZXJf
aGVhZCAqYnVmKQp7CiAgICAgICAgaWYgKGJ1ZikKICAgICAgICAgICAgICAgIF9fYmZvcmdldF9S
NzVmODNhODkoYnVmKTsKfQpleHRlcm4gaW50IHNldF9ibG9ja3NpemVfUmM3NWQ4NTdjKGtkZXZf
dCwgaW50KTsKZXh0ZXJuIGludCBzYl9zZXRfYmxvY2tzaXplX1JhYWE0NjIzMihzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKiwgaW50KTsKZXh0ZXJuIGludCBzYl9taW5fYmxvY2tzaXplX1JjYzZhMzVlMihz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50KTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJy
ZWFkX1IwNGZjNzQ2YihrZGV2X3QsIGludCwgaW50KTsKc3RhdGljIGlubGluZSBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKiBzYl9icmVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgYmxvY2spCnsK
ICAgICAgICByZXR1cm4gYnJlYWRfUjA0ZmM3NDZiKHNiLT5zX2RldiwgYmxvY2ssIHNiLT5zX2Js
b2Nrc2l6ZSk7Cn0Kc3RhdGljIGlubGluZSBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzYl9nZXRibGso
c3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAgICAgcmV0dXJuIGdldGJs
a19SZTc3ZGFmZjUoc2ItPnNfZGV2LCBibG9jaywgc2ItPnNfYmxvY2tzaXplKTsKfQpzdGF0aWMg
aW5saW5lIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNiX2dldF9oYXNoX3RhYmxlKHN0cnVjdCBzdXBl
cl9ibG9jayAqc2IsIGludCBibG9jaykKewogICAgICAgIHJldHVybiBnZXRfaGFzaF90YWJsZV9S
ZjcyMDE2YTgoc2ItPnNfZGV2LCBibG9jaywgc2ItPnNfYmxvY2tzaXplKTsKfQpleHRlcm4gdm9p
ZCB3YWtldXBfYmRmbHVzaCh2b2lkKTsKZXh0ZXJuIHZvaWQgcHV0X3VudXNlZF9idWZmZXJfaGVh
ZF9SOGY4YzNlOGEoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpOwpleHRlcm4gc3RydWN0IGJ1ZmZl
cl9oZWFkICogZ2V0X3VudXNlZF9idWZmZXJfaGVhZF9SYTUxYzFkOGEoaW50IGFzeW5jKTsKCmV4
dGVybiBpbnQgYnJ3X3BhZ2VfUmQzZDIzYmZjKGludCwgc3RydWN0IHBhZ2UgKiwga2Rldl90LCBp
bnQgW10sIGludCk7Cgp0eXBlZGVmIGludCAoZ2V0X2Jsb2NrX3QpKHN0cnVjdCBpbm9kZSosbG9u
ZyxzdHJ1Y3QgYnVmZmVyX2hlYWQqLGludCk7CgoKZXh0ZXJuIGludCB0cnlfdG9fcmVsZWFzZV9w
YWdlKHN0cnVjdCBwYWdlICogcGFnZSwgaW50IGdmcF9tYXNrKTsKZXh0ZXJuIGludCBkaXNjYXJk
X2JoX3BhZ2VfUjgwOTZlYWQ0KHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgoK
ZXh0ZXJuIGludCBibG9ja19zeW1saW5rX1JlYTczZWFmNChzdHJ1Y3QgaW5vZGUgKiwgY29uc3Qg
Y2hhciAqLCBpbnQpOwpleHRlcm4gaW50IGJsb2NrX3dyaXRlX2Z1bGxfcGFnZV9SNDFhMTk1NTYo
c3RydWN0IHBhZ2UqLCBnZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGJsb2NrX3JlYWRfZnVsbF9w
YWdlX1IwM2M1MzI0ZChzdHJ1Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxv
Y2tfcHJlcGFyZV93cml0ZV9SOWQ1ZDk4YTUoc3RydWN0IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWdu
ZWQsIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgY29udF9wcmVwYXJlX3dyaXRlX1JmZTVjNjZk
ZShzdHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2NrX3QqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKik7CmV4dGVybiBpbnQgZ2Vu
ZXJpY19jb250X2V4cGFuZF9SZmJhZmEzN2Yoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IHNp
emUpIDsKZXh0ZXJuIGludCBibG9ja19jb21taXRfd3JpdGUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVu
c2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKTsKZXh0ZXJuIGludCBibG9ja19zeW5jX3BhZ2VfUjgx
NWU2YjdlKHN0cnVjdCBwYWdlICopOwoKaW50IGdlbmVyaWNfYmxvY2tfYm1hcF9SM2Y5YzM2YzQo
c3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9uZywgZ2V0X2Jsb2NrX3QgKik7CmludCBnZW5lcmlj
X2NvbW1pdF93cml0ZV9SY2U3MjNmZTMoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5z
aWduZWQsIHVuc2lnbmVkKTsKaW50IGJsb2NrX3RydW5jYXRlX3BhZ2VfUmIxYTBmODY1KHN0cnVj
dCBhZGRyZXNzX3NwYWNlICosIGxvZmZfdCwgZ2V0X2Jsb2NrX3QgKik7CmV4dGVybiBpbnQgZ2Vu
ZXJpY19kaXJlY3RfSU9fUjVmZTU1ZTFkKGludCwgc3RydWN0IGlub2RlICosIHN0cnVjdCBraW9i
dWYgKiwgdW5zaWduZWQgbG9uZywgaW50LCBnZXRfYmxvY2tfdCAqKTsKZXh0ZXJuIGludCB3YWl0
Zm9yX29uZV9wYWdlX1JhNmE3OGM1MyhzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIGludCB3cml0ZW91
dF9vbmVfcGFnZV9SNDY4NmE2Mzgoc3RydWN0IHBhZ2UgKik7CgpleHRlcm4gaW50IGdlbmVyaWNf
ZmlsZV9tbWFwX1JmZGJiMmFlYShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg
Kik7CmV4dGVybiBpbnQgZmlsZV9yZWFkX2FjdG9yKHJlYWRfZGVzY3JpcHRvcl90ICogZGVzYywg
c3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNp
emUpOwpleHRlcm4gc3NpemVfdCBnZW5lcmljX2ZpbGVfcmVhZF9SMTQ0MWU2OTQoc3RydWN0IGZp
bGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19m
aWxlX3dyaXRlX1I5YmJjNjg5NihzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwg
bG9mZl90ICopOwpleHRlcm4gdm9pZCBkb19nZW5lcmljX2ZpbGVfcmVhZF9SN2Q1ZjI0NjQoc3Ry
dWN0IGZpbGUgKiwgbG9mZl90ICosIHJlYWRfZGVzY3JpcHRvcl90ICosIHJlYWRfYWN0b3JfdCwg
aW50KTsKZXh0ZXJuIGxvZmZfdCBub19sbHNlZWtfUmI5ZTIyYjg3KHN0cnVjdCBmaWxlICpmaWxl
LCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgb3JpZ2luKTsKZXh0ZXJuIGxvZmZfdCBnZW5lcmljX2ZpbGVf
bGxzZWVrX1JkOTBhNjJmNyhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9y
aWdpbik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXJfUjRlYTNlOGQxKHN0cnVjdCBm
aWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgZ2VuZXJpY19maWxl
X29wZW5fUjUzMzhmY2Y1KHN0cnVjdCBpbm9kZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbHAp
OwoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZ2VuZXJpY19yb19mb3BzX1IxOTk0YzY3
OTsKCmV4dGVybiBpbnQgdmZzX3JlYWRsaW5rX1IyMTY4MWNiZihzdHJ1Y3QgZGVudHJ5ICosIGNo
YXIgKiwgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHZmc19mb2xsb3dfbGlua19SOGRj
NTJjYzIoc3RydWN0IG5hbWVpZGF0YSAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHBhZ2Vf
cmVhZGxpbmtfUjMxMjlmZjhkKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQpOwpleHRlcm4g
aW50IHBhZ2VfZm9sbG93X2xpbmtfUjVjOThjODhmKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IG5h
bWVpZGF0YSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHBhZ2Vfc3ltbGlua19p
bm9kZV9vcGVyYXRpb25zX1JmNTFlZmI5OTsKCmV4dGVybiBpbnQgdmZzX3JlYWRkaXJfUjc0MWU3
MzcwKHN0cnVjdCBmaWxlICosIGZpbGxkaXJfdCwgdm9pZCAqKTsKZXh0ZXJuIGludCBkY2FjaGVf
ZGlyX29wZW5fUjI5N2ZkOTk4KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJu
IGludCBkY2FjaGVfZGlyX2Nsb3NlX1I3MmJmMTA4OShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZp
bGUgKik7CmV4dGVybiBsb2ZmX3QgZGNhY2hlX2Rpcl9sc2Vla19SYmJiMTc2ZDkoc3RydWN0IGZp
bGUgKiwgbG9mZl90LCBpbnQpOwpleHRlcm4gaW50IGRjYWNoZV9kaXJfZnN5bmNfUmYxM2ZjZjQ3
KHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCBkY2FjaGVf
cmVhZGRpcl9SNTJmYjdmNGQoc3RydWN0IGZpbGUgKiwgdm9pZCAqLCBmaWxsZGlyX3QpOwpleHRl
cm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkY2FjaGVfZGlyX29wc19SZjkwMzA4OWQ7CgpleHRl
cm4gaW50IHZmc19zdGF0KGNoYXIgKiwgc3RydWN0IGtzdGF0X1I1Njg2YjZkZSAqKTsKZXh0ZXJu
IGludCB2ZnNfbHN0YXQoY2hhciAqLCBzdHJ1Y3Qga3N0YXRfUjU2ODZiNmRlICopOwpleHRlcm4g
aW50IHZmc19mc3RhdCh1bnNpZ25lZCBpbnQsIHN0cnVjdCBrc3RhdF9SNTY4NmI2ZGUgKik7Cgpl
eHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmdldF9mc190eXBlX1I3NTY1YjQ5OShjb25z
dCBjaGFyICpuYW1lKTsKZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyX1JjZjdi
NzlhNyhrZGV2X3QpOwpleHRlcm4gdm9pZCBkcm9wX3N1cGVyX1I1M2EzMTVkOShzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKnNiKTsKc3RhdGljIGlubGluZSBpbnQgaXNfbW91bnRlZChrZGV2X3QgZGV2KQp7
CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGdldF9zdXBlcl9SY2Y3Yjc5YTcoZGV2
KTsKICAgICAgICBpZiAoc2IpIHsKICAgICAgICAgICAgICAgIGRyb3Bfc3VwZXJfUjUzYTMxNWQ5
KHNiKTsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4g
MDsKfQpleHRlcm4ga2Rldl90IFJPT1RfREVWX1JiMzI0OTZlODsKZXh0ZXJuIGNoYXIgcm9vdF9k
ZXZpY2VfbmFtZVtdOwoKCmV4dGVybiB2b2lkIHNob3dfYnVmZmVycyh2b2lkKTsKCgpleHRlcm4g
dW5zaWduZWQgaW50IHJlYWxfcm9vdF9kZXY7CgoKZXh0ZXJuIHNzaXplX3QgY2hhcl9yZWFkKHN0
cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IGJs
b2NrX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJu
IGludCByZWFkX2FoZWFkX1IwYWJiN2IwN1tdOwoKZXh0ZXJuIHNzaXplX3QgY2hhcl93cml0ZShz
dHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gc3Np
emVfdCBibG9ja193cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9m
Zl90ICopOwoKZXh0ZXJuIGludCBmaWxlX2ZzeW5jX1I5OGY5ZTQ0NyhzdHJ1Y3QgZmlsZSAqLCBz
dHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgZ2VuZXJpY19idWZmZXJfZmRhdGFzeW5j
X1JkMzQ0NmQ5OChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2lkeCwg
dW5zaWduZWQgbG9uZyBlbmRfaWR4KTsKZXh0ZXJuIGludCBnZW5lcmljX29zeW5jX2lub2RlKHN0
cnVjdCBpbm9kZSAqLCBpbnQpOwoKCgoKZXh0ZXJuIGludCBpbm9kZV9jaGFuZ2Vfb2tfUjZjZDg1
MmZjKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaWF0dHIgKik7CmV4dGVybiBpbnQgaW5vZGVfc2V0
YXR0cl9SY2JiNzk5ZGIoc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0ciAqKTsKIyAxNTcxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUg
c3RydWN0IGRlbnRyeSAqbG9ja19wYXJlbnQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAg
ICAgc3RydWN0IGRlbnRyeSAqZGlyID0gZGdldChkZW50cnktPmRfcGFyZW50KTsKCiAgICAgICAg
ZG93bigmZGlyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgcmV0dXJuIGRpcjsKfQoKc3RhdGlj
IGlubGluZSBzdHJ1Y3QgZGVudHJ5ICpnZXRfcGFyZW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkK
ewogICAgICAgIHJldHVybiBkZ2V0KGRlbnRyeS0+ZF9wYXJlbnQpOwp9CgpzdGF0aWMgaW5saW5l
IHZvaWQgdW5sb2NrX2RpcihzdHJ1Y3QgZGVudHJ5ICpkaXIpCnsKICAgICAgICB1cCgmZGlyLT5k
X2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dF9SM2RlODEzYTYoZGlyKTsKfQoKCgoKCnN0YXRp
YyBpbmxpbmUgdm9pZCBkb3VibGVfZG93bihzdHJ1Y3Qgc2VtYXBob3JlICpzMSwgc3RydWN0IHNl
bWFwaG9yZSAqczIpCnsKICAgICAgICBpZiAoczEgIT0gczIpIHsKICAgICAgICAgICAgICAgIGlm
ICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczI7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHMyID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgZG93bihzMSk7CiAgICAgICAgfQogICAgICAgIGRvd24oczIpOwp9CiMgMTYxNSAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHZvaWQg
dHJpcGxlX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgaWYgKHMxICE9IHMyKSB7CiAgICAg
ICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMyKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWdu
ZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMx
OyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMyKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczI7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczMpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBz
MzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMxOyBzMSA9IHRtcDsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2ln
bmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24oczEpOwogICAgICAgIH0g
ZWxzZSBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgIHMz
ID0gczI7IHMyID0gdG1wOwogICAgICAgIH0KICAgICAgICBkb3duKHMyKTsKICAgICAgICBkb3du
KHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91cChzdHJ1Y3Qgc2VtYXBob3JlICpz
MSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICB1cChzMSk7CiAgICAgICAgaWYgKHMx
ICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdHJp
cGxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgdXAoczEpOwogICAgICAgIGlmIChzMSAhPSBzMikK
ICAgICAgICAgICAgICAgIHVwKHMyKTsKICAgICAgICB1cChzMyk7Cn0KCnN0YXRpYyBpbmxpbmUg
dm9pZCBkb3VibGVfbG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRyeSAqZDIpCnsK
ICAgICAgICBkb3VibGVfZG93bigmZDEtPmRfaW5vZGUtPmlfc2VtLCAmZDItPmRfaW5vZGUtPmlf
c2VtKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91bmxvY2soc3RydWN0IGRlbnRyeSAq
ZDEsIHN0cnVjdCBkZW50cnkgKmQyKQp7CiAgICAgICAgZG91YmxlX3VwKCZkMS0+ZF9pbm9kZS0+
aV9zZW0sJmQyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dF9SM2RlODEzYTYoZDEpOwog
ICAgICAgIGRwdXRfUjNkZTgxM2E2KGQyKTsKfQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIgMgojIDMyICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKdHlwZWRlZiBzdHJ1Y3QgX191c2VyX2Nh
cF9oZWFkZXJfc3RydWN0IHsKICAgICAgICBfX3UzMiB2ZXJzaW9uOwogICAgICAgIGludCBwaWQ7
Cn0gKmNhcF91c2VyX2hlYWRlcl90OwoKdHlwZWRlZiBzdHJ1Y3QgX191c2VyX2NhcF9kYXRhX3N0
cnVjdCB7CiAgICAgICAgX191MzIgZWZmZWN0aXZlOwogICAgICAgIF9fdTMyIHBlcm1pdHRlZDsK
ICAgICAgICBfX3UzMiBpbmhlcml0YWJsZTsKfSAqY2FwX3VzZXJfZGF0YV90OwojIDU1ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKdHlwZWRlZiBf
X3UzMiBrZXJuZWxfY2FwX3Q7CiMgMjg2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L2NhcGFiaWxpdHkuaCIKZXh0ZXJuIGtlcm5lbF9jYXBfdCBjYXBfYnNldF9SNTlhYjQw
ODA7CiMgMzE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxp
dHkuaCIKc3RhdGljIGlubGluZSBrZXJuZWxfY2FwX3QgY2FwX2NvbWJpbmUoa2VybmVsX2NhcF90
IGEsIGtlcm5lbF9jYXBfdCBiKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3Qp
ID0gKGEpIHwgKGIpOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9j
YXBfdCBjYXBfaW50ZXJzZWN0KGtlcm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgYikKewogICAg
IGtlcm5lbF9jYXBfdCBkZXN0OwogICAgIChkZXN0KSA9IChhKSAmIChiKTsKICAgICByZXR1cm4g
ZGVzdDsKfQoKc3RhdGljIGlubGluZSBrZXJuZWxfY2FwX3QgY2FwX2Ryb3Aoa2VybmVsX2NhcF90
IGEsIGtlcm5lbF9jYXBfdCBkcm9wKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRl
c3QpID0gKGEpICYgfihkcm9wKTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGluZSBr
ZXJuZWxfY2FwX3QgY2FwX2ludmVydChrZXJuZWxfY2FwX3QgYykKewogICAgIGtlcm5lbF9jYXBf
dCBkZXN0OwogICAgIChkZXN0KSA9IH4oYyk7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KIyA1ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMgojIDE4ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIKc3RydWN0IGZpbGU7
CgpzdHJ1Y3QgbW1fc3RydWN0OwoKCgoKc3RydWN0IGxpbnV4X2JpbnBybXsKICAgICAgICBjaGFy
IGJ1ZlsxMjhdOwogICAgICAgIHN0cnVjdCBwYWdlICpwYWdlWzMyXTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHA7CiAgICAgICAgaW50IHNoX2Jhbmc7CiAgICAgICAgc3RydWN0IGZpbGUgKiBmaWxl
OwogICAgICAgIGludCBlX3VpZCwgZV9naWQ7CiAgICAgICAga2VybmVsX2NhcF90IGNhcF9pbmhl
cml0YWJsZSwgY2FwX3Blcm1pdHRlZCwgY2FwX2VmZmVjdGl2ZTsKICAgICAgICBpbnQgYXJnYywg
ZW52YzsKICAgICAgICBjaGFyICogZmlsZW5hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb2Fk
ZXIsIGV4ZWM7Cn07CgoKCgoKc3RydWN0IGxpbnV4X2JpbmZtdCB7CiAgICAgICAgc3RydWN0IGxp
bnV4X2JpbmZtdCAqIG5leHQ7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlOwogICAgICAg
IGludCAoKmxvYWRfYmluYXJ5KShzdHJ1Y3QgbGludXhfYmlucHJtICosIHN0cnVjdCBwdF9yZWdz
ICogcmVncyk7CiAgICAgICAgaW50ICgqbG9hZF9zaGxpYikoc3RydWN0IGZpbGUgKik7CiAgICAg
ICAgaW50ICgqY29yZV9kdW1wKShsb25nIHNpZ25yLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MsIHN0
cnVjdCBmaWxlICogZmlsZSk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtaW5fY29yZWR1bXA7Cn07
CgpleHRlcm4gaW50IHJlZ2lzdGVyX2JpbmZtdF9SODY4ZTAwYjEoc3RydWN0IGxpbnV4X2JpbmZt
dCAqKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2JpbmZtdF9SNjc4NGIyMDQoc3RydWN0IGxpbnV4
X2JpbmZtdCAqKTsKCmV4dGVybiBpbnQgcHJlcGFyZV9iaW5wcm1fUmZjNWZiMWFiKHN0cnVjdCBs
aW51eF9iaW5wcm0gKik7CmV4dGVybiB2b2lkIHJlbW92ZV9hcmdfemVyb19SYjY4ZTcwMzQoc3Ry
dWN0IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIGludCBzZWFyY2hfYmluYXJ5X2hhbmRsZXJfUjYy
NmZmYTA1KHN0cnVjdCBsaW51eF9iaW5wcm0gKixzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIGlu
dCBmbHVzaF9vbGRfZXhlY19SN2VmYzJjNmEoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pOwpl
eHRlcm4gaW50IHNldHVwX2FyZ19wYWdlc19SNTJkZjRiZTYoc3RydWN0IGxpbnV4X2JpbnBybSAq
IGJwcm0pOwpleHRlcm4gaW50IGNvcHlfc3RyaW5ncyhpbnQgYXJnYyxjaGFyICoqIGFyZ3Ysc3Ry
dWN0IGxpbnV4X2JpbnBybSAqYnBybSk7CmV4dGVybiBpbnQgY29weV9zdHJpbmdzX2tlcm5lbF9S
ODk1Zjk2MmEoaW50IGFyZ2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0p
OwpleHRlcm4gdm9pZCBjb21wdXRlX2NyZWRzX1I5MzI0YzU1OChzdHJ1Y3QgbGludXhfYmlucHJt
ICpiaW5wcm0pOwpleHRlcm4gaW50IGRvX2NvcmVkdW1wKGxvbmcgc2lnbnIsIGludCBleGl0X2Nv
ZGUsIHN0cnVjdCBwdF9yZWdzICogcmVncyk7CmV4dGVybiB2b2lkIHNldF9iaW5mbXRfUmI3MTkz
YzA3KHN0cnVjdCBsaW51eF9iaW5mbXQgKm5ldyk7CiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L2xvdy1sYXRlbmN5LmgiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9sb3ctbGF0ZW5jeS5oIgp2b2lkIHNldF9ydW5uaW5nX2FuZF9z
Y2hlZHVsZV9SMjk1NzQxNTEodm9pZCk7CiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbG93LWxhdGVuY3kuaCIKZXh0ZXJuIGludCBsbF9jb3B5X3RvX3VzZXIodm9p
ZCAqdG9fdXNlciwgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBsZW4pOwpleHRlcm4g
aW50IGxsX2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tX3VzZXIsIHVu
c2lnbmVkIGxvbmcgbGVuKTsKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9zY2hlZC5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L3RpbWVzLmgiIDEKCgoKc3RydWN0IHRtcyB7CiAgICAgICAgY2xvY2tfdCB0bXNfdXRpbWU7
CiAgICAgICAgY2xvY2tfdCB0bXNfc3RpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNfY3V0aW1lOwog
ICAgICAgIGNsb2NrX3QgdG1zX2NzdGltZTsKfTsKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC90aW1leC5oIiAxCiMgMTUyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L3RpbWV4LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9hc20vdGltZXguaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2Fz
bS90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL21zci5o
IiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3RpbWV4LmgiIDIK
IyAzNyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vdGltZXguaCIKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgY3ljbGVzX3Q7CgpleHRlcm4gY3ljbGVzX3QgY2FjaGVmbHVz
aF90aW1lOwoKc3RhdGljIGlubGluZSBjeWNsZXNfdCBnZXRfY3ljbGVzICh2b2lkKQp7CgoKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHJldDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxl
X18oInJkdHNjIiA6ICI9QSIgKHJldCkpOwogICAgICAgIHJldHVybiByZXQ7Cgp9CgpleHRlcm4g
dW5zaWduZWQgbG9uZyBjcHVfa2h6X1I3NWM0ZjVmNzsKIyAxNTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvdGltZXguaCIgMgojIDE2MSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC90aW1leC5oIgpzdHJ1Y3QgdGltZXggewogICAgICAgIHVuc2ln
bmVkIGludCBtb2RlczsKICAgICAgICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZyZXE7CiAg
ICAgICAgbG9uZyBtYXhlcnJvcjsKICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAgIGludCBz
dGF0dXM7CiAgICAgICAgbG9uZyBjb25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lvbjsKICAg
ICAgICBsb25nIHRvbGVyYW5jZTsKCgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgICAg
ICAgbG9uZyB0aWNrOwoKICAgICAgICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBqaXR0ZXI7
CiAgICAgICAgaW50IHNoaWZ0OwogICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxvbmcgaml0
Y250OwogICAgICAgIGxvbmcgY2FsY250OwogICAgICAgIGxvbmcgZXJyY250OwogICAgICAgIGxv
bmcgc3RiY250OwoKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwog
ICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAgaW50IDoz
MjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKfTsKIyAyNTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvdGltZXguaCIKZXh0ZXJuIGxvbmcgdGljazsKZXh0ZXJuIGlu
dCB0aWNrYWRqOwoKCgoKZXh0ZXJuIGludCB0aW1lX3N0YXRlOwpleHRlcm4gaW50IHRpbWVfc3Rh
dHVzOwpleHRlcm4gbG9uZyB0aW1lX29mZnNldDsKZXh0ZXJuIGxvbmcgdGltZV9jb25zdGFudDsK
ZXh0ZXJuIGxvbmcgdGltZV90b2xlcmFuY2U7CmV4dGVybiBsb25nIHRpbWVfcHJlY2lzaW9uOwpl
eHRlcm4gbG9uZyB0aW1lX21heGVycm9yOwpleHRlcm4gbG9uZyB0aW1lX2VzdGVycm9yOwoKZXh0
ZXJuIGxvbmcgdGltZV9waGFzZTsKZXh0ZXJuIGxvbmcgdGltZV9mcmVxOwpleHRlcm4gbG9uZyB0
aW1lX2FkajsKZXh0ZXJuIGxvbmcgdGltZV9yZWZ0aW1lOwoKZXh0ZXJuIGxvbmcgdGltZV9hZGp1
c3Q7CgoKZXh0ZXJuIGxvbmcgcHBzX29mZnNldDsKZXh0ZXJuIGxvbmcgcHBzX2ppdHRlcjsKZXh0
ZXJuIGxvbmcgcHBzX2ZyZXE7CmV4dGVybiBsb25nIHBwc19zdGFiaWw7CmV4dGVybiBsb25nIHBw
c192YWxpZDsKCgpleHRlcm4gaW50IHBwc19zaGlmdDsKZXh0ZXJuIGxvbmcgcHBzX2ppdGNudDsK
ZXh0ZXJuIGxvbmcgcHBzX2NhbGNudDsKZXh0ZXJuIGxvbmcgcHBzX2VycmNudDsKZXh0ZXJuIGxv
bmcgcHBzX3N0YmNudDsKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9y
YnRyZWUuaCIgMQojIDEwMCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9y
YnRyZWUuaCIKdHlwZWRlZiBzdHJ1Y3QgcmJfbm9kZV9zCnsKICAgICAgICBzdHJ1Y3QgcmJfbm9k
ZV9zICogcmJfcGFyZW50OwogICAgICAgIGludCByYl9jb2xvcjsKCgogICAgICAgIHN0cnVjdCBy
Yl9ub2RlX3MgKiByYl9yaWdodDsKICAgICAgICBzdHJ1Y3QgcmJfbm9kZV9zICogcmJfbGVmdDsK
fQpyYl9ub2RlX3Q7Cgp0eXBlZGVmIHN0cnVjdCByYl9yb290X3MKewogICAgICAgIHN0cnVjdCBy
Yl9ub2RlX3MgKiByYl9ub2RlOwp9CnJiX3Jvb3RfdDsKCgoKCgpleHRlcm4gdm9pZCByYl9pbnNl
cnRfY29sb3JfUmFhMmI1YTIyKHJiX25vZGVfdCAqLCByYl9yb290X3QgKik7CmV4dGVybiB2b2lk
IHJiX2VyYXNlX1JkYTIyNmE4MChyYl9ub2RlX3QgKiwgcmJfcm9vdF90ICopOwoKc3RhdGljIGlu
bGluZSB2b2lkIHJiX2xpbmtfbm9kZShyYl9ub2RlX3QgKiBub2RlLCByYl9ub2RlX3QgKiBwYXJl
bnQsIHJiX25vZGVfdCAqKiByYl9saW5rKQp7CiAgICAgICAgbm9kZS0+cmJfcGFyZW50ID0gcGFy
ZW50OwogICAgICAgIG5vZGUtPnJiX2NvbG9yID0gMDsKICAgICAgICBub2RlLT5yYl9sZWZ0ID0g
bm9kZS0+cmJfcmlnaHQgPSAoKHZvaWQgKikwKTsKCiAgICAgICAgKnJiX2xpbmsgPSBub2RlOwp9
CiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoK
CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMQoj
IDI2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RydWN0
IHB0X3JlZ3MgewogICAgICAgIGxvbmcgZWJ4OwogICAgICAgIGxvbmcgZWN4OwogICAgICAgIGxv
bmcgZWR4OwogICAgICAgIGxvbmcgZXNpOwogICAgICAgIGxvbmcgZWRpOwogICAgICAgIGxvbmcg
ZWJwOwogICAgICAgIGxvbmcgZWF4OwogICAgICAgIGludCB4ZHM7CiAgICAgICAgaW50IHhlczsK
ICAgICAgICBsb25nIG9yaWdfZWF4OwogICAgICAgIGxvbmcgZWlwOwogICAgICAgIGludCB4Y3M7
CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9uZyBlc3A7CiAgICAgICAgaW50IHhzczsK
fTsKIyA2MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcHRyYWNlLmgiCmV4
dGVybiB2b2lkIHNob3dfcmVnc19SNmFiMWFmOTgoc3RydWN0IHB0X3JlZ3MgKik7CiMgMjMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL21tdS5oIiAxCiMgMTAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL21tdS5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAg
aW50IHNpemU7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07CiAgICAgICAgdm9pZCAqIGxk
dDsKfSBtbV9jb250ZXh0X3Q7CiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvc2NoZWQuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L3NtcC5oIiAxCiMgOTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
c21wLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBzbXBfc2VuZF9yZXNjaGVkdWxlKGludCBjcHUpIHsg
fQpzdGF0aWMgaW5saW5lIHZvaWQgc21wX3NlbmRfcmVzY2hlZHVsZV9hbGwodm9pZCkgeyB9CiMg
MjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdHR5LmgiIDEKIyAyMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC90dHkuaCIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21ham9yLmgiIDEKIyAxOTAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbWFqb3IuaCIKc3RhdGljIF9faW5saW5lX18gaW50
IHNjc2lfYmxrX21ham9yKGludCBtKSB7CiAgICAgICAgcmV0dXJuICgoKG0pID09IDggfHwgKCht
KSA+PSA2NSAmJiAobSkgPD0gNzEpIHx8ICgobSkgPj0gMTI4ICYmIChtKSA8PSAxMzUpKSB8fCAo
bSkgPT0gMTEpOwp9CiMgMjAzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L21ham9yLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBpZGVfYmxrX21ham9yKGludCBtKQp7CiAg
ICAgICAgcmV0dXJuICgobSkgPT0gMyB8fCAobSkgPT0gMjIgfHwgKG0pID09IDMzIHx8IChtKSA9
PSAzNCB8fCAobSkgPT0gNTYgfHwgKG0pID09IDU3IHx8IChtKSA9PSA4OCB8fCAobSkgPT0gODkg
fHwgKG0pID09IDkwIHx8IChtKSA9PSA5MSk7Cn0KIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvdGVybWlvcy5oIiAxCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvYXNtL3Rlcm1pb3MuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvYXNtL3Rlcm1iaXRzLmgiIDEKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgY2Nf
dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc3BlZWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdGNm
bGFnX3Q7CgoKc3RydWN0IHRlcm1pb3MgewogICAgICAgIHRjZmxhZ190IGNfaWZsYWc7CiAgICAg
ICAgdGNmbGFnX3QgY19vZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX2NmbGFnOwogICAgICAgIHRj
ZmxhZ190IGNfbGZsYWc7CiAgICAgICAgY2NfdCBjX2xpbmU7CiAgICAgICAgY2NfdCBjX2NjWzE5
XTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS90ZXJtaW9zLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9pb2N0bHMuaCIgMQoj
IDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3Rlcm1pb3MuaCIgMgoKc3Ry
dWN0IHdpbnNpemUgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3JvdzsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCB3c19jb2w7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3NfeHBpeGVsOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHdzX3lwaXhlbDsKfTsKCgpzdHJ1Y3QgdGVybWlvIHsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBjX2lmbGFnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfb2ZsYWc7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY19jZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBj
X2xmbGFnOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY19saW5lOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgY19jY1s4XTsKfTsKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L3Rlcm1pb3MuaCIgMgojIDIzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L3R0eS5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdHR5
X2RyaXZlci5oIiAxCiMgMTIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L3R0eV9kcml2ZXIuaCIKc3RydWN0IHR0eV9kcml2ZXIgewogICAgICAgIGludCBtYWdpYzsKICAg
ICAgICBjb25zdCBjaGFyICpkcml2ZXJfbmFtZTsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwog
ICAgICAgIGludCBuYW1lX2Jhc2U7CiAgICAgICAgc2hvcnQgbWFqb3I7CiAgICAgICAgc2hvcnQg
bWlub3Jfc3RhcnQ7CiAgICAgICAgc2hvcnQgbnVtOwogICAgICAgIHNob3J0IHR5cGU7CiAgICAg
ICAgc2hvcnQgc3VidHlwZTsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyBpbml0X3Rlcm1pb3M7CiAg
ICAgICAgaW50IGZsYWdzOwogICAgICAgIGludCAqcmVmY291bnQ7CiAgICAgICAgc3RydWN0IHBy
b2NfZGlyX2VudHJ5ICpwcm9jX2VudHJ5OwogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpvdGhl
cjsKCgoKCiAgICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKip0YWJsZTsKICAgICAgICBzdHJ1Y3Qg
dGVybWlvcyAqKnRlcm1pb3M7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgKip0ZXJtaW9zX2xvY2tl
ZDsKICAgICAgICB2b2lkICpkcml2ZXJfc3RhdGU7CgoKCgoKICAgICAgICBpbnQgKCpvcGVuKShz
dHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKICAgICAgICB2b2lk
ICgqY2xvc2UpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwog
ICAgICAgIGludCAoKndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgaW50IGZyb21fdXNl
ciwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IGNv
dW50KTsKICAgICAgICB2b2lkICgqcHV0X2NoYXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHVu
c2lnbmVkIGNoYXIgY2gpOwogICAgICAgIHZvaWQgKCpmbHVzaF9jaGFycykoc3RydWN0IHR0eV9z
dHJ1Y3QgKnR0eSk7CiAgICAgICAgaW50ICgqd3JpdGVfcm9vbSkoc3RydWN0IHR0eV9zdHJ1Y3Qg
KnR0eSk7CiAgICAgICAgaW50ICgqY2hhcnNfaW5fYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5KTsKICAgICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0
IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2ln
bmVkIGxvbmcgYXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3MpKHN0cnVjdCB0dHlfc3Ry
dWN0ICp0dHksIHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB2b2lkICgqdGhyb3R0bGUp
KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqdW50aHJvdHRsZSkoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwogICAgICAgIHZvaWQgKCpzdG9wKShzdHJ1Y3QgdHR5X3N0
cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqc3RhcnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkp
OwogICAgICAgIHZvaWQgKCpoYW5ndXApKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAg
IHZvaWQgKCpicmVha19jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBzdGF0ZSk7CiAg
ICAgICAgdm9pZCAoKmZsdXNoX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAg
ICAgdm9pZCAoKnNldF9sZGlzYykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9p
ZCAoKndhaXRfdW50aWxfc2VudCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IHRpbWVvdXQp
OwogICAgICAgIHZvaWQgKCpzZW5kX3hjaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBjaGFy
IGNoKTsKICAgICAgICBpbnQgKCpyZWFkX3Byb2MpKGNoYXIgKnBhZ2UsIGNoYXIgKipzdGFydCwg
b2ZmX3Qgb2ZmLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgaW50ICplb2Ys
IHZvaWQgKmRhdGEpOwogICAgICAgIGludCAoKndyaXRlX3Byb2MpKHN0cnVjdCBmaWxlICpmaWxl
LCBjb25zdCBjaGFyICpidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBjb3VudCwgdm9pZCAqZGF0YSk7CgoKCgogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpu
ZXh0OwogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyICpwcmV2Owp9OwojIDI1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMQojIDEwMyAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIKc3RydWN0IHR0eV9sZGlzYyB7
CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IG51bTsK
ICAgICAgICBpbnQgZmxhZ3M7CgoKCiAgICAgICAgaW50ICgqb3Blbikoc3RydWN0IHR0eV9zdHJ1
Y3QgKik7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAg
ICB2b2lkICgqZmx1c2hfYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICBz
c2l6ZV90ICgqY2hhcnNfaW5fYnVmZmVyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAg
ICBzc2l6ZV90ICgqcmVhZCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICog
ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6ZV90
IG5yKTsKICAgICAgICBzc2l6ZV90ICgqd3JpdGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBz
dHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyICogYnVmLCBzaXplX3QgbnIpOwogICAgICAgIGludCAoKmlvY3RsKShzdHJ1Y3QgdHR5
X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwogICAgICAgIHZvaWQgKCpz
ZXRfdGVybWlvcykoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHRlcm1pb3MgKiBvbGQp
OwogICAgICAgIHVuc2lnbmVkIGludCAoKnBvbGwpKHN0cnVjdCB0dHlfc3RydWN0ICosIHN0cnVj
dCBmaWxlICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBvbGxfdGFibGVf
c3RydWN0ICopOwoKCgoKICAgICAgICB2b2lkICgqcmVjZWl2ZV9idWYpKHN0cnVjdCB0dHlfc3Ry
dWN0ICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqZnAsIGludCBjb3VudCk7CiAgICAgICAgaW50ICgqcmVjZWl2ZV9yb29tKShz
dHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfd2FrZXVwKShzdHJ1Y3Qg
dHR5X3N0cnVjdCAqKTsKfTsKIyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC90dHkuaCIgMgojIDU5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L3R0eS5oIgpzdHJ1Y3Qgc2NyZWVuX2luZm9fUjdlMjM5MjQ3IHsKICAgICAgICB1OCBvcmlnX3g7
CiAgICAgICAgdTggb3JpZ195OwogICAgICAgIHUxNiBkb250dXNlMTsKICAgICAgICB1MTYgb3Jp
Z192aWRlb19wYWdlOwogICAgICAgIHU4IG9yaWdfdmlkZW9fbW9kZTsKICAgICAgICB1OCBvcmln
X3ZpZGVvX2NvbHM7CiAgICAgICAgdTE2IHVudXNlZDI7CiAgICAgICAgdTE2IG9yaWdfdmlkZW9f
ZWdhX2J4OwogICAgICAgIHUxNiB1bnVzZWQzOwogICAgICAgIHU4IG9yaWdfdmlkZW9fbGluZXM7
CiAgICAgICAgdTggb3JpZ192aWRlb19pc1ZHQTsKICAgICAgICB1MTYgb3JpZ192aWRlb19wb2lu
dHM7CgoKICAgICAgICB1MTYgbGZiX3dpZHRoOwogICAgICAgIHUxNiBsZmJfaGVpZ2h0OwogICAg
ICAgIHUxNiBsZmJfZGVwdGg7CiAgICAgICAgdTMyIGxmYl9iYXNlOwogICAgICAgIHUzMiBsZmJf
c2l6ZTsKICAgICAgICB1MTYgZG9udHVzZTIsIGRvbnR1c2UzOwogICAgICAgIHUxNiBsZmJfbGlu
ZWxlbmd0aDsKICAgICAgICB1OCByZWRfc2l6ZTsKICAgICAgICB1OCByZWRfcG9zOwogICAgICAg
IHU4IGdyZWVuX3NpemU7CiAgICAgICAgdTggZ3JlZW5fcG9zOwogICAgICAgIHU4IGJsdWVfc2l6
ZTsKICAgICAgICB1OCBibHVlX3BvczsKICAgICAgICB1OCByc3ZkX3NpemU7CiAgICAgICAgdTgg
cnN2ZF9wb3M7CiAgICAgICAgdTE2IHZlc2FwbV9zZWc7CiAgICAgICAgdTE2IHZlc2FwbV9vZmY7
CiAgICAgICAgdTE2IHBhZ2VzOwoKfTsKCmV4dGVybiBzdHJ1Y3Qgc2NyZWVuX2luZm9fUjdlMjM5
MjQ3IHNjcmVlbl9pbmZvX1I3ZTIzOTI0NzsKIyAxMzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCB0dHlfZmxpcF9idWZmZXIgewogICAgICAgIHN0
cnVjdCB0cV9zdHJ1Y3QgdHF1ZXVlOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgcHR5X3NlbTsK
ICAgICAgICBjaGFyICpjaGFyX2J1Zl9wdHI7CiAgICAgICAgdW5zaWduZWQgY2hhciAqZmxhZ19i
dWZfcHRyOwogICAgICAgIGludCBjb3VudDsKICAgICAgICBpbnQgYnVmX251bTsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGNoYXJfYnVmWzIqNTEyXTsKICAgICAgICBjaGFyIGZsYWdfYnVmWzIqNTEy
XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNsb3BbNF07Cn07CiMgMjU5ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3R0eS5oIgpzdHJ1Y3QgdHR5X3N0cnVjdCB7CiAgICAg
ICAgaW50IG1hZ2ljOwogICAgICAgIHN0cnVjdCB0dHlfZHJpdmVyIGRyaXZlcjsKICAgICAgICBz
dHJ1Y3QgdHR5X2xkaXNjIGxkaXNjOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICp0ZXJtaW9zLCAq
dGVybWlvc19sb2NrZWQ7CiAgICAgICAgaW50IHBncnA7CiAgICAgICAgaW50IHNlc3Npb247CiAg
ICAgICAga2Rldl90IGRldmljZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAg
IGludCBjb3VudDsKICAgICAgICBzdHJ1Y3Qgd2luc2l6ZSB3aW5zaXplOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgc3RvcHBlZDoxLCBod19zdG9wcGVkOjEsIGZsb3dfc3RvcHBlZDoxLCBwYWNrZXQ6
MTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGxvd19sYXRlbmN5OjEsIHdhcm5lZDoxOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgY3RybF9zdGF0dXM7CgogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICps
aW5rOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYXN5bmM7CiAgICAgICAgc3RydWN0
IHR0eV9mbGlwX2J1ZmZlciBmbGlwOwogICAgICAgIGludCBtYXhfZmxpcF9jbnQ7CiAgICAgICAg
aW50IGFsdF9zcGVlZDsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3cml0ZV93YWl0OwogICAg
ICAgIHdhaXRfcXVldWVfaGVhZF90IHJlYWRfd2FpdDsKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0
IHRxX2hhbmd1cDsKICAgICAgICB2b2lkICpkaXNjX2RhdGE7CiAgICAgICAgdm9pZCAqZHJpdmVy
X2RhdGE7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0dHlfZmlsZXM7CgoKCgoKCgogICAgICAg
IHVuc2lnbmVkIGludCBjb2x1bW47CiAgICAgICAgdW5zaWduZWQgY2hhciBsbmV4dDoxLCBlcmFz
aW5nOjEsIHJhdzoxLCByZWFsX3JhdzoxLCBpY2Fub246MTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IGNsb3Npbmc6MTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtaW5pbXVtX3RvX3dha2U7CiAgICAg
ICAgdW5zaWduZWQgb3ZlcnJ1bl90aW1lOwogICAgICAgIGludCBudW1fb3ZlcnJ1bjsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHByb2Nlc3NfY2hhcl9tYXBbMjU2Lyg4KnNpemVvZih1bnNpZ25lZCBs
b25nKSldOwogICAgICAgIGNoYXIgKnJlYWRfYnVmOwogICAgICAgIGludCByZWFkX2hlYWQ7CiAg
ICAgICAgaW50IHJlYWRfdGFpbDsKICAgICAgICBpbnQgcmVhZF9jbnQ7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyByZWFkX2ZsYWdzWzQwOTYvKDgqc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKV07CiAgICAg
ICAgaW50IGNhbm9uX2RhdGE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjYW5vbl9oZWFkOwogICAg
ICAgIHVuc2lnbmVkIGludCBjYW5vbl9jb2x1bW47CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBh
dG9taWNfcmVhZDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGF0b21pY193cml0ZTsKICAgICAg
ICBzcGlubG9ja190IHJlYWRfbG9jazsKCiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCBTQUtfdHE7
Cn07CiMgMzQxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3R0eS5oIgpl
eHRlcm4gdm9pZCB0dHlfd3JpdGVfZmx1c2goc3RydWN0IHR0eV9zdHJ1Y3QgKik7CgpleHRlcm4g
c3RydWN0IHRlcm1pb3MgdHR5X3N0ZF90ZXJtaW9zX1I4OWFjNTI1NDsKZXh0ZXJuIHN0cnVjdCB0
dHlfc3RydWN0ICogcmVkaXJlY3Q7CmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIGxkaXNjc1tdOwpl
eHRlcm4gaW50IGZnX2NvbnNvbGVfUjRlNmU4ZWE3LCBsYXN0X2NvbnNvbGUsIHdhbnRfY29uc29s
ZTsKCmV4dGVybiBpbnQga21zZ19yZWRpcmVjdDsKCmV4dGVybiB2b2lkIGNvbl9pbml0KHZvaWQp
OwpleHRlcm4gdm9pZCBjb25zb2xlX2luaXQodm9pZCk7CgpleHRlcm4gaW50IGxwX2luaXQodm9p
ZCk7CmV4dGVybiBpbnQgcHR5X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHR0eV9pbml0KHZvaWQp
OwpleHRlcm4gaW50IG14c2VyX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbW94YV9pbml0KHZvaWQp
OwpleHRlcm4gaW50IGlwMl9pbml0KHZvaWQpOwpleHRlcm4gaW50IHBjeGVfaW5pdCh2b2lkKTsK
ZXh0ZXJuIGludCBwY19pbml0KHZvaWQpOwpleHRlcm4gaW50IHZjc19pbml0KHZvaWQpOwpleHRl
cm4gaW50IHJwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgY3lfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu
dCBzdGxfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzdGxpX2luaXQodm9pZCk7CmV4dGVybiBpbnQg
c3BlY2lhbGl4X2luaXQodm9pZCk7CmV4dGVybiBpbnQgZXNwc2VyaWFsX2luaXQodm9pZCk7CmV4
dGVybiBpbnQgbWFjc2VyaWFsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgYTIyMzJib2FyZF9pbml0
KHZvaWQpOwoKZXh0ZXJuIGludCB0dHlfcGFyYW5vaWFfY2hlY2soc3RydWN0IHR0eV9zdHJ1Y3Qg
KnR0eSwga2Rldl90IGRldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqcm91dGluZSk7CmV4dGVybiBjaGFyICp0dHlfbmFtZShzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5LCBjaGFyICpidWYpOwpleHRlcm4gdm9pZCB0dHlfd2FpdF91bnRpbF9zZW50X1I5YTQzNmEz
NyhzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgbG9uZyB0aW1lb3V0KTsKZXh0ZXJuIGludCB0dHlf
Y2hlY2tfY2hhbmdlX1I1ODM3NWE1OChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2
b2lkIHN0b3BfdHR5KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3RhcnRf
dHR5KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJfbGRp
c2NfUjMzMjgwNjg5KGludCBkaXNjLCBzdHJ1Y3QgdHR5X2xkaXNjICpuZXdfbGRpc2MpOwpleHRl
cm4gaW50IHR0eV9yZWdpc3Rlcl9kcml2ZXJfUjA0ZmU0OWE3KHN0cnVjdCB0dHlfZHJpdmVyICpk
cml2ZXIpOwpleHRlcm4gaW50IHR0eV91bnJlZ2lzdGVyX2RyaXZlcl9SM2Q2OGVmNjAoc3RydWN0
IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVybiB2b2lkIHR0eV9yZWdpc3Rlcl9kZXZmc19SNzg0
MjE4MTggKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVkIGludCBmbGFncywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtaW5vcik7CmV4dGVybiB2b2lk
IHR0eV91bnJlZ2lzdGVyX2RldmZzX1I0ZmQ0YWRiZCAoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZl
ciwgdW5zaWduZWQgbWlub3IpOwpleHRlcm4gaW50IHR0eV9yZWFkX3Jhd19kYXRhKHN0cnVjdCB0
dHlfc3RydWN0ICp0dHksIHVuc2lnbmVkIGNoYXIgKmJ1ZnAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGJ1Zmxlbik7CmV4dGVybiB2b2lkIHR0eV93cml0ZV9tZXNzYWdlKHN0cnVj
dCB0dHlfc3RydWN0ICp0dHksIGNoYXIgKm1zZyk7CgpleHRlcm4gaW50IGlzX29ycGhhbmVkX3Bn
cnAoaW50IHBncnApOwpleHRlcm4gaW50IGlzX2lnbm9yZWQoaW50IHNpZyk7CmV4dGVybiBpbnQg
dHR5X3NpZ25hbChpbnQgc2lnLCBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZvaWQg
dHR5X2hhbmd1cF9SNTM1YjYxZTAoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gdm9p
ZCB0dHlfdmhhbmd1cChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHR0eV91
bmhhbmd1cChzdHJ1Y3QgZmlsZSAqZmlscCk7CmV4dGVybiBpbnQgdHR5X2h1bmdfdXBfcF9SY2Nl
NGMxNDIoc3RydWN0IGZpbGUgKiBmaWxwKTsKZXh0ZXJuIHZvaWQgZG9fU0FLX1IzMWVjNmU2Nihz
dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZvaWQgZGlzYXNzb2NpYXRlX2N0dHkoaW50
IHByaXYpOwpleHRlcm4gdm9pZCB0dHlfZmxpcF9idWZmZXJfcHVzaF9SNDk5NzZkMTcoc3RydWN0
IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiBpbnQgdHR5X2dldF9iYXVkX3JhdGVfUmEyNWFlYjQ1
KHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwoKCmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIHR0eV9s
ZGlzY19OX1RUWTsKCgpleHRlcm4gaW50IG5fdHR5X2lvY3RsX1IzNjg1YjM0ZShzdHJ1Y3QgdHR5
X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTsKCgoKZXh0ZXJuIHZvaWQgc2Vy
aWFsX2NvbnNvbGVfaW5pdCh2b2lkKTsKCgoKZXh0ZXJuIGludCBwY3hlX29wZW4oc3RydWN0IHR0
eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbHApOwoKCgpleHRlcm4gdm9pZCBjb25zb2xl
X3ByaW50X1JiNzE0YTk4MShjb25zdCBjaGFyICopOwoKCgpleHRlcm4gaW50IHZ0X2lvY3RsKHN0
cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiMgMjcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2VtLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2lwYy5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9pcGMuaCIKc3RydWN0IGlwY19wZXJtCnsKICAgICAgICBfX2tl
cm5lbF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlkOwogICAgICAgIF9fa2Vy
bmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF91aWRfdCBjdWlkOwogICAgICAgIF9fa2Vy
bmVsX2dpZF90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IG1vZGU7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc2VxOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9hc20vaXBjYnVmLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9h
c20vaXBjYnVmLmgiCnN0cnVjdCBpcGM2NF9wZXJtCnsKICAgICAgICBfX2tlcm5lbF9rZXlfdCBr
ZXk7CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkMzJf
dCBnaWQ7CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCBjdWlkOwogICAgICAgIF9fa2VybmVsX2dp
ZDMyX3QgY2dpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgbW9kZTsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBfX3BhZDE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VxOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKfTsKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9pcGMuaCIgMgojIDU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L2lwYy5oIgpzdHJ1Y3Qga2Vybl9pcGNfcGVybQp7CiAgICAgICAga2V5X3Qg
a2V5OwogICAgICAgIHVpZF90IHVpZDsKICAgICAgICBnaWRfdCBnaWQ7CiAgICAgICAgdWlkX3Qg
Y3VpZDsKICAgICAgICBnaWRfdCBjZ2lkOwogICAgICAgIG1vZGVfdCBtb2RlOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc2VxOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvc2VtLmgiIDIKIyAyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9zZW0uaCIKc3RydWN0IHNlbWlkX2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gc2VtX3Bl
cm07CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICBfX2tlcm5lbF90
aW1lX3Qgc2VtX2N0aW1lOwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogICAgICAgIHN0
cnVjdCBzZW1fcXVldWUgKnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKipz
ZW1fcGVuZGluZ19sYXN0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBzZW1fbnNlbXM7Cn07CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2FzbS9zZW1idWYuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2FzbS9zZW1idWYuaCIKc3RydWN0IHNlbWlkNjRfZHMgewogICAgICAgIHN0cnVjdCBp
cGM2NF9wZXJtIHNlbV9wZXJtOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fb3RpbWU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNl
bV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNlbV9uc2VtczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAg
ICB1bnNpZ25lZCBsb25nIF9fdW51c2VkNDsKfTsKIyAzNiAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9zZW0uaCIgMgoKCnN0cnVjdCBzZW1idWYgewogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNlbV9udW07CiAgICAgICAgc2hvcnQgc2VtX29wOwogICAgICAgIHNob3J0IHNl
bV9mbGc7Cn07CgoKdW5pb24gc2VtdW4gewogICAgICAgIGludCB2YWw7CiAgICAgICAgc3RydWN0
IHNlbWlkX2RzICpidWY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKmFycmF5OwogICAgICAgIHN0
cnVjdCBzZW1pbmZvICpfX2J1ZjsKICAgICAgICB2b2lkICpfX3BhZDsKfTsKCnN0cnVjdCBzZW1p
bmZvIHsKICAgICAgICBpbnQgc2VtbWFwOwogICAgICAgIGludCBzZW1tbmk7CiAgICAgICAgaW50
IHNlbW1uczsKICAgICAgICBpbnQgc2VtbW51OwogICAgICAgIGludCBzZW1tc2w7CiAgICAgICAg
aW50IHNlbW9wbTsKICAgICAgICBpbnQgc2VtdW1lOwogICAgICAgIGludCBzZW11c3o7CiAgICAg
ICAgaW50IHNlbXZteDsKICAgICAgICBpbnQgc2VtYWVtOwp9OwojIDgyICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NlbS5oIgpzdHJ1Y3Qgc2VtIHsKICAgICAgICBpbnQg
c2VtdmFsOwogICAgICAgIGludCBzZW1waWQ7Cn07CgoKc3RydWN0IHNlbV9hcnJheSB7CiAgICAg
ICAgc3RydWN0IGtlcm5faXBjX3Blcm0gc2VtX3Blcm07CiAgICAgICAgdGltZV90IHNlbV9vdGlt
ZTsKICAgICAgICB0aW1lX3Qgc2VtX2N0aW1lOwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNl
OwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBz
ZW1fcXVldWUgKipzZW1fcGVuZGluZ19sYXN0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5k
bzsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlbV9uc2VtczsKfTsKCgpzdHJ1Y3Qgc2VtX3F1ZXVl
IHsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICogbmV4dDsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1
ZXVlICoqIHByZXY7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0KiBzbGVlcGVyOwogICAgICAg
IHN0cnVjdCBzZW1fdW5kbyAqIHVuZG87CiAgICAgICAgaW50IHBpZDsKICAgICAgICBpbnQgc3Rh
dHVzOwogICAgICAgIHN0cnVjdCBzZW1fYXJyYXkgKiBzbWE7CiAgICAgICAgaW50IGlkOwogICAg
ICAgIHN0cnVjdCBzZW1idWYgKiBzb3BzOwogICAgICAgIGludCBuc29wczsKICAgICAgICBpbnQg
YWx0ZXI7Cn07CgoKCgpzdHJ1Y3Qgc2VtX3VuZG8gewogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAq
IHByb2NfbmV4dDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBpZF9uZXh0OwogICAgICAgIGlu
dCBzZW1pZDsKICAgICAgICBzaG9ydCAqIHNlbWFkajsKfTsKCiBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDApKSkgbG9uZyBzeXNfc2VtZ2V0IChrZXlfdCBrZXksIGludCBuc2VtcywgaW50IHNlbWZs
Zyk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfc2Vtb3AgKGludCBzZW1p
ZCwgc3RydWN0IHNlbWJ1ZiAqc29wcywgdW5zaWduZWQgbnNvcHMpOwogX19hdHRyaWJ1dGVfXygo
cmVncGFybSgwKSkpIGxvbmcgc3lzX3NlbWN0bCAoaW50IHNlbWlkLCBpbnQgc2VtbnVtLCBpbnQg
Y21kLCB1bmlvbiBzZW11biBhcmcpOwojIDI4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L3NpZ25hbC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9hc20vc2lnbmFsLmgiIDEKCgoKCgoKc3RydWN0IHNpZ2luZm87CiMgMTcgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3NpZ25hbC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
b2xkX3NpZ3NldF90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2ln
Wyg2NCAvIDMyKV07Cn0gc2lnc2V0X3Q7CiMgMTI5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2FzbS9zaWduYWwuaCIKdHlwZWRlZiB2b2lkICgqX19zaWdoYW5kbGVyX3QpKGludCk7
CgoKCgoKCnN0cnVjdCBvbGRfc2lnYWN0aW9uIHsKICAgICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9o
YW5kbGVyOwogICAgICAgIG9sZF9zaWdzZXRfdCBzYV9tYXNrOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc2FfZmxhZ3M7CiAgICAgICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSh2b2lkKTsKfTsKCnN0cnVj
dCBzaWdhY3Rpb24gewogICAgICAgIF9fc2lnaGFuZGxlcl90IHNhX2hhbmRsZXI7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzYV9mbGFnczsKICAgICAgICB2b2lkICgqc2FfcmVzdG9yZXIpKHZvaWQp
OwogICAgICAgIHNpZ3NldF90IHNhX21hc2s7Cn07CgpzdHJ1Y3Qga19zaWdhY3Rpb24gewogICAg
ICAgIHN0cnVjdCBzaWdhY3Rpb24gc2E7Cn07CiMgMTcxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2FzbS9zaWduYWwuaCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnYWx0c3RhY2sgewogICAg
ICAgIHZvaWQgKnNzX3NwOwogICAgICAgIGludCBzc19mbGFnczsKICAgICAgICBzaXplX3Qgc3Nf
c2l6ZTsKfSBzdGFja190OwoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNpZ2FkZHNldChz
aWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIF9fYXNtX18oImJ0c2wgJTEsJTAiIDog
Ij1tIigqc2V0KSA6ICJJciIoX3NpZyAtIDEpIDogImNjIik7Cn0KCnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgc2lnZGVsc2V0KHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAgX19hc21f
XygiYnRybCAlMSwlMCIgOiAiPW0iKCpzZXQpIDogIklyIihfc2lnIC0gMSkgOiAiY2MiKTsKfQoK
c3RhdGljIF9faW5saW5lX18gaW50IF9fY29uc3Rfc2lnaXNtZW1iZXIoc2lnc2V0X3QgKnNldCwg
aW50IF9zaWcpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpZyA9IF9zaWcgLSAxOwogICAgICAg
IHJldHVybiAxICYgKHNldC0+c2lnW3NpZyAvIDMyXSA+PiAoc2lnICUgMzIpKTsKfQoKc3RhdGlj
IF9faW5saW5lX18gaW50IF9fZ2VuX3NpZ2lzbWVtYmVyKHNpZ3NldF90ICpzZXQsIGludCBfc2ln
KQp7CiAgICAgICAgaW50IHJldDsKICAgICAgICBfX2FzbV9fKCJidGwgJTIsJTFcblx0c2JibCAl
MCwlMCIKICAgICAgICAgICAgICAgIDogIj1yIihyZXQpIDogIm0iKCpzZXQpLCAiSXIiKF9zaWct
MSkgOiAiY2MiKTsKICAgICAgICByZXR1cm4gcmV0Owp9CiMgMjEzICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2FzbS9zaWduYWwuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHNpZ2Zp
bmRpbndvcmQodW5zaWduZWQgbG9uZyB3b3JkKQp7CiAgICAgICAgX19hc21fXygiYnNmbCAlMSwl
MCIgOiAiPXIiKHdvcmQpIDogInJtIih3b3JkKSA6ICJjYyIpOwogICAgICAgIHJldHVybiB3b3Jk
Owp9CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zaWduYWwuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3NpZ2luZm8uaCIgMQoK
CgoKCgoKdHlwZWRlZiB1bmlvbiBzaWd2YWwgewogICAgICAgIGludCBzaXZhbF9pbnQ7CiAgICAg
ICAgdm9pZCAqc2l2YWxfcHRyOwp9IHNpZ3ZhbF90OwoKCgoKdHlwZWRlZiBzdHJ1Y3Qgc2lnaW5m
byB7CiAgICAgICAgaW50IHNpX3NpZ25vOwogICAgICAgIGludCBzaV9lcnJubzsKICAgICAgICBp
bnQgc2lfY29kZTsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgaW50IF9wYWRbKCgx
Mjgvc2l6ZW9mKGludCkpIC0gMyldOwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAgICAgICAgICAgICAgICAgICAgICB1aWRf
dCBfdWlkOwogICAgICAgICAgICAgICAgfSBfa2lsbDsKCgogICAgICAgICAgICAgICAgc3RydWN0
IHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF90aW1lcjE7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfdGltZXIyOwogICAgICAgICAgICAgICAgfSBf
dGltZXI7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHBpZF90IF9waWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHNpZ3ZhbF90IF9zaWd2YWw7CiAgICAgICAgICAgICAgICB9IF9ydDsK
CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3Qg
X3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IF9zdGF0dXM7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrX3QgX3V0
aW1lOwogICAgICAgICAgICAgICAgICAgICAgICBjbG9ja190IF9zdGltZTsKICAgICAgICAgICAg
ICAgIH0gX3NpZ2NobGQ7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWQgKl9hZGRyOwogICAgICAgICAgICAgICAgfSBfc2lnZmF1bHQ7CgoKICAg
ICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfYmFuZDsK
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9mZDsKICAgICAgICAgICAgICAgIH0gX3NpZ3Bv
bGw7CiAgICAgICAgfSBfc2lmaWVsZHM7Cn0gc2lnaW5mb190OwojIDIwMCAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9hc20vc2lnaW5mby5oIgp0eXBlZGVmIHN0cnVjdCBzaWdldmVu
dCB7CiAgICAgICAgc2lndmFsX3Qgc2lnZXZfdmFsdWU7CiAgICAgICAgaW50IHNpZ2V2X3NpZ25v
OwogICAgICAgIGludCBzaWdldl9ub3RpZnk7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAg
ICAgaW50IF9wYWRbKCg2NC9zaXplb2YoaW50KSkgLSAzKV07CgogICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9mdW5jdGlvbikoc2lndmFsX3Qp
OwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfYXR0cmlidXRlOwogICAgICAgICAgICAg
ICAgfSBfc2lnZXZfdGhyZWFkOwogICAgICAgIH0gX3NpZ2V2X3VuOwp9IHNpZ2V2ZW50X3Q7CgoK
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgY29weV9zaWdpbmZvKHNpZ2luZm9fdCAqdG8sIHNpZ2lu
Zm9fdCAqZnJvbSkKewogICAgICAgIGlmIChmcm9tLT5zaV9jb2RlIDwgMCkKICAgICAgICAgICAg
ICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXplb2Yoc2lnaW5mb190KSkgPyBfX2NvbnN0YW50
X21lbWNweSgodG8pLChmcm9tKSwoc2l6ZW9mKHNpZ2luZm9fdCkpKSA6IF9fbWVtY3B5KCh0byks
KGZyb20pLChzaXplb2Yoc2lnaW5mb190KSkpKTsKICAgICAgICBlbHNlCgogICAgICAgICAgICAg
ICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDMqc2l6ZW9mKGludCkgKyBzaXplb2YoZnJvbS0+X3Np
ZmllbGRzLl9zaWdjaGxkKSkgPyBfX2NvbnN0YW50X21lbWNweSgodG8pLChmcm9tKSwoMypzaXpl
b2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKSkgOiBfX21lbWNweSgo
dG8pLChmcm9tKSwoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2No
bGQpKSkpOwp9CgpleHRlcm4gaW50IGNvcHlfc2lnaW5mb190b191c2VyKHNpZ2luZm9fdCAqdG8s
IHNpZ2luZm9fdCAqZnJvbSk7CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9zaWduYWwuaCIgMgoKCgoKCgpzdHJ1Y3Qgc2lncXVldWUgewogICAgICAgIHN0cnVjdCBz
aWdxdWV1ZSAqbmV4dDsKICAgICAgICBzaWdpbmZvX3QgaW5mbzsKfTsKCnN0cnVjdCBzaWdwZW5k
aW5nIHsKICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKmhlYWQsICoqdGFpbDsKICAgICAgICBzaWdz
ZXRfdCBzaWduYWw7Cn07CiMgMTA4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnb3JzZXRzKHNpZ3NldF90ICpyLCBj
b25zdCBzaWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBhMCwg
YTEsIGEyLCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsg
aSA8ICg2NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0
KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGItPnNp
Z1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9IGIt
PnNpZ1s0KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCppKzFd
ID0gKChhMSkgfCAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7IHItPnNpZ1s0
KmkrM10gPSAoKGEzKSB8IChiMykpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6
IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0Kmkr
Ml07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0
KmkrMl07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCppKzFdID0gKChh
MSkgfCAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7IGJyZWFrOyBjYXNlIDI6
IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0Kmkr
MF07IGIxID0gYi0+c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IHIt
PnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyBicmVhazsgY2FzZSAxOiBhMCA9IGEtPnNpZ1s0
KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIwKSk7
IGJyZWFrOyB9IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYW5kc2V0cyhzaWdzZXRfdCAqciwg
Y29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVuc2lnbmVkIGxvbmcgYTAs
IGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9IDA7
IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdb
NCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQqaSszXTsgYjAgPSBiLT5z
aWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgYjMgPSBi
LT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQqaSsx
XSA9ICgoYTEpICYgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikpOyByLT5zaWdb
NCppKzNdID0gKChhMykgJiAoYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAz
OiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCpp
KzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdb
NCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgo
YTEpICYgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikpOyBicmVhazsgY2FzZSAy
OiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBiLT5zaWdbNCpp
KzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyBy
LT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsgYnJlYWs7IGNhc2UgMTogYTAgPSBhLT5zaWdb
NCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChiMCkp
OyBicmVhazsgfSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ25hbmRzZXRzKHNpZ3NldF90ICpy
LCBjb25zdCBzaWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBh
MCwgYTEsIGEyLCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0g
MDsgaSA8ICg2NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNp
Z1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGIt
PnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9
IGItPnNpZ1s0KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgci0+c2lnWzQq
aSsxXSA9ICgoYTEpICYgfihiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiB+KGIyKSk7IHIt
PnNpZ1s0KmkrM10gPSAoKGEzKSAmIH4oYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsg
Y2FzZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5z
aWdbNCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBi
LT5zaWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IHItPnNpZ1s0Kmkr
MV0gPSAoKGExKSAmIH4oYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgfihiMikpOyBicmVh
azsgY2FzZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBi
LT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAm
IH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyBicmVhazsgY2FzZSAxOiBh
MCA9IGEtPnNpZ1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgo
YTApICYgfihiMCkpOyBicmVhazsgfSB9CiMgMTQwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L3NpZ25hbC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnbm90c2V0KHNpZ3Nl
dF90ICpzZXQpIHsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7
ICsraSkgeyBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0KmkrMF0pKTsgc2V0LT5zaWdb
NCppKzFdID0gKH4oc2V0LT5zaWdbNCppKzFdKSk7IHNldC0+c2lnWzQqaSsyXSA9ICh+KHNldC0+
c2lnWzQqaSsyXSkpOyBzZXQtPnNpZ1s0KmkrM10gPSAofihzZXQtPnNpZ1s0KmkrM10pKTsgfSBz
d2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBzZXQtPnNpZ1s0KmkrMl0gPSAofihzZXQt
PnNpZ1s0KmkrMl0pKTsgY2FzZSAyOiBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQtPnNpZ1s0Kmkr
MV0pKTsgY2FzZSAxOiBzZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0KmkrMF0pKTsgfSB9
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZW1wdHlzZXQoc2lnc2V0X3QgKnNldCkKewogICAg
ICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
IChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9m
KHNpZ3NldF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChzZXQpKSwoKDB4
MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkgOiBf
X2NvbnN0YW50X2NfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIp
KDApKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6
ZW9mKHNpZ3NldF90KSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKChzZXQpKSksKCgoMCkpKSwoKChz
aXplb2Yoc2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQpKSwoKDApKSwoKHNp
emVvZihzaWdzZXRfdCkpKSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
Mjogc2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTogc2V0LT5zaWdbMF0gPSAwOwogICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZmls
bHNldChzaWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKC0xKSA/IChf
X2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19jb25zdGFudF9jX2Fu
ZF9jb3VudF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoLTEp
KSksKChzaXplb2Yoc2lnc2V0X3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKHNldCkpLCgo
MHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkp
IDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX21lbXNldF9n
ZW5lcmljKCgoKHNldCkpKSwoKCgtMSkpKSwoKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IF9fbWVt
c2V0X2dlbmVyaWMoKChzZXQpKSwoKC0xKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSk7CiAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gLTE7CiAgICAg
ICAgY2FzZSAxOiBzZXQtPnNpZ1swXSA9IC0xOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgfQp9CgpleHRlcm4gY2hhciAqIHJlbmRlcl9zaWdzZXRfdChzaWdzZXRfdCAqc2V0LCBjaGFy
ICpidWZmZXIpOwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYWRkc2V0bWFzayhzaWdzZXRfdCAq
c2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSB8PSBtYXNrOwp9
CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZGVsc2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25l
ZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSAmPSB+bWFzazsKfQoKc3RhdGljIGlu
bGluZSBpbnQgc2lndGVzdHNldG1hc2soc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNr
KQp7CiAgICAgICAgcmV0dXJuIChzZXQtPnNpZ1swXSAmIG1hc2spICE9IDA7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCBzaWdpbml0c2V0KHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykK
ewogICAgICAgIHNldC0+c2lnWzBdID0gbWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkg
ewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3Ao
MCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkg
PyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCZzZXQtPnNpZ1sxXSkpLCgoMHgwMTAx
MDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkp
KSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwq
KHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSkgOiAo
X19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX21l
bXNldF9nZW5lcmljKCgoKCZzZXQtPnNpZ1sxXSkpKSwoKCgwKSkpLCgoKHNpemVvZihsb25nKSoo
KDY0IC8gMzIpLTEpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgmc2V0LT5zaWdbMV0pKSwoKDAp
KSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gMDsKICAgICAgICBjYXNlIDE6IDsKICAg
ICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0aW52KHNpZ3NldF90ICpzZXQs
IHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0gfm1hc2s7CiAgICAg
ICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
KF9fYnVpbHRpbl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9m
KGxvbmcpKigoNjQgLyAzMiktMSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgo
JnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkpLCgoc2l6
ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoJnNldC0+
c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkpLCgoc2l6ZW9mKGxv
bmcpKigoNjQgLyAzMiktMSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YobG9u
ZykqKCg2NCAvIDMyKS0xKSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgmc2V0LT5zaWdbMV0pKSks
KCgoLTEpKSksKCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogX19tZW1zZXRfZ2Vu
ZXJpYygoKCZzZXQtPnNpZ1sxXSkpLCgoLTEpKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEp
KSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFd
ID0gLTE7CiAgICAgICAgY2FzZSAxOiA7CiAgICAgICAgfQp9CgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBpbml0X3NpZ3BlbmRpbmcoc3RydWN0IHNpZ3BlbmRpbmcgKnNpZykKewogICAgICAgIHNpZ2Vt
cHR5c2V0KCZzaWctPnNpZ25hbCk7CiAgICAgICAgc2lnLT5oZWFkID0gKCh2b2lkICopMCk7CiAg
ICAgICAgc2lnLT50YWlsID0gJnNpZy0+aGVhZDsKfQoKZXh0ZXJuIGxvbmcgZG9fc2lncGVuZGlu
Zyh2b2lkICosIHVuc2lnbmVkIGxvbmcpOwoKCnN0cnVjdCBwdF9yZWdzOwpleHRlcm4gaW50IGdl
dF9zaWduYWxfdG9fZGVsaXZlcihzaWdpbmZvX3QgKmluZm8sIHN0cnVjdCBwdF9yZWdzICpyZWdz
KTsKIyAyOSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zZWN1cmViaXRzLmgi
IDEKCgoKCgpleHRlcm4gdW5zaWduZWQgc2VjdXJlYml0c19SYWJlNzc0ODQ7CiMgMzAgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZnNfc3RydWN0LmgiIDEKCgoKCgoKCnN0cnVj
dCBmc19zdHJ1Y3QgewogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIHJ3bG9ja190IGxv
Y2s7CiAgICAgICAgaW50IHVtYXNrOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiByb290LCAqIHB3
ZCwgKiBhbHRyb290OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqIHJvb3RtbnQsICogcHdkbW50
LCAqIGFsdHJvb3RtbnQ7Cn07CiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvZnNfc3RydWN0LmgiCmV4dGVybiB2b2lkIGV4aXRfZnNfUmVkMDcxZTMxKHN0cnVjdCB0
YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgc2V0X2ZzX2FsdHJvb3Qodm9pZCk7CgoKCgoKCnN0
YXRpYyBpbmxpbmUgdm9pZCBzZXRfZnNfcm9vdChzdHJ1Y3QgZnNfc3RydWN0ICpmcywKICAgICAg
ICBzdHJ1Y3QgdmZzbW91bnQgKm1udCwKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsK
ICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcm9vdDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQg
Km9sZF9yb290bW50OwogICAgICAgICh2b2lkKSgmZnMtPmxvY2spOwogICAgICAgIG9sZF9yb290
ID0gZnMtPnJvb3Q7CiAgICAgICAgb2xkX3Jvb3RtbnQgPSBmcy0+cm9vdG1udDsKICAgICAgICBm
cy0+cm9vdG1udCA9IG1udGdldChtbnQpOwogICAgICAgIGZzLT5yb290ID0gZGdldChkZW50cnkp
OwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBpZiAob2xkX3Jvb3QpIHsKICAgICAg
ICAgICAgICAgIGRwdXRfUjNkZTgxM2E2KG9sZF9yb290KTsKICAgICAgICAgICAgICAgIG1udHB1
dChvbGRfcm9vdG1udCk7CiAgICAgICAgfQp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRf
ZnNfcHdkKHN0cnVjdCBmc19zdHJ1Y3QgKmZzLAogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50
LAogICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkg
Km9sZF9wd2Q7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpvbGRfcHdkbW50OwogICAgICAgICh2
b2lkKSgmZnMtPmxvY2spOwogICAgICAgIG9sZF9wd2QgPSBmcy0+cHdkOwogICAgICAgIG9sZF9w
d2RtbnQgPSBmcy0+cHdkbW50OwogICAgICAgIGZzLT5wd2RtbnQgPSBtbnRnZXQobW50KTsKICAg
ICAgICBmcy0+cHdkID0gZGdldChkZW50cnkpOwogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAg
ICAgICBpZiAob2xkX3B3ZCkgewogICAgICAgICAgICAgICAgZHB1dF9SM2RlODEzYTYob2xkX3B3
ZCk7CiAgICAgICAgICAgICAgICBtbnRwdXQob2xkX3B3ZG1udCk7CiAgICAgICAgfQp9CgpzdHJ1
Y3QgZnNfc3RydWN0ICpjb3B5X2ZzX3N0cnVjdChzdHJ1Y3QgZnNfc3RydWN0ICpvbGQpOwp2b2lk
IHB1dF9mc19zdHJ1Y3Qoc3RydWN0IGZzX3N0cnVjdCAqZnMpOwojIDMxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L3BpZC5oIiAxCgoKCmVudW0gcGlkX3R5cGUKewogICAgICAg
IFBJRFRZUEVfUElELAogICAgICAgIFBJRFRZUEVfVEdJRCwKICAgICAgICBQSURUWVBFX1BHSUQs
CiAgICAgICAgUElEVFlQRV9TSUQsCiAgICAgICAgUElEVFlQRV9NQVgKfTsKCnN0cnVjdCBwaWQK
ewogICAgICAgIGludCBucjsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnRhc2s7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0YXNrX2xpc3Q7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBoYXNoX2NoYWluOwp9OwoKc3RydWN0IHBpZF9saW5rCnsK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHBpZF9jaGFpbjsKICAgICAgICBzdHJ1Y3QgcGlkICpw
aWRwdHI7CiAgICAgICAgc3RydWN0IHBpZCBwaWQ7Cn07CiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvcGlkLmgiCmV4dGVybiBpbnQgYXR0YWNoX3BpZChzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnRhc2ssIGVudW0gcGlkX3R5cGUgdHlwZSwgaW50IG5yKSBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDMpKSk7CgpleHRlcm4gdm9pZCBsaW5rX3BpZChzdHJ1Y3QgdGFza19zdHJ1
Y3QgKnRhc2ssIHN0cnVjdCBwaWRfbGluayAqbGluaywgc3RydWN0IHBpZCAqcGlkKSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoKCgpleHRlcm4gdm9pZCBkZXRhY2hfcGlkKHN0cnVjdCB0
YXNrX3N0cnVjdCAqdGFzaywgZW51bSBwaWRfdHlwZSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgcGlkICpmaW5kX3BpZChlbnVtIHBpZF90eXBlLCBpbnQp
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiBpbnQgYWxsb2NfcGlkbWFwKHZv
aWQpOwpleHRlcm4gdm9pZCBmcmVlX3BpZG1hcChpbnQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKZXh0ZXJuIHZvaWQgc3dpdGNoX2V4ZWNfcGlkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKmxl
YWRlciwgc3RydWN0IHRhc2tfc3RydWN0ICp0aHJlYWQpOwojIDMyICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCnN0cnVjdCBleGVjX2RvbWFpbjsKZXh0
ZXJuIGludCBwYW5pY190aW1lb3V0X1IxZjg1NDRiODsKIyA3NCAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBhdmVucnVu
W107CiMgOTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2NoZWQuaCIK
ZXh0ZXJuIGludCBucl90aHJlYWRzOwpleHRlcm4gaW50IGxhc3RfcGlkOwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBucl9ydW5uaW5nKHZvaWQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBucl91bmludGVy
cnVwdGlibGUodm9pZCk7CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9wYXJhbS5oIiAxCiMgOTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
cmVzb3VyY2UuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L3Jlc291cmNlLmgiCnN0cnVjdCBydXNhZ2UgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0
aW1lOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwogICAgICAgIGxvbmcgcnVfbWF4
cnNzOwogICAgICAgIGxvbmcgcnVfaXhyc3M7CiAgICAgICAgbG9uZyBydV9pZHJzczsKICAgICAg
ICBsb25nIHJ1X2lzcnNzOwogICAgICAgIGxvbmcgcnVfbWluZmx0OwogICAgICAgIGxvbmcgcnVf
bWFqZmx0OwogICAgICAgIGxvbmcgcnVfbnN3YXA7CiAgICAgICAgbG9uZyBydV9pbmJsb2NrOwog
ICAgICAgIGxvbmcgcnVfb3VibG9jazsKICAgICAgICBsb25nIHJ1X21zZ3NuZDsKICAgICAgICBs
b25nIHJ1X21zZ3JjdjsKICAgICAgICBsb25nIHJ1X25zaWduYWxzOwogICAgICAgIGxvbmcgcnVf
bnZjc3c7CiAgICAgICAgbG9uZyBydV9uaXZjc3c7Cn07CgpzdHJ1Y3QgcmxpbWl0IHsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHJsaW1fY3VyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9tYXg7
Cn07CiMgNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcmVzb3VyY2Uu
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9yZXNvdXJjZS5oIiAx
CiMgNTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIg
MgojIDEwMCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAy
CiMgMTQwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0
cnVjdCBzY2hlZF9wYXJhbSB7CiAgICAgICAgaW50IHNjaGVkX3ByaW9yaXR5Owp9OwoKc3RydWN0
IGNvbXBsZXRpb247CiMgMTU2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiCmV4dGVybiByd2xvY2tfdCB0YXNrbGlzdF9sb2NrX1I5OTljODBhMjsKZXh0ZXJu
IHNwaW5sb2NrX3QgbW1saXN0X2xvY2s7Cgp0eXBlZGVmIHN0cnVjdCB0YXNrX3N0cnVjdCB0YXNr
X3Q7CgpleHRlcm4gdm9pZCBfX3B1dF90YXNrX3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRz
ayk7CgoKCgpleHRlcm4gdm9pZCBzY2hlZF9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2lk
bGUodGFza190ICppZGxlLCBpbnQgY3B1KTsKZXh0ZXJuIHZvaWQgc2hvd19zdGF0ZV9SNDE3NjVl
NWUodm9pZCk7CmV4dGVybiB2b2lkIHNob3dfc3RhY2sodW5zaWduZWQgbG9uZyAqIGVzcCk7CmV4
dGVybiB2b2lkIGNwdV9pbml0ICh2b2lkKTsKZXh0ZXJuIHZvaWQgdHJhcF9pbml0KHZvaWQpOwpl
eHRlcm4gdm9pZCB1cGRhdGVfcHJvY2Vzc190aW1lcyhpbnQgdXNlcik7CmV4dGVybiB2b2lkIHVw
ZGF0ZV9vbmVfcHJvY2Vzcyh0YXNrX3QgKnAsIHVuc2lnbmVkIGxvbmcgdXNlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3lzdGVtLCBpbnQgY3B1KTsKZXh0
ZXJuIHZvaWQgc2NoZWR1bGVyX3RpY2soaW50IHVzZXJfdGljaywgaW50IHN5c3RlbSk7CmV4dGVy
biBpbnQgbWlncmF0aW9uX2luaXQodm9pZCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGNhY2hlX2Rl
Y2F5X3RpY2tzOwoKCmV4dGVybiBzaWduZWQgbG9uZyBzY2hlZHVsZV90aW1lb3V0X1IxN2Q1OWQw
MShzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgdm9pZCBzY2hlZHVsZV9SNDI5MjM2NGModm9pZCk7Cgpl
eHRlcm4gaW50IHNjaGVkdWxlX3Rhc2tfUjJkNmMzZDA0KHN0cnVjdCB0cV9zdHJ1Y3QgKnRhc2sp
OwpleHRlcm4gdm9pZCBmbHVzaF9zY2hlZHVsZWRfdGFza3NfUjdjMzI0MmI0KHZvaWQpOwpleHRl
cm4gaW50IHN0YXJ0X2NvbnRleHRfdGhyZWFkKHZvaWQpOwpleHRlcm4gaW50IGN1cnJlbnRfaXNf
a2V2ZW50ZCh2b2lkKTsKIyAyMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvc2NoZWQuaCIKc3RydWN0IG5hbWVzcGFjZTsKCgoKc3RydWN0IGZpbGVzX3N0cnVjdCB7CiAg
ICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgcndsb2NrX3QgZmlsZV9sb2NrOwogICAgICAg
IGludCBtYXhfZmRzOwogICAgICAgIGludCBtYXhfZmRzZXQ7CiAgICAgICAgaW50IG5leHRfZmQ7
CiAgICAgICAgc3RydWN0IGZpbGUgKiogZmQ7CiAgICAgICAgZmRfc2V0ICpjbG9zZV9vbl9leGVj
OwogICAgICAgIGZkX3NldCAqb3Blbl9mZHM7CiAgICAgICAgZmRfc2V0IGNsb3NlX29uX2V4ZWNf
aW5pdDsKICAgICAgICBmZF9zZXQgb3Blbl9mZHNfaW5pdDsKICAgICAgICBzdHJ1Y3QgZmlsZSAq
IGZkX2FycmF5WzMyXTsKfTsKIyAyNDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvc2NoZWQuaCIKZXh0ZXJuIGludCBtYXhfbWFwX2NvdW50OwoKc3RydWN0IG1tX3N0cnVj
dCB7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcDsKICAgICAgICByYl9yb290
X3QgbW1fcmI7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcF9jYWNoZTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGZyZWVfYXJlYV9jYWNoZTsKICAgICAgICBwZ2RfdCAqIHBnZDsK
ICAgICAgICBhdG9taWNfdCBtbV91c2VyczsKICAgICAgICBhdG9taWNfdCBtbV9jb3VudDsKICAg
ICAgICBpbnQgbWFwX2NvdW50OwogICAgICAgIHN0cnVjdCByd19zZW1hcGhvcmUgbW1hcF9zZW07
CiAgICAgICAgc3BpbmxvY2tfdCBwYWdlX3RhYmxlX2xvY2s7CgogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgbW1saXN0OwoKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2NvZGUsIGVuZF9j
b2RlLCBzdGFydF9kYXRhLCBlbmRfZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2Jy
aywgYnJrLCBzdGFydF9zdGFjazsKICAgICAgICB1bnNpZ25lZCBsb25nIGFyZ19zdGFydCwgYXJn
X2VuZCwgZW52X3N0YXJ0LCBlbnZfZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnNzLCB0b3Rh
bF92bSwgbG9ja2VkX3ZtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGVmX2ZsYWdzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgY3B1X3ZtX21hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBybGltaXRf
cnNzOwoKICAgICAgICB1bnNpZ25lZCBkdW1wYWJsZToxOwoKICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBscnM7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
b25nIGRyczsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdHJzOwogICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyByc3M7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5vdHBy
ZXNlbnQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHByZXNlbnQ7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIHNoYXJhYmxlOwogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyB3cml0YWJsZTsKICAgICAgICB9IG1tX3N0YXQ7CgoKICAgICAgICBtbV9jb250ZXh0X3QgY29u
dGV4dDsKCgogICAgICAgIGludCBjb3JlX3dhaXRlcnM7CiAgICAgICAgc3RydWN0IGNvbXBsZXRp
b24gKmNvcmVfc3RhcnR1cF9kb25lLCBjb3JlX2RvbmU7Cn07CgpleHRlcm4gaW50IG1tbGlzdF9u
cjsKIyAzMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2NoZWQuaCIK
ZXh0ZXJuIHZvaWQgc2hvd19zdGFjayh1bnNpZ25lZCBsb25nICplc3ApOwoKZXh0ZXJuIGludCBf
X2Jyb2FkY2FzdF90aHJlYWRfZ3JvdXAoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgc2lnKTsK
CnN0cnVjdCBzaWdoYW5kX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAg
c3RydWN0IGtfc2lnYWN0aW9uIGFjdGlvbls2NF07CiAgICAgICAgc3BpbmxvY2tfdCBzaWdsb2Nr
Owp9OwojIDMyNyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zY2hlZC5o
IgpzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgY291bnQ7CgoKICAgICAg
ICB0YXNrX3QgKmN1cnJfdGFyZ2V0OwoKCiAgICAgICAgc3RydWN0IHNpZ3BlbmRpbmcgc2hhcmVk
X3BlbmRpbmc7CgoKICAgICAgICBpbnQgZ3JvdXBfZXhpdDsKICAgICAgICBpbnQgZ3JvdXBfZXhp
dF9jb2RlOwogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ3JvdXBfZXhpdF90YXNrOwoKCiAg
ICAgICAgaW50IGdyb3VwX3N0b3BfY291bnQ7Cn07CiMgMzYwICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCB1c2VyX3N0cnVjdCB7CiAgICAgICAg
YXRvbWljX3QgX19jb3VudDsKICAgICAgICBhdG9taWNfdCBwcm9jZXNzZXM7CiAgICAgICAgYXRv
bWljX3QgZmlsZXM7CgoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHVpZGhhc2hfbGlzdDsKICAg
ICAgICB1aWRfdCB1aWQ7Cn07CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKmZpbmRf
dXNlcih1aWRfdCk7CgpleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0IHJvb3RfdXNlcjsKCgp0eXBl
ZGVmIHN0cnVjdCBwcmlvX2FycmF5IHByaW9fYXJyYXlfdDsKCnN0cnVjdCB0YXNrX3N0cnVjdCB7
CgoKCiAgICAgICAgdm9sYXRpbGUgbG9uZyBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZs
YWdzOwogICAgICAgIGludCBzaWdwZW5kaW5nOwogICAgICAgIG1tX3NlZ21lbnRfdCBhZGRyX2xp
bWl0OwoKCgogICAgICAgIHN0cnVjdCBleGVjX2RvbWFpbiAqZXhlY19kb21haW47CiAgICAgICAg
dm9sYXRpbGUgbG9uZyBuZWVkX3Jlc2NoZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwdHJhY2U7
CgogICAgICAgIGludCBsb2NrX2RlcHRoOwoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgY3B1Owog
ICAgICAgIGludCBwcmlvLCBzdGF0aWNfcHJpbzsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHJ1
bl9saXN0OwogICAgICAgIHByaW9fYXJyYXlfdCAqYXJyYXk7CgogICAgICAgIHVuc2lnbmVkIGxv
bmcgc2xlZXBfYXZnOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbGFzdF9ydW47CgogICAgICAgIHVu
c2lnbmVkIGxvbmcgcG9saWN5OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1c19hbGxvd2VkOwog
ICAgICAgIHVuc2lnbmVkIGludCB0aW1lX3NsaWNlLCBmaXJzdF90aW1lX3NsaWNlOwoKICAgICAg
ICBhdG9taWNfdCB1c2FnZTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0YXNrczsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIHB0cmFjZV9jaGlsZHJlbjsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIHB0cmFjZV9saXN0OwoKICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwgKmFjdGl2ZV9t
bTsKCgogICAgICAgIHN0cnVjdCBsaW51eF9iaW5mbXQgKmJpbmZtdDsKICAgICAgICBpbnQgZXhp
dF9jb2RlLCBleGl0X3NpZ25hbDsKICAgICAgICBpbnQgcGRlYXRoX3NpZ25hbDsKCiAgICAgICAg
dW5zaWduZWQgbG9uZyBwZXJzb25hbGl0eTsKICAgICAgICBpbnQgZGlkX2V4ZWM6MTsKICAgICAg
ICB1bnNpZ25lZCB0YXNrX2R1bXBhYmxlOjE7CiAgICAgICAgcGlkX3QgcGlkOwogICAgICAgIHBp
ZF90IHBncnA7CiAgICAgICAgcGlkX3QgdHR5X29sZF9wZ3JwOwogICAgICAgIHBpZF90IHNlc3Np
b247CiAgICAgICAgcGlkX3QgdGdpZDsKCiAgICAgICAgaW50IGxlYWRlcjsKCgoKCgogICAgICAg
IHN0cnVjdCB0YXNrX3N0cnVjdCAqcmVhbF9wYXJlbnQ7CiAgICAgICAgc3RydWN0IHRhc2tfc3Ry
dWN0ICpwYXJlbnQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjaGlsZHJlbjsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIHNpYmxpbmc7CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpncm91
cF9sZWFkZXI7CgoKICAgICAgICBzdHJ1Y3QgcGlkX2xpbmsgcGlkc1tQSURUWVBFX01BWF07Cgog
ICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXRfY2hsZGV4aXQ7CiAgICAgICAgc3RydWN0IGNv
bXBsZXRpb24gKnZmb3JrX2RvbmU7CiAgICAgICAgaW50ICpzZXRfY2hpbGRfdGlkOwogICAgICAg
IGludCAqY2xlYXJfY2hpbGRfdGlkOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X3ByaW9yaXR5
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXRfcmVhbF92YWx1ZSwgaXRfcHJvZl92YWx1ZSwgaXRf
dmlydF92YWx1ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGl0X3JlYWxfaW5jciwgaXRfcHJvZl9p
bmNyLCBpdF92aXJ0X2luY3I7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgcmVhbF90aW1lcjsK
ICAgICAgICBzdHJ1Y3QgdG1zIHRpbWVzOwogICAgICAgIHN0cnVjdCB0bXMgZ3JvdXBfdGltZXM7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydF90aW1lOwogICAgICAgIGxvbmcgcGVyX2NwdV91
dGltZVsxXSwgcGVyX2NwdV9zdGltZVsxXTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtaW5fZmx0
LCBtYWpfZmx0LCBuc3dhcCwgY21pbl9mbHQsIGNtYWpfZmx0LCBjbnN3YXA7CiAgICAgICAgaW50
IHN3YXBwYWJsZToxOwoKICAgICAgICB1aWRfdCB1aWQsZXVpZCxzdWlkLGZzdWlkOwogICAgICAg
IGdpZF90IGdpZCxlZ2lkLHNnaWQsZnNnaWQ7CiAgICAgICAgaW50IG5ncm91cHM7CiAgICAgICAg
Z2lkX3QgZ3JvdXBzWzMyXTsKICAgICAgICBrZXJuZWxfY2FwX3QgY2FwX2VmZmVjdGl2ZSwgY2Fw
X2luaGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkOwogICAgICAgIGludCBrZWVwX2NhcGFiaWxpdGll
czoxOwogICAgICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcjsKCiAgICAgICAgc3RydWN0IHJs
aW1pdCBybGltWzExXTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1c2VkX21hdGg7CiAgICAgICAg
Y2hhciBjb21tWzE2XTsKCiAgICAgICAgaW50IGxpbmtfY291bnQsIHRvdGFsX2xpbmtfY291bnQ7
CiAgICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eTsKICAgICAgICB1bnNpZ25lZCBpbnQgbG9j
a3M7CgogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqc2VtdW5kbzsKICAgICAgICBzdHJ1Y3Qgc2Vt
X3F1ZXVlICpzZW1zbGVlcGluZzsKCiAgICAgICAgc3RydWN0IHRocmVhZF9zdHJ1Y3QgdGhyZWFk
OwoKICAgICAgICBzdHJ1Y3QgZnNfc3RydWN0ICpmczsKCiAgICAgICAgc3RydWN0IGZpbGVzX3N0
cnVjdCAqZmlsZXM7CgogICAgICAgIHN0cnVjdCBuYW1lc3BhY2UgKm5hbWVzcGFjZTsKCiAgICAg
ICAgc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZ25hbDsKICAgICAgICBzdHJ1Y3Qgc2lnaGFuZF9z
dHJ1Y3QgKnNpZ2hhbmQ7CgogICAgICAgIHNpZ3NldF90IGJsb2NrZWQsIHJlYWxfYmxvY2tlZDsK
ICAgICAgICBzdHJ1Y3Qgc2lncGVuZGluZyBwZW5kaW5nOwoKICAgICAgICB1bnNpZ25lZCBsb25n
IHNhc19zc19zcDsKICAgICAgICBzaXplX3Qgc2FzX3NzX3NpemU7CiAgICAgICAgaW50ICgqbm90
aWZpZXIpKHZvaWQgKnByaXYpOwogICAgICAgIHZvaWQgKm5vdGlmaWVyX2RhdGE7CiAgICAgICAg
c2lnc2V0X3QgKm5vdGlmaWVyX21hc2s7CgoKICAgICAgICB2b2lkICp0dXhfaW5mbzsKICAgICAg
ICB2b2lkICgqdHV4X2V4aXQpKHZvaWQpOwoKCgogICAgICAgIHUzMiBwYXJlbnRfZXhlY19pZDsK
ICAgICAgICB1MzIgc2VsZl9leGVjX2lkOwoKICAgICAgICBzcGlubG9ja190IGFsbG9jX2xvY2s7
CgogICAgICAgIHNwaW5sb2NrX3Qgc3dpdGNoX2xvY2s7CgoKICAgICAgICB2b2lkICpqb3VybmFs
X2luZm87CgogICAgICAgIHVuc2lnbmVkIGxvbmcgcHRyYWNlX21lc3NhZ2U7CiAgICAgICAgc2ln
aW5mb190ICpsYXN0X3NpZ2luZm87Cn07CiMgNTc1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVybiB2b2lkIHNldF91c2VyX25pY2VfUjg0NjZiOGRj
KHRhc2tfdCAqcCwgbG9uZyBuaWNlKTsKZXh0ZXJuIGludCB0YXNrX3ByaW8odGFza190ICpwKTsK
ZXh0ZXJuIGludCB0YXNrX25pY2UodGFza190ICpwKTsKZXh0ZXJuIGludCB0YXNrX2N1cnIodGFz
a190ICpwKTsKCgoKCgpleHRlcm4gdm9pZCByZWNhbGNfc2lncGVuZGluZ190c2soc3RydWN0IHRh
c2tfc3RydWN0ICp0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHJl
Y2FsY19zaWdwZW5kaW5nX1JmYjZhZjU4ZCh2b2lkKTsKZXh0ZXJuIHZvaWQgc2lnbmFsX3dha2Vf
dXAoc3RydWN0IHRhc2tfc3RydWN0ICp0LCBpbnQgcmVzdW1lX3N0b3BwZWQpOwpleHRlcm4gdm9p
ZCBwcmludF9zaWduYWxzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCk7CiMgNjA5ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgaW50IHRhc2tfY3B1KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHJldHVybiAw
Owp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X3Rhc2tfY3B1KHN0cnVjdCB0YXNrX3N0cnVjdCAq
cCwgdW5zaWduZWQgaW50IGNwdSkKewp9CgoKCgpleHRlcm4gdm9pZCB5aWVsZF9SNzYwYTBmNGYo
dm9pZCk7CgoKCgpleHRlcm4gc3RydWN0IGV4ZWNfZG9tYWluIGRlZmF1bHRfZXhlY19kb21haW47
CiMgNjg0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnVu
aW9uIHRhc2tfdW5pb24gewogICAgICAgIHRhc2tfdCB0YXNrOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RhY2tbMjA0OCpzaXplb2YobG9uZykvc2l6ZW9mKGxvbmcpXTsKfTsKCmV4dGVybiB1bmlv
biB0YXNrX3VuaW9uIGluaXRfdGFza191bmlvbl9SYTI1NTE3MjI7CgpleHRlcm4gc3RydWN0IG1t
X3N0cnVjdCBpbml0X21tX1JkODQ4NjllNjsKCmV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmZp
bmRfdGFza19ieV9waWRfUmQzYzlhYjQxKGludCBwaWQpOwoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9z
dHJ1Y3QgKiBhbGxvY191aWQodWlkX3QpOwpleHRlcm4gdm9pZCBmcmVlX3VpZChzdHJ1Y3QgdXNl
cl9zdHJ1Y3QgKik7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2N1
cnJlbnQuaCIgMQoKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB0
YXNrX3N0cnVjdCAqIGdldF9jdXJyZW50KHZvaWQpCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1
Y3QgKmN1cnJlbnQ7CiAgICAgICAgX19hc21fXygiYW5kbCAlJWVzcCwlMDsgIjoiPXIiIChjdXJy
ZW50KSA6ICIwIiAofjgxOTFVTCkpOwogICAgICAgIHJldHVybiBjdXJyZW50OwogfQojIDcwMCAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgpleHRlcm4g
dW5zaWduZWQgbG9uZyB2b2xhdGlsZSBqaWZmaWVzX1IwZGEwMmQ2NzsKZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgaXRpbWVyX3RpY2tzOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpdGltZXJfbmV4dDsKZXh0
ZXJuIHN0cnVjdCB0aW1ldmFsIHh0aW1lX1JmMzFkZGY4MzsKZXh0ZXJuIHZvaWQgZG9fdGltZXIo
c3RydWN0IHB0X3JlZ3MgKik7CgoKCmV4dGVybiBpbnQgd2FrZV91cF9zdGF0ZShzdHJ1Y3QgdGFz
a19zdHJ1Y3QgKiB0c2ssIHVuc2lnbmVkIGludCBzdGF0ZSkgX19hdHRyaWJ1dGVfXygocmVncGFy
bSgzKSkpOwpleHRlcm4gdm9pZCBfX3dha2VfdXBfUmI3NmM1ZjFlKHdhaXRfcXVldWVfaGVhZF90
ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSk7CmV4dGVybiB2b2lkIF9fd2FrZV91cF9zeW5jKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNp
Z25lZCBpbnQgbW9kZSwgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy
biB2b2lkIHNsZWVwX29uX1JlMDY3OWEzZih3YWl0X3F1ZXVlX2hlYWRfdCAqcSkgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gbG9uZyBzbGVlcF9vbl90aW1lb3V0X1I3NWM4ZTM5
NCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgc2lnbmVkIGxvbmcgdGltZW91dCkgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpOwoKZXh0ZXJuIHZvaWQgaW50ZXJydXB0aWJsZV9zbGVlcF9vbl9SN2U0
Zjg5YzMod2FpdF9xdWV1ZV9oZWFkX3QgKnEpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsK
ZXh0ZXJuIGxvbmcgaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1lb3V0X1I0MDdhMjhkOCh3YWl0
X3F1ZXVlX2hlYWRfdCAqcSwgc2lnbmVkIGxvbmcgdGltZW91dCkgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwoKZXh0ZXJuIGludCB3YWtlX3VwX3Byb2Nlc3NfUjdjNjBlM2VhKHRhc2tfdCAq
IHApIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgd2FrZV91cF9mb3Jr
ZWRfcHJvY2Vzcyh0YXNrX3QgKiBwKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVy
biB2b2lkIHNjaGVkX2V4aXQodGFza190ICogcCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwojIDczNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgog
X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3dhaXQ0X1JhMmMyMTgyMShwaWRf
dCBwaWQsdW5zaWduZWQgaW50ICogc3RhdF9hZGRyLCBpbnQgb3B0aW9ucywgc3RydWN0IHJ1c2Fn
ZSAqIHJ1KTsKCmV4dGVybiBpbnQgaW5fZ3JvdXBfcF9SYzNjZjExMjgoZ2lkX3QpOwpleHRlcm4g
aW50IGluX2Vncm91cF9wX1JkOGEyYWI5NShnaWRfdCk7CgpleHRlcm4gdm9pZCBwcm9jX2NhY2hl
c19pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBmbHVzaF9zaWduYWxzX1I0ZGU5N2Q3Nyh0YXNrX3Qg
Kik7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbF9oYW5kbGVyc19SOTlkM2JiNzAodGFza190ICop
OwpleHRlcm4gaW50IGRlcXVldWVfc2lnbmFsX1I4ZTM5MzE5YihzaWdzZXRfdCAqLCBzaWdpbmZv
X3QgKik7CmV4dGVybiB2b2lkIGJsb2NrX2FsbF9zaWduYWxzX1I0YjM0ZmJmNShpbnQgKCpub3Rp
Zmllcikodm9pZCAqcHJpdiksIHZvaWQgKnByaXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpZ3NldF90ICptYXNrKTsKZXh0ZXJuIHZvaWQgdW5ibG9ja19hbGxfc2lnbmFsc19SMGEy
NDg3ZTAodm9pZCk7CmV4dGVybiBpbnQgc2VuZF9zaWdfaW5mb19SNzA4MjZjZmMoaW50LCBzdHJ1
Y3Qgc2lnaW5mbyAqLCB0YXNrX3QgKik7CmV4dGVybiBpbnQgZm9yY2Vfc2lnX2luZm9fUmEzYTI3
MjBmKGludCwgc3RydWN0IHNpZ2luZm8gKiwgdGFza190ICopOwpleHRlcm4gaW50IF9fa2lsbF9w
Z19pbmZvKGludCBzaWcsIHN0cnVjdCBzaWdpbmZvICppbmZvLCBwaWRfdCBwZ3JwKTsKZXh0ZXJu
IGludCBraWxsX3BnX2luZm9fUjhlMmQ0OTkwKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3Qp
OwpleHRlcm4gaW50IGtpbGxfc2xfaW5mb19SMTk4OGQyMWUoaW50LCBzdHJ1Y3Qgc2lnaW5mbyAq
LCBwaWRfdCk7CmV4dGVybiBpbnQga2lsbF9wcm9jX2luZm9fUmZiNjhiMjY0KGludCwgc3RydWN0
IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRlcm4gdm9pZCBub3RpZnlfcGFyZW50X1JmNTczY2QzYSh0
YXNrX3QgKiwgaW50KTsKZXh0ZXJuIHZvaWQgZG9fbm90aWZ5X3BhcmVudCh0YXNrX3QgKiwgaW50
KTsKZXh0ZXJuIHZvaWQgZm9yY2Vfc2lnX1JkYWEyMzE5OShpbnQsIHRhc2tfdCAqKTsKZXh0ZXJu
IHZvaWQgZm9yY2Vfc2lnX3NwZWNpZmljKGludCwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
cm4gaW50IHNlbmRfc2lnX1IxMzFiMTQ2YyhpbnQsIHRhc2tfdCAqLCBpbnQpOwpleHRlcm4gdm9p
ZCB6YXBfb3RoZXJfdGhyZWFkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwpleHRlcm4gaW50IGtp
bGxfcGdfUjM4ZjI5NzE5KHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQga2lsbF9zbF9SZmJh
MTJmZDAocGlkX3QsIGludCwgaW50KTsKZXh0ZXJuIGludCBraWxsX3Byb2NfUjkzMmRhNjdlKHBp
ZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQgZG9fc2lnYWN0aW9uKGludCwgY29uc3Qgc3RydWN0
IGtfc2lnYWN0aW9uICosIHN0cnVjdCBrX3NpZ2FjdGlvbiAqKTsKZXh0ZXJuIGludCBkb19zaWdh
bHRzdGFjayhjb25zdCBzdGFja190ICosIHN0YWNrX3QgKiwgdW5zaWduZWQgbG9uZyk7CgpzdGF0
aWMgaW5saW5lIGludCBzaWduYWxfcGVuZGluZyh0YXNrX3QgKnApCnsKICAgICAgICByZXR1cm4g
KHAtPnNpZ3BlbmRpbmcgIT0gMCk7Cn0KCgoKc3RhdGljIGlubGluZSBpbnQgb25fc2lnX3N0YWNr
KHVuc2lnbmVkIGxvbmcgc3ApCnsKICAgICAgICByZXR1cm4gKHNwIC0gZ2V0X2N1cnJlbnQoKS0+
c2FzX3NzX3NwIDwgZ2V0X2N1cnJlbnQoKS0+c2FzX3NzX3NpemUpOwp9CgpzdGF0aWMgaW5saW5l
IGludCBzYXNfc3NfZmxhZ3ModW5zaWduZWQgbG9uZyBzcCkKewogICAgICAgIHJldHVybiAoZ2V0
X2N1cnJlbnQoKS0+c2FzX3NzX3NpemUgPT0gMCA/IDIKICAgICAgICAgICAgICAgIDogb25fc2ln
X3N0YWNrKHNwKSA/IDEgOiAwKTsKfQoKZXh0ZXJuIGludCByZXF1ZXN0X2lycV9SMGM2MGYyZTAo
dW5zaWduZWQgaW50LAogICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpoYW5kbGVyKShpbnQs
IHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksCiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZywgY29uc3QgY2hhciAqLCB2b2lkICopOwpleHRlcm4gdm9pZCBmcmVlX2lycV9SZjIw
ZGFiZDgodW5zaWduZWQgaW50LCB2b2lkICopOwojIDgwMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5lIGludCBzdXNlcih2b2lkKQp7
CiAgICAgICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAm
IDB4MDAwMDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0c19SYWJlNzc0ODQgKSAmJiBnZXRf
Y3VycmVudCgpLT5ldWlkID09IDApIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZs
YWdzIHw9IDB4MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAg
ICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGZzdXNlcih2b2lkKQp7CiAgICAg
ICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAmIDB4MDAw
MDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0c19SYWJlNzc0ODQgKSAmJiBnZXRfY3VycmVu
dCgpLT5mc3VpZCA9PSAwKSB7CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5mbGFncyB8
PSAweDAwMDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAg
IHJldHVybiAwOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIGludCBjYXBhYmxlKGludCBjYXApCnsK
CiAgICAgICAgaWYgKCgoZ2V0X2N1cnJlbnQoKS0+Y2FwX2VmZmVjdGl2ZSkgJiAoMSA8PCAoY2Fw
KSkpKQoKCgogICAgICAgIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZsYWdzIHw9
IDB4MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAg
cmV0dXJuIDA7Cn0KCgoKCmV4dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICogbW1fYWxsb2Modm9pZCk7
CgpleHRlcm4gc3RydWN0IG1tX3N0cnVjdCAqIHN0YXJ0X2xhenlfdGxiKHZvaWQpOwpleHRlcm4g
dm9pZCBlbmRfbGF6eV90bGIoc3RydWN0IG1tX3N0cnVjdCAqbW0pOwoKCmV4dGVybiBpbmxpbmUg
dm9pZCBfX21tZHJvcChzdHJ1Y3QgbW1fc3RydWN0ICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKc3RhdGljIGlubGluZSB2b2lkIG1tZHJvcChzdHJ1Y3QgbW1fc3RydWN0ICogbW0pCnsK
ICAgICAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmbW0tPm1tX2NvdW50KSkKICAgICAgICAg
ICAgICAgIF9fbW1kcm9wKG1tKTsKfQoKCmV4dGVybiB2b2lkIG1tcHV0KHN0cnVjdCBtbV9zdHJ1
Y3QgKik7CgpleHRlcm4gdm9pZCBtbV9yZWxlYXNlKHZvaWQpOwoKCgoKZXh0ZXJuIHN0cnVjdCBm
aWxlICoqIGFsbG9jX2ZkX2FycmF5KGludCk7CmV4dGVybiBpbnQgZXhwYW5kX2ZkX2FycmF5KHN0
cnVjdCBmaWxlc19zdHJ1Y3QgKiwgaW50IG5yKTsKZXh0ZXJuIHZvaWQgZnJlZV9mZF9hcnJheShz
dHJ1Y3QgZmlsZSAqKiwgaW50KTsKCmV4dGVybiBmZF9zZXQgKmFsbG9jX2Zkc2V0KGludCk7CmV4
dGVybiBpbnQgZXhwYW5kX2Zkc2V0KHN0cnVjdCBmaWxlc19zdHJ1Y3QgKiwgaW50IG5yKTsKZXh0
ZXJuIHZvaWQgZnJlZV9mZHNldChmZF9zZXQgKiwgaW50KTsKCmV4dGVybiBpbnQgY29weV90aHJl
YWQoaW50LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB0YXNr
X3QgKiwgc3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiB2b2lkIGZsdXNoX3RocmVhZCh2b2lkKTsK
ZXh0ZXJuIHZvaWQgZXhpdF90aHJlYWQodm9pZCk7CgpleHRlcm4gdm9pZCBleGl0X21tX1JiZGUx
MGFkMSh0YXNrX3QgKik7CmV4dGVybiB2b2lkIGV4aXRfZmlsZXNfUjlhZjhhYjE3KHRhc2tfdCAq
KTsKZXh0ZXJuIHZvaWQgZXhpdF9zaWduYWwoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4g
dm9pZCBfX2V4aXRfc2lnbmFsKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZXhp
dF9zaWdoYW5kX1JhMTc2ZDMzZihzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIF9f
ZXhpdF9zaWdoYW5kKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKCmV4dGVybiB2b2lkIGRvX2dyb3Vw
X2V4aXQoaW50KTsKCmV4dGVybiB2b2lkIHJlcGFyZW50X3RvX2luaXRfUmVjNjE1OGQwKHZvaWQp
OwpleHRlcm4gdm9pZCBkYWVtb25pemVfUmQ2NmEzNTRhKHZvaWQpOwpleHRlcm4gdm9pZCBfX3Nl
dF9zcGVjaWFsX3BpZHMocGlkX3Qgc2Vzc2lvbiwgcGlkX3QgcGdycCk7CmV4dGVybiB2b2lkIHNl
dF9zcGVjaWFsX3BpZHNfUmFjOTQzZTc5KHBpZF90IHNlc3Npb24sIHBpZF90IHBncnApOwpleHRl
cm4gdGFza190ICpjaGlsZF9yZWFwZXI7CgpleHRlcm4gaW50IGRvX2V4ZWN2ZV9SOWM2MjA5OGYo
Y2hhciAqLCBjaGFyICoqLCBjaGFyICoqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIHN0cnVj
dCB0YXNrX3N0cnVjdCAqZG9fZm9yayh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBzdHJ1
Y3QgcHRfcmVncyAqLCB1bnNpZ25lZCBsb25nLCBpbnQgKiwgaW50ICopOwpleHRlcm4gdm9pZCBy
ZWFwX3RocmVhZCh0YXNrX3QgKnApOwpleHRlcm4gdm9pZCByZWxlYXNlX3Rhc2soc3RydWN0IHRh
c2tfc3RydWN0ICogcCk7CgoKZXh0ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWVfUmQ5MWZiMjYzKHdh
aXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZV9SMDQxNGIw
Zjgod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHdhaXRfcXVldWVfdCAqIHdhaXQpIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX3dhaXRfcXVldWVfUmIyYzQ0NDI1
KHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KSBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDMpKSk7CiMgOTA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiCmV4dGVybiBsb25nIGtlcm5lbF90aHJlYWRfUjdjYTM0MWFmKGludCAoKmZu
KSh2b2lkICopLCB2b2lkICogYXJnLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKIyA5OTkgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHZvaWQgY2hl
Y2tfdGFza2xpc3RfbG9ja2VkX1IxNWJiNTg5Myh2b2lkKTsKIyAxMDMwICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVybiB0YXNrX3QgKiBuZXh0X3Ro
cmVhZF9SNTNhNmQ4NjIodGFza190ICpwKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoK
CnN0YXRpYyBpbmxpbmUgaW50IHRocmVhZF9ncm91cF9lbXB0eSh0YXNrX3QgKnApCnsKICAgICAg
ICBzdHJ1Y3QgcGlkICpwaWQgPSBwLT5waWRzW1BJRFRZUEVfVEdJRF0ucGlkcHRyOwoKICAgICAg
ICByZXR1cm4gcGlkLT50YXNrX2xpc3QubmV4dC0+bmV4dCA9PSAmcGlkLT50YXNrX2xpc3Q7Cn0K
CgoKCmV4dGVybiB2b2lkIHVuaGFzaF9wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7CgoK
c3RhdGljIGlubGluZSB2b2lkIHRhc2tfbG9jayh0YXNrX3QgKnApCnsKICAgICAgICAodm9pZCko
JnAtPmFsbG9jX2xvY2spOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza191bmxvY2sodGFza190
ICpwKQp7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIHN0
cnVjdCBtbV9zdHJ1Y3QgKiBnZXRfdGFza19tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiB0YXNrKQp7
CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqIG1tOwoKICAgICAgICB0YXNrX2xvY2sodGFzayk7
CiAgICAgICAgbW0gPSB0YXNrLT5tbTsKICAgICAgICBpZiAobW0pCiAgICAgICAgICAgICAgICBh
dG9taWNfaW5jKCZtbS0+bW1fdXNlcnMpOwogICAgICAgIHRhc2tfdW5sb2NrKHRhc2spOwoKICAg
ICAgICByZXR1cm4gbW07Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBkX3BhdGgoc3RydWN0IGRl
bnRyeSAqZGVudHJ5LCBzdHJ1Y3QgdmZzbW91bnQgKnZmc21udCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICpidWYsIGludCBidWZsZW4pCnsKICAgICAgICBjaGFyICpyZXM7
CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpyb290bW50OwogICAgICAgIHN0cnVjdCBkZW50cnkg
KnJvb3Q7CiAgICAgICAgKHZvaWQpKCZnZXRfY3VycmVudCgpLT5mcy0+bG9jayk7CiAgICAgICAg
cm9vdG1udCA9IG1udGdldChnZXRfY3VycmVudCgpLT5mcy0+cm9vdG1udCk7CiAgICAgICAgcm9v
dCA9IGRnZXQoZ2V0X2N1cnJlbnQoKS0+ZnMtPnJvb3QpOwogICAgICAgIGRvIHsgfSB3aGlsZSgw
KTsKICAgICAgICAodm9pZCkoJmRjYWNoZV9sb2NrX1I3MzQ2M2NlZik7CiAgICAgICAgcmVzID0g
X19kX3BhdGhfUmI3YmY5MDM2KGRlbnRyeSwgdmZzbW50LCByb290LCByb290bW50LCBidWYsIGJ1
Zmxlbik7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGRwdXRfUjNkZTgxM2E2KHJv
b3QpOwogICAgICAgIG1udHB1dChyb290bW50KTsKICAgICAgICByZXR1cm4gcmVzOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgc2V0X25lZWRfcmVzY2hlZCh2b2lkKQp7CiAgICAgICAgZ2V0X2N1cnJl
bnQoKS0+bmVlZF9yZXNjaGVkID0gMTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX25lZWRf
cmVzY2hlZCh2b2lkKQp7CiAgICAgICAgZ2V0X2N1cnJlbnQoKS0+bmVlZF9yZXNjaGVkID0gMDsK
fQoKc3RhdGljIGlubGluZSB2b2lkIHNldF90c2tfbmVlZF9yZXNjaGVkKHRhc2tfdCAqdHNrKQp7
CiAgICAgICAgdHNrLT5uZWVkX3Jlc2NoZWQgPSAxOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY2xl
YXJfdHNrX25lZWRfcmVzY2hlZCh0YXNrX3QgKnRzaykKewogICAgICAgIHRzay0+bmVlZF9yZXNj
aGVkID0gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgbmVlZF9yZXNjaGVkKHZvaWQpCnsKICAgICAg
ICByZXR1cm4gKF9fYnVpbHRpbl9leHBlY3QoKGdldF9jdXJyZW50KCktPm5lZWRfcmVzY2hlZCks
MCkpOwp9CgpleHRlcm4gdm9pZCBfX2NvbmRfcmVzY2hlZF9SNDllNzk5NDAodm9pZCk7CnN0YXRp
YyBpbmxpbmUgdm9pZCBjb25kX3Jlc2NoZWQodm9pZCkKewogICAgICAgIGlmIChuZWVkX3Jlc2No
ZWQoKSkKICAgICAgICAgICAgICAgIF9fY29uZF9yZXNjaGVkX1I0OWU3OTk0MCgpOwp9CiMgMjMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW0uaCIgMgoKCgoKCgoKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAxCiMgMTkg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW16b25lLmgiCnR5cGVkZWYg
c3RydWN0IGZyZWVfYXJlYV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9s
aXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgKm1hcDsKfSBmcmVlX2FyZWFfdDsKCnN0cnVjdCBw
Z2xpc3RfZGF0YTsKc3RydWN0IHB0ZV9jaGFpbjsKCgoKCgp0eXBlZGVmIHN0cnVjdCBwZXJfY3B1
X3BhZ2VzX3MgewogICAgICAgIGludCBucl9wYWdlcywgbWF4X25yX3BhZ2VzOwogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgaGVhZDsKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKCgxIDw8ICgoNSkp
KSkpKSBwZXJfY3B1X3Q7CiMgNDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvbW16b25lLmgiCnR5cGVkZWYgc3RydWN0IHpvbmVfc3RydWN0IHsKCgoKICAgICAgICBwZXJf
Y3B1X3QgY3B1X3BhZ2VzWzFdOwogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICB1bnNp
Z25lZCBsb25nIGZyZWVfcGFnZXNfUjk5NDFjY2I4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYWN0
aXZlX2Fub25fcGFnZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhY3RpdmVfY2FjaGVfcGFnZXM7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmFjdGl2ZV9kaXJ0eV9wYWdlczsKICAgICAgICB1bnNp
Z25lZCBsb25nIGluYWN0aXZlX2xhdW5kcnlfcGFnZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBp
bmFjdGl2ZV9jbGVhbl9wYWdlczsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhZ2VzX21pbiwgcGFn
ZXNfbG93LCBwYWdlc19oaWdoLCBwYWdlc19wbGVudHk7CiAgICAgICAgaW50IG5lZWRfYmFsYW5j
ZTsKICAgICAgICBpbnQgbmVlZF9zY2FuOwogICAgICAgIGludCBhY3RpdmVfYW5vbl9jb3VudFsx
NSArMV07CiAgICAgICAgaW50IGFjdGl2ZV9jYWNoZV9jb3VudFsxNSArMV07CiAgICAgICAgdW5z
aWduZWQgY2hhciBhbm9uX2FnZV9iaWFzLCBjYWNoZV9hZ2VfYmlhczsKCgoKCiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBhY3RpdmVfYW5vbl9saXN0WzE1ICsxXTsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIGFjdGl2ZV9jYWNoZV9saXN0WzE1ICsxXTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk
IGluYWN0aXZlX2RpcnR5X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbmFjdGl2ZV9s
YXVuZHJ5X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbmFjdGl2ZV9jbGVhbl9saXN0
OwogICAgICAgIGZyZWVfYXJlYV90IGZyZWVfYXJlYVsxMF07CiAgICAgICAgc3BpbmxvY2tfdCBs
cnVfbG9jazsKIyA5OSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tbXpv
bmUuaCIKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCAqIHdhaXRfdGFibGU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyB3YWl0X3RhYmxlX3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyB3YWl0X3Rh
YmxlX3NoaWZ0OwoKCgoKICAgICAgICBzdHJ1Y3QgcGdsaXN0X2RhdGEgKnpvbmVfcGdkYXQ7CiAg
ICAgICAgc3RydWN0IHBhZ2UgKnpvbmVfbWVtX21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHpv
bmVfc3RhcnRfcGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X21hcG5yOwoK
CgoKICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKfSB6b25l
X3Q7CiMgMTM0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21tem9uZS5o
Igp0eXBlZGVmIHN0cnVjdCB6b25lbGlzdF9zdHJ1Y3QgewogICAgICAgIHpvbmVfdCAqIHpvbmVz
IFszICsxXTsKfSB6b25lbGlzdF90OwojIDE1MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tbXpvbmUuaCIKc3RydWN0IGJvb3RtZW1fZGF0YTsKdHlwZWRlZiBzdHJ1Y3Qg
cGdsaXN0X2RhdGEgewogICAgICAgIHpvbmVfdCBub2RlX3pvbmVzWzNdOwogICAgICAgIHpvbmVs
aXN0X3Qgbm9kZV96b25lbGlzdHNbMHgwZiArMV07CiAgICAgICAgaW50IG5yX3pvbmVzOwogICAg
ICAgIHN0cnVjdCBwYWdlICpub2RlX21lbV9tYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqdmFs
aWRfYWRkcl9iaXRtYXA7CiAgICAgICAgc3RydWN0IGJvb3RtZW1fZGF0YSAqYmRhdGE7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0X3BhZGRyOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
bm9kZV9zdGFydF9tYXBucjsKICAgICAgICB1bnNpZ25lZCBsb25nIG5vZGVfc2l6ZTsKICAgICAg
ICBpbnQgbm9kZV9pZDsKICAgICAgICBzdHJ1Y3QgcGdsaXN0X2RhdGEgKm5vZGVfbmV4dDsKfSBw
Z19kYXRhX3Q7CgpleHRlcm4gaW50IG51bW5vZGVzOwpleHRlcm4gcGdfZGF0YV90ICpwZ2RhdF9s
aXN0OwoKCgoKCnN0cnVjdCBwYWdlOwpleHRlcm4gdm9pZCBzaG93X2ZyZWVfYXJlYXNfY29yZShw
Z19kYXRhX3QgKnBnZGF0KTsKZXh0ZXJuIHZvaWQgZnJlZV9hcmVhX2luaXRfY29yZShpbnQgbmlk
LCBwZ19kYXRhX3QgKnBnZGF0LCBzdHJ1Y3QgcGFnZSAqKmdtYXAsCiAgdW5zaWduZWQgbG9uZyAq
em9uZXNfc2l6ZSwgdW5zaWduZWQgbG9uZyBwYWRkciwgdW5zaWduZWQgbG9uZyAqemhvbGVzX3Np
emUsCiAgc3RydWN0IHBhZ2UgKnBtYXApOwoKZXh0ZXJuIHBnX2RhdGFfdCBjb250aWdfcGFnZV9k
YXRhOwojIDIwMCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tbXpvbmUu
aCIKc3RhdGljIGlubGluZSB6b25lX3QgKm5leHRfem9uZSh6b25lX3QgKnpvbmUpCnsKICAgICAg
ICBwZ19kYXRhX3QgKnBnZGF0ID0gem9uZS0+em9uZV9wZ2RhdDsKCiAgICAgICAgaWYgKHpvbmUg
LSBwZ2RhdC0+bm9kZV96b25lcyA8IDMgLSAxKQogICAgICAgICAgICAgICAgem9uZSsrOwoKICAg
ICAgICBlbHNlIGlmIChwZ2RhdC0+bm9kZV9uZXh0KSB7CiAgICAgICAgICAgICAgICBwZ2RhdCA9
IHBnZGF0LT5ub2RlX25leHQ7CiAgICAgICAgICAgICAgICB6b25lID0gcGdkYXQtPm5vZGVfem9u
ZXM7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICB6b25lID0gKCh2b2lkICopMCk7Cgog
ICAgICAgIHJldHVybiB6b25lOwp9CiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvc3dhcC5oIiAxCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
c3dhcC5oIgp1bmlvbiBzd2FwX2hlYWRlciB7CiAgICAgICAgc3RydWN0CiAgICAgICAgewogICAg
ICAgICAgICAgICAgY2hhciByZXNlcnZlZFsoMVVMIDw8IDEyKSAtIDEwXTsKICAgICAgICAgICAg
ICAgIGNoYXIgbWFnaWNbMTBdOwogICAgICAgIH0gbWFnaWM7CiAgICAgICAgc3RydWN0CiAgICAg
ICAgewogICAgICAgICAgICAgICAgY2hhciBib290Yml0c1sxMDI0XTsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCB2ZXJzaW9uOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxhc3Rf
cGFnZTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9iYWRwYWdlczsKICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBwYWRkaW5nWzEyNV07CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgYmFkcGFnZXNbMV07CiAgICAgICAgfSBpbmZvOwp9OwojIDY0ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3N3YXAuaCIKc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3Qg
ewogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKICAgICAgICBrZGV2X3Qgc3dhcF9kZXZpY2U7
CiAgICAgICAgc3BpbmxvY2tfdCBzZGV2X2xvY2s7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqIHN3
YXBfZmlsZTsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKnN3YXBfdmZzbW50OwogICAgICAgIHVu
c2lnbmVkIHNob3J0ICogc3dhcF9tYXA7CiAgICAgICAgdW5zaWduZWQgaW50IGxvd2VzdF9iaXQ7
CiAgICAgICAgdW5zaWduZWQgaW50IGhpZ2hlc3RfYml0OwogICAgICAgIHVuc2lnbmVkIGludCBj
bHVzdGVyX25leHQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNsdXN0ZXJfbnI7CiAgICAgICAgaW50
IHByaW87CiAgICAgICAgaW50IHBhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4OwogICAg
ICAgIGludCBuZXh0Owp9OwoKZXh0ZXJuIGludCBucl9zd2FwX3BhZ2VzOwoKCgoKZXh0ZXJuIHVu
c2lnbmVkIGludCBucl9mcmVlX3BhZ2VzKHZvaWQpOwpleHRlcm4gdW5zaWduZWQgaW50IG5yX2Zy
ZWVfYnVmZmVyX3BhZ2VzKHZvaWQpOwpleHRlcm4gdW5zaWduZWQgaW50IG5yX2FjdGl2ZV9hbm9u
X3BhZ2VzKHZvaWQpOwpleHRlcm4gdW5zaWduZWQgaW50IG5yX2FjdGl2ZV9jYWNoZV9wYWdlcyh2
b2lkKTsKZXh0ZXJuIHVuc2lnbmVkIGludCBucl9pbmFjdGl2ZV9kaXJ0eV9wYWdlcyh2b2lkKTsK
ZXh0ZXJuIHVuc2lnbmVkIGludCBucl9pbmFjdGl2ZV9sYXVuZHJ5X3BhZ2VzKHZvaWQpOwpleHRl
cm4gdW5zaWduZWQgaW50IG5yX2luYWN0aXZlX2NsZWFuX3BhZ2VzKHZvaWQpOwpleHRlcm4gYXRv
bWljX3QgcGFnZV9jYWNoZV9zaXplOwpleHRlcm4gYXRvbWljX3QgYnVmZmVybWVtX3BhZ2VzOwoK
ZXh0ZXJuIHNwaW5sb2NrX2NhY2hlbGluZV90IHBhZ2VjYWNoZV9sb2NrX2NhY2hlbGluZTsKCgpl
eHRlcm4gdm9pZCBfX3JlbW92ZV9pbm9kZV9wYWdlKHN0cnVjdCBwYWdlICopOwoKCnN0cnVjdCB0
YXNrX3N0cnVjdDsKc3RydWN0IHZtX2FyZWFfc3RydWN0OwpzdHJ1Y3Qgc3lzaW5mbzsKCnN0cnVj
dCB6b25lX3Q7CgoKc3RydWN0IHB0ZV9jaGFpbjsKZXh0ZXJuIGludCBwYWdlX3JlZmVyZW5jZWQo
c3RydWN0IHBhZ2UgKiwgaW50ICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJu
IHN0cnVjdCBwdGVfY2hhaW4gKiBwYWdlX2FkZF9ybWFwKHN0cnVjdCBwYWdlICosIHB0ZV90ICos
IHN0cnVjdCBwdGVfY2hhaW4gKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKZXh0ZXJu
IHZvaWQgcGFnZV9yZW1vdmVfcm1hcChzdHJ1Y3QgcGFnZSAqLCBwdGVfdCAqKSBfX2F0dHJpYnV0
ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgdHJ5X3RvX3VubWFwKHN0cnVjdCBwYWdlICop
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKc3RydWN0IHB0ZV9jaGFpbiAqIHB0ZV9jaGFp
bl9hbGxvYyhpbnQpOwp2b2lkIF9fcHRlX2NoYWluX2ZyZWUoc3RydWN0IHB0ZV9jaGFpbiAqKTsK
CnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVfY2hhaW5fZnJlZShzdHJ1Y3QgcHRlX2NoYWluICogcHRl
X2NoYWluKQp7CiAgICAgICAgaWYgKHB0ZV9jaGFpbikKICAgICAgICAgICAgICAgIF9fcHRlX2No
YWluX2ZyZWUocHRlX2NoYWluKTsKfQojIDEzMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9zd2FwLmgiCmV4dGVybiB2b2lkIGxydV9jYWNoZV9hZGQoc3RydWN0IHBhZ2Ug
KikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBscnVfY2FjaGVfYWRk
X2RpcnR5KHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJu
IHZvaWQgX19scnVfY2FjaGVfZGVsKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKTsKZXh0ZXJuIHZvaWQgbHJ1X2NhY2hlX2RlbChzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJp
YnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpleHRlcm4gdm9pZCBhY3RpdmF0ZV9wYWdlKHN0cnVjdCBw
YWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYWN0aXZhdGVf
cGFnZV9ub2xvY2soc3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpl
eHRlcm4gdm9pZCBkZWFjdGl2YXRlX3BhZ2Uoc3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygo
cmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBkZWFjdGl2YXRlX3BhZ2Vfbm9sb2NrKHN0cnVjdCBw
YWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgZHJvcF9wYWdl
KHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lk
IHN3YXBfc2V0dXAodm9pZCk7CgoKZXh0ZXJuIHN0cnVjdCBwYWdlICogcmVjbGFpbV9wYWdlKHpv
bmVfdCAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB3YWl0X3F1ZXVlX2hl
YWRfdCBrc3dhcGRfd2FpdDsKZXh0ZXJuIGludCB0cnlfdG9fZnJlZV9wYWdlcyh1bnNpZ25lZCBp
bnQgZ2ZwX21hc2spIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGludCByZWJh
bGFuY2VfbGF1bmRyeV96b25lKHN0cnVjdCB6b25lX3N0cnVjdCAqLCBpbnQsIHVuc2lnbmVkIGlu
dCk7CmV4dGVybiB2b2lkIHdha2V1cF9rc3dhcGQodW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQg
cnNzX2ZyZWVfcGFnZXModW5zaWduZWQgaW50KTsKCgoKCgoKCnN0cnVjdCBjYWNoZV9saW1pdHMg
ewogICAgICAgIGludCBtaW47CiAgICAgICAgaW50IGJvcnJvdzsKICAgICAgICBpbnQgbWF4Owp9
OwpleHRlcm4gc3RydWN0IGNhY2hlX2xpbWl0cyBjYWNoZV9saW1pdHM7CgoKZXh0ZXJuIHZvaWQg
cndfc3dhcF9wYWdlKGludCwgc3RydWN0IHBhZ2UgKik7CmV4dGVybiB2b2lkIHJ3X3N3YXBfcGFn
ZV9ub2xvY2soaW50LCBzd3BfZW50cnlfdCwgY2hhciAqKTsKCgoKCgoKZXh0ZXJuIHZvaWQgc2hv
d19zd2FwX2NhY2hlX2luZm8odm9pZCk7CgpleHRlcm4gaW50IGFkZF90b19zd2FwX2NhY2hlKHN0
cnVjdCBwYWdlICosIHN3cF9lbnRyeV90KTsKZXh0ZXJuIGludCBhZGRfdG9fc3dhcChzdHJ1Y3Qg
cGFnZSAqKTsKZXh0ZXJuIHZvaWQgX19kZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdl
ICpwYWdlKTsKZXh0ZXJuIHZvaWQgZGVsZXRlX2Zyb21fc3dhcF9jYWNoZShzdHJ1Y3QgcGFnZSAq
cGFnZSk7CmV4dGVybiB2b2lkIGZyZWVfcGFnZV9hbmRfc3dhcF9jYWNoZShzdHJ1Y3QgcGFnZSAq
cGFnZSk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqIGxvb2t1cF9zd2FwX2NhY2hlKHN3cF9lbnRyeV90
KTsKZXh0ZXJuIHN0cnVjdCBwYWdlICogcmVhZF9zd2FwX2NhY2hlX2FzeW5jKHN3cF9lbnRyeV90
KTsKCgpleHRlcm4gdm9pZCBvdXRfb2ZfbWVtb3J5KHZvaWQpOwoKCmV4dGVybiBpbnQgdG90YWxf
c3dhcF9wYWdlczsKZXh0ZXJuIHVuc2lnbmVkIGludCBucl9zd2FwZmlsZXM7CmV4dGVybiBzdHJ1
Y3Qgc3dhcF9pbmZvX3N0cnVjdCBzd2FwX2luZm9bXTsKZXh0ZXJuIGludCBpc19zd2FwX3BhcnRp
dGlvbihrZGV2X3QpOwpleHRlcm4gdm9pZCBzaV9zd2FwaW5mbyhzdHJ1Y3Qgc3lzaW5mbyAqKTsK
ZXh0ZXJuIHN3cF9lbnRyeV90IGdldF9zd2FwX3BhZ2Uodm9pZCk7CmV4dGVybiB2b2lkIGdldF9z
d2FwaGFuZGxlX2luZm8oc3dwX2VudHJ5X3QsIHVuc2lnbmVkIGxvbmcgKiwga2Rldl90ICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKiopOwpl
eHRlcm4gaW50IHN3YXBfZHVwbGljYXRlKHN3cF9lbnRyeV90KTsKZXh0ZXJuIGludCB2YWxpZF9z
d2FwaGFuZGxlcyhzd3BfZW50cnlfdCwgdW5zaWduZWQgbG9uZyAqKTsKZXh0ZXJuIHZvaWQgc3dh
cF9mcmVlKHN3cF9lbnRyeV90KTsKZXh0ZXJuIHZvaWQgZnJlZV9zd2FwX2FuZF9jYWNoZShzd3Bf
ZW50cnlfdCk7CnN0cnVjdCBzd2FwX2xpc3RfdCB7CiAgICAgICAgaW50IGhlYWQ7CiAgICAgICAg
aW50IG5leHQ7Cn07CmV4dGVybiBzdHJ1Y3Qgc3dhcF9saXN0X3Qgc3dhcF9saXN0OwogX19hdHRy
aWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3N3YXBvZmYoY29uc3QgY2hhciAqKTsKIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zd2Fwb24oY29uc3QgY2hhciAqLCBp
bnQpOwoKCmV4dGVybiB2b2lkIG1hcmtfcGFnZV9hY2Nlc3NlZChzdHJ1Y3QgcGFnZSAqKSBfX2F0
dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgMjM4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L3N3YXAuaCIKZXh0ZXJuIHNwaW5sb2NrX3Qgc3dhcGxvY2s7CgoKCgoKCmV4
dGVybiB2b2lkIHNobWVtX3VudXNlKHN3cF9lbnRyeV90IGVudHJ5LCBzdHJ1Y3QgcGFnZSAqcGFn
ZSk7CiMgMzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW0uaCIgMgoK
CmV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9tYXBucl9SMDExMzlmZmM7CmV4dGVybiB1bnNpZ25l
ZCBsb25nIG51bV9waHlzcGFnZXNfUjA5NDhjZGU5OwpleHRlcm4gdW5zaWduZWQgbG9uZyBudW1f
bWFwcGVkcGFnZXM7CmV4dGVybiB2b2lkICogaGlnaF9tZW1vcnlfUjhhN2QxYzMxOwpleHRlcm4g
aW50IHBhZ2VfY2x1c3RlcjsKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
YXNtL3BndGFibGUuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2Fz
bS9wZ3RhYmxlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vZml4
bWFwLmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vZml4bWFw
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vYXBpY2RlZi5oIiAx
CiMgMTM3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9hcGljZGVmLmgiCnN0
cnVjdCBsb2NhbF9hcGljIHsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRbNF07IH0gX19yZXNlcnZlZF8wMTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9f
cmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wMjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyNCwKICAgICAgICAgICAgICAgICAg
ICAgICAgcGh5c19hcGljX2lkIDogNCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZl
ZF8yIDogNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAg
ICAgIH0gaWQ7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCB2ZXJzaW9uIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNl
cnZlZF8xIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2x2dCA6IDgsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDg7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IHZlcnNpb247CgogICAgICAgIHN0cnVjdCB7
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDM7CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDQ7CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDU7
CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2
ZWRfMDY7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcHJp
b3JpdHkgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAyNDsKICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0cHI7
CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBwcmlvcml0eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6
IDI0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAg
ICB9IGFwcjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IHByaW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNl
cnZlZF8xIDogMjQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNd
OwogICAgICAgIH0gcHByOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGVvaTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwog
ICAgICAgIH0gZW9pOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0
XTsgfSBfX3Jlc2VydmVkXzA3OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAgICAgICAgICBsb2dp
Y2FsX2Rlc3QgOiA4OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlsz
XTsKICAgICAgICB9IGxkcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkXzEgOiAyOCwKICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwg
OiA0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAg
ICB9IGRmcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBz
cHVyaW91c192ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBhcGljX2VuYWJsZWQg
OiAxLAogICAgICAgICAgICAgICAgICAgICAgICBmb2N1c19jcHUgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyMjsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBzdnI7CgogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGlzciBbOF07CgogICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IHRtciBbOF07CgogICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGlyciBbOF07CgogICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBzZW5kX2NzX2Vycm9yIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWNlaXZlX2NzX2Vycm9yIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZW5kX2FjY2VwdF9lcnJvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVjZWl2ZV9hY2NlcHRfZXJyb3IgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VuZF9pbGxlZ2FsX3ZlY3RvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVjZWl2ZV9pbGxlZ2FsX3ZlY3RvciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWxsZWdhbF9yZWdpc3Rlcl9hZGRyZXNzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX3Jlc2VydmVkXzIgOiAyNDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICAgICAgICAgIH0gZXJyb3JfYml0czsKICAg
ICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBlcnJvcnM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVk
XzNbM107CiAgICAgICAgICAgICAgICB9IGFsbF9lcnJvcnM7CiAgICAgICAgfSBlc3I7CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDg7
CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2
ZWRfMDk7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f
cmVzZXJ2ZWRfMTA7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRd
OyB9IF9fcmVzZXJ2ZWRfMTE7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2Vy
dmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTI7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf
X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTM7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVk
IGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTQ7CgogICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAg
ICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0
aW9uX21vZGUgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAx
LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICBsZXZlbCA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgOiAx
LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyLAogICAgICAgICAgICAg
ICAgICAgICAgICBzaG9ydGhhbmQgOiAyLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2Vy
dmVkXzMgOiAxMjsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107
CiAgICAgICAgfSBpY3IxOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5c19kZXN0IDogNCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiA0OwogICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zIDogMjQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbG9naWNhbF9kZXN0IDogODsKICAgICAgICAgICAgICAgIH0gZGVzdDsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAgICAgfSBp
Y3IyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3Rv
ciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDQsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAxLAog
ICAgICAgICAgICAgICAgICAgICAgICB0aW1lcl9tb2RlIDogMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgX19yZXNlcnZlZF8zIDogMTQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZF80WzNdOwogICAgICAgIH0gbHZ0X3RpbWVyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE1OwoKICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jl
c2VydmVkXzEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAx
LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAzLAogICAgICAgICAgICAg
ICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8z
IDogMTU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAg
ICAgIH0gbHZ0X3BjOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAz
LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBw
b2xhcml0eSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9pcnIgOiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
bWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDE1OwogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICB9IGx2dF9s
aW50MDsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0
b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAg
ICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcG9sYXJpdHkg
OiAxLAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfaXJyIDogMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgdHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAx
LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAxNTsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBsdnRfbGludDE7Cgog
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwK
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogNCwKICAgICAgICAgICAgICAg
ICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXNlcnZlZF8yIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgbWFzayA6IDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDE1OwogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF9lcnJvcjsKCiAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpbml0aWFsX2NvdW50OwogICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IHRpbWVyX2lj
cjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGN1cnJfY291bnQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZF8yWzNdOwogICAgICAgIH0gdGltZXJfY2NyOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE2OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE3OwoKICAgICAgICBzdHJ1Y3Qg
eyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE4OwoKICAgICAgICBz
dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE5OwoKICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpdmlzb3IgOiA0LAog
ICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAyODsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0aW1lcl9kY3I7CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMjA7
Cgp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIKIyA1MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9hc20vZml4bWFwLmgiCmVudW0gZml4ZWRfYWRkcmVzc2VzIHsKICAgICAgICBGSVhf
SE9MRSwKICAgICAgICBGSVhfVlNZU0NBTEwsCiMgNjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgogICAgICAgIEZJWF9GMDBGLAojIDc2ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKICAgICAgICBfX2VuZF9vZl9wZXJt
YW5lbnRfZml4ZWRfYWRkcmVzc2VzLAoKCiAgICAgICAgRklYX0JUTUFQX0VORCA9IF9fZW5kX29m
X3Blcm1hbmVudF9maXhlZF9hZGRyZXNzZXMsCiAgICAgICAgRklYX0JUTUFQX0JFR0lOID0gRklY
X0JUTUFQX0VORCArIDE2IC0gMSwKICAgICAgICBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMKfTsK
CmV4dGVybiB2b2lkIF9fc2V0X2ZpeG1hcCAoZW51bSBmaXhlZF9hZGRyZXNzZXMgaWR4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwaHlzLCBw
Z3Byb3RfdCBmbGFncyk7CiMgMTA3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2Fz
bS9maXhtYXAuaCIKZXh0ZXJuIHZvaWQgX190aGlzX2ZpeG1hcF9kb2VzX25vdF9leGlzdCh2b2lk
KTsKCgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGZpeF90b192aXJ0KGNvbnN0IHVu
c2lnbmVkIGludCBpZHgpCnsKIyAxMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
YXNtL2ZpeG1hcC5oIgogICAgICAgIGlmIChpZHggPj0gX19lbmRfb2ZfZml4ZWRfYWRkcmVzc2Vz
KQogICAgICAgICAgICAgICAgX190aGlzX2ZpeG1hcF9kb2VzX25vdF9leGlzdCgpOwoKICAgICAg
ICByZXR1cm4gKCgweGZmZmZmMDAwVUwpIC0gKChpZHgpIDw8IDEyKSk7Cn0KCnN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgbG9uZyB2aXJ0X3RvX2ZpeChjb25zdCB1bnNpZ25lZCBsb25nIHZhZGRyKQp7
CiAgICAgICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCgoKHZhZGRyID49ICgweGZmZmZmMDAw
VUwpIHx8IHZhZGRyIDwgKCgweGZmZmZmMDAwVUwpIC0gKF9fZW5kX29mX3Blcm1hbmVudF9maXhl
ZF9hZGRyZXNzZXMgPDwgMTIpKSkhPTApLDApKSBfX2FzbV9fIF9fdm9sYXRpbGVfXyggInVkMlxu
IiAiXHQud29yZCAlYzBcbiIgIlx0LmxvbmcgJWMxXG4iIDogOiAiaSIgKDEzMyksICJpIiAoIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIikpOyB9IHdoaWxlKDAp
OwogICAgICAgIHJldHVybiAoKCgweGZmZmZmMDAwVUwpIC0gKCh2YWRkcikmKH4oKDFVTCA8PCAx
MiktMSkpKSkgPj4gMTIpOwp9CiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
YXNtL3BndGFibGUuaCIgMgoKCgoKCgpleHRlcm4gcGdkX3Qgc3dhcHBlcl9wZ19kaXJbMTAyNF07
CmV4dGVybiB2b2lkIHBhZ2luZ19pbml0KHZvaWQpOwojIDY4ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIHBna2Vybl9t
YXNrOwojIDEwNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcGd0YWJsZS5o
IgpleHRlcm4gdW5zaWduZWQgbG9uZyBlbXB0eV96ZXJvX3BhZ2VfUjg0ZGFhYmFiWzEwMjRdOwoj
IDEyNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3BndGFibGUtMmxldmVsLmgiIDEK
IyAzMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcGd0YWJsZS0ybGV2ZWwu
aCIKc3RhdGljIGlubGluZSBpbnQgcGdkX25vbmUocGdkX3QgcGdkKSB7IHJldHVybiAwOyB9CnN0
YXRpYyBpbmxpbmUgaW50IHBnZF9iYWQocGdkX3QgcGdkKSB7IHJldHVybiAwOyB9CnN0YXRpYyBp
bmxpbmUgaW50IHBnZF9wcmVzZW50KHBnZF90IHBnZCkgeyByZXR1cm4gMTsgfQojIDU1ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9wZ3RhYmxlLTJsZXZlbC5oIgpzdGF0aWMg
aW5saW5lIHBtZF90ICogcG1kX29mZnNldChwZ2RfdCAqIGRpciwgdW5zaWduZWQgbG9uZyBhZGRy
ZXNzKQp7CiAgICAgICAgcmV0dXJuIChwbWRfdCAqKSBkaXI7Cn0KIyAxMjUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMgojIDI2NSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBw
ZzBbMTAyNF07CiMgMjgyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9wZ3Rh
YmxlLmgiCnN0YXRpYyBpbmxpbmUgaW50IHB0ZV9yZWFkKHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0
ZSkucHRlX2xvdyAmIDB4MDA0OyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0ZV9leGVjKHB0ZV90IHB0
ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDA0OyB9CnN0YXRpYyBpbmxpbmUgaW50IHB0
ZV9kaXJ0eShwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cgJiAweDA0MDsgfQpzdGF0
aWMgaW5saW5lIGludCBwdGVfeW91bmcocHRlX3QgcHRlKSB7IHJldHVybiAocHRlKS5wdGVfbG93
ICYgMHgwMjA7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlX3dyaXRlKHB0ZV90IHB0ZSkgeyByZXR1
cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDAyOyB9CgpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9yZHBy
b3RlY3QocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgJj0gfjB4MDA0OyByZXR1cm4gcHRlOyB9
CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX2V4cHJvdGVjdChwdGVfdCBwdGUpIHsgKHB0ZSkucHRl
X2xvdyAmPSB+MHgwMDQ7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtj
bGVhbihwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwNDA7IHJldHVybiBwdGU7IH0K
c3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtvbGQocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cg
Jj0gfjB4MDIwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX3dycHJvdGVj
dChwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwMDI7IHJldHVybiBwdGU7IH0Kc3Rh
dGljIGlubGluZSBwdGVfdCBwdGVfbWtyZWFkKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9
IDB4MDA0OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rZXhlYyhwdGVf
dCBwdGUpIHsgKHB0ZSkucHRlX2xvdyB8PSAweDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5s
aW5lIHB0ZV90IHB0ZV9ta2RpcnR5KHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4MDQw
OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21reW91bmcocHRlX3QgcHRl
KSB7IChwdGUpLnB0ZV9sb3cgfD0gMHgwMjA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBw
dGVfdCBwdGVfbWt3cml0ZShwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyB8PSAweDAwMjsgcmV0
dXJuIHB0ZTsgfQoKc3RhdGljIGlubGluZSBpbnQgcHRlcF90ZXN0X2FuZF9jbGVhcl9kaXJ0eShw
dGVfdCAqcHRlcCkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KDYsIHB0ZXApOyB9CnN0YXRp
YyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcocHRlX3QgKnB0ZXApIHsgcmV0
dXJuIHRlc3RfYW5kX2NsZWFyX2JpdCg1LCBwdGVwKTsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVw
X3Rlc3RfeW91bmcocHRlX3QgKnB0ZXApIHsgcmV0dXJuIChfX2J1aWx0aW5fY29uc3RhbnRfcCg1
KSA/IGNvbnN0YW50X3Rlc3RfYml0KCg1KSwocHRlcCkpIDogdmFyaWFibGVfdGVzdF9iaXQoKDUp
LChwdGVwKSkpOyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVwX3NldF93cnByb3RlY3QocHRlX3Qg
KnB0ZXApIHsgY2xlYXJfYml0KDEsIHB0ZXApOyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVwX21r
ZGlydHkocHRlX3QgKnB0ZXApIHsgc2V0X2JpdCg2LCBwdGVwKTsgfQojIDMxNSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcGd0YWJsZS5oIgpzdGF0aWMgaW5saW5lIHB0ZV90
IHB0ZV9tb2RpZnkocHRlX3QgcHRlLCBwZ3Byb3RfdCBuZXdwcm90KQp7CiAgICAgICAgcHRlLnB0
ZV9sb3cgJj0gKCh+KCgxVUwgPDwgMTIpLTEpKSB8IDB4MDIwIHwgMHgwNDApOwogICAgICAgIHB0
ZS5wdGVfbG93IHw9ICgobmV3cHJvdCkucGdwcm90KTsKICAgICAgICByZXR1cm4gcHRlOwp9CiMg
Mzc0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCnR5cGVk
ZWYgcHRlX3QgKnB0ZV9hZGRyX3Q7CiMgMzkwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2FzbS9wZ3RhYmxlLmgiCnN0cnVjdCBwYWdlOwppbnQgY2hhbmdlX3BhZ2VfYXR0cl9SN2Jh
MTlmYTYoc3RydWN0IHBhZ2UgKiwgaW50LCBwZ3Byb3RfdCBwcm90KTsKIyA0MiAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tbS5oIiAyCiMgNTkgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW0uaCIKc3RydWN0IHZtX2FyZWFfc3RydWN0IHsKICAg
ICAgICBzdHJ1Y3QgbW1fc3RydWN0ICogdm1fbW07CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9z
dGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2VuZDsKCgoKICAgICAgICBzdHJ1Y3Qgdm1f
YXJlYV9zdHJ1Y3QgKnZtX25leHQ7CgogICAgICAgIHBncHJvdF90IHZtX3BhZ2VfcHJvdDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHZtX2ZsYWdzOwoKICAgICAgICByYl9ub2RlX3Qgdm1fcmI7CgoK
CgoKCiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bV9uZXh0X3NoYXJlOwogICAgICAg
IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtX3BwcmV2X3NoYXJlOwoKCiAgICAgICAgc3RydWN0
IHZtX29wZXJhdGlvbnNfc3RydWN0ICogdm1fb3BzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyB2
bV9wZ29mZjsKCiAgICAgICAgc3RydWN0IGZpbGUgKiB2bV9maWxlOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgdm1fcmFlbmQ7CiAgICAgICAgdm9pZCAqIHZtX3ByaXZhdGVfZGF0YTsKfTsKIyAxMzEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbW0uaCIKZXh0ZXJuIGludCB2
bV9taW5fcmVhZGFoZWFkX1I0MWVmMzE0ZDsKZXh0ZXJuIGludCB2bV9tYXhfcmVhZGFoZWFkX1Jm
OGM5YWEzYzsKCgoKCgpleHRlcm4gcGdwcm90X3QgcHJvdGVjdGlvbl9tYXBbMTZdOwoKCgoKCgoK
c3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IHsKICAgICAgICB2b2lkICgqb3Blbikoc3RydWN0
IHZtX2FyZWFfc3RydWN0ICogYXJlYSk7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3Qgdm1f
YXJlYV9zdHJ1Y3QgKiBhcmVhKTsKICAgICAgICBzdHJ1Y3QgcGFnZSAqICgqbm9wYWdlKShzdHJ1
Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBhcmVhLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB1bnVz
ZWQpOwp9OwoKCnN0cnVjdCBwdGVfY2hhaW47CiMgMTcwICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21tLmgiCnR5cGVkZWYgc3RydWN0IHBhZ2UgewogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsK
CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKICAgICAgICBzdHJ1Y3QgcGFnZSAqbmV4
dF9oYXNoOwoKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICB1bnNpZ25lZCBsb25nIGZs
YWdzOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxydTsKCiAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgICAgc3RydWN0IHB0ZV9jaGFpbiAqY2hhaW47CgogICAgICAgICAgICAgICAgcHRl
X2FkZHJfdCBkaXJlY3Q7CiAgICAgICAgfSBwdGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBhZ2U7
CiAgICAgICAgc3RydWN0IHBhZ2UgKipwcHJldl9oYXNoOwogICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqIGJ1ZmZlcnM7CiMgMjA4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xp
bnV4L21tLmgiCn0gbWVtX21hcF90OwojIDM1NSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9tbS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgcHRlX2NoYWluX2xvY2soc3RydWN0
IHBhZ2UgKnBhZ2UpCnsKIyAzNzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvbW0uaCIKfQoKc3RhdGljIGlubGluZSB2b2lkIHB0ZV9jaGFpbl91bmxvY2soc3RydWN0IHBh
Z2UgKnBhZ2UpCnsKCgoKfQojIDM4NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tbS5oIgpzdHJ1Y3Qgem9uZV9zdHJ1Y3Q7CmV4dGVybiBzdHJ1Y3Qgem9uZV9zdHJ1Y3Qg
KnpvbmVfdGFibGVfUjRiNzZhNmVkW107CgpzdGF0aWMgaW5saW5lIHpvbmVfdCAqcGFnZV96b25l
KHN0cnVjdCBwYWdlICpwYWdlKQp7CiAgICAgICAgcmV0dXJuIHpvbmVfdGFibGVfUjRiNzZhNmVk
W3BhZ2UtPmZsYWdzID4+ICgzMiAtIDgpXTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNldF9wYWdl
X3pvbmUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgem9uZV9udW0pCnsKICAgICAg
ICBwYWdlLT5mbGFncyAmPSB+KH4wVUwgPDwgKDMyIC0gOCkpOwogICAgICAgIHBhZ2UtPmZsYWdz
IHw9IHpvbmVfbnVtIDw8ICgzMiAtIDgpOwp9CiMgNDMzICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L21tLmgiCmV4dGVybiB2b2lkIHNldF9wYWdlX2RpcnR5X1JiZGY5MGY0
YihzdHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgNDk5ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L21tLmgiCnN0YXRpYyBpbmxpbmUgaW50
IHBhZ2VfbWFwcGVkKHN0cnVjdCBwYWdlICpwYWdlKQp7CiAgICAgICAgcmV0dXJuIHBhZ2UtPnB0
ZS5kaXJlY3QgIT0gMDsKfQojIDUxMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9tbS5oIgpleHRlcm4gbWVtX21hcF90ICogbWVtX21hcF9SNDExZmUyZjA7CgoKCgoKCgpl
eHRlcm4gc3RydWN0IHBhZ2UgKiBfYWxsb2NfcGFnZXNfUmM1NzgzMmIzKHVuc2lnbmVkIGludCBn
ZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CmV4dGVybiBzdHJ1Y3QgcGFnZSAqIF9fYWxsb2NfcGFnZXNfUmNkMDUwY2NlKHVuc2lnbmVkIGlu
dCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCB6b25lbGlzdF90ICp6b25lbGlzdCkgX19h
dHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiBhbGxvY19wYWdl
c19ub2RlX1I1YjA4Y2RiNShpbnQgbmlkLCB1bnNpZ25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVk
IGludCBvcmRlcik7CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICogYWxsb2NfcGFnZXModW5z
aWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpCnsKCgoKICAgICAgICBpZiAo
b3JkZXIgPj0gMTApCiAgICAgICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAg
cmV0dXJuIF9hbGxvY19wYWdlc19SYzU3ODMyYjMoZ2ZwX21hc2ssIG9yZGVyKTsKfQoKCgpleHRl
cm4gdW5zaWduZWQgbG9uZyBfX2dldF9mcmVlX3BhZ2VzX1I0Nzg0ZTQyNCh1bnNpZ25lZCBpbnQg
Z2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwpleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRfemVyb2VkX3BhZ2VfUjBjMjE4OGM3KHVuc2lnbmVk
IGludCBnZnBfbWFzaykgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDU1MiAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9tbS5oIgpleHRlcm4gdm9pZCBfX2ZyZWVf
cGFnZXNfUjhiNWJhYzgzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgZnJlZV9wYWdlc19SOTk0MWNj
YjgodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKCgoKCmV4dGVybiB2b2lkIGZpeHVwX2ZyZWVzcGFjZShzdHJ1Y3Qgem9u
ZV9zdHJ1Y3QgKiwgaW50KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lk
IHNob3dfZnJlZV9hcmVhcyh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19mcmVlX2FyZWFzX25vZGUo
cGdfZGF0YV90ICpwZ2RhdCk7CgpleHRlcm4gdm9pZCBjbGVhcl9wYWdlX3RhYmxlcyhzdHJ1Y3Qg
bW1fc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgpleHRlcm4gaW50IGZhaWxfd3JpdGVw
YWdlX1JlOTI5NDMyMChzdHJ1Y3QgcGFnZSAqKTsKc3RydWN0IHBhZ2UgKiBzaG1lbV9ub3BhZ2Uo
c3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIGludCB1
bnVzZWQpOwpzdHJ1Y3QgZmlsZSAqc2htZW1fZmlsZV9zZXR1cF9SYWI2YzI4ZjgoY2hhciAqIG5h
bWUsIGxvZmZfdCBzaXplKTsKZXh0ZXJuIHZvaWQgc2htZW1fbG9jayhzdHJ1Y3QgZmlsZSAqIGZp
bGUsIGludCBsb2NrKTsKZXh0ZXJuIGludCBzaG1lbV96ZXJvX3NldHVwKHN0cnVjdCB2bV9hcmVh
X3N0cnVjdCAqKTsKCmV4dGVybiB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0
cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4
dGVybiBpbnQgY29weV9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1t
X3N0cnVjdCAqc3JjLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CmV4dGVybiBpbnQgcmVt
YXBfcGFnZV9yYW5nZV9SNDE1MTg4ZDEoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2ln
bmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyB0bywgdW5zaWduZWQgbG9uZyBzaXplLCBwZ3By
b3RfdCBwcm90KTsKZXh0ZXJuIGludCB6ZXJvbWFwX3BhZ2VfcmFuZ2Uoc3RydWN0IHZtX2FyZWFf
c3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyBzaXplLCBwZ3By
b3RfdCBwcm90KTsKCmV4dGVybiBpbnQgdm10cnVuY2F0ZV9SYjY2MTNiNTMoc3RydWN0IGlub2Rl
ICogaW5vZGUsIGxvZmZfdCBvZmZzZXQpOwpleHRlcm4gcG1kX3QgKl9fcG1kX2FsbG9jKHN0cnVj
dCBtbV9zdHJ1Y3QgKm1tLCBwZ2RfdCAqcGdkLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHB0ZV90ICpwdGVfYWxsb2Nfa2VybmVsKHN0
cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHB0ZV90ICpwdGVfYWxsb2NfbWFwKHN0
cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGludCBoYW5kbGVfbW1fZmF1bHQoc3Ry
dWN0IG1tX3N0cnVjdCAqbW0sc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxv
bmcgYWRkcmVzcywgaW50IHdyaXRlX2FjY2Vzcyk7CmV4dGVybiBpbnQgbWFrZV9wYWdlc19wcmVz
ZW50KHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBlbmQpOwpleHRlcm4gaW50IGFj
Y2Vzc19wcm9jZXNzX3ZtKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBsb25nIGFk
ZHIsIHZvaWQgKmJ1ZiwgaW50IGxlbiwgaW50IHdyaXRlKTsKCmV4dGVybiBzdHJ1Y3QgcGFnZSAq
IGZvbGxvd19wYWdlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3Ms
IGludCB3cml0ZSk7CmludCBnZXRfdXNlcl9wYWdlc19SYzA5NWExMzIoc3RydWN0IHRhc2tfc3Ry
dWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHN0YXJ0LAogICAg
ICAgICAgICAgICAgaW50IGxlbiwgaW50IHdyaXRlLCBpbnQgZm9yY2UsIHN0cnVjdCBwYWdlICoq
cGFnZXMsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMpOwoKCgoKCgpzdGF0aWMgaW5saW5l
IHBtZF90ICpwbWRfYWxsb2Moc3RydWN0IG1tX3N0cnVjdCAqbW0sIHBnZF90ICpwZ2QsIHVuc2ln
bmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIGlmIChwZ2Rfbm9uZSgqcGdkKSkKICAgICAgICAg
ICAgICAgIHJldHVybiBfX3BtZF9hbGxvYyhtbSwgcGdkLCBhZGRyZXNzKTsKICAgICAgICByZXR1
cm4gcG1kX29mZnNldChwZ2QsIGFkZHJlc3MpOwp9CgpleHRlcm4gaW50IHBndF9jYWNoZV93YXRl
clsyXTsKZXh0ZXJuIGludCBjaGVja19wZ3RfY2FjaGUodm9pZCk7CgpleHRlcm4gdm9pZCBmcmVl
X2FyZWFfaW5pdCh1bnNpZ25lZCBsb25nICogem9uZXNfc2l6ZSk7CmV4dGVybiB2b2lkIGZyZWVf
YXJlYV9pbml0X25vZGUoaW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKnBt
YXAsCiAgICAgICAgdW5zaWduZWQgbG9uZyAqIHpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgem9u
ZV9zdGFydF9wYWRkciwKICAgICAgICB1bnNpZ25lZCBsb25nICp6aG9sZXNfc2l6ZSk7CmV4dGVy
biB2b2lkIG1lbV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X21lbV9SODgxNzFkZGEodm9p
ZCk7CmV4dGVybiB2b2lkIHNpX21lbWluZm9fUmIzYTMwN2M2KHN0cnVjdCBzeXNpbmZvICogdmFs
KTsKZXh0ZXJuIHZvaWQgc3dhcGluX3JlYWRhaGVhZChzd3BfZW50cnlfdCk7CgpleHRlcm4gc3Ry
dWN0IGFkZHJlc3Nfc3BhY2Ugc3dhcHBlcl9zcGFjZTsKCgpzdGF0aWMgaW5saW5lIGludCBpc19w
YWdlX2NhY2hlX2ZyZWVhYmxlKHN0cnVjdCBwYWdlICogcGFnZSkKewogICAgICAgIHJldHVybiAo
KCYocGFnZSktPmNvdW50KS0+Y291bnRlcikgLSAhIXBhZ2UtPmJ1ZmZlcnMgPT0gMTsKfQoKZXh0
ZXJuIGludCBjYW5fc2hhcmVfc3dhcF9wYWdlKHN0cnVjdCBwYWdlICopOwpleHRlcm4gaW50IHJl
bW92ZV9leGNsdXNpdmVfc3dhcF9wYWdlKHN0cnVjdCBwYWdlICopOwoKCmV4dGVybiB2b2lkIHZt
X3B0ZXBfc2V0X3dycHJvdGVjdChzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcHRlX3QgKnB0ZXApIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgdm1fc2V0X3B0ZShzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLCBwdGVfdCAqcHRlcCwgcHRl
X3QgcHRlKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBwdGVfdCB2bV9wdGVw
X2dldF9hbmRfY2xlYXIoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcg
YWRkciwgcHRlX3QgKnB0ZXApIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZv
aWQgdm1fcHRlX2NsZWFyKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25n
IGFkZHJlc3MsIHB0ZV90ICpwdGVwKTsKZXh0ZXJuIHZvaWQgX19mcmVlX3B0ZShwdGVfdCBwdGUp
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCgoKZXh0ZXJuIHZvaWQgbG9ja192bWFfbWFw
cGluZ3Moc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCB1bmxvY2tfdm1hX21h
cHBpbmdzKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgaW5zZXJ0X3ZtX3N0
cnVjdChzdHJ1Y3QgbW1fc3RydWN0ICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJu
IHZvaWQgX19pbnNlcnRfdm1fc3RydWN0KHN0cnVjdCBtbV9zdHJ1Y3QgKiwgc3RydWN0IHZtX2Fy
ZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCBidWlsZF9tbWFwX3JiKHN0cnVjdCBtbV9zdHJ1Y3Qg
Kik7CmV4dGVybiB2b2lkIGV4aXRfbW1hcChzdHJ1Y3QgbW1fc3RydWN0ICopOwoKZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgZ2V0X3VubWFwcGVkX2FyZWFfUjUxNDdlNDIzKHN0cnVjdCBmaWxlICosIHVu
c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcp
OwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fbW1hcF9wZ29mZl9SNDM3YzExNWYoc3RydWN0IGZp
bGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICAgICB1bnNpZ25lZCBsb25nIGxlbiwg
dW5zaWduZWQgbG9uZyBwcm90LAogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZywgdW5zaWduZWQg
bG9uZyBwZ29mZik7CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3Qg
ZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgIHVuc2lnbmVkIGxvbmcgbGVu
LCB1bnNpZ25lZCBsb25nIHByb3QsCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnLCB1bnNpZ25l
ZCBsb25nIG9mZnNldCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmV0ID0gLTIyOwogICAgICAg
IGlmICgob2Zmc2V0ICsgKCgobGVuKSsoMVVMIDw8IDEyKS0xKSYofigoMVVMIDw8IDEyKS0xKSkp
KSA8IG9mZnNldCkKICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgIGlmICghKG9mZnNl
dCAmIH4ofigoMVVMIDw8IDEyKS0xKSkpKQogICAgICAgICAgICAgICAgcmV0ID0gZG9fbW1hcF9w
Z29mZl9SNDM3YzExNWYoZmlsZSwgYWRkciwgbGVuLCBwcm90LCBmbGFnLCBvZmZzZXQgPj4gMTIp
OwpvdXQ6CiAgICAgICAgcmV0dXJuIHJldDsKfQoKZXh0ZXJuIGludCBkb19tdW5tYXBfUjgxYTI1
ZWMzKHN0cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywgc2l6ZV90KTsKCmV4dGVybiB1
bnNpZ25lZCBsb25nIGRvX2Jya19SOWVlY2RlMTYodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9u
Zyk7CgpzdGF0aWMgaW5saW5lIHZvaWQgX192bWFfdW5saW5rKHN0cnVjdCBtbV9zdHJ1Y3QgKiBt
bSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBw
cmV2KQp7CiAgICAgICAgcHJldi0+dm1fbmV4dCA9IHZtYS0+dm1fbmV4dDsKICAgICAgICByYl9l
cmFzZV9SZGEyMjZhODAoJnZtYS0+dm1fcmIsICZtbS0+bW1fcmIpOwogICAgICAgIGlmIChtbS0+
bW1hcF9jYWNoZSA9PSB2bWEpCiAgICAgICAgICAgICAgICBtbS0+bW1hcF9jYWNoZSA9IHByZXY7
Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGNhbl92bWFfbWVyZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0
ICogdm1hLCB1bnNpZ25lZCBsb25nIHZtX2ZsYWdzKQp7CiAgICAgICAgaWYgKCF2bWEtPnZtX2Zp
bGUgJiYgdm1hLT52bV9mbGFncyA9PSB2bV9mbGFncykKICAgICAgICAgICAgICAgIHJldHVybiAx
OwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiAwOwp9CgpzdHJ1Y3Qgem9uZV90
OwoKZXh0ZXJuIHZvaWQgcmVtb3ZlX2lub2RlX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CmV4dGVybiB1
bnNpZ25lZCBsb25nIHBhZ2VfdW51c2Uoc3RydWN0IHBhZ2UgKik7CmV4dGVybiB2b2lkIHRydW5j
YXRlX2lub2RlX3BhZ2VzX1JlYWExNzE5ZChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3Qp
OwoKCmV4dGVybiBpbnQgZmlsZW1hcF9zeW5jX1JjYzg2ODQ0NyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1
Y3QgKiwgdW5zaWduZWQgbG9uZywgc2l6ZV90LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gc3RydWN0
IHBhZ2UgKmZpbGVtYXBfbm9wYWdlX1I1M2VmOTU5NihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiwg
dW5zaWduZWQgbG9uZywgaW50KTsKIyA3MTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvbW0uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcGZfZ2ZwX21hc2sodW5z
aWduZWQgaW50IGdmcF9tYXNrKQp7CgogICAgICAgIGlmIChnZXRfY3VycmVudCgpLT5mbGFncyAm
IDB4MDAwMDQwMDApCiAgICAgICAgICAgICAgICBnZnBfbWFzayAmPSB+KDB4NDAgfCAweDgwIHwg
MHgxMDApOwoKICAgICAgICByZXR1cm4gZ2ZwX21hc2s7Cn0KCgoKc3RhdGljIGlubGluZSBpbnQg
ZXhwYW5kX3N0YWNrKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSwgdW5zaWduZWQgbG9uZyBh
ZGRyZXNzKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBncm93OwoKCgoKCgogICAgICAgIGFkZHJl
c3MgJj0gKH4oKDFVTCA8PCAxMiktMSkpOwogICAgICAgICh2b2lkKSgmdm1hLT52bV9tbS0+cGFn
ZV90YWJsZV9sb2NrKTsKICAgICAgICBncm93ID0gKHZtYS0+dm1fc3RhcnQgLSBhZGRyZXNzKSA+
PiAxMjsKICAgICAgICBpZiAodm1hLT52bV9lbmQgLSBhZGRyZXNzID4gZ2V0X2N1cnJlbnQoKS0+
cmxpbVszXS5ybGltX2N1ciB8fAogICAgICAgICAgICAoKHZtYS0+dm1fbW0tPnRvdGFsX3ZtICsg
Z3JvdykgPDwgMTIpID4gZ2V0X2N1cnJlbnQoKS0+cmxpbVs5XS5ybGltX2N1cikgewogICAgICAg
ICAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgICAgICAgICAgcmV0dXJuIC0xMjsKICAg
ICAgICB9CiAgICAgICAgdm1hLT52bV9zdGFydCA9IGFkZHJlc3M7CiAgICAgICAgdm1hLT52bV9w
Z29mZiAtPSBncm93OwogICAgICAgIHZtYS0+dm1fbW0tPnRvdGFsX3ZtICs9IGdyb3c7CiAgICAg
ICAgaWYgKHZtYS0+dm1fZmxhZ3MgJiAweDAwMDAyMDAwKQogICAgICAgICAgICAgICAgdm1hLT52
bV9tbS0+bG9ja2VkX3ZtICs9IGdyb3c7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAg
IHJldHVybiAwOwp9CgoKZXh0ZXJuIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hX1I3
OTljZDRiNShzdHJ1Y3QgbW1fc3RydWN0ICogbW0sIHVuc2lnbmVkIGxvbmcgYWRkcik7CmV4dGVy
biBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3ZtYV9wcmV2KHN0cnVjdCBtbV9zdHJ1Y3Qg
KiBtbSwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKipwcHJldik7CgoKCnN0YXRpYyBp
bmxpbmUgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogZmluZF92bWFfaW50ZXJzZWN0aW9uKHN0cnVj
dCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQgbG9uZyBzdGFydF9hZGRyLCB1bnNpZ25lZCBsb25n
IGVuZF9hZGRyKQp7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hID0gZmluZF92
bWFfUjc5OWNkNGI1KG1tLHN0YXJ0X2FkZHIpOwoKICAgICAgICBpZiAodm1hICYmIGVuZF9hZGRy
IDw9IHZtYS0+dm1fc3RhcnQpCiAgICAgICAgICAgICAgICB2bWEgPSAoKHZvaWQgKikwKTsKICAg
ICAgICByZXR1cm4gdm1hOwp9CgpleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICpmaW5kX2V4
dGVuZF92bWEoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcik7CgpleHRl
cm4gc3RydWN0IHBhZ2UgKiB2bWFsbG9jX3RvX3BhZ2VfUjRmYWI1MmNkKHZvaWQgKmFkZHIpOwoj
IDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMgojIDQ5
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKZXh0ZXJuIHZv
aWQga21lbV9jYWNoZV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBrbWVtX2NhY2hlX3NpemVzX2lu
aXQodm9pZCk7CgpleHRlcm4ga21lbV9jYWNoZV90ICprbWVtX2ZpbmRfZ2VuZXJhbF9jYWNoZXBf
UjUyYmI2ODkxKHNpemVfdCwgaW50IGdmcGZsYWdzKTsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqa21l
bV9jYWNoZV9jcmVhdGVfUmQxYzBiNGU2KGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBzaXplX3QsIHVu
c2lnbmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KCopKHZvaWQgKiwga21lbV9jYWNoZV90ICosIHVuc2lnbmVkIGxvbmcpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqKSh2b2lkICosIGttZW1fY2FjaGVfdCAq
LCB1bnNpZ25lZCBsb25nKSk7CmV4dGVybiBpbnQga21lbV9jYWNoZV9kZXN0cm95X1JkZjgzYzY5
MihrbWVtX2NhY2hlX3QgKik7CmV4dGVybiBpbnQga21lbV9jYWNoZV9zaHJpbmtfUjEyZjdjZjA0
KGttZW1fY2FjaGVfdCAqKTsKZXh0ZXJuIHZvaWQgKmttZW1fY2FjaGVfYWxsb2NfUjc1ODEwOTU2
KGttZW1fY2FjaGVfdCAqLCBpbnQpOwpleHRlcm4gdm9pZCBrbWVtX2NhY2hlX2ZyZWVfUjg5MWYy
Njg2KGttZW1fY2FjaGVfdCAqLCB2b2lkICopOwpleHRlcm4gdW5zaWduZWQgaW50IGttZW1fY2Fj
aGVfc2l6ZV9SMTZhM2M3NDkoa21lbV9jYWNoZV90ICopOwoKZXh0ZXJuIHZvaWQgKmttYWxsb2Nf
UjkzZDRjZmU2KHNpemVfdCwgaW50KTsKZXh0ZXJuIHZvaWQga2ZyZWVfUjAzN2EwY2JhKGNvbnN0
IHZvaWQgKik7CgpleHRlcm4gaW50IGttZW1fY2FjaGVfcmVhcChpbnQpIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKCgpleHRlcm4ga21lbV9jYWNoZV90ICp2bV9hcmVhX2NhY2hlcDsKZXh0
ZXJuIGttZW1fY2FjaGVfdCAqbW1fY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpuYW1lc19j
YWNoZXBfUmQyNTQ2OWI0OwpleHRlcm4ga21lbV9jYWNoZV90ICpmaWxlc19jYWNoZXA7CmV4dGVy
biBrbWVtX2NhY2hlX3QgKmZpbHBfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpkcXVvdF9j
YWNoZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKmJoX2NhY2hlcF9SZGNjMGJiMzc7CmV4dGVybiBr
bWVtX2NhY2hlX3QgKmZzX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqc2lnbmFsX2NhY2hl
cDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqc2lnaGFuZF9jYWNoZXA7CiMgMTI0ICJoL3NrZHJ2MXN0
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ludGVycnVw
dC5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaW50ZXJy
dXB0LmgiCnN0cnVjdCBpcnFhY3Rpb24gewogICAgICAgIHZvaWQgKCpoYW5kbGVyKShpbnQsIHZv
aWQgKiwgc3RydWN0IHB0X3JlZ3MgKik7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAg
ICAgICB1bnNpZ25lZCBsb25nIG1hc2s7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAg
ICB2b2lkICpkZXZfaWQ7CiAgICAgICAgc3RydWN0IGlycWFjdGlvbiAqbmV4dDsKfTsKCgoKCgpl
bnVtIHsKICAgICAgICBUSU1FUl9CSCA9IDAsCiAgICAgICAgVFFVRVVFX0JILAogICAgICAgIERJ
R0lfQkgsCiAgICAgICAgU0VSSUFMX0JILAogICAgICAgIFJJU0NPTThfQkgsCiAgICAgICAgU1BF
Q0lBTElYX0JILAogICAgICAgIEFVUk9SQV9CSCwKICAgICAgICBFU1BfQkgsCiAgICAgICAgU0NT
SV9CSCwKICAgICAgICBJTU1FRElBVEVfQkgsCiAgICAgICAgQ1lDTEFERVNfQkgsCiAgICAgICAg
Q00yMDZfQkgsCiAgICAgICAgSlNfQkgsCiAgICAgICAgTUFDU0VSSUFMX0JILAogICAgICAgIElT
SUNPTV9CSAp9OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9oYXJk
aXJxLmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
aXJxLmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pcnEu
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9pcnEuaCIgMQojIDMy
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9pcnEuaCIKc3RhdGljIF9faW5s
aW5lX18gaW50IGlycV9jYW5ub25pY2FsaXplKGludCBpcnEpCnsKICAgICAgICByZXR1cm4gKChp
cnEgPT0gMikgPyA5IDogaXJxKTsKfQoKZXh0ZXJuIHZvaWQgZGlzYWJsZV9pcnFfUjNjZTRjYTZm
KHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIGRpc2FibGVfaXJxX25vc3luY19SMjdiYmYyMjEo
dW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgZW5hYmxlX2lycV9SZmNlYzA5ODcodW5zaWduZWQg
aW50KTsKZXh0ZXJuIHZvaWQgcmVsZWFzZV94ODZfaXJxcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7
CiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaXJxLmgiIDIKIyAz
OSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pcnEuaCIKc3RydWN0IGh3
X2ludGVycnVwdF90eXBlIHsKICAgICAgICBjb25zdCBjaGFyICogdHlwZW5hbWU7CiAgICAgICAg
dW5zaWduZWQgaW50ICgqc3RhcnR1cCkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAo
KnNodXRkb3duKSh1bnNpZ25lZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqZW5hYmxlKSh1bnNp
Z25lZCBpbnQgaXJxKTsKICAgICAgICB2b2lkICgqZGlzYWJsZSkodW5zaWduZWQgaW50IGlycSk7
CiAgICAgICAgdm9pZCAoKmFjaykodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKmVu
ZCkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKnNldF9hZmZpbml0eSkodW5zaWdu
ZWQgaW50IGlycSwgdW5zaWduZWQgbG9uZyBtYXNrKTsKfTsKCnR5cGVkZWYgc3RydWN0IGh3X2lu
dGVycnVwdF90eXBlIGh3X2lycV9jb250cm9sbGVyOwojIDU5ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L2lycS5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHN0YXR1czsKICAgICAgICBod19pcnFfY29udHJvbGxlciAqaGFuZGxlcjsKICAgICAg
ICBzdHJ1Y3QgaXJxYWN0aW9uICphY3Rpb247CiAgICAgICAgdW5zaWduZWQgaW50IGRlcHRoOwog
ICAgICAgIHNwaW5sb2NrX3QgbG9jazsKfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8
PCAoKDUpKSkpKSkgaXJxX2Rlc2NfdDsKCmV4dGVybiBpcnFfZGVzY190IGlycV9kZXNjIFsxNl07
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2h3X2lycS5oIiAxCiMg
MTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2h3X2lycS5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc21wX2xvY2suaCIgMQojIDE3ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9od19pcnEuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcHJvZmlsZS5oIiAxCiMgMTIgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcHJvZmlsZS5oIgppbnQgcHJvZmlsZV9z
ZXR1cChjaGFyICogc3RyKTsKCgp2b2lkIHByb2ZpbGVfaW5pdCh2b2lkKTsKCmV4dGVybiB1bnNp
Z25lZCBpbnQgKiBwcm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9sZW47CmV4
dGVybiB1bnNpZ25lZCBsb25nIHByb2Zfc2hpZnQ7CgplbnVtIHByb2ZpbGVfdHlwZSB7CiAgICAg
ICAgRVhJVF9UQVNLLAogICAgICAgIEVYSVRfTU1BUCwKICAgICAgICBFWEVDX1VOTUFQCn07CiMg
NDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcHJvZmlsZS5oIgpzdGF0
aWMgaW5saW5lIGludCBwcm9maWxlX2V2ZW50X3JlZ2lzdGVyX1IwYmI3MWJjZShlbnVtIHByb2Zp
bGVfdHlwZSB0LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKiBuKQp7CiAgICAgICAgcmV0dXJuIC0z
ODsKfQoKc3RhdGljIGlubGluZSBpbnQgcHJvZmlsZV9ldmVudF91bnJlZ2lzdGVyX1JhNjdhODE3
MChlbnVtIHByb2ZpbGVfdHlwZSB0LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKiBuKQp7CiAgICAg
ICAgcmV0dXJuIC0zODsKfQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2Fz
bS9od19pcnEuaCIgMgojIDY0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9o
d19pcnEuaCIKZXh0ZXJuIGludCBpcnFfdmVjdG9yWzE2XTsKIyA3NCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9hc20vaHdfaXJxLmgiCmV4dGVybiB2b2lkIG1hc2tfaXJxKHVuc2ln
bmVkIGludCBpcnEpOwpleHRlcm4gdm9pZCB1bm1hc2tfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpl
eHRlcm4gdm9pZCBkaXNhYmxlXzgyNTlBX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJuIHZv
aWQgZW5hYmxlXzgyNTlBX2lycSh1bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJuIGludCBpODI1OUFf
aXJxX3BlbmRpbmcodW5zaWduZWQgaW50IGlycSk7CmV4dGVybiB2b2lkIG1ha2VfODI1OUFfaXJx
KHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4gdm9pZCBpbml0XzgyNTlBKGludCBhZW9pKTsKZXh0
ZXJuIHZvaWQgc2VuZF9JUElfc2VsZihpbnQgdmVjdG9yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJt
KDMpKSk7CmV4dGVybiB2b2lkIGluaXRfVklTV1NfQVBJQ19pcnFzKHZvaWQpOwpleHRlcm4gdm9p
ZCBzZXR1cF9JT19BUElDKHZvaWQpOwpleHRlcm4gdm9pZCBkaXNhYmxlX0lPX0FQSUModm9pZCk7
CmV4dGVybiB2b2lkIHByaW50X0lPX0FQSUModm9pZCk7CmV4dGVybiBpbnQgSU9fQVBJQ19nZXRf
UENJX2lycV92ZWN0b3IoaW50IGJ1cywgaW50IHNsb3QsIGludCBmbik7CmV4dGVybiB2b2lkIHNl
bmRfSVBJKGludCBkZXN0LCBpbnQgdmVjdG9yKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGlvX2Fw
aWNfaXJxczsKCmV4dGVybiBhdG9taWNfdCBpcnFfZXJyX2NvdW50OwpleHRlcm4gYXRvbWljX3Qg
aXJxX21pc19jb3VudDsKCmV4dGVybiBjaGFyIF9zdGV4dCwgX2V0ZXh0OwojIDE5MiAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vaHdfaXJxLmgiCnN0YXRpYyBpbmxpbmUgdm9p
ZCB4ODZfZG9fcHJvZmlsZShzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpCnsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGVpcDsKICAgICAgICBleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9mX2NwdV9tYXNrOwog
ICAgICAgIGV4dGVybiBjaGFyIF9zdGV4dDsKCgoKCgoKICAgICAgICBpZiAoKCgweDAwMDIwMDAw
ICYgKHJlZ3MpLT5lZmxhZ3MpIHx8ICgzICYgKHJlZ3MpLT54Y3MpKSkKICAgICAgICAgICAgICAg
IHJldHVybjsKCiAgICAgICAgaWYgKCFwcm9mX2J1ZmZlcikKICAgICAgICAgICAgICAgIHJldHVy
bjsKCiAgICAgICAgZWlwID0gcmVncy0+ZWlwOwoKCgoKCiAgICAgICAgaWYgKCEoKDE8PDApICYg
cHJvZl9jcHVfbWFzaykpCiAgICAgICAgICAgICAgICByZXR1cm47CgogICAgICAgIGVpcCAtPSAo
dW5zaWduZWQgbG9uZykgJl9zdGV4dDsKICAgICAgICBlaXAgPj49IHByb2Zfc2hpZnQ7CgoKCgoK
ICAgICAgICBpZiAoZWlwID4gcHJvZl9sZW4tMSkKICAgICAgICAgICAgICAgIGVpcCA9IHByb2Zf
bGVuLTE7CiAgICAgICAgYXRvbWljX2luYygoYXRvbWljX3QgKikmcHJvZl9idWZmZXJbZWlwXSk7
Cn0KCnN0cnVjdCBub3RpZmllcl9ibG9jazsKIyAyMzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvYXNtL2h3X2lycS5oIgpzdGF0aWMgaW5saW5lIGludCByZWdpc3Rlcl9wcm9maWxl
X25vdGlmaWVyX1I4MzgwNDU1MyhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKiBuYikKewogICAgICAg
IHJldHVybiAtMzg7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHVucmVnaXN0ZXJfcHJvZmlsZV9ub3Rp
Zmllcl9SZjhiOGU2ZTIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICogbmIpCnsKICAgICAgICByZXR1
cm4gLTM4Owp9CiMgMjU3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9od19p
cnEuaCIKc3RhdGljIGlubGluZSB2b2lkIGh3X3Jlc2VuZF9pcnEoc3RydWN0IGh3X2ludGVycnVw
dF90eXBlICpoLCB1bnNpZ25lZCBpbnQgaSkge30KIyA3MCAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9pcnEuaCIgMgoKZXh0ZXJuIGludCBoYW5kbGVfSVJRX2V2ZW50KHVu
c2lnbmVkIGludCwgc3RydWN0IHB0X3JlZ3MgKiwgc3RydWN0IGlycWFjdGlvbiAqKTsKZXh0ZXJu
IGludCBzZXR1cF9pcnEodW5zaWduZWQgaW50ICwgc3RydWN0IGlycWFjdGlvbiAqICk7CgpleHRl
cm4gaHdfaXJxX2NvbnRyb2xsZXIgbm9faXJxX3R5cGU7CmV4dGVybiB2b2lkIG5vX2FjdGlvbihp
bnQgY3BsLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKIyA3ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiIDIKCgp0eXBlZGVmIHN0cnVj
dCB7CiAgICAgICAgdW5zaWduZWQgaW50IF9fc29mdGlycV9wZW5kaW5nOwogICAgICAgIHVuc2ln
bmVkIGludCBfX2xvY2FsX2lycV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgX19sb2NhbF9i
aF9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgX19zeXNjYWxsX2NvdW50OwogICAgICAgIHN0
cnVjdCB0YXNrX3N0cnVjdCAqIF9fa3NvZnRpcnFkX3Rhc2s7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBpZGxlX3RpbWVzdGFtcDsKICAgICAgICB1bnNpZ25lZCBpbnQgX19ubWlfY291bnQ7CgoKCn0g
X19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpIGlycV9jcHVzdGF0X3Q7
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaXJxX2NwdXN0YXQu
aCIgMQojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2lycV9jcHVz
dGF0LmgiCmV4dGVybiBpcnFfY3B1c3RhdF90IGlycV9zdGF0X1JjYTAyODNiMFtdOwojIDIzICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiIDIKIyA0NyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3NvZnRpcnEuaCIgMQojIDQ4ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIiAyCiMgNTcgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmVudW0Kewog
ICAgICAgIEhJX1NPRlRJUlE9MCwKICAgICAgICBORVRfVFhfU09GVElSUSwKICAgICAgICBORVRf
UlhfU09GVElSUSwKICAgICAgICBUQVNLTEVUX1NPRlRJUlEKfTsKCgoKCgpzdHJ1Y3Qgc29mdGly
cV9hY3Rpb24KewogICAgICAgIHZvaWQgKCphY3Rpb24pKHN0cnVjdCBzb2Z0aXJxX2FjdGlvbiAq
KTsKICAgICAgICB2b2lkICpkYXRhOwp9OwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2
b2lkIGRvX3NvZnRpcnFfUmYwYTUyOWI3KHZvaWQpOwpleHRlcm4gdm9pZCBvcGVuX3NvZnRpcnEo
aW50IG5yLCB2b2lkICgqYWN0aW9uKShzdHJ1Y3Qgc29mdGlycV9hY3Rpb24qKSwgdm9pZCAqZGF0
YSk7CmV4dGVybiB2b2lkIHNvZnRpcnFfaW5pdCh2b2lkKTsKCmV4dGVybiB2b2lkIGNwdV9yYWlz
ZV9zb2Z0aXJxX1JkMDFmM2VlOCh1bnNpZ25lZCBpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbnIpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgcmFpc2Vfc29mdGlycV9SZDhl
NGZhMWModW5zaWduZWQgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMgMTA0
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIgpzdHJ1
Y3QgdGFza2xldF9zdHJ1Y3QKewogICAgICAgIHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqbmV4dDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXRlOwogICAgICAgIGF0b21pY190IGNvdW50OwogICAg
ICAgIHZvaWQgKCpmdW5jKSh1bnNpZ25lZCBsb25nKTsKICAgICAgICB1bnNpZ25lZCBsb25nIGRh
dGE7Cn07CiMgMTIwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ludGVy
cnVwdC5oIgplbnVtCnsKICAgICAgICBUQVNLTEVUX1NUQVRFX1NDSEVELAogICAgICAgIFRBU0tM
RVRfU1RBVEVfUlVOCn07CgpzdHJ1Y3QgdGFza2xldF9oZWFkCnsKICAgICAgICBzdHJ1Y3QgdGFz
a2xldF9zdHJ1Y3QgKmxpc3Q7Cn0gX19hdHRyaWJ1dGVfXyAoKF9fYWxpZ25lZF9fKCgxIDw8ICgo
NSkpKSkpKTsKCmV4dGVybiBzdHJ1Y3QgdGFza2xldF9oZWFkIHRhc2tsZXRfdmVjX1I0MWQzYjM2
N1sxXTsKZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X2hlYWQgdGFza2xldF9oaV92ZWNfUmJiMDY1NzVm
WzFdOwojIDE1NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pbnRlcnJ1
cHQuaCIKZXh0ZXJuIHZvaWQgX190YXNrbGV0X3NjaGVkdWxlX1JlZDVjNzNiZihzdHJ1Y3QgdGFz
a2xldF9zdHJ1Y3QgKnQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCnN0YXRpYyBpbmxp
bmUgdm9pZCB0YXNrbGV0X3NjaGVkdWxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAg
ICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdChUQVNLTEVUX1NUQVRFX1NDSEVELCAmdC0+c3RhdGUp
KQogICAgICAgICAgICAgICAgX190YXNrbGV0X3NjaGVkdWxlX1JlZDVjNzNiZih0KTsKfQoKZXh0
ZXJuIHZvaWQgX190YXNrbGV0X2hpX3NjaGVkdWxlX1I2MGVhNWZlNyhzdHJ1Y3QgdGFza2xldF9z
dHJ1Y3QgKnQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCnN0YXRpYyBpbmxpbmUgdm9p
ZCB0YXNrbGV0X2hpX3NjaGVkdWxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAg
IGlmICghdGVzdF9hbmRfc2V0X2JpdChUQVNLTEVUX1NUQVRFX1NDSEVELCAmdC0+c3RhdGUpKQog
ICAgICAgICAgICAgICAgX190YXNrbGV0X2hpX3NjaGVkdWxlX1I2MGVhNWZlNyh0KTsKfQoKCnN0
YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2Rpc2FibGVfbm9zeW5jKHN0cnVjdCB0YXNrbGV0X3N0
cnVjdCAqdCkKewogICAgICAgIGF0b21pY19pbmMoJnQtPmNvdW50KTsKICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFz
a2xldF9kaXNhYmxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIHRhc2tsZXRf
ZGlzYWJsZV9ub3N5bmModCk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAgICAgICBfX2Fz
bV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQg
dGFza2xldF9lbmFibGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICAgICAgICBhdG9taWNfZGVjKCZ0LT5j
b3VudCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2hpX2VuYWJsZShzdHJ1Y3QgdGFz
a2xldF9zdHJ1Y3QgKnQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l
bW9yeSIpOwogICAgICAgIGF0b21pY19kZWMoJnQtPmNvdW50KTsKfQoKZXh0ZXJuIHZvaWQgdGFz
a2xldF9raWxsX1I3OWFkMjI0YihzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpOwpleHRlcm4gdm9p
ZCB0YXNrbGV0X2luaXRfUmE1ODA4YmJmKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKCpmdW5jKSh1bnNpZ25lZCBsb25nKSwgdW5zaWduZWQg
bG9uZyBkYXRhKTsKIyAyMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
aW50ZXJydXB0LmgiCmV4dGVybiBzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgYmhfdGFza192ZWNfUjI4
NDE3N2I4W107CgoKZXh0ZXJuIHNwaW5sb2NrX3QgZ2xvYmFsX2JoX2xvY2s7CgpzdGF0aWMgaW5s
aW5lIHZvaWQgbWFya19iaChpbnQgbnIpCnsKICAgICAgICB0YXNrbGV0X2hpX3NjaGVkdWxlKGJo
X3Rhc2tfdmVjX1IyODQxNzdiOCtucik7Cn0KCmV4dGVybiB2b2lkIGluaXRfYmhfUmY2Y2YyN2Nj
KGludCBuciwgdm9pZCAoKnJvdXRpbmUpKHZvaWQpKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX2JoX1Ji
YzUyNGEzMihpbnQgbnIpOwojIDI2NCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9pbnRlcnJ1cHQuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvYmVfaXJxX29uX1JiMTIx
MzkwYSh2b2lkKTsKZXh0ZXJuIGludCBwcm9iZV9pcnFfb2ZmX1JhYjYwMDQyMSh1bnNpZ25lZCBs
b25nKTsKZXh0ZXJuIHVuc2lnbmVkIGludCBwcm9iZV9pcnFfbWFza19SMzYwYjFhZmUodW5zaWdu
ZWQgbG9uZyk7CiMgMTI1ICJoL3NrZHJ2MXN0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L3BjaS5oIiAxCiMgMzA4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L3BjaS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvcGNpX2lkcy5oIiAxCiMgMzA5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L3BjaS5oIiAyCiMgMzM4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L3BjaS5oIgplbnVtIHBjaV9tbWFwX3N0YXRlIHsKICAgICAgICBwY2lfbW1hcF9pbywK
ICAgICAgICBwY2lfbW1hcF9tZW0KfTsKIyAzNjggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvcGNpLmgiCnN0cnVjdCBwY2lfZGV2IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIGdsb2JhbF9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYnVzX2xpc3Q7CiAgICAg
ICAgc3RydWN0IHBjaV9idXMgKmJ1czsKICAgICAgICBzdHJ1Y3QgcGNpX2J1cyAqc3Vib3JkaW5h
dGU7CgogICAgICAgIHZvaWQgKnN5c2RhdGE7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5
ICpwcm9jZW50OwoKICAgICAgICB1bnNpZ25lZCBpbnQgZGV2Zm47CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgdmVuZG9yOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRldmljZTsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBzdWJzeXN0ZW1fdmVuZG9yOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN1YnN5
c3RlbV9kZXZpY2U7CiAgICAgICAgdW5zaWduZWQgaW50IGNsYXNzOwogICAgICAgIHU4IGhkcl90
eXBlOwogICAgICAgIHU4IHJvbV9iYXNlX3JlZzsKCiAgICAgICAgc3RydWN0IHBjaV9kcml2ZXIg
KmRyaXZlcjsKICAgICAgICB2b2lkICpkcml2ZXJfZGF0YTsKICAgICAgICB1NjQgZG1hX21hc2s7
CgoKCgoKICAgICAgICB1MzIgY3VycmVudF9zdGF0ZTsKCgoKCiAgICAgICAgdW5zaWduZWQgc2hv
cnQgdmVuZG9yX2NvbXBhdGlibGVbNF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGV2aWNlX2Nv
bXBhdGlibGVbNF07CgoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgaXJxOwogICAgICAgIHN0cnVj
dCByZXNvdXJjZSByZXNvdXJjZVsxMl07CiAgICAgICAgc3RydWN0IHJlc291cmNlIGRtYV9yZXNv
dXJjZVsyXTsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgaXJxX3Jlc291cmNlWzJdOwoKICAgICAg
ICBjaGFyIG5hbWVbOTBdOwogICAgICAgIGNoYXIgc2xvdF9uYW1lWzhdOwogICAgICAgIHUzMiBz
YXZlZF9zdGF0ZVsxNl07CiAgICAgICAgaW50IGFjdGl2ZTsKICAgICAgICBpbnQgcm87CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgcmVnczsKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IHRyYW5zcGFy
ZW50OjE7CgogICAgICAgIGludCAoKnByZXBhcmUpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwogICAg
ICAgIGludCAoKmFjdGl2YXRlKShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKICAgICAgICBpbnQgKCpk
ZWFjdGl2YXRlKShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKfTsKIyA0NDMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcGNpLmgiCnN0cnVjdCBwY2lfYnVzIHsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIG5vZGU7CiAgICAgICAgc3RydWN0IHBjaV9idXMgKnBhcmVudDsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNoaWxkcmVuOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
ZGV2aWNlczsKICAgICAgICBzdHJ1Y3QgcGNpX2RldiAqc2VsZjsKICAgICAgICBzdHJ1Y3QgcmVz
b3VyY2UgKnJlc291cmNlWzRdOwoKICAgICAgICBzdHJ1Y3QgcGNpX29wcyAqb3BzOwogICAgICAg
IHZvaWQgKnN5c2RhdGE7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jZGlyOwoK
ICAgICAgICB1bnNpZ25lZCBjaGFyIG51bWJlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHByaW1h
cnk7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWNvbmRhcnk7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBzdWJvcmRpbmF0ZTsKCiAgICAgICAgY2hhciBuYW1lWzQ4XTsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCB2ZW5kb3I7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGV2aWNlOwogICAgICAgIHVuc2ln
bmVkIGludCBzZXJpYWw7CiAgICAgICAgdW5zaWduZWQgY2hhciBwbnB2ZXI7CiAgICAgICAgdW5z
aWduZWQgY2hhciBwcm9kdWN0dmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2hlY2tzdW07CiAg
ICAgICAgdW5zaWduZWQgY2hhciBwYWQxOwp9OwoKCgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBw
Y2lfcm9vdF9idXNlc19SMDgyYzMyMTM7CmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIHBjaV9kZXZp
Y2VzX1I3YTg0YjEwMjsKCmV4dGVybiBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2NfYnVzX3Bj
aV9kaXJfUmMxYmI3OWVlOwojIDQ4OSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9wY2kuaCIKc3RydWN0IHBjaV9vcHMgewogICAgICAgIGludCAoKnJlYWRfYnl0ZSkoc3Ry
dWN0IHBjaV9kZXYgKiwgaW50IHdoZXJlLCB1OCAqdmFsKTsKICAgICAgICBpbnQgKCpyZWFkX3dv
cmQpKHN0cnVjdCBwY2lfZGV2ICosIGludCB3aGVyZSwgdTE2ICp2YWwpOwogICAgICAgIGludCAo
KnJlYWRfZHdvcmQpKHN0cnVjdCBwY2lfZGV2ICosIGludCB3aGVyZSwgdTMyICp2YWwpOwogICAg
ICAgIGludCAoKndyaXRlX2J5dGUpKHN0cnVjdCBwY2lfZGV2ICosIGludCB3aGVyZSwgdTggdmFs
KTsKICAgICAgICBpbnQgKCp3cml0ZV93b3JkKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUs
IHUxNiB2YWwpOwogICAgICAgIGludCAoKndyaXRlX2R3b3JkKShzdHJ1Y3QgcGNpX2RldiAqLCBp
bnQgd2hlcmUsIHUzMiB2YWwpOwp9OwoKc3RydWN0IHBidXNfc2V0X3Jhbmdlc19kYXRhCnsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGlvX3N0YXJ0LCBpb19lbmQ7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBtZW1fc3RhcnQsIG1lbV9lbmQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwcmVmZXRjaF9zdGFy
dCwgcHJlZmV0Y2hfZW5kOwp9OwoKc3RydWN0IHBjaV9kZXZpY2VfaWQgewogICAgICAgIHVuc2ln
bmVkIGludCB2ZW5kb3IsIGRldmljZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3VidmVuZG9yLCBz
dWJkZXZpY2U7CiAgICAgICAgdW5zaWduZWQgaW50IGNsYXNzLCBjbGFzc19tYXNrOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZHJpdmVyX2RhdGE7Cn07CgpzdHJ1Y3QgcGNpX2RyaXZlciB7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBub2RlOwogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgY29u
c3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkX3RhYmxlOwogICAgICAgIGludCAoKnByb2JlKSAo
c3RydWN0IHBjaV9kZXYgKmRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKTsKICAg
ICAgICB2b2lkICgqcmVtb3ZlKSAoc3RydWN0IHBjaV9kZXYgKmRldik7CiAgICAgICAgaW50ICgq
c2F2ZV9zdGF0ZSkgKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHUzMiBzdGF0ZSk7CiAgICAgICAgaW50
ICgqc3VzcGVuZCkgKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHUzMiBzdGF0ZSk7CiAgICAgICAgaW50
ICgqcmVzdW1lKSAoc3RydWN0IHBjaV9kZXYgKmRldik7CiAgICAgICAgaW50ICgqZW5hYmxlX3dh
a2UpIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgc3RhdGUsIGludCBlbmFibGUpOwp9OwojIDUz
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9wY2kuaCIKdm9pZCBwY2li
aW9zX2luaXQodm9pZCk7CnZvaWQgcGNpYmlvc19maXh1cF9idXMoc3RydWN0IHBjaV9idXMgKik7
CmludCBwY2liaW9zX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKiwgaW50IG1hc2spOwpj
aGFyICpwY2liaW9zX3NldHVwIChjaGFyICpzdHIpOwoKCnZvaWQgcGNpYmlvc19hbGlnbl9yZXNv
dXJjZSh2b2lkICosIHN0cnVjdCByZXNvdXJjZSAqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CnZvaWQgcGNpYmlvc191cGRhdGVfcmVz
b3VyY2Uoc3RydWN0IHBjaV9kZXYgKiwgc3RydWN0IHJlc291cmNlICosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHJlc291cmNlICosIGludCk7CnZvaWQgcGNpYmlvc191cGRh
dGVfaXJxKHN0cnVjdCBwY2lfZGV2ICosIGludCBpcnEpOwp2b2lkIHBjaWJpb3NfZml4dXBfcGJ1
c19yYW5nZXMoc3RydWN0IHBjaV9idXMgKiwgc3RydWN0IHBidXNfc2V0X3Jhbmdlc19kYXRhICop
OwoKCgppbnQgcGNpYmlvc19wcmVzZW50X1I1MjBhNzViOSh2b2lkKTsKaW50IHBjaWJpb3NfcmVh
ZF9jb25maWdfYnl0ZV9SZDgwMTE1ZTEgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFy
IGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB3aGVy
ZSwgdW5zaWduZWQgY2hhciAqdmFsKTsKaW50IHBjaWJpb3NfcmVhZF9jb25maWdfd29yZF9SYWE5
ZWZmZDcgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB3aGVyZSwgdW5zaWduZWQgc2hvcnQg
KnZhbCk7CmludCBwY2liaW9zX3JlYWRfY29uZmlnX2R3b3JkX1IzOGFlNjY4OSAodW5zaWduZWQg
Y2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciB3aGVyZSwgdW5zaWduZWQgaW50ICp2YWwpOwppbnQgcGNpYmlv
c193cml0ZV9jb25maWdfYnl0ZV9SNzE5ODU2ZWUgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25l
ZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgd2hlcmUsIHVuc2lnbmVkIGNoYXIgdmFsKTsKaW50IHBjaWJpb3Nfd3JpdGVfY29uZmlnX3dv
cmRfUjRmMWMyZTMzICh1bnNpZ25lZCBjaGFyIGJ1cywgdW5zaWduZWQgY2hhciBkZXZfZm4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25l
ZCBzaG9ydCB2YWwpOwppbnQgcGNpYmlvc193cml0ZV9jb25maWdfZHdvcmRfUjgxYjRmNDY1ICh1
bnNpZ25lZCBjaGFyIGJ1cywgdW5zaWduZWQgY2hhciBkZXZfZm4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB3aGVyZSwgdW5zaWduZWQgaW50IHZhbCk7Cmlu
dCBwY2liaW9zX2ZpbmRfY2xhc3NfUmVmMzMzZjdiICh1bnNpZ25lZCBpbnQgY2xhc3NfY29kZSwg
dW5zaWduZWQgc2hvcnQgaW5kZXgsIHVuc2lnbmVkIGNoYXIgKmJ1cywgdW5zaWduZWQgY2hhciAq
ZGV2X2ZuKTsKaW50IHBjaWJpb3NfZmluZF9kZXZpY2VfUjk3ZDQ5YzRkICh1bnNpZ25lZCBzaG9y
dCB2ZW5kb3IsIHVuc2lnbmVkIHNob3J0IGRldl9pZCwKICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHNob3J0IGluZGV4LCB1bnNpZ25lZCBjaGFyICpidXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpkZXZfZm4pOwoKCgp2b2lkIHBjaV9pbml0KHZvaWQp
OwppbnQgcGNpX2J1c19leGlzdHMoY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgaW50IG5y
KTsKc3RydWN0IHBjaV9idXMgKnBjaV9zY2FuX2J1c19SYmQ0NTllMDkoaW50IGJ1cywgc3RydWN0
IHBjaV9vcHMgKm9wcywgdm9pZCAqc3lzZGF0YSk7CnN0cnVjdCBwY2lfYnVzICpwY2lfYWxsb2Nf
cHJpbWFyeV9idXMoaW50IGJ1cyk7CnN0cnVjdCBwY2lfZGV2ICpwY2lfc2Nhbl9zbG90X1I2ODZh
ZDk5YihzdHJ1Y3QgcGNpX2RldiAqdGVtcCk7CmludCBwY2lfcHJvY19hdHRhY2hfZGV2aWNlX1I5
NjZjNjg1OShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKaW50IHBjaV9wcm9jX2RldGFjaF9kZXZpY2Vf
UmI0YzUyNDdmKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX3Byb2NfYXR0YWNoX2J1c19S
NmEwMGNlMmUoc3RydWN0IHBjaV9idXMgKmJ1cyk7CmludCBwY2lfcHJvY19kZXRhY2hfYnVzX1I3
NjU3MGI3NChzdHJ1Y3QgcGNpX2J1cyAqYnVzKTsKdm9pZCBwY2lfbmFtZV9kZXZpY2Uoc3RydWN0
IHBjaV9kZXYgKmRldik7CmNoYXIgKnBjaV9jbGFzc19uYW1lKHUzMiBjbGFzcyk7CnZvaWQgcGNp
X3JlYWRfYnJpZGdlX2Jhc2VzX1I2ZDhhNWE3YihzdHJ1Y3QgcGNpX2J1cyAqY2hpbGQpOwpzdHJ1
Y3QgcmVzb3VyY2UgKnBjaV9maW5kX3BhcmVudF9yZXNvdXJjZV9SOGY5ZmU1NTkoY29uc3Qgc3Ry
dWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IHJlc291cmNlICpyZXMpOwppbnQgcGNpX3NldHVwX2Rl
dmljZV9SMTBjNTc2YjUoc3RydWN0IHBjaV9kZXYgKmRldik7CmludCBwY2lfZ2V0X2ludGVycnVw
dF9waW4oc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IHBjaV9kZXYgKipicmlkZ2UpOwoKCgpz
dHJ1Y3QgcGNpX2RldiAqcGNpX2ZpbmRfZGV2aWNlX1IyZWM5MDVkNyAodW5zaWduZWQgaW50IHZl
bmRvciwgdW5zaWduZWQgaW50IGRldmljZSwgY29uc3Qgc3RydWN0IHBjaV9kZXYgKmZyb20pOwpz
dHJ1Y3QgcGNpX2RldiAqcGNpX2ZpbmRfc3Vic3lzX1I3NzM4MWMyYyAodW5zaWduZWQgaW50IHZl
bmRvciwgdW5zaWduZWQgaW50IGRldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHNzX3ZlbmRvciwgdW5zaWduZWQgaW50IHNzX2RldmljZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXYgKmZyb20pOwpz
dHJ1Y3QgcGNpX2RldiAqcGNpX2ZpbmRfY2xhc3NfUmY2YmExNTU5ICh1bnNpZ25lZCBpbnQgY2xh
c3MsIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYgKnBjaV9maW5k
X3Nsb3RfUjFkZTg3NDdjICh1bnNpZ25lZCBpbnQgYnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4pOwpp
bnQgcGNpX2ZpbmRfY2FwYWJpbGl0eV9SZmQ2YTZjMzkgKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGlu
dCBjYXApOwoKaW50IHBjaV9yZWFkX2NvbmZpZ19ieXRlX1IwZTQyNWE5ZShzdHJ1Y3QgcGNpX2Rl
diAqZGV2LCBpbnQgd2hlcmUsIHU4ICp2YWwpOwppbnQgcGNpX3JlYWRfY29uZmlnX3dvcmRfUmQy
NWYzMjQwKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTE2ICp2YWwpOwppbnQgcGNp
X3JlYWRfY29uZmlnX2R3b3JkX1I0M2UzMThkZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgd2hl
cmUsIHUzMiAqdmFsKTsKaW50IHBjaV93cml0ZV9jb25maWdfYnl0ZV9SNjJjOTliYzMoc3RydWN0
IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1OCB2YWwpOwppbnQgcGNpX3dyaXRlX2NvbmZpZ193
b3JkX1I5N2QwNGUxMShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgd2hlcmUsIHUxNiB2YWwpOwpp
bnQgcGNpX3dyaXRlX2NvbmZpZ19kd29yZF9SN2ZiZjYxYmEoc3RydWN0IHBjaV9kZXYgKmRldiwg
aW50IHdoZXJlLCB1MzIgdmFsKTsKCmludCBwY2lfZW5hYmxlX2RldmljZV9SMzBhZjQxZTIoc3Ry
dWN0IHBjaV9kZXYgKmRldik7CmludCBwY2lfZW5hYmxlX2RldmljZV9iYXJzX1I5NzdhMzQxNShz
dHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgbWFzayk7CnZvaWQgcGNpX2Rpc2FibGVfZGV2aWNlX1Iz
ODZjYjY3MShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKdm9pZCBwY2lfc2V0X21hc3Rlcl9SYzRkOWNl
ZDUoc3RydWN0IHBjaV9kZXYgKmRldik7CgppbnQgcGNpX3NldF9td2lfUmNhYTFmYTg0KHN0cnVj
dCBwY2lfZGV2ICpkZXYpOwp2b2lkIHBjaV9jbGVhcl9td2lfUmMxMzU0MGU5KHN0cnVjdCBwY2lf
ZGV2ICpkZXYpOwppbnQgcGRldl9zZXRfbXdpX1I0ZDRjNWFkNihzdHJ1Y3QgcGNpX2RldiAqZGV2
KTsKaW50IHBjaV9zZXRfZG1hX21hc2tfUjk3NTUzMzg0KHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU2
NCBtYXNrKTsKaW50IHBjaV9kYWNfc2V0X2RtYV9tYXNrX1IwMDhkZDM4YShzdHJ1Y3QgcGNpX2Rl
diAqZGV2LCB1NjQgbWFzayk7CmludCBwY2lfYXNzaWduX3Jlc291cmNlX1IzNDA3Njk3NShzdHJ1
Y3QgcGNpX2RldiAqZGV2LCBpbnQgaSk7CgoKaW50IHBjaV9zYXZlX3N0YXRlX1IwZmZjZTM3Nyhz
dHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgKmJ1ZmZlcik7CmludCBwY2lfcmVzdG9yZV9zdGF0ZV9S
NWMzZDFiMGQoc3RydWN0IHBjaV9kZXYgKmRldiwgdTMyICpidWZmZXIpOwppbnQgcGNpX3NldF9w
b3dlcl9zdGF0ZV9SMjI0MjE1YTAoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHN0YXRlKTsKaW50
IHBjaV9lbmFibGVfd2FrZV9SZmU0YmIxY2Eoc3RydWN0IHBjaV9kZXYgKmRldiwgdTMyIHN0YXRl
LCBpbnQgZW5hYmxlKTsKaW50IHBjaV9nZW5lcmljX3N1c3BlbmRfc2F2ZV9SN2FjNGEwNzIoc3Ry
dWN0IHBjaV9kZXYgKnBkZXYsIHUzMiBzdGF0ZSk7CmludCBwY2lfZ2VuZXJpY19yZXN1bWVfcmVz
dG9yZV9SM2IwOTZlMWQoc3RydWN0IHBjaV9kZXYgKnBkZXYpOwoKCgppbnQgcGNpX2NsYWltX3Jl
c291cmNlKHN0cnVjdCBwY2lfZGV2ICosIGludCk7CnZvaWQgcGNpX2Fzc2lnbl91bmFzc2lnbmVk
X3Jlc291cmNlcyh2b2lkKTsKdm9pZCBwZGV2X2VuYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYg
Kik7CnZvaWQgcGRldl9zb3J0X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqLCBzdHJ1Y3QgcmVz
b3VyY2VfbGlzdCAqKTsKdW5zaWduZWQgbG9uZyBwY2lfYnJpZGdlX2NoZWNrX2lvKHN0cnVjdCBw
Y2lfZGV2ICopOwp2b2lkIHBjaV9maXh1cF9pcnFzKHU4ICgqKShzdHJ1Y3QgcGNpX2RldiAqLCB1
OCAqKSwKICAgICAgICAgICAgICAgICAgICBpbnQgKCopKHN0cnVjdCBwY2lfZGV2ICosIHU4LCB1
OCkpOwoKaW50IHBjaV9yZXF1ZXN0X3JlZ2lvbnNfUjlkMDFkNjA0KHN0cnVjdCBwY2lfZGV2ICos
IGNoYXIgKik7CnZvaWQgcGNpX3JlbGVhc2VfcmVnaW9uc19SMzRlZDUyNzgoc3RydWN0IHBjaV9k
ZXYgKik7CmludCBwY2lfcmVxdWVzdF9yZWdpb25fUjQ2YWQyM2ZjKHN0cnVjdCBwY2lfZGV2ICos
IGludCwgY2hhciAqKTsKdm9pZCBwY2lfcmVsZWFzZV9yZWdpb25fUjlkYjMxM2QyKHN0cnVjdCBw
Y2lfZGV2ICosIGludCk7CgoKaW50IHBjaV9yZWdpc3Rlcl9kcml2ZXJfUjE0Y2M5OTBhKHN0cnVj
dCBwY2lfZHJpdmVyICopOwp2b2lkIHBjaV91bnJlZ2lzdGVyX2RyaXZlcl9SZGE0MTMwMGUoc3Ry
dWN0IHBjaV9kcml2ZXIgKik7CnZvaWQgcGNpX2luc2VydF9kZXZpY2VfUmRjYWZkYjE3KHN0cnVj
dCBwY2lfZGV2ICosIHN0cnVjdCBwY2lfYnVzICopOwp2b2lkIHBjaV9yZW1vdmVfZGV2aWNlX1Jk
ZDJjNDU4YyhzdHJ1Y3QgcGNpX2RldiAqKTsKc3RydWN0IHBjaV9kcml2ZXIgKnBjaV9kZXZfZHJp
dmVyX1I1YmYzYzI3Nyhjb25zdCBzdHJ1Y3QgcGNpX2RldiAqKTsKY29uc3Qgc3RydWN0IHBjaV9k
ZXZpY2VfaWQgKnBjaV9tYXRjaF9kZXZpY2VfUjNjMDY0YmFhKGNvbnN0IHN0cnVjdCBwY2lfZGV2
aWNlX2lkICppZHMsIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYpOwp2b2lkIHBjaV9hbm5vdW5j
ZV9kZXZpY2VfdG9fZHJpdmVyc19SZDUyY2JlYjUoc3RydWN0IHBjaV9kZXYgKik7CnVuc2lnbmVk
IGludCBwY2lfZG9fc2Nhbl9idXNfUmQwOTFkMzAyKHN0cnVjdCBwY2lfYnVzICpidXMpOwpzdHJ1
Y3QgcGNpX2J1cyAqIHBjaV9hZGRfbmV3X2J1c19SZTYzOGViYTAoc3RydWN0IHBjaV9idXMgKnBh
cmVudCwgc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IGJ1c25yKTsKCgpzdHJ1Y3QgcGNpX3Bvb2wg
KnBjaV9wb29sX2NyZWF0ZV9SNTc0NzY2MmUgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBwY2lf
ZGV2ICpkZXYsCiAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWduLCBzaXpl
X3QgYWxsb2NhdGlvbiwgaW50IGZsYWdzKTsKdm9pZCBwY2lfcG9vbF9kZXN0cm95X1I2NGMwNGEw
ZCAoc3RydWN0IHBjaV9wb29sICpwb29sKTsKCnZvaWQgKnBjaV9wb29sX2FsbG9jX1JkOWNkNjEy
OSAoc3RydWN0IHBjaV9wb29sICpwb29sLCBpbnQgZmxhZ3MsIGRtYV9hZGRyX3QgKmhhbmRsZSk7
CnZvaWQgcGNpX3Bvb2xfZnJlZV9SMGM1YWIzNDEgKHN0cnVjdCBwY2lfcG9vbCAqcG9vbCwgdm9p
ZCAqdmFkZHIsIGRtYV9hZGRyX3QgYWRkcik7CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2FzbS9wY2kuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2FzbS9wY2kuaCIKZXh0ZXJuIHVuc2lnbmVkIGludCBwY2liaW9zX2Fzc2lnbl9hbGxf
YnVzc2VzKHZvaWQpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGNpX21lbV9zdGFydF9SM2Rh
MTcxZjk7CgoKCnZvaWQgcGNpYmlvc19zZXRfbWFzdGVyKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwp2
b2lkIHBjaWJpb3NfcGVuYWxpemVfaXNhX2lycV9SNTIxMWM4YmYoaW50IGlycSk7CnN0cnVjdCBp
cnFfcm91dGluZ190YWJsZSAqcGNpYmlvc19nZXRfaXJxX3JvdXRpbmdfdGFibGVfUjI5NGE3NmU1
KHZvaWQpOwppbnQgcGNpYmlvc19zZXRfaXJxX3JvdXRpbmdfUjFhZjUzOGEzKHN0cnVjdCBwY2lf
ZGV2ICpkZXYsIGludCBwaW4sIGludCBpcnEpOwoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2FzbS9zY2F0dGVybGlzdC5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvYXNtL3NjYXR0ZXJsaXN0LmgiCnN0cnVjdCBzY2F0dGVybGlzdCB7
CiAgICBjaGFyICogYWRkcmVzczsKCiAgICBzdHJ1Y3QgcGFnZSAqIHBhZ2U7CiAgICB1bnNpZ25l
ZCBpbnQgb2Zmc2V0OwoKICAgIGRtYV9hZGRyX3QgZG1hX2FkZHJlc3M7CiAgICB1bnNpZ25lZCBp
bnQgbGVuZ3RoOwp9OwojIDM0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9w
Y2kuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9pby5oIiAx
CiMgNDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2lvLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDEKCgoKCgoKCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9oaWdobWVtLmgiIDEKCgoK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcGdhbGxvYy5oIiAxCiMg
MTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIKc3RhdGlj
IGlubGluZSB2b2lkIHBtZF9wb3B1bGF0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcG1kX3QgKnBt
ZCwgc3RydWN0IHBhZ2UgKnB0ZSkKewogICAgICAgICgqKHBtZCkgPSAoKHBtZF90KSB7ICgoMHgw
MDEgfCAweDAwMiB8IDB4MDA0IHwgMHgwMjAgfCAweDA0MCkgKyAoKHVuc2lnbmVkIGxvbmcgbG9u
ZykoKHVuc2lnbmVkIGxvbmcpKChwdGUpIC0gbWVtX21hcF9SNDExZmUyZjApKSA8PCAodW5zaWdu
ZWQgbG9uZyBsb25nKSAxMikpIH0gKSk7CgoKfQoKCgoKZXh0ZXJuIHBnZF90ICpwZ2RfYWxsb2Mo
c3RydWN0IG1tX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgcGdkX2ZyZWUocGdkX3QgKnBnZCk7Cgpl
eHRlcm4gcHRlX3QgKnB0ZV9hbGxvY19vbmVfa2VybmVsKHN0cnVjdCBtbV9zdHJ1Y3QgKiwgdW5z
aWduZWQgbG9uZyk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqcHRlX2FsbG9jX29uZShzdHJ1Y3QgbW1f
c3RydWN0ICosIHVuc2lnbmVkIGxvbmcpOwoKCgoKc3RhdGljIGlubGluZSB2b2lkIHB0ZV9mcmVl
X2tlcm5lbChwdGVfdCAqcHRlKQp7CiAgICAgICAgZnJlZV9wYWdlc19SOTk0MWNjYjgoKCh1bnNp
Z25lZCBsb25nKXB0ZSksMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVfZnJlZShzdHJ1Y3Qg
cGFnZSAqcHRlKQp7CiAgICAgICAgX19mcmVlX3BhZ2VzX1I4YjViYWM4MygocHRlKSwgMCk7Cn0K
IyA2MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcGdhbGxvYy5oIgpleHRl
cm4gaW50IGRvX2NoZWNrX3BndF9jYWNoZShpbnQsIGludCk7CiMgODMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIKc3RhdGljIGlubGluZSB2b2lkIGZsdXNo
X3RsYl9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKewogICAgICAgIGlmIChtbSA9PSBnZXRfY3Vy
cmVudCgpLT5hY3RpdmVfbW0pCiAgICAgICAgICAgICAgICBkbyB7IHVuc2lnbmVkIGludCB0bXBy
ZWc7IF9fYXNtX18gX192b2xhdGlsZV9fKCAibW92bCAlJWNyMywgJTA7ICAjIGZsdXNoIFRMQiBc
biIgIm1vdmwgJTAsICUlY3IzOyAgICAgICAgICAgICAgXG4iIDogIj1yIiAodG1wcmVnKSA6OiAi
bWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiX3Bh
Z2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRy
KQp7CiAgICAgICAgaWYgKHZtYS0+dm1fbW0gPT0gZ2V0X2N1cnJlbnQoKS0+YWN0aXZlX21tKQog
ICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImludmxwZyAlMCI6IDoibSIgKCoo
Y2hhciAqKSBhZGRyKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfcmFuZ2Uoc3Ry
dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5z
aWduZWQgbG9uZyBlbmQpCnsKICAgICAgICBpZiAodm1hLT52bV9tbSA9PSBnZXRfY3VycmVudCgp
LT5hY3RpdmVfbW0pCiAgICAgICAgICAgICAgICBkbyB7IHVuc2lnbmVkIGludCB0bXByZWc7IF9f
YXNtX18gX192b2xhdGlsZV9fKCAibW92bCAlJWNyMywgJTA7ICAjIGZsdXNoIFRMQiBcbiIgIm1v
dmwgJTAsICUlY3IzOyAgICAgICAgICAgICAgXG4iIDogIj1yIiAodG1wcmVnKSA6OiAibWVtb3J5
Iik7IH0gd2hpbGUgKDApOwp9CiMgMTM0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2FzbS9wZ2FsbG9jLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfcGd0YWJsZXMoc3Ry
dWN0IG1tX3N0cnVjdCAqbW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCnsKICAgICAgICBmbHVzaF90
bGJfbW0obW0pOwp9CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9o
aWdobWVtLmgiIDIKIyA2NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9o
aWdobWVtLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG5yX2ZyZWVfaGlnaHBhZ2VzKHZv
aWQpIHsgcmV0dXJuIDA7IH0KCnN0YXRpYyBpbmxpbmUgdm9pZCAqa21hcChzdHJ1Y3QgcGFnZSAq
cGFnZSkgeyByZXR1cm4gKCh2b2lkICopKCh1bnNpZ25lZCBsb25nKSgoKChwYWdlKSAtIHBhZ2Vf
em9uZShwYWdlKS0+em9uZV9tZW1fbWFwKSA8PCAxMikgKyBwYWdlX3pvbmUocGFnZSktPnpvbmVf
c3RhcnRfcGFkZHIpKygodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKSk7IH0KIyA4NCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9oaWdobWVtLmgiCnN0YXRpYyBpbmxp
bmUgdm9pZCBjbGVhcl91c2VyX2hpZ2hwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBs
b25nIHZhZGRyKQp7CiAgICAgICAgdm9pZCAqYWRkciA9IGttYXAocGFnZSk7CiAgICAgICAgKF9f
YnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKCgoMVVMIDw8IDEy
KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCgodm9pZCAqKShhZGRyKSkpLCgo
MHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoKDFVTCA8PCAxMikpKSkgOiBfX2Nv
bnN0YW50X2NfbWVtc2V0KCgoKHZvaWQgKikoYWRkcikpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWdu
ZWQgY2hhcikoMCkpKSwoKCgxVUwgPDwgMTIpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
KDFVTCA8PCAxMikpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoKHZvaWQgKikoYWRkcikpKSksKCgo
MCkpKSwoKCgoMVVMIDw8IDEyKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoKHZvaWQgKikoYWRk
cikpKSwoKDApKSwoKCgxVUwgPDwgMTIpKSkpKSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsK
fQoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2hpZ2hwYWdlKHN0cnVjdCBwYWdlICpwYWdlKQp7
CiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
KCgoMVVMIDw8IDEyKSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCgodm9pZCAq
KShrbWFwKHBhZ2UpKSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoKDFV
TCA8PCAxMikpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoKHZvaWQgKikoa21hcChwYWdlKSkp
KSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKCgxVUwgPDwgMTIpKSkpKSA6
IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoKDFVTCA8PCAxMikpKSA/IF9fbWVtc2V0X2dlbmVyaWMo
KCgoKHZvaWQgKikoa21hcChwYWdlKSkpKSksKCgoMCkpKSwoKCgoMVVMIDw8IDEyKSkpKSkgOiBf
X21lbXNldF9nZW5lcmljKCgoKHZvaWQgKikoa21hcChwYWdlKSkpKSwoKDApKSwoKCgxVUwgPDwg
MTIpKSkpKSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoKCgoKc3RhdGljIGlubGluZSB2
b2lkIG1lbWNsZWFyX2hpZ2hwYWdlX2ZsdXNoKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBp
bnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgICAgIGNoYXIgKmthZGRyOwoKICAg
ICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+ICgxVUwgPDwgMTIpKQogICAgICAgICAgICAgICAgX19v
dXRfb2ZfbGluZV9idWdfUjhiMGZkM2M1KDEwNSk7CiAgICAgICAga2FkZHIgPSBrbWFwKHBhZ2Up
OwogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRf
cCgoc2l6ZSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChrYWRkciArIG9mZnNl
dCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZSkpKSA6IF9fY29u
c3RhbnRfY19tZW1zZXQoKChrYWRkciArIG9mZnNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25l
ZCBjaGFyKSgwKSkpLCgoc2l6ZSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemUpKSA/
IF9fbWVtc2V0X2dlbmVyaWMoKCgoa2FkZHIgKyBvZmZzZXQpKSksKCgoMCkpKSwoKChzaXplKSkp
KSA6IF9fbWVtc2V0X2dlbmVyaWMoKChrYWRkciArIG9mZnNldCkpLCgoMCkpLCgoc2l6ZSkpKSkp
OwogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAg
ICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY29weV91c2VyX2hp
Z2hwYWdlKHN0cnVjdCBwYWdlICp0bywgc3RydWN0IHBhZ2UgKmZyb20sIHVuc2lnbmVkIGxvbmcg
dmFkZHIpCnsKICAgICAgICBjaGFyICp2ZnJvbSwgKnZ0bzsKCiAgICAgICAgdmZyb20gPSBrbWFw
KGZyb20pOwogICAgICAgIHZ0byA9IGttYXAodG8pOwogICAgICAgIChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgoMVVMIDw8IDEyKSkgPyBfX2NvbnN0YW50X21lbWNweSgoKHZvaWQgKikodnRvKSksKCh2
b2lkICopKHZmcm9tKSksKCgxVUwgPDwgMTIpKSkgOiBfX21lbWNweSgoKHZvaWQgKikodnRvKSks
KCh2b2lkICopKHZmcm9tKSksKCgxVUwgPDwgMTIpKSkpOwogICAgICAgIGRvIHsgfSB3aGlsZSAo
MCk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvdm1hbGxvYy5oIiAyCgoKCgoKCnN0cnVjdCB2bV9zdHJ1Y3Qgewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdm9pZCAqIGFkZHI7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzaXplOwogICAgICAgIHN0cnVjdCB2bV9zdHJ1Y3QgKiBuZXh0Owp9OwoK
ZXh0ZXJuIHN0cnVjdCB2bV9zdHJ1Y3QgKiBnZXRfdm1fYXJlYSAodW5zaWduZWQgbG9uZyBzaXpl
LCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKZXh0ZXJuIHZvaWQgdmZyZWVfUjJmZDFkODFjKHZvaWQg
KiBhZGRyKTsKZXh0ZXJuIHZvaWQgKiBfX3ZtYWxsb2NfUjc5OTk1YzViICh1bnNpZ25lZCBsb25n
IHNpemUsIGludCBnZnBfbWFzaywgcGdwcm90X3QgcHJvdCk7CmV4dGVybiBsb25nIHZyZWFkKGNo
YXIgKmJ1ZiwgY2hhciAqYWRkciwgdW5zaWduZWQgbG9uZyBjb3VudCk7CmV4dGVybiB2b2lkIHZt
ZnJlZV9hcmVhX3BhZ2VzKHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXpl
KTsKZXh0ZXJuIGludCB2bWFsbG9jX2FyZWFfcGFnZXModW5zaWduZWQgbG9uZyBhZGRyZXNzLCB1
bnNpZ25lZCBsb25nIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBnZnBf
bWFzaywgcGdwcm90X3QgcHJvdCk7CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogdm1hbGxvYyAo
dW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgcmV0dXJuIF9fdm1hbGxvY19SNzk5OTVjNWIo
c2l6ZSwgKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4ODAgfCAweDEwMCkgfCAweDAyLCAoeyBwZ3By
b3RfdCBfX3JldDsgaWYgKCgoX19idWlsdGluX2NvbnN0YW50X3AoKDAqMzIrMTMpKSA/IGNvbnN0
YW50X3Rlc3RfYml0KCgoMCozMisxMykpLChib290X2NwdV9kYXRhX1IwNjU3ZDAzNy54ODZfY2Fw
YWJpbGl0eSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKCgwKjMyKzEzKSksKGJvb3RfY3B1X2RhdGFf
UjA2NTdkMDM3Lng4Nl9jYXBhYmlsaXR5KSkpKSkgX19yZXQgPSAoKHBncHJvdF90KSB7ICgoKDB4
MDAxIHwgMHgwMDIgfCAweDA0MCB8IDB4MDIwKSkgfCAweDEwMCkgfSApOyBlbHNlIF9fcmV0ID0g
KChwZ3Byb3RfdCkgeyAoKDB4MDAxIHwgMHgwMDIgfCAweDA0MCB8IDB4MDIwKSkgfSApOyBfX3Jl
dDsgfSkpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogdm1hbGxvY19kbWEgKHVuc2lnbmVk
IGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiBfX3ZtYWxsb2NfUjc5OTk1YzViKHNpemUsICgw
eDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwIHwgMHgxMDApfDB4MDEsICh7IHBncHJvdF90IF9fcmV0
OyBpZiAoKChfX2J1aWx0aW5fY29uc3RhbnRfcCgoMCozMisxMykpID8gY29uc3RhbnRfdGVzdF9i
aXQoKCgwKjMyKzEzKSksKGJvb3RfY3B1X2RhdGFfUjA2NTdkMDM3Lng4Nl9jYXBhYmlsaXR5KSkg
OiB2YXJpYWJsZV90ZXN0X2JpdCgoKDAqMzIrMTMpKSwoYm9vdF9jcHVfZGF0YV9SMDY1N2QwMzcu
eDg2X2NhcGFiaWxpdHkpKSkpKSBfX3JldCA9ICgocGdwcm90X3QpIHsgKCgoMHgwMDEgfCAweDAw
MiB8IDB4MDQwIHwgMHgwMjApKSB8IDB4MTAwKSB9ICk7IGVsc2UgX19yZXQgPSAoKHBncHJvdF90
KSB7ICgoMHgwMDEgfCAweDAwMiB8IDB4MDQwIHwgMHgwMjApKSB9ICk7IF9fcmV0OyB9KSk7Cn0K
CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiB2bWFsbG9jXzMyKHVuc2lnbmVkIGxvbmcgc2l6ZSkK
ewogICAgICAgIHJldHVybiBfX3ZtYWxsb2NfUjc5OTk1YzViKHNpemUsICgweDIwIHwgMHgxMCB8
IDB4NDAgfCAweDgwIHwgMHgxMDApLCAoeyBwZ3Byb3RfdCBfX3JldDsgaWYgKCgoX19idWlsdGlu
X2NvbnN0YW50X3AoKDAqMzIrMTMpKSA/IGNvbnN0YW50X3Rlc3RfYml0KCgoMCozMisxMykpLChi
b290X2NwdV9kYXRhX1IwNjU3ZDAzNy54ODZfY2FwYWJpbGl0eSkpIDogdmFyaWFibGVfdGVzdF9i
aXQoKCgwKjMyKzEzKSksKGJvb3RfY3B1X2RhdGFfUjA2NTdkMDM3Lng4Nl9jYXBhYmlsaXR5KSkp
KSkgX19yZXQgPSAoKHBncHJvdF90KSB7ICgoKDB4MDAxIHwgMHgwMDIgfCAweDA0MCB8IDB4MDIw
KSkgfCAweDEwMCkgfSApOyBlbHNlIF9fcmV0ID0gKChwZ3Byb3RfdCkgeyAoKDB4MDAxIHwgMHgw
MDIgfCAweDA0MCB8IDB4MDIwKSkgfSApOyBfX3JldDsgfSkpOwp9CgoKCgoKZXh0ZXJuIHJ3bG9j
a190IHZtbGlzdF9sb2NrOwoKZXh0ZXJuIHN0cnVjdCB2bV9zdHJ1Y3QgKiB2bWxpc3Q7CiMgNDgg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2lvLmgiIDIKIyA3NiAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vaW8uaCIKc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBsb25nIHZpcnRfdG9fcGh5cyh2b2xhdGlsZSB2b2lkICogYWRkcmVzcykKewogICAgICAgIHJl
dHVybiAoKHVuc2lnbmVkIGxvbmcpKGFkZHJlc3MpLSgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAw
MCkpKTsKfQojIDk0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS9pby5oIgpz
dGF0aWMgaW5saW5lIHZvaWQgKiBwaHlzX3RvX3ZpcnQodW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7
CiAgICAgICAgcmV0dXJuICgodm9pZCAqKSgodW5zaWduZWQgbG9uZykoYWRkcmVzcykrKCh1bnNp
Z25lZCBsb25nKSgweEMwMDAwMDAwKSkpKTsKfQojIDEwOCAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9hc20vaW8uaCIKZXh0ZXJuIHZvaWQgKiBfX2lvcmVtYXBfUjllYWMwNDJhKHVu
c2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgZmxh
Z3MpOwojIDEyMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vaW8uaCIKc3Rh
dGljIGlubGluZSB2b2lkICogaW9yZW1hcCAodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVk
IGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiBfX2lvcmVtYXBfUjllYWMwNDJhKG9mZnNldCwg
c2l6ZSwgMCk7Cn0KIyAxNDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2lv
LmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIGlvcmVtYXBfbm9jYWNoZSAodW5zaWduZWQgbG9uZyBv
ZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiBfX2lvcmVtYXBfUjll
YWMwNDJhKG9mZnNldCwgc2l6ZSwgMHgwMTApOwp9CgpleHRlcm4gdm9pZCBpb3VubWFwX1I1ZmIx
OTZkNCh2b2lkICphZGRyKTsKCgoKCgoKZXh0ZXJuIHZvaWQgKmJ0X2lvcmVtYXAodW5zaWduZWQg
bG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiB2b2lkIGJ0X2lvdW5tYXAo
dm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKTsKIyAyMzMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvYXNtL2lvLmgiCnN0YXRpYyBpbmxpbmUgaW50IGNoZWNrX3NpZ25hdHVy
ZSh1bnNpZ25lZCBsb25nIGlvX2FkZHIsCiAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2ln
bmF0dXJlLCBpbnQgbGVuZ3RoKQp7CiAgICAgICAgaW50IHJldHZhbCA9IDA7CiAgICAgICAgZG8g
ewogICAgICAgICAgICAgICAgaWYgKCgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lk
ICopKGlvX2FkZHIpKSkgIT0gKnNpZ25hdHVyZSkKICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBvdXQ7CiAgICAgICAgICAgICAgICBpb19hZGRyKys7CiAgICAgICAgICAgICAgICBzaWduYXR1
cmUrKzsKICAgICAgICAgICAgICAgIGxlbmd0aC0tOwogICAgICAgIH0gd2hpbGUgKGxlbmd0aCk7
CiAgICAgICAgcmV0dmFsID0gMTsKb3V0OgogICAgICAgIHJldHVybiByZXR2YWw7Cn0KIyAyNjMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2lvLmgiCnN0YXRpYyBpbmxpbmUg
aW50IGlzYV9jaGVja19zaWduYXR1cmUodW5zaWduZWQgbG9uZyBpb19hZGRyLAogICAgICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIgKnNpZ25hdHVyZSwgaW50IGxlbmd0aCkKewogICAgICAgIGludCBy
ZXR2YWwgPSAwOwogICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIGlmICgoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKSgoKGNoYXIgKikoKCh1bnNpZ25lZCBsb25nKSgweEMw
MDAwMDAwKSkpKSArIChpb19hZGRyKSkpKSAhPSAqc2lnbmF0dXJlKQogICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgIGlvX2FkZHIrKzsKICAgICAgICAgICAg
ICAgIHNpZ25hdHVyZSsrOwogICAgICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAgICAgfSB3aGls
ZSAobGVuZ3RoKTsKICAgICAgICByZXR2YWwgPSAxOwpvdXQ6CiAgICAgICAgcmV0dXJuIHJldHZh
bDsKfQojIDQwOSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vaW8uaCIKc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBjaGFyIGluYih1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2ln
bmVkIGNoYXIgX3Y7IF9fYXNtX18gX192b2xhdGlsZV9fICgiaW4iICJiIiAiICUiICJ3IiAiMSwl
IiAiIiAiMCIgOiAiPWEiIChfdikgOiAiTmQiIChwb3J0KSApOyByZXR1cm4gX3Y7IH0gc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBjaGFyIGluYl9wKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWdu
ZWQgY2hhciBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgImIiICIgJSIgInciICIxLCUi
ICIiICIwIiAiXG5vdXRiICUlYWwsJDB4ODAiIDogIj1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsg
cmV0dXJuIF92OyB9CgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydCBpbncodW5zaWduZWQg
c2hvcnQgcG9ydCkgeyB1bnNpZ25lZCBzaG9ydCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJp
biIgInciICIgJSIgInciICIxLCUiICIiICIwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7
IHJldHVybiBfdjsgfSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHNob3J0IGlud19wKHVuc2lnbmVk
IHNob3J0IHBvcnQpIHsgdW5zaWduZWQgc2hvcnQgX3Y7IF9fYXNtX18gX192b2xhdGlsZV9fICgi
aW4iICJ3IiAiICUiICJ3IiAiMSwlIiAiIiAiMCIgIlxub3V0YiAlJWFsLCQweDgwIiA6ICI9YSIg
KF92KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBfdjsgfQoKCnN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgaW50IGlubCh1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGludCBfdjsgX19hc21f
XyBfX3ZvbGF0aWxlX18gKCJpbiIgImwiICIgJSIgInciICIxLCUiICIiICIwIiA6ICI9YSIgKF92
KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBfdjsgfSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGlu
dCBpbmxfcCh1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGludCBfdjsgX19hc21fXyBf
X3ZvbGF0aWxlX18gKCJpbiIgImwiICIgJSIgInciICIxLCUiICIiICIwIiAiXG5vdXRiICUlYWws
JDB4ODAiIDogIj1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9CgoKc3RhdGlj
IGlubGluZSB2b2lkIG91dGIodW5zaWduZWQgY2hhciB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9y
dCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm91dCIgImIiICIgJSIgImIiICIwLCUiICJ3IiAi
MSIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7IH0gc3RhdGljIGlubGluZSB2b2lkIG91
dGJfcCh1bnNpZ25lZCBjaGFyIHZhbHVlLCB1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IF9fYXNtX18g
X192b2xhdGlsZV9fICgib3V0IiAiYiIgIiAlIiAiYiIgIjAsJSIgInciICIxIiAiXG5vdXRiICUl
YWwsJDB4ODAiIDogOiAiYSIgKHZhbHVlKSwgIk5kIiAocG9ydCkpO30Kc3RhdGljIGlubGluZSB2
b2lkIG91dHcodW5zaWduZWQgc2hvcnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19h
c21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJ3IiAiICUiICJ3IiAiMCwlIiAidyIgIjEiIDogOiAi
YSIgKHZhbHVlKSwgIk5kIiAocG9ydCkpOyB9IHN0YXRpYyBpbmxpbmUgdm9pZCBvdXR3X3AodW5z
aWduZWQgc2hvcnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0
aWxlX18gKCJvdXQiICJ3IiAiICUiICJ3IiAiMCwlIiAidyIgIjEiICJcbm91dGIgJSVhbCwkMHg4
MCIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7fQpzdGF0aWMgaW5saW5lIHZvaWQgb3V0
bCh1bnNpZ25lZCBpbnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3Zv
bGF0aWxlX18gKCJvdXQiICJsIiAiICUiICIwLCUiICJ3IiAiMSIgOiA6ICJhIiAodmFsdWUpLCAi
TmQiIChwb3J0KSk7IH0gc3RhdGljIGlubGluZSB2b2lkIG91dGxfcCh1bnNpZ25lZCBpbnQgdmFs
dWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJs
IiAiICUiICIwLCUiICJ3IiAiMSIgIlxub3V0YiAlJWFsLCQweDgwIiA6IDogImEiICh2YWx1ZSks
ICJOZCIgKHBvcnQpKTt9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5zYih1bnNpZ25lZCBzaG9ydCBw
b3J0LCB2b2lkICogYWRkciwgdW5zaWduZWQgbG9uZyBjb3VudCkgeyBfX2FzbV9fIF9fdm9sYXRp
bGVfXyAoInJlcCA7IGlucyIgImIiIDogIj1EIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAo
cG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIGluc3co
dW5zaWduZWQgc2hvcnQgcG9ydCwgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsg
X19hc21fXyBfX3ZvbGF0aWxlX18gKCJyZXAgOyBpbnMiICJ3IiA6ICI9RCIgKGFkZHIpLCAiPWMi
IChjb3VudCkgOiAiZCIgKHBvcnQpLCIwIiAoYWRkciksIjEiIChjb3VudCkpOyB9CnN0YXRpYyBp
bmxpbmUgdm9pZCBpbnNsKHVuc2lnbmVkIHNob3J0IHBvcnQsIHZvaWQgKiBhZGRyLCB1bnNpZ25l
ZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgaW5zIiAibCIgOiAi
PUQiIChhZGRyKSwgIj1jIiAoY291bnQpIDogImQiIChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291
bnQpKTsgfQoKc3RhdGljIGlubGluZSB2b2lkIG91dHNiKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNv
bnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGls
ZV9fICgicmVwIDsgb3V0cyIgImIiIDogIj1TIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAo
cG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIG91dHN3
KHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNv
dW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgb3V0cyIgInciIDogIj1TIiAoYWRk
ciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7IH0K
c3RhdGljIGlubGluZSB2b2lkIG91dHNsKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQg
KiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVw
IDsgb3V0cyIgImwiIDogIj1TIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAi
IChhZGRyKSwiMSIgKGNvdW50KSk7IH0KIyAzNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9hc20vcGNpLmgiIDIKCnN0cnVjdCBwY2lfZGV2OwojIDUyICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2FzbS9wY2kuaCIKZXh0ZXJuIHZvaWQgKnBjaV9hbGxvY19jb25zaXN0
ZW50X1I3YzEyNTZiYyhzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHNpemVfdCBzaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSk7CiMgNjMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3BjaS5oIgpleHRlcm4gdm9pZCBw
Y2lfZnJlZV9jb25zaXN0ZW50X1I2MzM1NmZhMChzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHNpemVf
dCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZhZGRyLCBkbWFf
YWRkcl90IGRtYV9oYW5kbGUpOwoKCgoKCgoKc3RhdGljIGlubGluZSBkbWFfYWRkcl90IHBjaV9t
YXBfc2luZ2xlKHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgdm9pZCAqcHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsIGludCBkaXJlY3Rpb24pCnsK
ICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMpCiAgICAgICAgICAgICAgICBfX291dF9vZl9saW5l
X2J1Z19SOGIwZmQzYzUoNzYpOwogICAgICAgIDsKICAgICAgICByZXR1cm4gdmlydF90b19waHlz
KHB0cik7Cn0KIyA4OCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcGNpLmgi
CnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfdW5tYXBfc2luZ2xlKHN0cnVjdCBwY2lfZGV2ICpod2Rl
diwgZG1hX2FkZHJfdCBkbWFfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHNpemUsIGludCBkaXJlY3Rpb24pCnsKICAgICAgICBpZiAoZGlyZWN0aW9uID09
IDMpCiAgICAgICAgICAgICAgICBfX291dF9vZl9saW5lX2J1Z19SOGIwZmQzYzUoOTIpOwoKfQoK
CgoKCnN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBwY2lfbWFwX3BhZ2Uoc3RydWN0IHBjaV9kZXYg
Kmh3ZGV2LCBzdHJ1Y3QgcGFnZSAqcGFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNldCwgc2l6ZV90IHNpemUsIGludCBkaXJlY3Rpb24p
CnsKICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMpCiAgICAgICAgICAgICAgICBfX291dF9vZl9s
aW5lX2J1Z19SOGIwZmQzYzUoMTA0KTsKCiAgICAgICAgcmV0dXJuICgoZG1hX2FkZHJfdCkocGFn
ZSAtIG1lbV9tYXBfUjQxMWZlMmYwKSAqCiAgICAgICAgICAgICAgICAoZG1hX2FkZHJfdCkgKDFV
TCA8PCAxMikgKwogICAgICAgICAgICAgICAgKGRtYV9hZGRyX3QpIG9mZnNldCk7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCBwY2lfdW5tYXBfcGFnZShzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIGRtYV9h
ZGRyX3QgZG1hX2FkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSwgaW50IGRpcmVjdGlvbikKewogICAgICAgIGlmIChkaXJlY3Rpb24gPT0gMykKICAg
ICAgICAgICAgICAgIF9fb3V0X29mX2xpbmVfYnVnX1I4YjBmZDNjNSgxMTUpOwoKfQojIDE0MiAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vcGNpLmgiCnN0YXRpYyBpbmxpbmUg
aW50IHBjaV9tYXBfc2coc3RydWN0IHBjaV9kZXYgKmh3ZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3Qg
KnNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuZW50cywgaW50IGRpcmVjdGlv
bikKewogICAgICAgIGludCBpOwoKICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMpCiAgICAgICAg
ICAgICAgICBfX291dF9vZl9saW5lX2J1Z19SOGIwZmQzYzUoMTQ4KTsKCgoKCiAgICAgICAgZm9y
IChpID0gMDsgaSA8IG5lbnRzOyBpKysgKSB7CiAgICAgICAgICAgICAgICBpZiAoc2dbaV0uYWRk
cmVzcyAmJiBzZ1tpXS5wYWdlKQogICAgICAgICAgICAgICAgICAgICAgICBfX291dF9vZl9saW5l
X2J1Z19SOGIwZmQzYzUoMTU1KTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzZ1tpXS5hZGRy
ZXNzICYmICFzZ1tpXS5wYWdlKQogICAgICAgICAgICAgICAgICAgICAgICBfX291dF9vZl9saW5l
X2J1Z19SOGIwZmQzYzUoMTU3KTsKCiAgICAgICAgICAgICAgICBpZiAoc2dbaV0uYWRkcmVzcykK
ICAgICAgICAgICAgICAgICAgICAgICAgc2dbaV0uZG1hX2FkZHJlc3MgPSB2aXJ0X3RvX3BoeXMo
c2dbaV0uYWRkcmVzcyk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
ICAgIHNnW2ldLmRtYV9hZGRyZXNzID0gKChzZ1tpXS5wYWdlIC0gbWVtX21hcF9SNDExZmUyZjAp
IDw8IDEyKSArIHNnW2ldLm9mZnNldDsKICAgICAgICB9CgogICAgICAgIDsKICAgICAgICByZXR1
cm4gbmVudHM7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcGNpX3VubWFwX3NnKHN0cnVjdCBw
Y2lfZGV2ICpod2Rldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbmVudHMsIGludCBkaXJlY3Rpb24pCnsKICAgICAgICBpZiAoZGly
ZWN0aW9uID09IDMpCiAgICAgICAgICAgICAgICBfX291dF9vZl9saW5lX2J1Z19SOGIwZmQzYzUo
MTc3KTsKCn0KIyAxOTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3BjaS5o
IgpzdGF0aWMgaW5saW5lIHZvaWQgcGNpX2RtYV9zeW5jX3NpbmdsZShzdHJ1Y3QgcGNpX2RldiAq
aHdkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9hZGRyX3Qg
ZG1hX2hhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNpemUsIGludCBkaXJlY3Rpb24pCnsKICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMpCiAgICAg
ICAgICAgICAgICBfX291dF9vZl9saW5lX2J1Z19SOGIwZmQzYzUoMTk1KTsKICAgICAgICA7Cn0K
CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfZG1hX3N5bmNfc2coc3RydWN0IHBjaV9kZXYg
Kmh3ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2F0dGVy
bGlzdCAqc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5lbGVtcywg
aW50IGRpcmVjdGlvbikKewogICAgICAgIGlmIChkaXJlY3Rpb24gPT0gMykKICAgICAgICAgICAg
ICAgIF9fb3V0X29mX2xpbmVfYnVnX1I4YjBmZDNjNSgyMTApOwogICAgICAgIDsKfQoKCgoKCgpz
dGF0aWMgaW5saW5lIGludCBwY2lfZG1hX3N1cHBvcnRlZChzdHJ1Y3QgcGNpX2RldiAqaHdkZXYs
IHU2NCBtYXNrKQp7CgoKCgoKICAgICAgICBpZihtYXNrIDwgMHgwMGZmZmZmZikKICAgICAgICAg
ICAgICAgIHJldHVybiAwOwoKICAgICAgICByZXR1cm4gMTsKfQoKCgoKc3RhdGljIF9faW5saW5l
X18gZG1hNjRfYWRkcl90CnBjaV9kYWNfcGFnZV90b19kbWEoc3RydWN0IHBjaV9kZXYgKnBkZXYs
IHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgaW50IGRpcmVjdGlvbikK
ewogICAgICAgIHJldHVybiAoKGRtYTY0X2FkZHJfdCkgKChwYWdlIC0gbWVtX21hcF9SNDExZmUy
ZjApIDw8IDEyKSArCiAgICAgICAgICAgICAgICAoZG1hNjRfYWRkcl90KSBvZmZzZXQpOwp9Cgpz
dGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3QgcGFnZSAqCnBjaV9kYWNfZG1hX3RvX3BhZ2Uoc3RydWN0
IHBjaV9kZXYgKnBkZXYsIGRtYTY0X2FkZHJfdCBkbWFfYWRkcikKewogICAgICAgIHVuc2lnbmVk
IGxvbmcgcG9mZiA9IChkbWFfYWRkciA+PiAxMik7CgogICAgICAgIHJldHVybiBtZW1fbWFwX1I0
MTFmZTJmMCArIHBvZmY7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcKcGNpX2Rh
Y19kbWFfdG9fb2Zmc2V0KHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBkbWE2NF9hZGRyX3QgZG1hX2Fk
ZHIpCnsKICAgICAgICByZXR1cm4gKGRtYV9hZGRyICYgfih+KCgxVUwgPDwgMTIpLTEpKSk7Cn0K
CnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcGNpX2RhY19kbWFfc3luY19zaW5nbGUoc3RydWN0IHBj
aV9kZXYgKnBkZXYsIGRtYTY0X2FkZHJfdCBkbWFfYWRkciwgc2l6ZV90IGxlbiwgaW50IGRpcmVj
dGlvbikKewogICAgICAgIDsKfQojIDI3MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9hc20vcGNpLmgiCnN0YXRpYyBpbmxpbmUgaW50IHBjaV9jb250cm9sbGVyX251bShzdHJ1Y3Qg
cGNpX2RldiAqZGV2KQp7CiAgICAgICAgcmV0dXJuIDA7Cn0KCgpleHRlcm4gaW50IHBjaV9tbWFw
X3BhZ2VfcmFuZ2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2
bWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBjaV9tbWFwX3N0YXRlIG1t
YXBfc3RhdGUsIGludCB3cml0ZV9jb21iaW5lKTsKIyA2NTggIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvcGNpLmgiIDIKIyA3MjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvcGNpLmgiCnN0YXRpYyBpbmxpbmUgaW50IHBjaV9tb2R1bGVfaW5pdChz
dHJ1Y3QgcGNpX2RyaXZlciAqZHJ2KQp7CiAgICAgICAgaW50IHJjID0gcGNpX3JlZ2lzdGVyX2Ry
aXZlcl9SMTRjYzk5MGEgKGRydik7CgogICAgICAgIGlmIChyYyA+IDApCiAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKIyA3NDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
cGNpLmgiCiAgICAgICAgaWYgKHJjID09IDApCiAgICAgICAgICAgICAgICByYyA9IC0xOTsKCgoK
CiAgICAgICAgcGNpX3VucmVnaXN0ZXJfZHJpdmVyX1JkYTQxMzAwZSAoZHJ2KTsKCiAgICAgICAg
cmV0dXJuIHJjOwp9CiMgNzcwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L3BjaS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKnBjaV9nZXRfZHJ2ZGF0YSAoc3RydWN0IHBjaV9k
ZXYgKnBkZXYpCnsKICAgICAgICByZXR1cm4gcGRldi0+ZHJpdmVyX2RhdGE7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCBwY2lfc2V0X2RydmRhdGEgKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB2b2lkICpk
YXRhKQp7CiAgICAgICAgcGRldi0+ZHJpdmVyX2RhdGEgPSBkYXRhOwp9CiMgNzg3ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3BjaS5oIgpzdHJ1Y3QgcGNpX2ZpeHVwIHsK
ICAgICAgICBpbnQgcGFzczsKICAgICAgICB1MTYgdmVuZG9yLCBkZXZpY2U7CiAgICAgICAgdm9p
ZCAoKmhvb2spKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwp9OwoKZXh0ZXJuIHN0cnVjdCBwY2lfZml4
dXAgcGNpYmlvc19maXh1cHNbXTsKCgoKCnZvaWQgcGNpX2ZpeHVwX2RldmljZShpbnQgcGFzcywg
c3RydWN0IHBjaV9kZXYgKmRldik7CgpleHRlcm4gaW50IHBjaV9wY2lfcHJvYmxlbXNfUmRjMTRl
ZGE3OwojIDEyNiAiaC9za2RydjFzdC5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIgMQojIDI4ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvaWYuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L2lmLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9s
aW51eC9oZGxjL2lvY3RsLmgiIDEKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVk
IGludCBjbG9ja19yYXRlOwogICAgICAgIHVuc2lnbmVkIGludCBjbG9ja190eXBlOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IGxvb3BiYWNrOwp9IHN5bmNfc2VyaWFsX3NldHRpbmdzOwoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCBjbG9ja19yYXRlOwogICAgICAgIHVuc2ln
bmVkIGludCBjbG9ja190eXBlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGxvb3BiYWNrOwogICAg
ICAgIHVuc2lnbmVkIGludCBzbG90X21hcDsKfSB0ZTFfc2V0dGluZ3M7Cgp0eXBlZGVmIHN0cnVj
dCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZW5jb2Rpbmc7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgcGFyaXR5Owp9IHJhd19oZGxjX3Byb3RvOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVu
c2lnbmVkIGludCB0MzkxOwogICAgICAgIHVuc2lnbmVkIGludCB0MzkyOwogICAgICAgIHVuc2ln
bmVkIGludCBuMzkxOwogICAgICAgIHVuc2lnbmVkIGludCBuMzkyOwogICAgICAgIHVuc2lnbmVk
IGludCBuMzkzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGxtaTsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBkY2U7Cn0gZnJfcHJvdG87Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQg
aW50IGRsY2k7Cn0gZnJfcHJvdG9fcHZjOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgdW5zaWduZWQg
aW50IGludGVydmFsOwogICAgdW5zaWduZWQgaW50IHRpbWVvdXQ7Cn0gY2lzY29fcHJvdG87CgoK
CnVuaW9uIGhkbGNfc2V0dGluZ3MgewogICAgICAgIHJhd19oZGxjX3Byb3RvIHJhd19oZGxjOwog
ICAgICAgIGNpc2NvX3Byb3RvIGNpc2NvOwogICAgICAgIGZyX3Byb3RvIGZyOwogICAgICAgIGZy
X3Byb3RvX3B2YyBmcl9wdmM7Cn07Cgp1bmlvbiBsaW5lX3NldHRpbmdzIHsKICAgICAgICBzeW5j
X3NlcmlhbF9zZXR0aW5ncyBzeW5jOwogICAgICAgIHRlMV9zZXR0aW5ncyB0ZTE7Cn07CiMgMjUg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaWYuaCIgMgojIDg1ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2lmLmgiCnN0cnVjdCBpZm1hcAp7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBtZW1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1f
ZW5kOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJhc2VfYWRkcjsKICAgICAgICB1bnNpZ25lZCBj
aGFyIGlycTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRtYTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IHBvcnQ7Cgp9OwoKc3RydWN0IGlmX3NldHRpbmdzCnsKICAgICAgICB1bnNpZ25lZCBpbnQgdHlw
ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKICAgICAgICB1bmlvbiB7CgogICAgICAgICAg
ICAgICAgcmF3X2hkbGNfcHJvdG8gKnJhd19oZGxjOwogICAgICAgICAgICAgICAgY2lzY29fcHJv
dG8gKmNpc2NvOwogICAgICAgICAgICAgICAgZnJfcHJvdG8gKmZyOwogICAgICAgICAgICAgICAg
ZnJfcHJvdG9fcHZjICpmcl9wdmM7CgoKICAgICAgICAgICAgICAgIHN5bmNfc2VyaWFsX3NldHRp
bmdzICpzeW5jOwogICAgICAgICAgICAgICAgdGUxX3NldHRpbmdzICp0ZTE7CiAgICAgICAgfSBp
ZnNfaWZzdTsKfTsKIyAxMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
aWYuaCIKc3RydWN0IGlmcmVxCnsKCgogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAg
ICAgICAgY2hhciBpZnJuX25hbWVbMTZdOwogICAgICAgIH0gaWZyX2lmcm47CgogICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciBpZnJ1X2FkZHI7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgaWZydV9kc3RhZGRyOwogICAgICAgICAgICAgICAgc3Ry
dWN0IHNvY2thZGRyIGlmcnVfYnJvYWRhZGRyOwogICAgICAgICAgICAgICAgc3RydWN0IHNvY2th
ZGRyIGlmcnVfbmV0bWFzazsKICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciBpZnJ1X2h3
YWRkcjsKICAgICAgICAgICAgICAgIHNob3J0IGlmcnVfZmxhZ3M7CiAgICAgICAgICAgICAgICBp
bnQgaWZydV9pdmFsdWU7CiAgICAgICAgICAgICAgICBpbnQgaWZydV9tdHU7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgaWZtYXAgaWZydV9tYXA7CiAgICAgICAgICAgICAgICBjaGFyIGlmcnVfc2xh
dmVbMTZdOwogICAgICAgICAgICAgICAgY2hhciBpZnJ1X25ld25hbWVbMTZdOwogICAgICAgICAg
ICAgICAgY2hhciAqIGlmcnVfZGF0YTsKICAgICAgICAgICAgICAgIHN0cnVjdCBpZl9zZXR0aW5n
cyBpZnJ1X3NldHRpbmdzOwogICAgICAgIH0gaWZyX2lmcnU7Cn07CiMgMTcxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2lmLmgiCnN0cnVjdCBpZmNvbmYKewogICAgICAg
IGludCBpZmNfbGVuOwogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgY2hh
ciAqIGlmY3VfYnVmOwogICAgICAgICAgICAgICAgc3RydWN0IGlmcmVxICppZmN1X3JlcTsKICAg
ICAgICB9IGlmY19pZmN1Owp9OwojIDI5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L2xpbnV4L25ldGRldmljZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9pZl9ldGhlci5oIiAxCiMgOTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvaWZfZXRoZXIuaCIKc3RydWN0IGV0aGhkcgp7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBoX2Rlc3RbNl07CiAgICAgICAgdW5zaWduZWQgY2hhciBoX3NvdXJjZVs2XTsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBoX3Byb3RvOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwojIDMwICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pZl9wYWNrZXQuaCIgMQoKCgpz
dHJ1Y3Qgc29ja2FkZHJfcGt0CnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcGt0X2ZhbWlseTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIHNwa3RfZGV2aWNlWzE0XTsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBzcGt0X3Byb3RvY29sOwp9OwoKc3RydWN0IHNvY2thZGRyX2xsCnsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBzbGxfZmFtaWx5OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNsbF9wcm90b2Nv
bDsKICAgICAgICBpbnQgc2xsX2lmaW5kZXg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2xsX2hh
dHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNsbF9wa3R0eXBlOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgc2xsX2hhbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xsX2FkZHJbOF07Cn07CiMg
NDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaWZfcGFja2V0LmgiCnN0
cnVjdCB0cGFja2V0X3N0YXRzCnsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfcGFja2V0czsKICAg
ICAgICB1bnNpZ25lZCBpbnQgdHBfZHJvcHM7Cn07CgpzdHJ1Y3QgdHBhY2tldF9oZHIKewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgdHBfc3RhdHVzOwoKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IHRw
X2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfc25hcGxlbjsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCB0cF9tYWM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHBfbmV0OwogICAgICAgIHVuc2ln
bmVkIGludCB0cF9zZWM7CiAgICAgICAgdW5zaWduZWQgaW50IHRwX3VzZWM7Cn07CiMgODIgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaWZfcGFja2V0LmgiCnN0cnVjdCB0
cGFja2V0X3JlcQp7CiAgICAgICAgdW5zaWduZWQgaW50IHRwX2Jsb2NrX3NpemU7CiAgICAgICAg
dW5zaWduZWQgaW50IHRwX2Jsb2NrX25yOwogICAgICAgIHVuc2lnbmVkIGludCB0cF9mcmFtZV9z
aXplOwogICAgICAgIHVuc2lnbmVkIGludCB0cF9mcmFtZV9ucjsKfTsKCnN0cnVjdCBwYWNrZXRf
bXJlcQp7CiAgICAgICAgaW50IG1yX2lmaW5kZXg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbXJf
dHlwZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtcl9hbGVuOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgbXJfYWRkcmVzc1s4XTsKfTsKIyAzMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9uZXRkZXZpY2UuaCIgMgojIDQyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L25ldGRldmljZS5oIgpzdHJ1Y3QgZGl2ZXJ0X2JsazsKc3RydWN0IHZsYW5fZ3Jv
dXA7CiMgOTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbmV0ZGV2aWNl
LmgiCnN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X3Bh
Y2tldHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9wYWNrZXRzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgcnhfYnl0ZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9ieXRlczsKICAgICAgICB1
bnNpZ25lZCBsb25nIHJ4X2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHR4X2Vycm9yczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2Ryb3BwZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0
eF9kcm9wcGVkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbXVsdGljYXN0OwogICAgICAgIHVuc2ln
bmVkIGxvbmcgY29sbGlzaW9uczsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfbGVuZ3RoX2Vy
cm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X292ZXJfZXJyb3JzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgcnhfY3JjX2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2ZyYW1lX2Vy
cm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2ZpZm9fZXJyb3JzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgcnhfbWlzc2VkX2Vycm9yczsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgdHhfYWJv
cnRlZF9lcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9jYXJyaWVyX2Vycm9yczsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHR4X2ZpZm9fZXJyb3JzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
dHhfaGVhcnRiZWF0X2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHR4X3dpbmRvd19lcnJv
cnM7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2NvbXByZXNzZWQ7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyB0eF9jb21wcmVzc2VkOwp9OwoKCgplbnVtIHsKICAgICAgICBJRl9QT1JUX1VOS05P
V04gPSAwLAogICAgICAgIElGX1BPUlRfMTBCQVNFMiwKICAgICAgICBJRl9QT1JUXzEwQkFTRVQs
CiAgICAgICAgSUZfUE9SVF9BVUksCiAgICAgICAgSUZfUE9SVF8xMDBCQVNFVCwKICAgICAgICBJ
Rl9QT1JUXzEwMEJBU0VUWCwKICAgICAgICBJRl9QT1JUXzEwMEJBU0VGWAp9OwoKCgpleHRlcm4g
Y29uc3QgY2hhciAqaWZfcG9ydF90ZXh0X1I5Y2YwYzY0ZltdOwoKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIgMQojIDg3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdHJ1Y3QgbmZfY29ubnRyYWNrIHsK
ICAgICAgICBhdG9taWNfdCB1c2U7CiAgICAgICAgdm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBuZl9j
b25udHJhY2sgKik7Cn07CgpzdHJ1Y3QgbmZfY3RfaW5mbyB7CiAgICAgICAgc3RydWN0IG5mX2Nv
bm50cmFjayAqbWFzdGVyOwp9OwoKCnN0cnVjdCBza19idWZmX2hlYWQgewoKICAgICAgICBzdHJ1
Y3Qgc2tfYnVmZiAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKiBwcmV2OwoKICAgICAg
ICBfX3UzMiBxbGVuOwogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKfTsKCnN0cnVjdCBza19idWZm
OwoKCgp0eXBlZGVmIHN0cnVjdCBza2JfZnJhZ19zdHJ1Y3Qgc2tiX2ZyYWdfdDsKCnN0cnVjdCBz
a2JfZnJhZ19zdHJ1Y3QKewogICAgICAgIHN0cnVjdCBwYWdlICpwYWdlOwogICAgICAgIF9fdTE2
IHBhZ2Vfb2Zmc2V0OwogICAgICAgIF9fdTE2IHNpemU7Cn07CgoKCgpzdHJ1Y3Qgc2tiX3NoYXJl
ZF9pbmZvIHsKICAgICAgICBhdG9taWNfdCBkYXRhcmVmOwogICAgICAgIHVuc2lnbmVkIGludCBu
cl9mcmFnczsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqZnJhZ19saXN0OwogICAgICAgIHNrYl9m
cmFnX3QgZnJhZ3NbNl07Cn07CgpzdHJ1Y3Qgc2tfYnVmZiB7CgogICAgICAgIHN0cnVjdCBza19i
dWZmICogbmV4dDsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqIHByZXY7CgogICAgICAgIHN0cnVj
dCBza19idWZmX2hlYWQgKiBsaXN0OwogICAgICAgIHN0cnVjdCBzb2NrICpzazsKICAgICAgICBz
dHJ1Y3QgdGltZXZhbCBzdGFtcDsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwoKCiAg
ICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdGNwaGRyICp0aDsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB1ZHBoZHIgKnVoOwogICAgICAgICAgICAgICAgc3RydWN0
IGljbXBoZHIgKmljbXBoOwogICAgICAgICAgICAgICAgc3RydWN0IGlnbXBoZHIgKmlnbXBoOwog
ICAgICAgICAgICAgICAgc3RydWN0IGlwaGRyICppcGlwaDsKICAgICAgICAgICAgICAgIHN0cnVj
dCBzcHhoZHIgKnNweGg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyYXc7CiAgICAg
ICAgfSBoOwoKCiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
aXBoZHIgKmlwaDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpcHY2aGRyICppcHY2aDsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBhcnBoZHIgKmFycGg7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXB4
aGRyICppcHhoOwogICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmF3OwogICAgICAgIH0g
bmg7CgoKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBldGho
ZHIgKmV0aGVybmV0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmF3OwogICAgICAg
IH0gbWFjOwoKICAgICAgICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CgoKCgoKCgogICAgICAgIGNo
YXIgY2JbNDhdOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGlu
dCBkYXRhX2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgY3N1bTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIF9fdW51c2VkLAogICAgICAgICAgICAgICAgICAgICAgICBjbG9uZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIHBrdF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBpcF9zdW1tZWQ7
CiAgICAgICAgX191MzIgcHJpb3JpdHk7CiAgICAgICAgYXRvbWljX3QgdXNlcnM7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgcHJvdG9jb2w7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VjdXJpdHk7
CiAgICAgICAgdW5zaWduZWQgaW50IHRydWVzaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFyICpo
ZWFkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgICAgdW5zaWduZWQgY2hhciAq
dGFpbDsKICAgICAgICB1bnNpZ25lZCBjaGFyICplbmQ7CgogICAgICAgIHZvaWQgKCpkZXN0cnVj
dG9yKShzdHJ1Y3Qgc2tfYnVmZiAqKTsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbmZtYXJrOwoK
ICAgICAgICBfX3UzMiBuZmNhY2hlOwoKICAgICAgICBzdHJ1Y3QgbmZfY3RfaW5mbyAqbmZjdDsK
IyAyMTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCiAg
ICAgICBfX3UzMiB0Y19pbmRleDsKCn07CiMgMjMxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpleHRlcm4gdm9pZCBfX2tmcmVlX3NrYl9SMzY0ZTc4ODIo
c3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqIGFsbG9jX3NrYl9S
Y2ZmMDIzYTgodW5zaWduZWQgaW50IHNpemUsIGludCBwcmlvcml0eSk7CmV4dGVybiB2b2lkIGtm
cmVlX3NrYm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICog
c2tiX2Nsb25lX1I1OWY2NWY0MihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcHJpb3JpdHkpOwpl
eHRlcm4gc3RydWN0IHNrX2J1ZmYgKiBza2JfY29weV9SMmViMDVmNTUoY29uc3Qgc3RydWN0IHNr
X2J1ZmYgKnNrYiwgaW50IHByaW9yaXR5KTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICogcHNrYl9j
b3B5X1I1M2JmMTE2MShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZ2ZwX21hc2spOwpleHRlcm4g
aW50IHBza2JfZXhwYW5kX2hlYWRfUmI4MThiZDUyKHN0cnVjdCBza19idWZmICpza2IsIGludCBu
aGVhZCwgaW50IG50YWlsLCBpbnQgZ2ZwX21hc2spOwpleHRlcm4gc3RydWN0IHNrX2J1ZmYgKiBz
a2JfcmVhbGxvY19oZWFkcm9vbV9SZmNmN2Y5MDgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWdu
ZWQgaW50IGhlYWRyb29tKTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICogc2tiX2NvcHlfZXhwYW5k
X1JhMjBkNWViOShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3aGVhZHJvb20sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuZXd0YWlscm9vbSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByaW9yaXR5
KTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICogc2tiX3BhZF9SYjA4ZDNmN2Qoc3RydWN0IHNrX2J1
ZmYgKnNrYiwgaW50IHBhZCk7CgpleHRlcm4gdm9pZCBza2Jfb3Zlcl9wYW5pY19SMmM4OGQ1MzMo
c3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxlbiwgdm9pZCAqaGVyZSk7CmV4dGVybiB2b2lkIHNr
Yl91bmRlcl9wYW5pY19SNGFhYjEwZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxlbiwgdm9p
ZCAqaGVyZSk7CiMgMjU4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3Nr
YnVmZi5oIgpzdGF0aWMgaW5saW5lIGludCBza2JfcXVldWVfZW1wdHkoc3RydWN0IHNrX2J1ZmZf
aGVhZCAqbGlzdCkKewogICAgICAgIHJldHVybiAobGlzdC0+bmV4dCA9PSAoc3RydWN0IHNrX2J1
ZmYgKikgbGlzdCk7Cn0KIyAyNzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9nZXQoc3RydWN0
IHNrX2J1ZmYgKnNrYikKewogICAgICAgIGF0b21pY19pbmMoJnNrYi0+dXNlcnMpOwogICAgICAg
IHJldHVybiBza2I7Cn0KIyAyOTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBrZnJlZV9za2Ioc3RydWN0IHNrX2J1ZmYg
KnNrYikKewogICAgICAgIGlmICgoKCZza2ItPnVzZXJzKS0+Y291bnRlcikgPT0gMSB8fCBhdG9t
aWNfZGVjX2FuZF90ZXN0KCZza2ItPnVzZXJzKSkKICAgICAgICAgICAgICAgIF9fa2ZyZWVfc2ti
X1IzNjRlNzg4Mihza2IpOwp9CgoKc3RhdGljIGlubGluZSB2b2lkIGtmcmVlX3NrYl9mYXN0KHN0
cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICBpZiAoKCgmc2tiLT51c2VycyktPmNvdW50ZXIp
ID09IDEgfHwgYXRvbWljX2RlY19hbmRfdGVzdCgmc2tiLT51c2VycykpCiAgICAgICAgICAgICAg
ICBrZnJlZV9za2JtZW0oc2tiKTsKfQojIDMxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBpbnQgc2tiX2Nsb25lZChzdHJ1Y3Qg
c2tfYnVmZiAqc2tiKQp7CiAgICAgICAgcmV0dXJuIHNrYi0+Y2xvbmVkICYmICgoJigoc3RydWN0
IHNrYl9zaGFyZWRfaW5mbyAqKSgoc2tiKS0+ZW5kKSktPmRhdGFyZWYpLT5jb3VudGVyKSAhPSAx
Owp9CiMgMzI1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5o
IgpzdGF0aWMgaW5saW5lIGludCBza2Jfc2hhcmVkKHN0cnVjdCBza19idWZmICpza2IpCnsKICAg
ICAgICByZXR1cm4gKCgoJnNrYi0+dXNlcnMpLT5jb3VudGVyKSAhPSAxKTsKfQojIDM0NCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGlu
ZSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3NoYXJlX2NoZWNrKHN0cnVjdCBza19idWZmICpza2IsIGlu
dCBwcmkpCnsKICAgICAgICBpZiAoc2tiX3NoYXJlZChza2IpKSB7CiAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc2tfYnVmZiAqbnNrYjsKICAgICAgICAgICAgICAgIG5za2IgPSBza2JfY2xvbmVfUjU5
ZjY1ZjQyKHNrYiwgcHJpKTsKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwogICAgICAg
ICAgICAgICAgcmV0dXJuIG5za2I7CiAgICAgICAgfQogICAgICAgIHJldHVybiBza2I7Cn0KIyAz
NzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRp
YyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl91bnNoYXJlKHN0cnVjdCBza19idWZmICpza2Is
IGludCBwcmkpCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqbnNrYjsKICAgICAgICBpZighc2ti
X2Nsb25lZChza2IpKQogICAgICAgICAgICAgICAgcmV0dXJuIHNrYjsKICAgICAgICBuc2tiPXNr
Yl9jb3B5X1IyZWIwNWY1NShza2IsIHByaSk7CiAgICAgICAga2ZyZWVfc2tiKHNrYik7CiAgICAg
ICAgcmV0dXJuIG5za2I7Cn0KIyA0MDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNrYl9wZWVrKHN0
cnVjdCBza19idWZmX2hlYWQgKmxpc3RfKQp7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKmxpc3Qg
PSAoKHN0cnVjdCBza19idWZmICopbGlzdF8pLT5uZXh0OwogICAgICAgIGlmIChsaXN0ID09IChz
dHJ1Y3Qgc2tfYnVmZiAqKWxpc3RfKQogICAgICAgICAgICAgICAgbGlzdCA9ICgodm9pZCAqKTAp
OwogICAgICAgIHJldHVybiBsaXN0Owp9CiMgNDIzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpza2Jf
cGVla190YWlsKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3RfKQp7CiAgICAgICAgc3RydWN0IHNr
X2J1ZmYgKmxpc3QgPSAoKHN0cnVjdCBza19idWZmICopbGlzdF8pLT5wcmV2OwogICAgICAgIGlm
IChsaXN0ID09IChzdHJ1Y3Qgc2tfYnVmZiAqKWxpc3RfKQogICAgICAgICAgICAgICAgbGlzdCA9
ICgodm9pZCAqKTApOwogICAgICAgIHJldHVybiBsaXN0Owp9CiMgNDM4ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIF9fdTMyIHNr
Yl9xdWV1ZV9sZW4oc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdF8pCnsKICAgICAgICByZXR1cm4o
bGlzdF8tPnFsZW4pOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3F1ZXVlX2hlYWRfaW5pdChz
dHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAg
ICAgIGxpc3QtPnByZXYgPSAoc3RydWN0IHNrX2J1ZmYgKilsaXN0OwogICAgICAgIGxpc3QtPm5l
eHQgPSAoc3RydWN0IHNrX2J1ZmYgKilsaXN0OwogICAgICAgIGxpc3QtPnFsZW4gPSAwOwp9CiMg
NDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0
aWMgaW5saW5lIHZvaWQgX19za2JfcXVldWVfaGVhZChzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0
LCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2spCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcHJldiwg
Km5leHQ7CgogICAgICAgIG5ld3NrLT5saXN0ID0gbGlzdDsKICAgICAgICBsaXN0LT5xbGVuKys7
CiAgICAgICAgcHJldiA9IChzdHJ1Y3Qgc2tfYnVmZiAqKWxpc3Q7CiAgICAgICAgbmV4dCA9IHBy
ZXYtPm5leHQ7CiAgICAgICAgbmV3c2stPm5leHQgPSBuZXh0OwogICAgICAgIG5ld3NrLT5wcmV2
ID0gcHJldjsKICAgICAgICBuZXh0LT5wcmV2ID0gbmV3c2s7CiAgICAgICAgcHJldi0+bmV4dCA9
IG5ld3NrOwp9CiMgNDk2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3Nr
YnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3F1ZXVlX2hlYWQoc3RydWN0IHNrX2J1ZmZf
aGVhZCAqbGlzdCwgc3RydWN0IHNrX2J1ZmYgKm5ld3NrKQp7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBmbGFnczsKCiAgICAgICAgZG8geyBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwg
OyBwb3BsICUwIjoiPWciIChmbGFncyk6ICk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6
IDoibWVtb3J5Iik7IH0gd2hpbGUoMCk7OyAodm9pZCkoJmxpc3QtPmxvY2spOyB9IHdoaWxlICgw
KTsKICAgICAgICBfX3NrYl9xdWV1ZV9oZWFkKGxpc3QsIG5ld3NrKTsKICAgICAgICBkbyB7IGRv
IHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6
ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQojIDUxNyAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2
b2lkIF9fc2tiX3F1ZXVlX3RhaWwoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwgc3RydWN0IHNr
X2J1ZmYgKm5ld3NrKQp7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKnByZXYsICpuZXh0OwoKICAg
ICAgICBuZXdzay0+bGlzdCA9IGxpc3Q7CiAgICAgICAgbGlzdC0+cWxlbisrOwogICAgICAgIG5l
eHQgPSAoc3RydWN0IHNrX2J1ZmYgKilsaXN0OwogICAgICAgIHByZXYgPSBuZXh0LT5wcmV2Owog
ICAgICAgIG5ld3NrLT5uZXh0ID0gbmV4dDsKICAgICAgICBuZXdzay0+cHJldiA9IHByZXY7CiAg
ICAgICAgbmV4dC0+cHJldiA9IG5ld3NrOwogICAgICAgIHByZXYtPm5leHQgPSBuZXdzazsKfQoj
IDU0MyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3Rh
dGljIGlubGluZSB2b2lkIHNrYl9xdWV1ZV90YWlsKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3Qs
IHN0cnVjdCBza19idWZmICpuZXdzaykKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cgog
ICAgICAgIGRvIHsgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCI6
Ij1nIiAoZmxhZ3MpOiApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIp
OyB9IHdoaWxlKDApOzsgKHZvaWQpKCZsaXN0LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
X19za2JfcXVldWVfdGFpbChsaXN0LCBuZXdzayk7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUo
MCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3Mp
OiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7Cn0KIyA1NjEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1
ZmYgKl9fc2tiX2RlcXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHN0
cnVjdCBza19idWZmICpuZXh0LCAqcHJldiwgKnJlc3VsdDsKCiAgICAgICAgcHJldiA9IChzdHJ1
Y3Qgc2tfYnVmZiAqKSBsaXN0OwogICAgICAgIG5leHQgPSBwcmV2LT5uZXh0OwogICAgICAgIHJl
c3VsdCA9ICgodm9pZCAqKTApOwogICAgICAgIGlmIChuZXh0ICE9IHByZXYpIHsKICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG5leHQ7CiAgICAgICAgICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dDsK
ICAgICAgICAgICAgICAgIGxpc3QtPnFsZW4tLTsKICAgICAgICAgICAgICAgIG5leHQtPnByZXYg
PSBwcmV2OwogICAgICAgICAgICAgICAgcHJldi0+bmV4dCA9IG5leHQ7CiAgICAgICAgICAgICAg
ICByZXN1bHQtPm5leHQgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICAgIHJlc3VsdC0+cHJl
diA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgcmVzdWx0LT5saXN0ID0gKCh2b2lkICop
MCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7Cn0KIyA1OTAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0
IHNrX2J1ZmYgKnNrYl9kZXF1ZXVlKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QpCnsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHN0cnVjdCBza19idWZmICpyZXN1bHQ7Cgog
ICAgICAgIGRvIHsgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCI6
Ij1nIiAoZmxhZ3MpOiApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIp
OyB9IHdoaWxlKDApOzsgKHZvaWQpKCZsaXN0LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
cmVzdWx0ID0gX19za2JfZGVxdWV1ZShsaXN0KTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgw
KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6
Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoK
CgoKc3RhdGljIGlubGluZSB2b2lkIF9fc2tiX2luc2VydChzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2ss
CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKiBwcmV2LCBzdHJ1Y3Qgc2tfYnVmZiAqbmV4dCwKICAg
ICAgICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICogbGlzdCkKewogICAgICAgIG5ld3NrLT5uZXh0ID0g
bmV4dDsKICAgICAgICBuZXdzay0+cHJldiA9IHByZXY7CiAgICAgICAgbmV4dC0+cHJldiA9IG5l
d3NrOwogICAgICAgIHByZXYtPm5leHQgPSBuZXdzazsKICAgICAgICBuZXdzay0+bGlzdCA9IGxp
c3Q7CiAgICAgICAgbGlzdC0+cWxlbisrOwp9CiMgNjI3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX2luc2VydChz
dHJ1Y3Qgc2tfYnVmZiAqb2xkLCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3c2spCnsKICAgICAgICB1bnNp
Z25lZCBsb25nIGZsYWdzOwoKICAgICAgICBkbyB7IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18o
InB1c2hmbCA7IHBvcGwgJTAiOiI9ZyIgKGZsYWdzKTogKTsgX19hc21fXyBfX3ZvbGF0aWxlX18o
ImNsaSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSgwKTs7ICh2b2lkKSgmb2xkLT5saXN0LT5sb2Nr
KTsgfSB3aGlsZSAoMCk7CiAgICAgICAgX19za2JfaW5zZXJ0KG5ld3NrLCBvbGQtPnByZXYsIG9s
ZCwgb2xkLT5saXN0KTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3Zv
bGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIp
OyB9IHdoaWxlICgwKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NrYl9hcHBlbmQoc3Ry
dWN0IHNrX2J1ZmYgKm9sZCwgc3RydWN0IHNrX2J1ZmYgKm5ld3NrKQp7CiAgICAgICAgX19za2Jf
aW5zZXJ0KG5ld3NrLCBvbGQsIG9sZC0+bmV4dCwgb2xkLT5saXN0KTsKfQojIDY1NiAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2
b2lkIHNrYl9hcHBlbmQoc3RydWN0IHNrX2J1ZmYgKm9sZCwgc3RydWN0IHNrX2J1ZmYgKm5ld3Nr
KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAgICAgZG8geyBkbyB7IF9fYXNt
X18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIjoiPWciIChmbGFncyk6ICk7IF9fYXNt
X18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUoMCk7OyAodm9pZCko
Jm9sZC0+bGlzdC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIF9fc2tiX2FwcGVuZChvbGQs
IG5ld3NrKTsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxl
X18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdo
aWxlICgwKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19za2JfdW5saW5rKHN0cnVjdCBz
a19idWZmICpza2IsIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QpCnsKICAgICAgICBzdHJ1Y3Qg
c2tfYnVmZiAqIG5leHQsICogcHJldjsKCiAgICAgICAgbGlzdC0+cWxlbi0tOwogICAgICAgIG5l
eHQgPSBza2ItPm5leHQ7CiAgICAgICAgcHJldiA9IHNrYi0+cHJldjsKICAgICAgICBza2ItPm5l
eHQgPSAoKHZvaWQgKikwKTsKICAgICAgICBza2ItPnByZXYgPSAoKHZvaWQgKikwKTsKICAgICAg
ICBza2ItPmxpc3QgPSAoKHZvaWQgKikwKTsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAg
ICAgICBwcmV2LT5uZXh0ID0gbmV4dDsKfQojIDY5NyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl91bmxpbmsoc3Ry
dWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QgPSBz
a2ItPmxpc3Q7CgogICAgICAgIGlmKGxpc3QpIHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgZmxhZ3M7CgogICAgICAgICAgICAgICAgZG8geyBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJwdXNoZmwgOyBwb3BsICUwIjoiPWciIChmbGFncyk6ICk7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJjbGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUoMCk7OyAodm9pZCkoJmxpc3QtPmxvY2spOyB9
IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIGlmKHNrYi0+bGlzdCA9PSBsaXN0KQogICAgICAg
ICAgICAgICAgICAgICAgICBfX3NrYl91bmxpbmsoc2tiLCBza2ItPmxpc3QpOwogICAgICAgICAg
ICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAl
MCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgfQp9CiMgNzIyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3Nr
YnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpfX3NrYl9kZXF1ZXVlX3RhaWwo
c3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIHN0cnVjdCBza19idWZmICpza2Ig
PSBza2JfcGVla190YWlsKGxpc3QpOwogICAgICAgIGlmIChza2IpCiAgICAgICAgICAgICAgICBf
X3NrYl91bmxpbmsoc2tiLCBsaXN0KTsKICAgICAgICByZXR1cm4gc2tiOwp9CiMgNzM5ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5l
IHN0cnVjdCBza19idWZmICpza2JfZGVxdWV1ZV90YWlsKHN0cnVjdCBza19idWZmX2hlYWQgKmxp
c3QpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHN0cnVjdCBza19idWZm
ICpyZXN1bHQ7CgogICAgICAgIGRvIHsgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZs
IDsgcG9wbCAlMCI6Ij1nIiAoZmxhZ3MpOiApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjog
OiA6Im1lbW9yeSIpOyB9IHdoaWxlKDApOzsgKHZvaWQpKCZsaXN0LT5sb2NrKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgcmVzdWx0ID0gX19za2JfZGVxdWV1ZV90YWlsKGxpc3QpOwogICAgICAgIGRv
IHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3Bm
bCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwogICAgICAgIHJl
dHVybiByZXN1bHQ7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNrYl9pc19ub25saW5lYXIoY29uc3Qg
c3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIHJldHVybiBza2ItPmRhdGFfbGVuOwp9Cgpz
dGF0aWMgaW5saW5lIGludCBza2JfaGVhZGxlbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7
CiAgICAgICAgcmV0dXJuIHNrYi0+bGVuIC0gc2tiLT5kYXRhX2xlbjsKfQojIDc2OCAiL3Vzci9z
cmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBjaGFyICpfX3NrYl9wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50
IGxlbikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgKnRtcD1za2ItPnRhaWw7CiAgICAgICAgZG8g
eyBpZiAoc2tiX2lzX25vbmxpbmVhcihza2IpKSBfX291dF9vZl9saW5lX2J1Z19SOGIwZmQzYzUo
NzcxKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgc2tiLT50YWlsKz1sZW47CiAgICAgICAgc2tiLT5s
ZW4rPWxlbjsKICAgICAgICByZXR1cm4gdG1wOwp9CiMgNzg3ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIg
KnNrYl9wdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAg
IHVuc2lnbmVkIGNoYXIgKnRtcD1za2ItPnRhaWw7CiAgICAgICAgZG8geyBpZiAoc2tiX2lzX25v
bmxpbmVhcihza2IpKSBfX291dF9vZl9saW5lX2J1Z19SOGIwZmQzYzUoNzkwKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgc2tiLT50YWlsKz1sZW47CiAgICAgICAgc2tiLT5sZW4rPWxlbjsKICAgICAg
ICBpZihza2ItPnRhaWw+c2tiLT5lbmQpIHsKICAgICAgICAgICAgICAgIHNrYl9vdmVyX3Bhbmlj
X1IyYzg4ZDUzMyhza2IsIGxlbiwgKHsgdm9pZCAqcGM7IF9fYXNtX18oIm1vdmwgJDFmLCUwXG4x
OiI6Ij1nIiAocGMpKTsgcGM7IH0pKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRtcDsKfQoK
c3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpfX3NrYl9wdXNoKHN0cnVjdCBza19idWZmICpz
a2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBza2ItPmRhdGEtPWxlbjsKICAgICAgICBz
a2ItPmxlbis9bGVuOwogICAgICAgIHJldHVybiBza2ItPmRhdGE7Cn0KIyA4MTYgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdW5z
aWduZWQgY2hhciAqc2tiX3B1c2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxl
bikKewogICAgICAgIHNrYi0+ZGF0YS09bGVuOwogICAgICAgIHNrYi0+bGVuKz1sZW47CiAgICAg
ICAgaWYoc2tiLT5kYXRhPHNrYi0+aGVhZCkgewogICAgICAgICAgICAgICAgc2tiX3VuZGVyX3Bh
bmljX1I0YWFiMTBkZChza2IsIGxlbiwgKHsgdm9pZCAqcGM7IF9fYXNtX18oIm1vdmwgJDFmLCUw
XG4xOiI6Ij1nIiAocGMpKTsgcGM7IH0pKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHNrYi0+
ZGF0YTsKfQoKc3RhdGljIGlubGluZSBjaGFyICpfX3NrYl9wdWxsKHN0cnVjdCBza19idWZmICpz
a2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBza2ItPmxlbi09bGVuOwogICAgICAgIGlm
IChza2ItPmxlbiA8IHNrYi0+ZGF0YV9sZW4pCiAgICAgICAgICAgICAgICBfX291dF9vZl9saW5l
X2J1Z19SOGIwZmQzYzUoODMwKTsKICAgICAgICByZXR1cm4gc2tiLT5kYXRhKz1sZW47Cn0KIyA4
NDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgY2hhciAqIHNrYl9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVu
c2lnbmVkIGludCBsZW4pCnsKICAgICAgICBpZiAobGVuID4gc2tiLT5sZW4pCiAgICAgICAgICAg
ICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgcmV0dXJuIF9fc2tiX3B1bGwoc2tiLGxl
bik7Cn0KCmV4dGVybiB1bnNpZ25lZCBjaGFyICogX19wc2tiX3B1bGxfdGFpbF9SNDNjYjc5YzMo
c3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGRlbHRhKTsKCnN0YXRpYyBpbmxpbmUgY2hhciAqX19w
c2tiX3B1bGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAg
IGlmIChsZW4gPiBza2JfaGVhZGxlbihza2IpICYmCiAgICAgICAgICAgIF9fcHNrYl9wdWxsX3Rh
aWxfUjQzY2I3OWMzKHNrYiwgbGVuLXNrYl9oZWFkbGVuKHNrYikpID09ICgodm9pZCAqKTApKQog
ICAgICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIHNrYi0+bGVuIC09IGxl
bjsKICAgICAgICByZXR1cm4gc2tiLT5kYXRhICs9IGxlbjsKfQoKc3RhdGljIGlubGluZSB1bnNp
Z25lZCBjaGFyICogcHNrYl9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBs
ZW4pCnsKICAgICAgICBpZiAobGVuID4gc2tiLT5sZW4pCiAgICAgICAgICAgICAgICByZXR1cm4g
KCh2b2lkICopMCk7CiAgICAgICAgcmV0dXJuIF9fcHNrYl9wdWxsKHNrYixsZW4pOwp9CgpzdGF0
aWMgaW5saW5lIGludCBwc2tiX21heV9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVk
IGludCBsZW4pCnsKICAgICAgICBpZiAobGVuIDw9IHNrYl9oZWFkbGVuKHNrYikpCiAgICAgICAg
ICAgICAgICByZXR1cm4gMTsKICAgICAgICBpZiAobGVuID4gc2tiLT5sZW4pCiAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICByZXR1cm4gKF9fcHNrYl9wdWxsX3RhaWxfUjQzY2I3OWMz
KHNrYiwgbGVuLXNrYl9oZWFkbGVuKHNrYikpICE9ICgodm9pZCAqKTApKTsKfQojIDg4NiAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGlu
ZSBpbnQgc2tiX2hlYWRyb29tKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICBy
ZXR1cm4gc2tiLT5kYXRhLXNrYi0+aGVhZDsKfQojIDg5OCAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBpbnQgc2tiX3RhaWxyb29t
KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICByZXR1cm4gc2tiX2lzX25vbmxp
bmVhcihza2IpID8gMCA6IHNrYi0+ZW5kLXNrYi0+dGFpbDsKfQojIDkxMiAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNr
Yl9yZXNlcnZlKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAg
ICBza2ItPmRhdGErPWxlbjsKICAgICAgICBza2ItPnRhaWwrPWxlbjsKfQoKZXh0ZXJuIGludCBf
X19wc2tiX3RyaW1fUjU4YzBkN2VkKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBs
ZW4sIGludCByZWFsbG9jKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NrYl90cmltKHN0cnVjdCBz
a19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBpZiAoIXNrYi0+ZGF0YV9s
ZW4pIHsKICAgICAgICAgICAgICAgIHNrYi0+bGVuID0gbGVuOwogICAgICAgICAgICAgICAgc2ti
LT50YWlsID0gc2tiLT5kYXRhK2xlbjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
X19fcHNrYl90cmltX1I1OGMwZDdlZChza2IsIGxlbiwgMCk7CiAgICAgICAgfQp9CiMgOTM5ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5s
aW5lIHZvaWQgc2tiX3RyaW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikK
ewogICAgICAgIGlmIChza2ItPmxlbiA+IGxlbikgewogICAgICAgICAgICAgICAgX19za2JfdHJp
bShza2IsIGxlbik7CiAgICAgICAgfQp9CgoKc3RhdGljIGlubGluZSBpbnQgX19wc2tiX3RyaW0o
c3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIGlmICghc2ti
LT5kYXRhX2xlbikgewogICAgICAgICAgICAgICAgc2tiLT5sZW4gPSBsZW47CiAgICAgICAgICAg
ICAgICBza2ItPnRhaWwgPSBza2ItPmRhdGErbGVuOwogICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBfX19wc2tiX3RyaW1fUjU4
YzBkN2VkKHNrYiwgbGVuLCAxKTsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHBza2Jf
dHJpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgaWYg
KGxlbiA8IHNrYi0+bGVuKQogICAgICAgICAgICAgICAgcmV0dXJuIF9fcHNrYl90cmltKHNrYiwg
bGVuKTsKICAgICAgICByZXR1cm4gMDsKfQojIDk3NSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl9vcnBoYW4oc3Ry
dWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIGlmIChza2ItPmRlc3RydWN0b3IpCiAgICAgICAg
ICAgICAgICBza2ItPmRlc3RydWN0b3Ioc2tiKTsKICAgICAgICBza2ItPmRlc3RydWN0b3IgPSAo
KHZvaWQgKikwKTsKICAgICAgICBza2ItPnNrID0gKCh2b2lkICopMCk7Cn0KIyA5OTMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCBza2JfcXVldWVfcHVyZ2Uoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAg
IHN0cnVjdCBza19idWZmICpza2I7CiAgICAgICAgd2hpbGUgKChza2I9c2tiX2RlcXVldWUobGlz
dCkpIT0oKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOwp9CiMgMTAx
MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGlj
IGlubGluZSB2b2lkIF9fc2tiX3F1ZXVlX3B1cmdlKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3Qp
CnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogICAgICAgIHdoaWxlICgoc2tiPV9fc2ti
X2RlcXVldWUobGlzdCkpIT0oKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgIGtmcmVlX3NrYihz
a2IpOwp9CiMgMTAzMCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9za2J1
ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqX19kZXZfYWxsb2Nfc2tiKHVuc2ln
bmVkIGludCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZ2ZwX21hc2spCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwoKICAgICAg
ICBza2IgPSBhbGxvY19za2JfUmNmZjAyM2E4KGxlbmd0aCsxNiwgZ2ZwX21hc2spOwogICAgICAg
IGlmIChza2IpCiAgICAgICAgICAgICAgICBza2JfcmVzZXJ2ZShza2IsMTYpOwogICAgICAgIHJl
dHVybiBza2I7Cn0KIyAxMDU0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpkZXZfYWxsb2Nfc2tiKHVu
c2lnbmVkIGludCBsZW5ndGgpCnsKICAgICAgICByZXR1cm4gX19kZXZfYWxsb2Nfc2tiKGxlbmd0
aCwgKDB4MjApKTsKfQojIDEwNzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGlu
dXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgaW50CnNrYl9jb3coc3RydWN0IHNrX2J1ZmYgKnNr
YiwgdW5zaWduZWQgaW50IGhlYWRyb29tKQp7CiAgICAgICAgaW50IGRlbHRhID0gKGhlYWRyb29t
ID4gMTYgPyBoZWFkcm9vbSA6IDE2KSAtIHNrYl9oZWFkcm9vbShza2IpOwoKICAgICAgICBpZiAo
ZGVsdGEgPCAwKQogICAgICAgICAgICAgICAgZGVsdGEgPSAwOwoKICAgICAgICBpZiAoZGVsdGEg
fHwgc2tiX2Nsb25lZChza2IpKQogICAgICAgICAgICAgICAgcmV0dXJuIHBza2JfZXhwYW5kX2hl
YWRfUmI4MThiZDUyKHNrYiwgKGRlbHRhKzE1KSZ+MTUsIDAsICgweDIwKSk7CiAgICAgICAgcmV0
dXJuIDA7Cn0KIyAxMDk3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3Nr
YnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpza2JfcGFkdG8oc3RydWN0IHNr
X2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIHVuc2lnbmVkIGludCBzaXpl
ID0gc2tiLT5sZW4gKyBza2ItPmRhdGFfbGVuOwogICAgICAgIGlmKF9fYnVpbHRpbl9leHBlY3Qo
KHNpemUgPj0gbGVuKSwxKSkKICAgICAgICAgICAgICAgIHJldHVybiBza2I7CiAgICAgICAgcmV0
dXJuIHNrYl9wYWRfUmIwOGQzZjdkKHNrYiwgbGVuLXNpemUpOwp9CiMgMTExMiAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKaW50IHNrYl9saW5lYXJpemVf
UjZhMzZkMTYwKHN0cnVjdCBza19idWZmICpza2IsIGludCBnZnApOwoKc3RhdGljIGlubGluZSB2
b2lkICprbWFwX3NrYl9mcmFnKGNvbnN0IHNrYl9mcmFnX3QgKmZyYWcpCnsKCgoKCgoKICAgICAg
ICByZXR1cm4ga21hcChmcmFnLT5wYWdlKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGt1bm1hcF9z
a2JfZnJhZyh2b2lkICp2YWRkcikKewogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7CgoKCn0KCgoK
CgoKCmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqIHNrYl9yZWN2X2RhdGFncmFtX1IzZDFiNTZiNihz
dHJ1Y3Qgc29jayAqc2ssdW5zaWduZWQgZmxhZ3MsaW50IG5vYmxvY2ssIGludCAqZXJyKTsKZXh0
ZXJuIHVuc2lnbmVkIGludCBkYXRhZ3JhbV9wb2xsX1JjY2JkNDYzYihzdHJ1Y3QgZmlsZSAqZmls
ZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICp3YWl0KTsK
ZXh0ZXJuIGludCBza2JfY29weV9kYXRhZ3JhbV9SMjc1NWZmNGUoY29uc3Qgc3RydWN0IHNrX2J1
ZmYgKmZyb20sIGludCBvZmZzZXQsIGNoYXIgKnRvLGludCBzaXplKTsKZXh0ZXJuIGludCBza2Jf
Y29weV9kYXRhZ3JhbV9pb3ZlY19SODQzOTk4NzIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKmZyb20s
IGludCBvZmZzZXQsIHN0cnVjdCBpb3ZlYyAqdG8saW50IHNpemUpOwpleHRlcm4gaW50IHNrYl9j
b3B5X2FuZF9jc3VtX2RhdGFncmFtKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBvZmZz
ZXQsIHU4ICp0bywgaW50IGxlbiwgdW5zaWduZWQgaW50ICpjc3VtcCk7CmV4dGVybiBpbnQgc2ti
X2NvcHlfYW5kX2NzdW1fZGF0YWdyYW1faW92ZWNfUjMxN2M1Nzg2KGNvbnN0IHN0cnVjdCBza19i
dWZmICpza2IsIGludCBobGVuLCBzdHJ1Y3QgaW92ZWMgKmlvdik7CmV4dGVybiB2b2lkIHNrYl9m
cmVlX2RhdGFncmFtX1IzZTUyMThmZChzdHJ1Y3Qgc29jayAqIHNrLCBzdHJ1Y3Qgc2tfYnVmZiAq
c2tiKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgc2tiX2NoZWNrc3VtX1JkMGJiMTcyNihjb25zdCBz
dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCB1bnNpZ25lZCBpbnQgY3N1
bSk7CmV4dGVybiBpbnQgc2tiX2NvcHlfYml0c19SYjVjNzI4YWEoY29uc3Qgc3RydWN0IHNrX2J1
ZmYgKnNrYiwgaW50IG9mZnNldCwgdm9pZCAqdG8sIGludCBsZW4pOwpleHRlcm4gdW5zaWduZWQg
aW50IHNrYl9jb3B5X2FuZF9jc3VtX2JpdHNfUjYxOWRmYjcwKGNvbnN0IHN0cnVjdCBza19idWZm
ICpza2IsIGludCBvZmZzZXQsIHU4ICp0bywgaW50IGxlbiwgdW5zaWduZWQgaW50IGNzdW0pOwpl
eHRlcm4gdm9pZCBza2JfY29weV9hbmRfY3N1bV9kZXZfUjdkOWE4YWMzKGNvbnN0IHN0cnVjdCBz
a19idWZmICpza2IsIHU4ICp0byk7CgpleHRlcm4gdm9pZCBza2JfaW5pdCh2b2lkKTsKZXh0ZXJu
IHZvaWQgc2tiX2FkZF9tdHUoaW50IG10dSk7CgpzdHJ1Y3QgdHV4X3JlcV9zdHJ1Y3Q7CgoKc3Rh
dGljIGlubGluZSB2b2lkCm5mX2Nvbm50cmFja19wdXQoc3RydWN0IG5mX2N0X2luZm8gKm5mY3Qp
CnsKICAgICAgICBpZiAobmZjdCAmJiBhdG9taWNfZGVjX2FuZF90ZXN0KCZuZmN0LT5tYXN0ZXIt
PnVzZSkpCiAgICAgICAgICAgICAgICBuZmN0LT5tYXN0ZXItPmRlc3Ryb3kobmZjdC0+bWFzdGVy
KTsKfQpzdGF0aWMgaW5saW5lIHZvaWQKbmZfY29ubnRyYWNrX2dldChzdHJ1Y3QgbmZfY3RfaW5m
byAqbmZjdCkKewogICAgICAgIGlmIChuZmN0KQogICAgICAgICAgICAgICAgYXRvbWljX2luYygm
bmZjdC0+bWFzdGVyLT51c2UpOwp9CiMgMTQ4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L25ldGRldmljZS5oIiAyCgpzdHJ1Y3QgbmVpZ2hib3VyOwpzdHJ1Y3QgbmVpZ2hf
cGFybXM7CnN0cnVjdCBza19idWZmOwoKc3RydWN0IG5ldGlmX3J4X3N0YXRzCnsKICAgICAgICB1
bnNpZ25lZCB0b3RhbDsKICAgICAgICB1bnNpZ25lZCBkcm9wcGVkOwogICAgICAgIHVuc2lnbmVk
IHRpbWVfc3F1ZWV6ZTsKICAgICAgICB1bnNpZ25lZCB0aHJvdHRsZWQ7CiAgICAgICAgdW5zaWdu
ZWQgZmFzdHJvdXRlX2hpdDsKICAgICAgICB1bnNpZ25lZCBmYXN0cm91dGVfc3VjY2VzczsKICAg
ICAgICB1bnNpZ25lZCBmYXN0cm91dGVfZGVmZXI7CiAgICAgICAgdW5zaWduZWQgZmFzdHJvdXRl
X2RlZmVycmVkX291dDsKICAgICAgICB1bnNpZ25lZCBmYXN0cm91dGVfbGF0ZW5jeV9yZWR1Y3Rp
b247CiAgICAgICAgdW5zaWduZWQgY3B1X2NvbGxpc2lvbjsKfSBfX2F0dHJpYnV0ZV9fKChfX2Fs
aWduZWRfXygoMSA8PCAoKDUpKSkpKSk7CgpleHRlcm4gc3RydWN0IG5ldGlmX3J4X3N0YXRzIG5l
dGRldl9yeF9zdGF0W107CgoKCgoKCnN0cnVjdCBkZXZfbWNfbGlzdAp7CiAgICAgICAgc3RydWN0
IGRldl9tY19saXN0ICpuZXh0OwogICAgICAgIF9fdTggZG1pX2FkZHJbOF07CiAgICAgICAgdW5z
aWduZWQgY2hhciBkbWlfYWRkcmxlbjsKICAgICAgICBpbnQgZG1pX3VzZXJzOwogICAgICAgIGlu
dCBkbWlfZ3VzZXJzOwp9OwoKc3RydWN0IGhoX2NhY2hlCnsKICAgICAgICBzdHJ1Y3QgaGhfY2Fj
aGUgKmhoX25leHQ7CiAgICAgICAgYXRvbWljX3QgaGhfcmVmY250OwogICAgICAgIHVuc2lnbmVk
IHNob3J0IGhoX3R5cGU7CgoKCiAgICAgICAgaW50IGhoX2xlbjsKICAgICAgICBpbnQgKCpoaF9v
dXRwdXQpKHN0cnVjdCBza19idWZmICpza2IpOwogICAgICAgIHJ3bG9ja190IGhoX2xvY2s7Cgog
ICAgICAgIHVuc2lnbmVkIGxvbmcgaGhfZGF0YVsxNi9zaXplb2YodW5zaWduZWQgbG9uZyldOwp9
OwoKCgoKCgplbnVtIG5ldGRldl9zdGF0ZV90CnsKICAgICAgICBfX0xJTktfU1RBVEVfWE9GRj0w
LAogICAgICAgIF9fTElOS19TVEFURV9TVEFSVCwKICAgICAgICBfX0xJTktfU1RBVEVfUFJFU0VO
VCwKICAgICAgICBfX0xJTktfU1RBVEVfU0NIRUQsCiAgICAgICAgX19MSU5LX1NUQVRFX05PQ0FS
UklFUiwKICAgICAgICBfX0xJTktfU1RBVEVfUlhfU0NIRUQKfTsKCgoKCgoKc3RydWN0IG5ldGRl
dl9ib290X3NldHVwIHsKICAgICAgICBjaGFyIG5hbWVbMTZdOwogICAgICAgIHN0cnVjdCBpZm1h
cCBtYXA7Cn07CiMgMjM1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L25l
dGRldmljZS5oIgpzdHJ1Y3QgbmV0X2RldmljZQp7CgoKCgoKCiAgICAgICAgY2hhciBuYW1lWzE2
XTsKCgoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgcm1lbV9lbmQ7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBybWVtX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWVtX2VuZDsKICAgICAgICB1
bnNpZ25lZCBsb25nIG1lbV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJhc2VfYWRkcjsK
ICAgICAgICB1bnNpZ25lZCBpbnQgaXJxOwoKCgoKCgogICAgICAgIHVuc2lnbmVkIGNoYXIgaWZf
cG9ydDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRtYTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBz
dGF0ZTsKCiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5leHQ7CgoKICAgICAgICBpbnQgKCpp
bml0KShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCgoKICAgICAgICBzdHJ1Y3QgbmV0X2Rldmlj
ZSAqbmV4dF9zY2hlZDsKCgogICAgICAgIGludCBpZmluZGV4OwogICAgICAgIGludCBpZmxpbms7
CgoKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyogKCpnZXRfc3RhdHMpKHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYpOwogICAgICAgIHN0cnVjdCBpd19zdGF0aXN0aWNzKiAoKmdldF93aXJl
bGVzc19zdGF0cykoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgoKCiAgICAgICAgc3RydWN0IGl3
X2hhbmRsZXJfZGVmICogd2lyZWxlc3NfaGFuZGxlcnM7CiMgMjk0ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIgogICAgICAgIHVuc2lnbmVkIGxvbmcg
dHJhbnNfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsYXN0X3J4OwoKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBnZmxhZ3M7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgcHJpdl9mbGFnczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bnVzZWRf
YWxpZ25tZW50X2ZpeGVyOwoKCgogICAgICAgIHVuc2lnbmVkIG10dTsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCB0eXBlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGhhcmRfaGVhZGVyX2xlbjsKICAg
ICAgICB2b2lkICpwcml2OwoKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbWFzdGVyOwoKCgoK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGJyb2FkY2FzdFs4XTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IGRldl9hZGRyWzhdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYWRkcl9sZW47CgogICAgICAgIHN0
cnVjdCBkZXZfbWNfbGlzdCAqbWNfbGlzdDsKICAgICAgICBpbnQgbWNfY291bnQ7CiAgICAgICAg
aW50IHByb21pc2N1aXR5OwogICAgICAgIGludCBhbGxtdWx0aTsKCiAgICAgICAgaW50IHdhdGNo
ZG9nX3RpbWVvOwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHdhdGNoZG9nX3RpbWVyOwoKCgog
ICAgICAgIHZvaWQgKmF0YWxrX3B0cjsKICAgICAgICB2b2lkICppcF9wdHI7CiAgICAgICAgdm9p
ZCAqZG5fcHRyOwogICAgICAgIHZvaWQgKmlwNl9wdHI7CiAgICAgICAgdm9pZCAqZWNfcHRyOwoK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHBvbGxfbGlzdDsKICAgICAgICBpbnQgcXVvdGE7CiAg
ICAgICAgaW50IHdlaWdodDsKCiAgICAgICAgc3RydWN0IFFkaXNjICpxZGlzYzsKICAgICAgICBz
dHJ1Y3QgUWRpc2MgKnFkaXNjX3NsZWVwaW5nOwogICAgICAgIHN0cnVjdCBRZGlzYyAqcWRpc2Nf
bGlzdDsKICAgICAgICBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2luZ3Jlc3M7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyB0eF9xdWV1ZV9sZW47CgoKICAgICAgICBzcGlubG9ja190IHhtaXRfbG9jazsKCgoK
ICAgICAgICBpbnQgeG1pdF9sb2NrX293bmVyOwoKICAgICAgICBzcGlubG9ja190IHF1ZXVlX2xv
Y2s7CgogICAgICAgIGF0b21pY190IHJlZmNudDsKCiAgICAgICAgaW50IGRlYWRiZWFmOwoKCiAg
ICAgICAgaW50IGZlYXR1cmVzOwojIDM3MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9uZXRkZXZpY2UuaCIKICAgICAgICB2b2lkICgqdW5pbml0KShzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2KTsKCiAgICAgICAgdm9pZCAoKmRlc3RydWN0b3IpKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpOwoKCiAgICAgICAgaW50ICgqb3Blbikoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiAg
ICAgICAgaW50ICgqc3RvcCkoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiAgICAgICAgaW50ICgq
aGFyZF9zdGFydF94bWl0KSAoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYp
OwoKICAgICAgICBpbnQgKCpwb2xsKSAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50ICpxdW90
YSk7CiAgICAgICAgaW50ICgqaGFyZF9oZWFkZXIpIChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBzaG9ydCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpkYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqc2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbik7CiAgICAgICAgaW50ICgqcmVidWls
ZF9oZWFkZXIpKHN0cnVjdCBza19idWZmICpza2IpOwoKICAgICAgICB2b2lkICgqc2V0X211bHRp
Y2FzdF9saXN0KShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCiAgICAgICAgaW50ICgqc2V0X21h
Y19hZGRyZXNzKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphZGRyKTsKCiAgICAgICAgaW50ICgq
ZG9faW9jdGwpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlmcmVxICppZnIsIGludCBjbWQpOwoKICAgICAg
ICBpbnQgKCpzZXRfY29uZmlnKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbWFwICptYXApOwoKICAg
ICAgICBpbnQgKCpoYXJkX2hlYWRlcl9jYWNoZSkoc3RydWN0IG5laWdoYm91ciAqbmVpZ2gsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IGhoX2NhY2hlICpoaCk7CiAgICAgICAgdm9pZCAoKmhlYWRlcl9jYWNoZV91cGRhdGUpKHN0cnVj
dCBoaF9jYWNoZSAqaGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIGhhZGRy
KTsKCiAgICAgICAgaW50ICgqY2hhbmdlX210dSkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50
IG5ld19tdHUpOwoKCiAgICAgICAgdm9pZCAoKnR4X3RpbWVvdXQpIChzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2KTsKCiAgICAgICAgdm9pZCAoKnZsYW5fcnhfcmVnaXN0ZXIpKHN0cnVjdCBuZXRfZGV2
aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgdmxhbl9ncm91cCAqZ3JwKTsKICAgICAgICB2b2lkICgqdmxhbl9yeF9hZGRf
dmlkKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB2aWQpOwogICAgICAgIHZvaWQg
KCp2bGFuX3J4X2tpbGxfdmlkKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdmlk
KTsKCiAgICAgICAgaW50ICgqaGFyZF9oZWFkZXJfcGFyc2UpKHN0cnVjdCBza19idWZmICpza2Is
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciAqaGFkZHIpOwogICAgICAgIGludCAoKm5laWdoX3NldHVwKShzdHJ1Y3QgbmV0
X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmVpZ2hfcGFybXMgKik7CiAgICAgICAgaW50ICgqYWNjZXB0
X2Zhc3RwYXRoKShzdHJ1Y3QgbmV0X2RldmljZSAqLCBzdHJ1Y3QgZHN0X2VudHJ5Kik7CgogICAg
ICAgIHZvaWQgKCpwb2xsX2NvbnRyb2xsZXIpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwogICAg
ICAgIGludCAoKnJ4X2hvb2spKHN0cnVjdCBza19idWZmICpza2IpOwoKCiAgICAgICAgc3RydWN0
IG1vZHVsZSAqb3duZXI7CgoKICAgICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpicl9wb3J0
OwojIDQ0MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9uZXRkZXZpY2Uu
aCIKICAgICAgICBzdHJ1Y3QgZGl2ZXJ0X2JsayAqZGl2ZXJ0OwoKfTsKCgpzdHJ1Y3QgcGFja2V0
X3R5cGUKewogICAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGU7CiAgICAgICAgc3RydWN0IG5ldF9k
ZXZpY2UgKmRldjsKICAgICAgICBpbnQgKCpmdW5jKSAoc3RydWN0IHNrX2J1ZmYgKiwgc3RydWN0
IG5ldF9kZXZpY2UgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgcGFja2V0X3R5cGUgKik7CiAgICAgICAgdm9pZCAqZGF0YTsKICAgICAgICBzdHJ1Y3Qg
cGFja2V0X3R5cGUgKm5leHQ7Cn07CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5j
bHVkZS9saW51eC9ub3RpZmllci5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbGludXgvbm90aWZpZXIuaCIKc3RydWN0IG5vdGlmaWVyX2Jsb2NrCnsKICAgICAgICBp
bnQgKCpub3RpZmllcl9jYWxsKShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnNlbGYsIHVuc2lnbmVk
IGxvbmcsIHZvaWQgKik7CiAgICAgICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuZXh0OwogICAg
ICAgIGludCBwcmlvcml0eTsKfTsKCgoKCmV4dGVybiBpbnQgbm90aWZpZXJfY2hhaW5fcmVnaXN0
ZXJfUjYwY2VjM2I5KHN0cnVjdCBub3RpZmllcl9ibG9jayAqKmxpc3QsIHN0cnVjdCBub3RpZmll
cl9ibG9jayAqbik7CmV4dGVybiBpbnQgbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcl9SZjA5OTY3
OWMoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICoqbmwsIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbik7
CmV4dGVybiBpbnQgbm90aWZpZXJfY2FsbF9jaGFpbl9SMjg4NDY5NjIoc3RydWN0IG5vdGlmaWVy
X2Jsb2NrICoqbiwgdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYpOwojIDQ2MCAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIgMgoKZXh0ZXJuIHN0cnVj
dCBuZXRfZGV2aWNlIGxvb3BiYWNrX2Rldl9SZDliODQ3ZjQ7CmV4dGVybiBzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2X2Jhc2VfUjI1NDk0ZTkzOwpleHRlcm4gcndsb2NrX3QgZGV2X2Jhc2VfbG9ja19S
NWIzZjljMDc7CgpleHRlcm4gaW50IG5ldGRldl9ib290X3NldHVwX2FkZChjaGFyICpuYW1lLCBz
dHJ1Y3QgaWZtYXAgKm1hcCk7CmV4dGVybiBpbnQgbmV0ZGV2X2Jvb3Rfc2V0dXBfY2hlY2soc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldGJ5
aHdhZGRyX1I4OTQ2MjE5Nih1bnNpZ25lZCBzaG9ydCB0eXBlLCBjaGFyICpod2FkZHIpOwpleHRl
cm4gdm9pZCBkZXZfYWRkX3BhY2tfUmQxZWIyMmQ5KHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpOwpl
eHRlcm4gdm9pZCBkZXZfcmVtb3ZlX3BhY2tfUjE3MjVlNDZlKHN0cnVjdCBwYWNrZXRfdHlwZSAq
cHQpOwpleHRlcm4gaW50IGRldl9nZXRfUjc5MjU5ZmJjKGNvbnN0IGNoYXIgKm5hbWUpOwpleHRl
cm4gc3RydWN0IG5ldF9kZXZpY2UgKmRldl9nZXRfYnlfbmFtZV9SMjdjYmUzYTQoY29uc3QgY2hh
ciAqbmFtZSk7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqX19kZXZfZ2V0X2J5X25hbWVfUmEz
N2Q0N2U2KGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmRldl9h
bGxvY19SY2YzMTk2OTEoY29uc3QgY2hhciAqbmFtZSwgaW50ICplcnIpOwpleHRlcm4gaW50IGRl
dl9hbGxvY19uYW1lX1JjNDk2MDJkOShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBjaGFy
ICpuYW1lKTsKZXh0ZXJuIGludCBkZXZfb3Blbl9SN2Y0ODdlOWUoc3RydWN0IG5ldF9kZXZpY2Ug
KmRldik7CmV4dGVybiBpbnQgZGV2X2Nsb3NlX1JlMGEzNDc4NihzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2KTsKZXh0ZXJuIGludCBkZXZfcXVldWVfeG1pdF9SMzc5OWZmOTEoc3RydWN0IHNrX2J1ZmYg
KnNrYik7CmV4dGVybiBpbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlX1I2MjJlNDUwYihzdHJ1Y3QgbmV0
X2RldmljZSAqZGV2KTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX25ldGRldmljZV9SMGY2NTQ4YWEo
c3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlX25v
dGlmaWVyX1I2M2VjYWQ1MyhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKZXh0ZXJuIGludCB1
bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcl9SZmU3Njk0NTYoc3RydWN0IG5vdGlmaWVyX2Js
b2NrICpuYik7CmV4dGVybiBpbnQgZGV2X25ld19pbmRleF9SOGZkZGM4NGModm9pZCk7CmV4dGVy
biBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9pbmRleF9SNTRiMDgzZDUoaW50IGlmaW5k
ZXgpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKl9fZGV2X2dldF9ieV9pbmRleF9SMDE2M2I5
ZmIoaW50IGlmaW5kZXgpOwpleHRlcm4gaW50IGRldl9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpOwoKdHlwZWRlZiBpbnQgZ2lmY29uZl9mdW5jX3Qoc3RydWN0IG5ldF9kZXZpY2UgKiBk
ZXYsIGNoYXIgKiBidWZwdHIsIGludCBsZW4pOwpleHRlcm4gaW50IHJlZ2lzdGVyX2dpZmNvbmZf
UmQyNjg1MThhKHVuc2lnbmVkIGludCBmYW1pbHksIGdpZmNvbmZfZnVuY190ICogZ2lmY29uZik7
CnN0YXRpYyBpbmxpbmUgaW50IHVucmVnaXN0ZXJfZ2lmY29uZih1bnNpZ25lZCBpbnQgZmFtaWx5
KQp7CiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyX2dpZmNvbmZfUmQyNjg1MThhKGZhbWlseSwgMCk7
Cn0KCgoKCgoKc3RydWN0IHNvZnRuZXRfZGF0YV9SNTAxZDFiNzEKewogICAgICAgIGludCB0aHJv
dHRsZTsKICAgICAgICBpbnQgY25nX2xldmVsOwogICAgICAgIGludCBhdmdfYmxvZzsKICAgICAg
ICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGlucHV0X3BrdF9xdWV1ZTsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIHBvbGxfbGlzdDsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqb3V0cHV0X3F1ZXVl
OwogICAgICAgIHN0cnVjdCBza19idWZmICpjb21wbGV0aW9uX3F1ZXVlOwoKICAgICAgICBzdHJ1
Y3QgbmV0X2RldmljZSBibG9nX2RldjsKfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8
PCAoKDUpKSkpKSk7CgoKZXh0ZXJuIHN0cnVjdCBzb2Z0bmV0X2RhdGFfUjUwMWQxYjcxIHNvZnRu
ZXRfZGF0YV9SNTAxZDFiNzFbMV07CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX25ldGlmX3NjaGVk
dWxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9i
aXQoX19MSU5LX1NUQVRFX1NDSEVELCAmZGV2LT5zdGF0ZSkpIHsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgICAgICAgICBpbnQgY3B1ID0gMDsKCiAgICAgICAg
ICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIjoiPWci
IChmbGFncyk6ICk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7IH0g
d2hpbGUoMCk7OwogICAgICAgICAgICAgICAgZGV2LT5uZXh0X3NjaGVkID0gc29mdG5ldF9kYXRh
X1I1MDFkMWI3MVtjcHVdLm91dHB1dF9xdWV1ZTsKICAgICAgICAgICAgICAgIHNvZnRuZXRfZGF0
YV9SNTAxZDFiNzFbY3B1XS5vdXRwdXRfcXVldWUgPSBkZXY7CiAgICAgICAgICAgICAgICBjcHVf
cmFpc2Vfc29mdGlycV9SZDAxZjNlZTgoY3B1LCBORVRfVFhfU09GVElSUSk7CiAgICAgICAgICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdz
KToibWVtb3J5IiwgImNjIik7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZf
c2NoZWR1bGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGlmICghKF9fYnVpbHRp
bl9jb25zdGFudF9wKF9fTElOS19TVEFURV9YT0ZGKSA/IGNvbnN0YW50X3Rlc3RfYml0KChfX0xJ
TktfU1RBVEVfWE9GRiksKCZkZXYtPnN0YXRlKSkgOiB2YXJpYWJsZV90ZXN0X2JpdCgoX19MSU5L
X1NUQVRFX1hPRkYpLCgmZGV2LT5zdGF0ZSkpKSkKICAgICAgICAgICAgICAgIF9fbmV0aWZfc2No
ZWR1bGUoZGV2KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlmX3N0YXJ0X3F1ZXVlKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBjbGVhcl9iaXQoX19MSU5LX1NUQVRFX1hPRkYs
ICZkZXYtPnN0YXRlKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlmX3dha2VfcXVldWUoc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoX19M
SU5LX1NUQVRFX1hPRkYsICZkZXYtPnN0YXRlKSkKICAgICAgICAgICAgICAgIF9fbmV0aWZfc2No
ZWR1bGUoZGV2KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlmX3N0b3BfcXVldWUoc3RydWN0
IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHNldF9iaXQoX19MSU5LX1NUQVRFX1hPRkYsICZk
ZXYtPnN0YXRlKTsKfQoKc3RhdGljIGlubGluZSBpbnQgbmV0aWZfcXVldWVfc3RvcHBlZChzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgcmV0dXJuIChfX2J1aWx0aW5fY29uc3RhbnRf
cChfX0xJTktfU1RBVEVfWE9GRikgPyBjb25zdGFudF90ZXN0X2JpdCgoX19MSU5LX1NUQVRFX1hP
RkYpLCgmZGV2LT5zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKF9fTElOS19TVEFURV9YT0ZG
KSwoJmRldi0+c3RhdGUpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IG5ldGlmX3J1bm5pbmcoc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHJldHVybiAoX19idWlsdGluX2NvbnN0YW50
X3AoX19MSU5LX1NUQVRFX1NUQVJUKSA/IGNvbnN0YW50X3Rlc3RfYml0KChfX0xJTktfU1RBVEVf
U1RBUlQpLCgmZGV2LT5zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQoKF9fTElOS19TVEFURV9T
VEFSVCksKCZkZXYtPnN0YXRlKSkpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRldl9rZnJl
ZV9za2JfaXJxKHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICBpZiAoYXRvbWljX2RlY19h
bmRfdGVzdCgmc2tiLT51c2VycykpIHsKICAgICAgICAgICAgICAgIGludCBjcHUgPTA7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICAgICAgICAgIGRvIHsgX19h
c21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAiOiI9ZyIgKGZsYWdzKTogKTsgX19h
c21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSgwKTs7CiAgICAg
ICAgICAgICAgICBza2ItPm5leHQgPSBzb2Z0bmV0X2RhdGFfUjUwMWQxYjcxW2NwdV0uY29tcGxl
dGlvbl9xdWV1ZTsKICAgICAgICAgICAgICAgIHNvZnRuZXRfZGF0YV9SNTAxZDFiNzFbY3B1XS5j
b21wbGV0aW9uX3F1ZXVlID0gc2tiOwogICAgICAgICAgICAgICAgY3B1X3JhaXNlX3NvZnRpcnFf
UmQwMWYzZWU4KGNwdSwgTkVUX1RYX1NPRlRJUlEpOwogICAgICAgICAgICAgICAgX19hc21fXyBf
X3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJj
YyIpOwogICAgICAgIH0KfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRldl9rZnJlZV9za2JfYW55
KHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICBpZiAoKCgodm9pZCkoKDApKSwgaXJxX3N0
YXRfUmNhMDI4M2IwWzBdLl9fbG9jYWxfaXJxX2NvdW50KSAhPSAwKSkKICAgICAgICAgICAgICAg
IGRldl9rZnJlZV9za2JfaXJxKHNrYik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAga2Zy
ZWVfc2tiKHNrYik7Cn0KCgpleHRlcm4gaW50IG5ldGlmX3J4X1IyNzVjYzU4ZihzdHJ1Y3Qgc2tf
YnVmZiAqc2tiKTsKCmV4dGVybiBpbnQgbmV0aWZfcmVjZWl2ZV9za2JfUmU2Njc4YzcxKHN0cnVj
dCBza19idWZmICpza2IpOwpleHRlcm4gaW50IGRldl9pb2N0bF9SMzg3Yzc4YTUodW5zaWduZWQg
aW50IGNtZCwgdm9pZCAqKTsKZXh0ZXJuIGludCBkZXZfY2hhbmdlX2ZsYWdzX1JmMmQ0YmZjZihz
dHJ1Y3QgbmV0X2RldmljZSAqLCB1bnNpZ25lZCk7CmV4dGVybiB2b2lkIGRldl9xdWV1ZV94bWl0
X25pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCmV4dGVy
biB2b2lkIGRldl9pbml0KHZvaWQpOwoKZXh0ZXJuIGludCBuZXRkZXZfbml0OwoKCgoKc3RhdGlj
IGlubGluZSBpbnQgbmV0aWZfcnhfbmkoc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgaW50
IGVyciA9IG5ldGlmX3J4X1IyNzVjYzU4Zihza2IpOwogICAgICAgaWYgKCgodm9pZCkoKDApKSwg
aXJxX3N0YXRfUmNhMDI4M2IwWzBdLl9fc29mdGlycV9wZW5kaW5nKSkKICAgICAgICAgICAgICAg
ZG9fc29mdGlycV9SZjBhNTI5YjcoKTsKICAgICAgIHJldHVybiBlcnI7Cn0KCnN0YXRpYyBpbmxp
bmUgdm9pZCBkZXZfaW5pdF9idWZmZXJzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKCn0KCmV4
dGVybiBpbnQgbmV0ZGV2X2ZpbmlzaF91bnJlZ2lzdGVyX1I1MjEwZjAwNyhzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2KTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfcHV0KHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpCnsKICAgICAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmZGV2LT5yZWZjbnQpKQog
ICAgICAgICAgICAgICAgbmV0ZGV2X2ZpbmlzaF91bnJlZ2lzdGVyX1I1MjEwZjAwNyhkZXYpOwp9
CiMgNjM2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5o
IgpzdGF0aWMgaW5saW5lIGludCBuZXRpZl9jYXJyaWVyX29rKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYpCnsKICAgICAgICByZXR1cm4gIShfX2J1aWx0aW5fY29uc3RhbnRfcChfX0xJTktfU1RBVEVf
Tk9DQVJSSUVSKSA/IGNvbnN0YW50X3Rlc3RfYml0KChfX0xJTktfU1RBVEVfTk9DQVJSSUVSKSwo
JmRldi0+c3RhdGUpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KChfX0xJTktfU1RBVEVfTk9DQVJSSUVS
KSwoJmRldi0+c3RhdGUpKSk7Cn0KCmV4dGVybiB2b2lkIF9fbmV0ZGV2X3dhdGNoZG9nX3VwX1Jk
Zjg4MDQ0NShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRp
Zl9jYXJyaWVyX29uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBjbGVhcl9iaXQo
X19MSU5LX1NUQVRFX05PQ0FSUklFUiwgJmRldi0+c3RhdGUpOwogICAgICAgIGlmIChuZXRpZl9y
dW5uaW5nKGRldikpCiAgICAgICAgICAgICAgICBfX25ldGRldl93YXRjaGRvZ191cF9SZGY4ODA0
NDUoZGV2KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlmX2NhcnJpZXJfb2ZmKHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBzZXRfYml0KF9fTElOS19TVEFURV9OT0NBUlJJRVIs
ICZkZXYtPnN0YXRlKTsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IG5ldGlmX2RldmljZV9wcmVzZW50
KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICByZXR1cm4gKF9fYnVpbHRpbl9jb25z
dGFudF9wKF9fTElOS19TVEFURV9QUkVTRU5UKSA/IGNvbnN0YW50X3Rlc3RfYml0KChfX0xJTktf
U1RBVEVfUFJFU0VOVCksKCZkZXYtPnN0YXRlKSkgOiB2YXJpYWJsZV90ZXN0X2JpdCgoX19MSU5L
X1NUQVRFX1BSRVNFTlQpLCgmZGV2LT5zdGF0ZSkpKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG5l
dGlmX2RldmljZV9kZXRhY2goc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGlmICh0
ZXN0X2FuZF9jbGVhcl9iaXQoX19MSU5LX1NUQVRFX1BSRVNFTlQsICZkZXYtPnN0YXRlKSAmJgog
ICAgICAgICAgICBuZXRpZl9ydW5uaW5nKGRldikpIHsKICAgICAgICAgICAgICAgIG5ldGlmX3N0
b3BfcXVldWUoZGV2KTsKICAgICAgICB9Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9kZXZp
Y2VfYXR0YWNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBpZiAoIXRlc3RfYW5k
X3NldF9iaXQoX19MSU5LX1NUQVRFX1BSRVNFTlQsICZkZXYtPnN0YXRlKSAmJgogICAgICAgICAg
ICBuZXRpZl9ydW5uaW5nKGRldikpIHsKICAgICAgICAgICAgICAgIG5ldGlmX3dha2VfcXVldWUo
ZGV2KTsKICAgICAgICAgICAgICAgIF9fbmV0ZGV2X3dhdGNoZG9nX3VwX1JkZjg4MDQ0NShkZXYp
OwogICAgICAgIH0KfQoKCgoKCgplbnVtIHsKICAgICAgICBORVRJRl9NU0dfRFJWID0gMHgwMDAx
LAogICAgICAgIE5FVElGX01TR19QUk9CRSA9IDB4MDAwMiwKICAgICAgICBORVRJRl9NU0dfTElO
SyA9IDB4MDAwNCwKICAgICAgICBORVRJRl9NU0dfVElNRVIgPSAweDAwMDgsCiAgICAgICAgTkVU
SUZfTVNHX0lGRE9XTiA9IDB4MDAxMCwKICAgICAgICBORVRJRl9NU0dfSUZVUCA9IDB4MDAyMCwK
ICAgICAgICBORVRJRl9NU0dfUlhfRVJSID0gMHgwMDQwLAogICAgICAgIE5FVElGX01TR19UWF9F
UlIgPSAweDAwODAsCiAgICAgICAgTkVUSUZfTVNHX1RYX1FVRVVFRCA9IDB4MDEwMCwKICAgICAg
ICBORVRJRl9NU0dfSU5UUiA9IDB4MDIwMCwKICAgICAgICBORVRJRl9NU0dfVFhfRE9ORSA9IDB4
MDQwMCwKICAgICAgICBORVRJRl9NU0dfUlhfU1RBVFVTID0gMHgwODAwLAogICAgICAgIE5FVElG
X01TR19QS1REQVRBID0gMHgxMDAwLAogICAgICAgIE5FVElGX01TR19IVyA9IDB4MjAwMCwKICAg
ICAgICBORVRJRl9NU0dfV09MID0gMHg0MDAwLAp9OwojIDcxOSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIKc3RhdGljIGlubGluZSBpbnQgbmV0aWZf
cnhfc2NoZWR1bGVfcHJlcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgcmV0dXJu
IG5ldGlmX3J1bm5pbmcoZGV2KSAmJgogICAgICAgICAgICAgICAgIXRlc3RfYW5kX3NldF9iaXQo
X19MSU5LX1NUQVRFX1JYX1NDSEVELCAmZGV2LT5zdGF0ZSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgX19uZXRpZl9yeF9zY2hlZHVsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBpbnQgY3B1ID0gMDsKCiAgICAgICAgZG8g
eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCI6Ij1nIiAoZmxhZ3MpOiAp
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiY2xpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlKDApOzsK
ICAgICAgICBhdG9taWNfaW5jKCYoZGV2KS0+cmVmY250KTsKICAgICAgICBsaXN0X2FkZF90YWls
KCZkZXYtPnBvbGxfbGlzdCwgJnNvZnRuZXRfZGF0YV9SNTAxZDFiNzFbY3B1XS5wb2xsX2xpc3Qp
OwogICAgICAgIGlmIChkZXYtPnF1b3RhIDwgMCkKICAgICAgICAgICAgICAgIGRldi0+cXVvdGEg
Kz0gZGV2LT53ZWlnaHQ7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZGV2LT5xdW90YSA9
IGRldi0+d2VpZ2h0OwogICAgICAgIGRvIHsgKCh2b2lkKSgoY3B1KSksIGlycV9zdGF0X1JjYTAy
ODNiMFswXS5fX3NvZnRpcnFfcGVuZGluZykgfD0gMVVMIDw8IChORVRfUlhfU09GVElSUSk7IH0g
d2hpbGUgKDApOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZs
IjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQg
bmV0aWZfcnhfc2NoZWR1bGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIGlmIChu
ZXRpZl9yeF9zY2hlZHVsZV9wcmVwKGRldikpCiAgICAgICAgICAgICAgICBfX25ldGlmX3J4X3Nj
aGVkdWxlKGRldik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgaW50IG5ldGlmX3J4X3Jlc2NoZWR1bGUo
c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHVuZG8pCnsKICAgICAgICBpZiAobmV0aWZfcnhf
c2NoZWR1bGVfcHJlcChkZXYpKSB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdz
OwogICAgICAgICAgICAgICAgaW50IGNwdSA9IDA7CgogICAgICAgICAgICAgICAgZGV2LT5xdW90
YSArPSB1bmRvOwoKICAgICAgICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1
c2hmbCA7IHBvcGwgJTAiOiI9ZyIgKGZsYWdzKTogKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNs
aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSgwKTs7CiAgICAgICAgICAgICAgICBsaXN0X2FkZF90
YWlsKCZkZXYtPnBvbGxfbGlzdCwgJnNvZnRuZXRfZGF0YV9SNTAxZDFiNzFbY3B1XS5wb2xsX2xp
c3QpOwogICAgICAgICAgICAgICAgZG8geyAoKHZvaWQpKChjcHUpKSwgaXJxX3N0YXRfUmNhMDI4
M2IwWzBdLl9fc29mdGlycV9wZW5kaW5nKSB8PSAxVUwgPDwgKE5FVF9SWF9TT0ZUSVJRKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAg
OyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7CiAgICAgICAgICAgICAgICBy
ZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCgoKc3RhdGljIGlubGlu
ZSB2b2lkIG5ldGlmX3J4X2NvbXBsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJwdXNoZmwgOyBwb3BsICUwIjoiPWciIChmbGFncyk6ICk7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJjbGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUoMCk7OwogICAgICAgIGlmICghKF9fYnVpbHRp
bl9jb25zdGFudF9wKF9fTElOS19TVEFURV9SWF9TQ0hFRCkgPyBjb25zdGFudF90ZXN0X2JpdCgo
X19MSU5LX1NUQVRFX1JYX1NDSEVEKSwoJmRldi0+c3RhdGUpKSA6IHZhcmlhYmxlX3Rlc3RfYml0
KChfX0xJTktfU1RBVEVfUlhfU0NIRUQpLCgmZGV2LT5zdGF0ZSkpKSkgX19hc21fXyBfX3ZvbGF0
aWxlX18oICJ1ZDJcbiIgIlx0LndvcmQgJWMwXG4iICJcdC5sb25nICVjMVxuIiA6IDogImkiICg3
ODMpLCAiaSIgKCIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L25ldGRldmlj
ZS5oIikpOwogICAgICAgIGxpc3RfZGVsKCZkZXYtPnBvbGxfbGlzdCk7CiAgICAgICAgY2xlYXJf
Yml0KF9fTElOS19TVEFURV9SWF9TQ0hFRCwgJmRldi0+c3RhdGUpOwogICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAi
Y2MiKTsKfQoKCgpleHRlcm4gdm9pZCBldGhlcl9zZXR1cF9SNzU3ODg5Zjcoc3RydWN0IG5ldF9k
ZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIGZkZGlfc2V0dXBfUjFjYmIxYTkwKHN0cnVjdCBuZXRf
ZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCB0cl9zZXR1cF9SMjFkMjI1ZGIoc3RydWN0IG5ldF9k
ZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIGZjX3NldHVwX1JhYzEwMzA3YihzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgZmNfZnJlZWRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
KTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfbmV0ZGV2X1JmODFiYTZlYyhzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2KTsKZXh0ZXJuIHZvaWQgdW5yZWdpc3Rlcl9uZXRkZXZfUmZiNGViYWQ5KHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYpOwoKZXh0ZXJuIHZvaWQgZGV2X21jX3VwbG9hZF9SMWM5MDY4ZTYoc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiBpbnQgZGV2X21jX2RlbGV0ZV9SNDY1ZWM2YmIo
c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqYWRkciwgaW50IGFsZW4sIGludCBhbGwpOwpl
eHRlcm4gaW50IGRldl9tY19hZGRfUjBkYjQwZDQzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZv
aWQgKmFkZHIsIGludCBhbGVuLCBpbnQgbmV3b25seSk7CmV4dGVybiB2b2lkIGRldl9tY19kaXNj
YXJkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBkZXZfc2V0X3Byb21pc2N1
aXR5X1I3NGIzYjA0ZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaW5jKTsKZXh0ZXJuIHZv
aWQgZGV2X3NldF9hbGxtdWx0aV9SNDJjZTE3ZjMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50
IGluYyk7CmV4dGVybiB2b2lkIG5ldGRldl9zdGF0ZV9jaGFuZ2VfUmE1ODY0MjAzKHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYpOwoKZXh0ZXJuIHZvaWQgZGV2X2xvYWRfUmE5MGZkM2I3KGNvbnN0IGNo
YXIgKm5hbWUpOwpleHRlcm4gdm9pZCBkZXZfbWNhc3RfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBu
ZXRkZXZfcmVnaXN0ZXJfZmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAoKnN0aW11bCko
c3RydWN0IG5ldF9kZXZpY2UgKmRldikpOwpleHRlcm4gdm9pZCBuZXRkZXZfdW5yZWdpc3Rlcl9m
YyhpbnQgYml0KTsKZXh0ZXJuIGludCBuZXRkZXZfbWF4X2JhY2tsb2c7CmV4dGVybiBpbnQgd2Vp
Z2h0X3A7CmV4dGVybiB1bnNpZ25lZCBsb25nIG5ldGRldl9mY194b2ZmOwpleHRlcm4gYXRvbWlj
X3QgbmV0ZGV2X2Ryb3BwaW5nOwpleHRlcm4gaW50IG5ldGRldl9zZXRfbWFzdGVyX1IyYTA3Mjg3
ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqbWFzdGVyKTsKZXh0
ZXJuIHN0cnVjdCBza19idWZmICogc2tiX2NoZWNrc3VtX2hlbHBfUjA0MThhOTUwKHN0cnVjdCBz
a19idWZmICpza2IpOwojIDEzMCAiaC9za2RydjFzdC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oIiAxCiMgMzAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaCIKZXh0ZXJuIGludCBldGhf
aGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZSwgdm9pZCAq
ZGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2FkZHIsIHVu
c2lnbmVkIGxlbik7CmV4dGVybiBpbnQgZXRoX3JlYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZm
ICpza2IpOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgZXRoX3R5cGVfdHJhbnNfUmU5MjQ3NTkyKHN0
cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBl
dGhfaGVhZGVyX2NhY2hlX3VwZGF0ZShzdHJ1Y3QgaGhfY2FjaGUgKmhoLCBzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyICogaGFkZHIpOwpleHRlcm4gaW50IGV0aF9oZWFkZXJfY2FjaGUoc3Ry
dWN0IG5laWdoYm91ciAqbmVpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGhoX2NhY2hlICpoaCk7CmV4dGVybiBpbnQgZXRoX2hlYWRlcl9wYXJzZShz
dHJ1Y3Qgc2tfYnVmZiAqc2tiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgKmhhZGRyKTsKZXh0ZXJuIHN0cnVjdCBuZXRfZGV2aWNlICppbml0
X2V0aGVyZGV2X1I4NzBkOGRjMChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc2l6ZW9mX3By
aXYpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX2V0aGVyZGV2X1I1ZDY5NDZjZShp
bnQgc2l6ZW9mX3ByaXYpOwoKc3RhdGljIGlubGluZSB2b2lkIGV0aF9jb3B5X2FuZF9zdW0gKHN0
cnVjdCBza19idWZmICpkZXN0LCB1bnNpZ25lZCBjaGFyICpzcmMsIGludCBsZW4sIGludCBiYXNl
KQp7CiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKGxlbikgPyBfX2NvbnN0YW50X21lbWNw
eSgoZGVzdC0+ZGF0YSksKHNyYyksKGxlbikpIDogX19tZW1jcHkoKGRlc3QtPmRhdGEpLChzcmMp
LChsZW4pKSk7Cn0KIyA1OSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9l
dGhlcmRldmljZS5oIgpzdGF0aWMgaW5saW5lIGludCBpc192YWxpZF9ldGhlcl9hZGRyKCB1OCAq
YWRkciApCnsKICAgICAgICBjb25zdCBjaGFyIHphZGRyWzZdID0gezAsfTsKCiAgICAgICAgcmV0
dXJuICEoYWRkclswXSYxKSAmJiBfX2J1aWx0aW5fbWVtY21wKCBhZGRyLCB6YWRkciwgNik7Cn0K
IyAxMzEgImgvc2tkcnYxc3QuaCIgMgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvYXNtL3VhY2Nlc3MuaCIgMQojIDM1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2FzbS91YWNjZXNzLmgiCmV4dGVybiBpbnQgX192ZXJpZnlfd3JpdGVfUjIwM2FmYmViKGNv
bnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CiMgNjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKc3RhdGljIGlubGluZSBpbnQgdmVyaWZ5X2FyZWEoaW50
IHR5cGUsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpCnsKICAgICAgICBy
ZXR1cm4gKCh7IHVuc2lnbmVkIGxvbmcgZmxhZyxzdW07IGFzbSgiYWRkbCAlMywlMSA7IHNiYmwg
JTAsJTA7IGNtcGwgJTEsJTQ7IHNiYmwgJDAsJTAiIDoiPSZyIiAoZmxhZyksICI9ciIgKHN1bSkg
OiIxIiAoYWRkciksImciICgoaW50KShzaXplKSksImciIChnZXRfY3VycmVudCgpLT5hZGRyX2xp
bWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSA/IDAgOiAtMTQ7Cn0KIyA4MSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxl
X2VudHJ5CnsKICAgICAgICB1bnNpZ25lZCBsb25nIGluc24sIGZpeHVwOwp9OwoKCmV4dGVybiB1
bnNpZ25lZCBsb25nIHNlYXJjaF9leGNlcHRpb25fdGFibGUodW5zaWduZWQgbG9uZyk7CiMgMTA1
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCmV4dGVybiB2
b2lkIF9fZ2V0X3VzZXJfMSh2b2lkKTsKZXh0ZXJuIHZvaWQgX19nZXRfdXNlcl8yKHZvaWQpOwpl
eHRlcm4gdm9pZCBfX2dldF91c2VyXzQodm9pZCk7CiMgMTI3ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL2FzbS91YWNjZXNzLmgiCmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfMSh2b2lk
KTsKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl8yKHZvaWQpOwpleHRlcm4gdm9pZCBfX3B1dF91c2Vy
XzQodm9pZCk7CmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfOCh2b2lkKTsKCmV4dGVybiB2b2lkIF9f
cHV0X3VzZXJfYmFkKHZvaWQpOwojIDE4OCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9hc20vdWFjY2Vzcy5oIgpzdHJ1Y3QgX19sYXJnZV9zdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIGJ1
ZlsxMDBdOyB9OwojIDIyMCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9hc20vdWFj
Y2Vzcy5oIgpleHRlcm4gbG9uZyBfX2dldF91c2VyX2JhZCh2b2lkKTsKIyAzMDggIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKc3RhdGljIGlubGluZSB1bnNp
Z25lZCBsb25nCl9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25z
dCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBf
X2QxOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIgltb3ZsICUzLCUw
XG4iICIxOglyZXA7IG1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAi
MzoJbGVhIDAoJTMsJTAsNCksJTBcbiIgIjQ6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIg
Igl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglw
b3BsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUs
XCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIg
Ii5wcmV2aW91cyIgOiAiPSZjIihuKSwgIj0mRCIgKF9fZDApLCAiPSZTIiAoX19kMSkgOiAiciIo
biAmIDMpLCAiMCIobiAvIDQpLCAiMSIodG8pLCAiMiIoZnJvbSkgOiAibWVtb3J5Iik7IH0gd2hp
bGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcK
X19nZW5lcmljX2NvcHlfdG9fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9t
LCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBfX2FzbV9f
IF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIgltb3ZsICUzLCUwXG4iICIxOglyZXA7
IG1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJbGVhIDAoJTMs
JTAsNCksJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJs
ZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiwyYlxu
IiAiLnByZXZpb3VzIiA6ICI9JmMiKG4pLCAiPSZEIiAoX19kMCksICI9JlMiIChfX2QxKSA6ICJy
IihuICYgMyksICIwIihuIC8gNCksICIxIih0byksICIyIihmcm9tKSA6ICJtZW1vcnkiKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG47Cn0KIyA1NDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKdW5zaWduZWQgbG9uZyBfX2dlbmVyaWNfY29weV90
b191c2VyX1JkNTIzZmRkMyh2b2lkICosIGNvbnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CnVu
c2lnbmVkIGxvbmcgX19nZW5lcmljX2NvcHlfZnJvbV91c2VyX1IxMTYxNjZhYSh2b2lkICosIGNv
bnN0IHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcK
X19jb25zdGFudF9jb3B5X3RvX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2ln
bmVkIGxvbmcgbikKewogICAgICAgIHByZWZldGNoKGZyb20pOwogICAgICAgIGlmICgoKHsgdW5z
aWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAl
MSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiICh0byksImci
ICgoaW50KShuKSksImciIChnZXRfY3VycmVudCgpLT5hZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9
KSA9PSAwKSkKICAgICAgICAgICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAm
IDMpIHsgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIx
OlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMjoJc2hsICQyLCUwXG4iICIJam1wIDFi
XG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24g
NFxuIiAiCS5sb25nIDBiLDJiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDAp
LCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIp
OyBicmVhazsgY2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIg
IjE6CW1vdnNiXG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQy
LCUwXG4iICI0OglpbmNsICUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9u
IF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxv
bmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChf
X2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBj
YXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dc
biIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6
CWFkZGwgJDIsJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90
YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0
YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDog
IjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzog
X19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJ
bW92c2JcbiIgIjM6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICI0OglzaGwgJDIsJTBc
biIgIjU6CWFkZGwgJDIsJTBcbiIgIjY6CWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91
c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcg
MGIsNGJcbiIgIgkubG9uZyAxYiw1YlxuIiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDog
Ij1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byks
ICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICByZXR1
cm4gbjsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV9mcm9t
X3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAg
ICAgIGlmICgoKHsgdW5zaWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2Ji
bCAlMCwlMDsgY21wbCAlMSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3Vt
KSA6IjEiIChmcm9tKSwiZyIgKChpbnQpKG4pKSwiZyIgKGdldF9jdXJyZW50KCktPmFkZHJfbGlt
aXQuc2VnKSk7IGZsYWc7IH0pID09IDApKQogICAgICAgICAgICAgICAgZG8geyBpbnQgX19kMCwg
X19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6
CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIyOglwdXNo
bCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rv
c2xcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWptcCAx
YlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWdu
IDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2Qw
KSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnki
KTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4i
ICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hs
ICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9z
bFxuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBc
biIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVl
YXgsJSVlYXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1w
IDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxp
Z24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAi
PWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwg
IjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9f
KCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAs
XCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwl
JWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3Bs
ICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiNDoJcHVz
aGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4
XG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBf
X2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25n
IDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19k
MSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2Fz
ZSAzOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4i
ICIyOgltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXB1c2hs
ICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9z
bFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAi
CXNobCAkMiwlMFxuIiAiCWFkZGwgJDMsJTBcbiIgIglqbXAgMmJcbiIgIjU6CXB1c2hsICUlZWF4
XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUl
ZWF4XG4iICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNjoJcHVzaGwgJSVlYXhcbiIgIgl4
b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJaW5jbCAlMFxu
IiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4i
ICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5sb25nIDFiLDViXG4iICIJLmxvbmcg
MmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2Qx
KSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IH0g
d2hpbGUgKDApOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgobikpID8gX19jb25zdGFudF9jX2FuZF9j
b3VudF9tZW1zZXQoKCh0bykpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgo
bikpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCh0bykpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25l
ZCBjaGFyKSgwKSkpLCgobikpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKG4pKSA/IF9fbWVt
c2V0X2dlbmVyaWMoKCgodG8pKSksKCgoMCkpKSwoKChuKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMo
KCh0bykpLCgoMCkpLCgobikpKSkpOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGxvbmcKX19jb25zdGFudF9jb3B5X3RvX3VzZXJfbm9jaGVjayh2b2lkICp0bywg
Y29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19k
MCwgX19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXygg
IjA6CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIyOglz
aGwgJDIsJTBcbiIgIglqbXAgMWJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJs
ZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsMmJcbiIgIi5wcmV2aW91cyIgOiAi
PWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwg
IjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9f
KCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAs
XCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5w
cmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJ
LmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9
JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6
ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7
IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIg
IjM6CXNobCAkMiwlMFxuIiAiNDoJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3Vz
XG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAw
YiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9f
ZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9y
eSIpOyBicmVhazsgY2FzZSAzOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xc
biIgIjE6CW1vdnN3XG4iICIyOgltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4
XCJcbiIgIjQ6CXNobCAkMiwlMFxuIiAiNToJYWRkbCAkMiwlMFxuIiAiNjoJaW5jbCAlMFxuIiAi
CWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJ
LmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5sb25nIDFiLDViXG4iICIJLmxvbmcgMmIs
NmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6
ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IH0gd2hp
bGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcK
X19jb25zdGFudF9jb3B5X2Zyb21fdXNlcl9ub2NoZWNrKHZvaWQgKnRvLCBjb25zdCB2b2lkICpm
cm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBzd2l0
Y2ggKG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3Zz
bFxuIiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXB1c2hsICUwXG4iICIJ
cHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9zbFxuIiAiCXBv
cGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJl
dmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5s
b25nIDBiLDJiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAo
X19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsg
Y2FzZSAxOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNi
XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIgIglw
dXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rv
c2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWluY2wg
JTBcbiIgIglqbXAgMmJcbiIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxu
IiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCWluY2wgJTBcbiIgIglqbXAgMmJcbiIgIi5w
cmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJ
LmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9
JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6
ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMjogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7
IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIg
IjM6CXB1c2hsICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJ
cmVwOyBzdG9zbFxuIiAiCXN0b3N3XG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglz
aGwgJDIsJTBcbiIgIglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxu
IiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglhZGRs
ICQyLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUs
XCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIg
Ii5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihm
cm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDM6IF9fYXNt
X18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6CW1vdnNi
XG4iICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJcHVzaGwgJTBcbiIgIglw
dXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rv
c3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJc2hsICQyLCUw
XG4iICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNToJcHVzaGwgJSVlYXhcbiIgIgl4b3Js
ICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglh
ZGRsICQzLCUwXG4iICIJam1wIDJiXG4iICI2OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgs
JSVlYXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1wIDNi
XG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24g
NFxuIiAiCS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAi
LnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZy
b20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7
CiAgICAgICAgcmV0dXJuIG47Cn0KIyA1OTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvYXNtL3VhY2Nlc3MuaCIKbG9uZyBzdHJuY3B5X2Zyb21fdXNlcl9SMjQ0MjhiZTUoY2hhciAq
ZHN0LCBjb25zdCBjaGFyICpzcmMsIGxvbmcgY291bnQpOwpsb25nIF9fc3RybmNweV9mcm9tX3Vz
ZXJfUmMwMDNjNjM3KGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBsb25nIGNvdW50KTsKCmxv
bmcgc3Rybmxlbl91c2VyX1JiY2MzMDhiYihjb25zdCBjaGFyICpzdHIsIGxvbmcgbik7CnVuc2ln
bmVkIGxvbmcgY2xlYXJfdXNlcl9SN2FlYzkwODkodm9pZCAqbWVtLCB1bnNpZ25lZCBsb25nIGxl
bik7CnVuc2lnbmVkIGxvbmcgX19jbGVhcl91c2VyX1JmMzM0MTI2OCh2b2lkICptZW0sIHVuc2ln
bmVkIGxvbmcgbGVuKTsKIyAxMzUgImgvc2tkcnYxc3QuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbmV0L2NoZWNrc3VtLmgiIDEKIyAzMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9uZXQvY2hlY2tzdW0uaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL25ldC9pcC5oIiAxCiMgMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbmV0L2lwLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9pcC5oIiAxCiMgOTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaXAu
aCIKc3RydWN0IGlwX29wdGlvbnMgewogIF9fdTMyIGZhZGRyOwogIHVuc2lnbmVkIGNoYXIgb3B0
bGVuOwogIHVuc2lnbmVkIGNoYXIgc3JyOwogIHVuc2lnbmVkIGNoYXIgcnI7CiAgdW5zaWduZWQg
Y2hhciB0czsKICB1bnNpZ25lZCBjaGFyIGlzX3NldGJ5dXNlcjoxLAogICAgICAgICAgICAgICAg
aXNfZGF0YToxLAogICAgICAgICAgICAgICAgaXNfc3RyaWN0cm91dGU6MSwKICAgICAgICAgICAg
ICAgIHNycl9pc19oaXQ6MSwKICAgICAgICAgICAgICAgIGlzX2NoYW5nZWQ6MSwKICAgICAgICAg
ICAgICAgIHJyX25lZWRhZGRyOjEsCiAgICAgICAgICAgICAgICB0c19uZWVkdGltZToxLAogICAg
ICAgICAgICAgICAgdHNfbmVlZGFkZHI6MTsKICB1bnNpZ25lZCBjaGFyIHJvdXRlcl9hbGVydDsK
ICB1bnNpZ25lZCBjaGFyIF9fcGFkMTsKICB1bnNpZ25lZCBjaGFyIF9fcGFkMjsKICB1bnNpZ25l
ZCBjaGFyIF9fZGF0YVswXTsKfTsKCgoKCnN0cnVjdCBpcGhkciB7CgogICAgICAgIF9fdTggaWhs
OjQsCiAgICAgICAgICAgICAgICB2ZXJzaW9uOjQ7CgoKCgoKCiAgICAgICAgX191OCB0b3M7CiAg
ICAgICAgX191MTYgdG90X2xlbjsKICAgICAgICBfX3UxNiBpZDsKICAgICAgICBfX3UxNiBmcmFn
X29mZjsKICAgICAgICBfX3U4IHR0bDsKICAgICAgICBfX3U4IHByb3RvY29sOwogICAgICAgIF9f
dTE2IGNoZWNrOwogICAgICAgIF9fdTMyIHNhZGRyOwogICAgICAgIF9fdTMyIGRhZGRyOwoKfTsK
IyAyOSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvaXAuaCIgMgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaCIgMQoKCgoK
CnN0cnVjdCBpcHY0X2RldmNvbmYKewogICAgICAgIGludCBhY2NlcHRfcmVkaXJlY3RzOwogICAg
ICAgIGludCBzZW5kX3JlZGlyZWN0czsKICAgICAgICBpbnQgc2VjdXJlX3JlZGlyZWN0czsKICAg
ICAgICBpbnQgc2hhcmVkX21lZGlhOwogICAgICAgIGludCBhY2NlcHRfc291cmNlX3JvdXRlOwog
ICAgICAgIGludCBycF9maWx0ZXI7CiAgICAgICAgaW50IHByb3h5X2FycDsKICAgICAgICBpbnQg
Ym9vdHBfcmVsYXk7CiAgICAgICAgaW50IGxvZ19tYXJ0aWFuczsKICAgICAgICBpbnQgZm9yd2Fy
ZGluZzsKICAgICAgICBpbnQgbWNfZm9yd2FyZGluZzsKICAgICAgICBpbnQgdGFnOwogICAgICAg
IGludCBhcnBfZmlsdGVyOwogICAgICAgIGludCBtZWRpdW1faWQ7CiAgICAgICAgdm9pZCAqc3lz
Y3RsOwp9OwoKZXh0ZXJuIHN0cnVjdCBpcHY0X2RldmNvbmYgaXB2NF9kZXZjb25mOwoKc3RydWN0
IGluX2RldmljZQp7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKICAgICAgICBhdG9t
aWNfdCByZWZjbnQ7CiAgICAgICAgcndsb2NrX3QgbG9jazsKICAgICAgICBpbnQgZGVhZDsKICAg
ICAgICBzdHJ1Y3QgaW5faWZhZGRyICppZmFfbGlzdDsKICAgICAgICBzdHJ1Y3QgaXBfbWNfbGlz
dCAqbWNfbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIG1yX3YxX3NlZW47CiAgICAgICAgc3Ry
dWN0IG5laWdoX3Bhcm1zICphcnBfcGFybXM7CiAgICAgICAgc3RydWN0IGlwdjRfZGV2Y29uZiBj
bmY7Cn07CiMgNjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaW5ldGRl
dmljZS5oIgpzdHJ1Y3QgaW5faWZhZGRyCnsKICAgICAgICBzdHJ1Y3QgaW5faWZhZGRyICppZmFf
bmV4dDsKICAgICAgICBzdHJ1Y3QgaW5fZGV2aWNlICppZmFfZGV2OwogICAgICAgIHUzMiBpZmFf
bG9jYWw7CiAgICAgICAgdTMyIGlmYV9hZGRyZXNzOwogICAgICAgIHUzMiBpZmFfbWFzazsKICAg
ICAgICB1MzIgaWZhX2Jyb2FkY2FzdDsKICAgICAgICB1MzIgaWZhX2FueWNhc3Q7CiAgICAgICAg
dW5zaWduZWQgY2hhciBpZmFfc2NvcGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBpZmFfZmxhZ3M7
CiAgICAgICAgdW5zaWduZWQgY2hhciBpZmFfcHJlZml4bGVuOwogICAgICAgIGNoYXIgaWZhX2xh
YmVsWzE2XTsKfTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfaW5ldGFkZHJfbm90aWZpZXJfUjNlNDVl
OWZmKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfaW5l
dGFkZHJfbm90aWZpZXJfUjc2MGI0MzdhKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwoKZXh0
ZXJuIHN0cnVjdCBuZXRfZGV2aWNlICppcF9kZXZfZmluZF9SMTI1MTRiYzYodTMyIGFkZHIpOwpl
eHRlcm4gaW50IGluZXRfYWRkcl9vbmxpbmsoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCB1MzIg
YSwgdTMyIGIpOwpleHRlcm4gaW50IGRldmluZXRfaW9jdGxfUjg2OWM4MGVhKHVuc2lnbmVkIGlu
dCBjbWQsIHZvaWQgKik7CmV4dGVybiB2b2lkIGRldmluZXRfaW5pdCh2b2lkKTsKZXh0ZXJuIHN0
cnVjdCBpbl9kZXZpY2UgKmluZXRkZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZXh0
ZXJuIHN0cnVjdCBpbl9kZXZpY2UgKmluZXRkZXZfYnlfaW5kZXhfUjFjZmNlOTQzKGludCk7CmV4
dGVybiB1MzIgaW5ldF9zZWxlY3RfYWRkcl9SNmJhNDAzYjIoY29uc3Qgc3RydWN0IG5ldF9kZXZp
Y2UgKmRldiwgdTMyIGRzdCwgaW50IHNjb3BlKTsKZXh0ZXJuIHN0cnVjdCBpbl9pZmFkZHIgKmlu
ZXRfaWZhX2J5cHJlZml4KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgdTMyIHByZWZpeCwgdTMy
IG1hc2spOwpleHRlcm4gdm9pZCBpbmV0X2ZvcndhcmRfY2hhbmdlKHZvaWQpOwoKc3RhdGljIF9f
aW5saW5lX18gaW50IGluZXRfaWZhX21hdGNoKHUzMiBhZGRyLCBzdHJ1Y3QgaW5faWZhZGRyICpp
ZmEpCnsKICAgICAgICByZXR1cm4gISgoYWRkcl5pZmEtPmlmYV9hZGRyZXNzKSZpZmEtPmlmYV9t
YXNrKTsKfQoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBiYWRfbWFzayh1MzIgbWFzaywgdTMy
IGFkZHIpCnsKICAgICAgICBpZiAoYWRkciAmIChtYXNrID0gfm1hc2spKQogICAgICAgICAgICAg
ICAgcmV0dXJuIDE7CiAgICAgICAgbWFzayA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIp
KChtYXNrKSkpID8gKHsgX191MzIgX194ID0gKCgobWFzaykpKTsgKChfX3UzMikoICgoKF9fdTMy
KShfX3gpICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKF9feCkgJiAo
X191MzIpMHgwMDAwZmYwMFVMKSA8PCA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDBm
ZjAwMDBVTCkgPj4gOCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+
IDI0KSApKTsgfSkgOiBfX2Zzd2FiMzIoKChtYXNrKSkpKTsKICAgICAgICBpZiAobWFzayAmICht
YXNrKzEpKQogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgcmV0dXJuIDA7Cn0KIyAx
MTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oIgpl
eHRlcm4gcndsb2NrX3QgaW5ldGRldl9sb2NrX1I4YzNmMGVmNDsKCgpzdGF0aWMgX19pbmxpbmVf
XyBzdHJ1Y3QgaW5fZGV2aWNlICoKaW5fZGV2X2dldChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2KQp7CiAgICAgICAgc3RydWN0IGluX2RldmljZSAqaW5fZGV2OwoKICAgICAgICAodm9pZCko
JmluZXRkZXZfbG9ja19SOGMzZjBlZjQpOwogICAgICAgIGluX2RldiA9IGRldi0+aXBfcHRyOwog
ICAgICAgIGlmIChpbl9kZXYpCiAgICAgICAgICAgICAgICBhdG9taWNfaW5jKCZpbl9kZXYtPnJl
ZmNudCk7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIHJldHVybiBpbl9kZXY7Cn0K
CnN0YXRpYyBfX2lubGluZV9fIHN0cnVjdCBpbl9kZXZpY2UgKgpfX2luX2Rldl9nZXQoY29uc3Qg
c3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHJldHVybiAoc3RydWN0IGluX2Rldmlj
ZSopZGV2LT5pcF9wdHI7Cn0KCmV4dGVybiB2b2lkIGluX2Rldl9maW5pc2hfZGVzdHJveV9SOTZm
ZTA2ZDAoc3RydWN0IGluX2RldmljZSAqaWRldik7CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCmlu
X2Rldl9wdXQoc3RydWN0IGluX2RldmljZSAqaWRldikKewogICAgICAgIGlmIChhdG9taWNfZGVj
X2FuZF90ZXN0KCZpZGV2LT5yZWZjbnQpKQogICAgICAgICAgICAgICAgaW5fZGV2X2ZpbmlzaF9k
ZXN0cm95X1I5NmZlMDZkMChpZGV2KTsKfQoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyBfX3UzMiBp
bmV0X21ha2VfbWFzayhpbnQgbG9nbWFzaykKewogICAgICAgIGlmIChsb2dtYXNrKQogICAgICAg
ICAgICAgICAgcmV0dXJuIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCh+KCgxPDwoMzIt
bG9nbWFzaykpLTEpKSkpID8gKHsgX191MzIgX194ID0gKCgofigoMTw8KDMyLWxvZ21hc2spKS0x
KSkpKTsgKChfX3UzMikoICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwg
MjQpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCA4KSB8ICgoKF9f
dTMyKShfX3gpICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gOCkgfCAoKChfX3UzMikoX194KSAm
IChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSApKTsgfSkgOiBfX2Zzd2FiMzIoKCh+KCgxPDwo
MzItbG9nbWFzaykpLTEpKSkpKTsKICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIF9faW5saW5l
X18gaW50IGluZXRfbWFza19sZW4oX191MzIgbWFzaykKewogICAgICAgIGlmICghKG1hc2sgPSAo
X19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMyKSgobWFzaykpKSA/ICh7IF9fdTMyIF9feCA9ICgo
KG1hc2spKSk7ICgoX191MzIpKCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDAwMGZmVUwp
IDw8IDI0KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgOCkgfCAo
KChfX3UzMikoX194KSAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+IDgpIHwgKCgoX191MzIpKF9f
eCkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSk7IH0pIDogX19mc3dhYjMyKCgobWFz
aykpKSkpKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgcmV0dXJuIDMyIC0gZmZ6
KH5tYXNrKTsKfQojIDMxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9pcC5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pbl9yb3V0ZS5o
IiAxCiMgMzIgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2lwLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9yb3V0ZS5oIiAxCiMgMjggIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L3JvdXRlLmgiCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvZHN0LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9uZXQvZHN0LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9uZXQvbmVpZ2hib3VyLmgiIDEKIyA1MyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9uZXQvbmVpZ2hib3VyLmgiCnN0cnVjdCBuZWlnaF9wYXJtcwp7CiAgICAgICAgc3Ry
dWN0IG5laWdoX3Bhcm1zICpuZXh0OwogICAgICAgIGludCAoKm5laWdoX3NldHVwKShzdHJ1Y3Qg
bmVpZ2hib3VyICopOwogICAgICAgIHN0cnVjdCBuZWlnaF90YWJsZSAqdGJsOwogICAgICAgIGlu
dCBlbnRyaWVzOwogICAgICAgIHZvaWQgKnByaXY7CgogICAgICAgIHZvaWQgKnN5c2N0bF90YWJs
ZTsKCiAgICAgICAgaW50IGJhc2VfcmVhY2hhYmxlX3RpbWU7CiAgICAgICAgaW50IHJldHJhbnNf
dGltZTsKICAgICAgICBpbnQgZ2Nfc3RhbGV0aW1lOwogICAgICAgIGludCByZWFjaGFibGVfdGlt
ZTsKICAgICAgICBpbnQgZGVsYXlfcHJvYmVfdGltZTsKCiAgICAgICAgaW50IHF1ZXVlX2xlbjsK
ICAgICAgICBpbnQgdWNhc3RfcHJvYmVzOwogICAgICAgIGludCBhcHBfcHJvYmVzOwogICAgICAg
IGludCBtY2FzdF9wcm9iZXM7CiAgICAgICAgaW50IGFueWNhc3RfZGVsYXk7CiAgICAgICAgaW50
IHByb3h5X2RlbGF5OwogICAgICAgIGludCBwcm94eV9xbGVuOwogICAgICAgIGludCBsb2NrdGlt
ZTsKfTsKCnN0cnVjdCBuZWlnaF9zdGF0aXN0aWNzCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGFs
bG9jczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlc19mYWlsZWQ7CiAgICAgICAgdW5zaWduZWQg
bG9uZyByY3ZfcHJvYmVzX21jYXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmN2X3Byb2Jlc191
Y2FzdDsKfTsKCnN0cnVjdCBuZWlnaGJvdXIKewogICAgICAgIHN0cnVjdCBuZWlnaGJvdXIgKm5l
eHQ7CiAgICAgICAgc3RydWN0IG5laWdoX3RhYmxlICp0Ymw7CiAgICAgICAgc3RydWN0IG5laWdo
X3Bhcm1zICpwYXJtczsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogICAgICAgIHVu
c2lnbmVkIGxvbmcgdXNlZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNvbmZpcm1lZDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHVwZGF0ZWQ7CiAgICAgICAgX191OCBmbGFnczsKICAgICAgICBfX3U4
IG51ZF9zdGF0ZTsKICAgICAgICBfX3U4IHR5cGU7CiAgICAgICAgX191OCBkZWFkOwogICAgICAg
IGF0b21pY190IHByb2JlczsKICAgICAgICByd2xvY2tfdCBsb2NrOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgaGFbKDggK3NpemVvZih1bnNpZ25lZCBsb25nKS0xKSZ+KHNpemVvZih1bnNpZ25lZCBs
b25nKS0xKV07CiAgICAgICAgc3RydWN0IGhoX2NhY2hlICpoaDsKICAgICAgICBhdG9taWNfdCBy
ZWZjbnQ7CiAgICAgICAgaW50ICgqb3V0cHV0KShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKICAgICAg
ICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGFycF9xdWV1ZTsKICAgICAgICBzdHJ1Y3QgdGltZXJfbGlz
dCB0aW1lcjsKICAgICAgICBzdHJ1Y3QgbmVpZ2hfb3BzICpvcHM7CiAgICAgICAgdTggcHJpbWFy
eV9rZXlbMF07Cn07CgpzdHJ1Y3QgbmVpZ2hfb3BzCnsKICAgICAgICBpbnQgZmFtaWx5OwogICAg
ICAgIHZvaWQgKCpkZXN0cnVjdG9yKShzdHJ1Y3QgbmVpZ2hib3VyICopOwogICAgICAgIHZvaWQg
KCpzb2xpY2l0KShzdHJ1Y3QgbmVpZ2hib3VyICosIHN0cnVjdCBza19idWZmKik7CiAgICAgICAg
dm9pZCAoKmVycm9yX3JlcG9ydCkoc3RydWN0IG5laWdoYm91ciAqLCBzdHJ1Y3Qgc2tfYnVmZiop
OwogICAgICAgIGludCAoKm91dHB1dCkoc3RydWN0IHNrX2J1ZmYqKTsKICAgICAgICBpbnQgKCpj
b25uZWN0ZWRfb3V0cHV0KShzdHJ1Y3Qgc2tfYnVmZiopOwogICAgICAgIGludCAoKmhoX291dHB1
dCkoc3RydWN0IHNrX2J1ZmYqKTsKICAgICAgICBpbnQgKCpxdWV1ZV94bWl0KShzdHJ1Y3Qgc2tf
YnVmZiopOwp9OwoKc3RydWN0IHBuZWlnaF9lbnRyeQp7CiAgICAgICAgc3RydWN0IHBuZWlnaF9l
bnRyeSAqbmV4dDsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogICAgICAgIHU4IGtl
eVswXTsKfTsKIyAxMzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L25laWdo
Ym91ci5oIgpzdHJ1Y3QgbmVpZ2hfdGFibGUKewogICAgICAgIHN0cnVjdCBuZWlnaF90YWJsZSAq
bmV4dDsKICAgICAgICBpbnQgZmFtaWx5OwogICAgICAgIGludCBlbnRyeV9zaXplOwogICAgICAg
IGludCBrZXlfbGVuOwogICAgICAgIF9fdTMyICgqaGFzaCkoY29uc3Qgdm9pZCAqcGtleSwgY29u
c3Qgc3RydWN0IG5ldF9kZXZpY2UgKik7CiAgICAgICAgaW50ICgqY29uc3RydWN0b3IpKHN0cnVj
dCBuZWlnaGJvdXIgKik7CiAgICAgICAgaW50ICgqcGNvbnN0cnVjdG9yKShzdHJ1Y3QgcG5laWdo
X2VudHJ5ICopOwogICAgICAgIHZvaWQgKCpwZGVzdHJ1Y3Rvcikoc3RydWN0IHBuZWlnaF9lbnRy
eSAqKTsKICAgICAgICB2b2lkICgqcHJveHlfcmVkbykoc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAg
ICAgICAgY2hhciAqaWQ7CiAgICAgICAgc3RydWN0IG5laWdoX3Bhcm1zIHBhcm1zOwoKICAgICAg
ICBpbnQgZ2NfaW50ZXJ2YWw7CiAgICAgICAgaW50IGdjX3RocmVzaDE7CiAgICAgICAgaW50IGdj
X3RocmVzaDI7CiAgICAgICAgaW50IGdjX3RocmVzaDM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBs
YXN0X2ZsdXNoOwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IGdjX3RpbWVyOwogICAgICAgIHN0
cnVjdCB0aW1lcl9saXN0IHByb3h5X3RpbWVyOwogICAgICAgIHN0cnVjdCBza19idWZmX2hlYWQg
cHJveHlfcXVldWU7CiAgICAgICAgaW50IGVudHJpZXM7CiAgICAgICAgcndsb2NrX3QgbG9jazsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGxhc3RfcmFuZDsKICAgICAgICBzdHJ1Y3QgbmVpZ2hfcGFy
bXMgKnBhcm1zX2xpc3Q7CiAgICAgICAga21lbV9jYWNoZV90ICprbWVtX2NhY2hlcDsKICAgICAg
ICBzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgZ2NfdGFzazsKICAgICAgICBzdHJ1Y3QgbmVpZ2hfc3Rh
dGlzdGljcyBzdGF0czsKICAgICAgICBzdHJ1Y3QgbmVpZ2hib3VyICpoYXNoX2J1Y2tldHNbMHgx
RiArMV07CiAgICAgICAgc3RydWN0IHBuZWlnaF9lbnRyeSAqcGhhc2hfYnVja2V0c1sweEYgKzFd
Owp9OwoKZXh0ZXJuIHZvaWQgbmVpZ2hfdGFibGVfaW5pdF9SZTUwZTQ5OTUoc3RydWN0IG5laWdo
X3RhYmxlICp0YmwpOwpleHRlcm4gaW50IG5laWdoX3RhYmxlX2NsZWFyX1IwMzliYTkzYyhzdHJ1
Y3QgbmVpZ2hfdGFibGUgKnRibCk7CmV4dGVybiBzdHJ1Y3QgbmVpZ2hib3VyICogbmVpZ2hfbG9v
a3VwX1JjMDhiNmUwMyhzdHJ1Y3QgbmVpZ2hfdGFibGUgKnRibCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGtleSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7
CmV4dGVybiBzdHJ1Y3QgbmVpZ2hib3VyICogbmVpZ2hfY3JlYXRlX1JjOTY1YjU0NihzdHJ1Y3Qg
bmVpZ2hfdGFibGUgKnRibCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqcGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIG5laWdoX2Rl
c3Ryb3lfUmM1MTBhNDA3KHN0cnVjdCBuZWlnaGJvdXIgKm5laWdoKTsKZXh0ZXJuIGludCBfX25l
aWdoX2V2ZW50X3NlbmRfUmFmNWNiNTQ5KHN0cnVjdCBuZWlnaGJvdXIgKm5laWdoLCBzdHJ1Y3Qg
c2tfYnVmZiAqc2tiKTsKZXh0ZXJuIGludCBuZWlnaF91cGRhdGVfUjAzZWZmY2U4KHN0cnVjdCBu
ZWlnaGJvdXIgKm5laWdoLCBjb25zdCB1OCAqbGxhZGRyLCB1OCBuZXcsIGludCBvdmVycmlkZSwg
aW50IGFycCk7CmV4dGVybiBpbnQgbmVpZ2hfaWZkb3duX1JjNjNiMTRhNyhzdHJ1Y3QgbmVpZ2hf
dGFibGUgKnRibCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiBpbnQgbmVpZ2hfcmVz
b2x2ZV9vdXRwdXRfUjQyNWVhY2YxKHN0cnVjdCBza19idWZmICpza2IpOwpleHRlcm4gaW50IG5l
aWdoX2Nvbm5lY3RlZF9vdXRwdXRfUjhmODVkNDkzKHN0cnVjdCBza19idWZmICpza2IpOwpleHRl
cm4gaW50IG5laWdoX2NvbXBhdF9vdXRwdXRfUmU4MTljY2FiKHN0cnVjdCBza19idWZmICpza2Ip
OwpleHRlcm4gc3RydWN0IG5laWdoYm91ciAqbmVpZ2hfZXZlbnRfbnNfUmNiNDU3YTU3KHN0cnVj
dCBuZWlnaF90YWJsZSAqdGJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1OCAqbGxhZGRyLCB2b2lkICpzYWRkciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgpleHRl
cm4gc3RydWN0IG5laWdoX3Bhcm1zICpuZWlnaF9wYXJtc19hbGxvY19SNDUzZTRjNTUoc3RydWN0
IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5laWdoX3RhYmxlICp0YmwpOwpleHRlcm4gdm9pZCBu
ZWlnaF9wYXJtc19yZWxlYXNlX1JiOTU5ZWJkMChzdHJ1Y3QgbmVpZ2hfdGFibGUgKnRibCwgc3Ry
dWN0IG5laWdoX3Bhcm1zICpwYXJtcyk7CmV4dGVybiB1bnNpZ25lZCBsb25nIG5laWdoX3JhbmRf
cmVhY2hfdGltZV9SNDE4OGQ0MzkodW5zaWduZWQgbG9uZyBiYXNlKTsKCmV4dGVybiB2b2lkIHBu
ZWlnaF9lbnF1ZXVlX1I4NmU2M2FlNShzdHJ1Y3QgbmVpZ2hfdGFibGUgKnRibCwgc3RydWN0IG5l
aWdoX3Bhcm1zICpwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBza19idWZmICpza2IpOwpleHRlcm4gc3RydWN0IHBuZWlnaF9lbnRyeSAqcG5l
aWdoX2xvb2t1cF9SNGI0MTQwMmYoc3RydWN0IG5laWdoX3RhYmxlICp0YmwsIGNvbnN0IHZvaWQg
KmtleSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGNyZWF0KTsKZXh0ZXJuIGludCBwbmVp
Z2hfZGVsZXRlKHN0cnVjdCBuZWlnaF90YWJsZSAqdGJsLCBjb25zdCB2b2lkICprZXksIHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOwoKc3RydWN0IG5ldGxpbmtfY2FsbGJhY2s7CnN0cnVjdCBubG1z
Z2hkcjsKZXh0ZXJuIGludCBuZWlnaF9kdW1wX2luZm9fUmU5MTNhN2ZiKHN0cnVjdCBza19idWZm
ICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7CmV4dGVybiBpbnQgbmVpZ2hfYWRk
X1IzYTM0NDk4OChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgdm9p
ZCAqYXJnKTsKZXh0ZXJuIGludCBuZWlnaF9kZWxldGVfUjBlMGJjNWNjKHN0cnVjdCBza19idWZm
ICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLCB2b2lkICphcmcpOwpleHRlcm4gdm9pZCBuZWln
aF9hcHBfbnMoc3RydWN0IG5laWdoYm91ciAqbik7CgpleHRlcm4gaW50IG5laWdoX3N5c2N0bF9y
ZWdpc3Rlcl9SZDM5YWFjODcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5laWdoX3Bh
cm1zICpwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgcF9pZCwgaW50IHBkZXZfaWQsIGNoYXIgKnBfbmFtZSk7CmV4dGVybiB2b2lkIG5l
aWdoX3N5c2N0bF91bnJlZ2lzdGVyKHN0cnVjdCBuZWlnaF9wYXJtcyAqcCk7CgoKCgoKc3RhdGlj
IGlubGluZSB2b2lkIG5laWdoX3JlbGVhc2Uoc3RydWN0IG5laWdoYm91ciAqbmVpZ2gpCnsKICAg
ICAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmbmVpZ2gtPnJlZmNudCkpCiAgICAgICAgICAg
ICAgICBuZWlnaF9kZXN0cm95X1JjNTEwYTQwNyhuZWlnaCk7Cn0KCnN0YXRpYyBpbmxpbmUgc3Ry
dWN0IG5laWdoYm91ciAqIG5laWdoX2Nsb25lKHN0cnVjdCBuZWlnaGJvdXIgKm5laWdoKQp7CiAg
ICAgICAgaWYgKG5laWdoKQogICAgICAgICAgICAgICAgYXRvbWljX2luYygmbmVpZ2gtPnJlZmNu
dCk7CiAgICAgICAgcmV0dXJuIG5laWdoOwp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBuZWlnaF9j
b25maXJtKHN0cnVjdCBuZWlnaGJvdXIgKm5laWdoKQp7CiAgICAgICAgaWYgKG5laWdoKQogICAg
ICAgICAgICAgICAgbmVpZ2gtPmNvbmZpcm1lZCA9IGppZmZpZXNfUjBkYTAyZDY3Owp9CgpzdGF0
aWMgaW5saW5lIGludCBuZWlnaF9pc19jb25uZWN0ZWQoc3RydWN0IG5laWdoYm91ciAqbmVpZ2gp
CnsKICAgICAgICByZXR1cm4gbmVpZ2gtPm51ZF9zdGF0ZSYoMHg4MHwweDQwfDB4MDIpOwp9Cgpz
dGF0aWMgaW5saW5lIGludCBuZWlnaF9pc192YWxpZChzdHJ1Y3QgbmVpZ2hib3VyICpuZWlnaCkK
ewogICAgICAgIHJldHVybiBuZWlnaC0+bnVkX3N0YXRlJigweDgwfDB4NDB8MHgwMnwweDEwfDB4
MDR8MHgwOCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IG5laWdoX2V2ZW50X3NlbmQoc3RydWN0IG5l
aWdoYm91ciAqbmVpZ2gsIHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICBuZWlnaC0+dXNl
ZCA9IGppZmZpZXNfUjBkYTAyZDY3OwogICAgICAgIGlmICghKG5laWdoLT5udWRfc3RhdGUmKCgw
eDgwfDB4NDB8MHgwMil8MHgwOHwweDEwKSkpCiAgICAgICAgICAgICAgICByZXR1cm4gX19uZWln
aF9ldmVudF9zZW5kX1JhZjVjYjU0OShuZWlnaCwgc2tiKTsKICAgICAgICByZXR1cm4gMDsKfQoK
c3RhdGljIGlubGluZSBzdHJ1Y3QgbmVpZ2hib3VyICoKX19uZWlnaF9sb29rdXAoc3RydWN0IG5l
aWdoX3RhYmxlICp0YmwsIGNvbnN0IHZvaWQgKnBrZXksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYs
IGludCBjcmVhdCkKewogICAgICAgIHN0cnVjdCBuZWlnaGJvdXIgKm4gPSBuZWlnaF9sb29rdXBf
UmMwOGI2ZTAzKHRibCwgcGtleSwgZGV2KTsKCiAgICAgICAgaWYgKG4gfHwgIWNyZWF0KQogICAg
ICAgICAgICAgICAgcmV0dXJuIG47CgogICAgICAgIG4gPSBuZWlnaF9jcmVhdGVfUmM5NjViNTQ2
KHRibCwgcGtleSwgZGV2KTsKICAgICAgICByZXR1cm4gSVNfRVJSKG4pID8gKCh2b2lkICopMCkg
OiBuOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBuZWlnaGJvdXIgKgpfX25laWdoX2xvb2t1cF9l
cnJubyhzdHJ1Y3QgbmVpZ2hfdGFibGUgKnRibCwgY29uc3Qgdm9pZCAqcGtleSwKICBzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc3RydWN0IG5laWdoYm91ciAqbiA9IG5laWdoX2xv
b2t1cF9SYzA4YjZlMDModGJsLCBwa2V5LCBkZXYpOwoKICAgICAgICBpZiAobikKICAgICAgICAg
ICAgICAgIHJldHVybiBuOwoKICAgICAgICByZXR1cm4gbmVpZ2hfY3JlYXRlX1JjOTY1YjU0Nih0
YmwsIHBrZXksIGRldik7Cn0KIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9u
ZXQvZHN0LmgiIDIKIyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvZHN0
LmgiCnN0cnVjdCBza19idWZmOwoKc3RydWN0IGRzdF9lbnRyeQp7CiAgICAgICAgc3RydWN0IGRz
dF9lbnRyeSAqbmV4dDsKICAgICAgICBhdG9taWNfdCBfX3JlZmNudDsKICAgICAgICBpbnQgX191
c2U7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKICAgICAgICBpbnQgb2Jzb2xldGU7
CiAgICAgICAgaW50IGZsYWdzOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGxhc3R1c2U7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBleHBpcmVzOwoKICAgICAgICB1bnNpZ25lZCBteGxvY2s7CiAgICAg
ICAgdW5zaWduZWQgcG10dTsKICAgICAgICB1bnNpZ25lZCB3aW5kb3c7CiAgICAgICAgdW5zaWdu
ZWQgcnR0OwogICAgICAgIHVuc2lnbmVkIHJ0dHZhcjsKICAgICAgICB1bnNpZ25lZCBzc3RocmVz
aDsKICAgICAgICB1bnNpZ25lZCBjd25kOwogICAgICAgIHVuc2lnbmVkIGFkdm1zczsKICAgICAg
ICB1bnNpZ25lZCByZW9yZGVyaW5nOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHJhdGVfbGFzdDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHJhdGVfdG9rZW5zOwoKICAgICAgICBpbnQgZXJyb3I7Cgog
ICAgICAgIHN0cnVjdCBuZWlnaGJvdXIgKm5laWdoYm91cjsKICAgICAgICBzdHJ1Y3QgaGhfY2Fj
aGUgKmhoOwoKICAgICAgICBpbnQgKCppbnB1dCkoc3RydWN0IHNrX2J1ZmYqKTsKICAgICAgICBp
bnQgKCpvdXRwdXQpKHN0cnVjdCBza19idWZmKik7CgoKICAgICAgICBfX3UzMiB0Y2xhc3NpZDsK
CgogICAgICAgIHN0cnVjdCBkc3Rfb3BzICpvcHM7CgogICAgICAgIGNoYXIgaW5mb1swXTsKfTsK
CgpzdHJ1Y3QgZHN0X29wcwp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmFtaWx5OwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHByb3RvY29sOwogICAgICAgIHVuc2lnbmVkIGdjX3RocmVzaDsKCiAg
ICAgICAgaW50ICgqZ2MpKHZvaWQpOwogICAgICAgIHN0cnVjdCBkc3RfZW50cnkgKiAoKmNoZWNr
KShzdHJ1Y3QgZHN0X2VudHJ5ICosIF9fdTMyIGNvb2tpZSk7CiAgICAgICAgc3RydWN0IGRzdF9l
bnRyeSAqICgqcmVyb3V0ZSkoc3RydWN0IGRzdF9lbnRyeSAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNrX2J1ZmYgKik7CiAgICAgICAgdm9pZCAo
KmRlc3Ryb3kpKHN0cnVjdCBkc3RfZW50cnkgKik7CiAgICAgICAgc3RydWN0IGRzdF9lbnRyeSAq
ICgqbmVnYXRpdmVfYWR2aWNlKShzdHJ1Y3QgZHN0X2VudHJ5ICopOwogICAgICAgIHZvaWQgKCps
aW5rX2ZhaWx1cmUpKHN0cnVjdCBza19idWZmICopOwogICAgICAgIGludCBlbnRyeV9zaXplOwoK
ICAgICAgICBhdG9taWNfdCBlbnRyaWVzOwogICAgICAgIGttZW1fY2FjaGVfdCAqa21lbV9jYWNo
ZXA7Cn07CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkc3RfaG9sZChzdHJ1Y3QgZHN0X2VudHJ5ICog
ZHN0KQp7CiAgICAgICAgYXRvbWljX2luYygmZHN0LT5fX3JlZmNudCk7Cn0KCnN0YXRpYyBpbmxp
bmUKc3RydWN0IGRzdF9lbnRyeSAqIGRzdF9jbG9uZShzdHJ1Y3QgZHN0X2VudHJ5ICogZHN0KQp7
CiAgICAgICAgaWYgKGRzdCkKICAgICAgICAgICAgICAgIGF0b21pY19pbmMoJmRzdC0+X19yZWZj
bnQpOwogICAgICAgIHJldHVybiBkc3Q7Cn0KCnN0YXRpYyBpbmxpbmUKdm9pZCBkc3RfcmVsZWFz
ZShzdHJ1Y3QgZHN0X2VudHJ5ICogZHN0KQp7CiAgICAgICAgaWYgKGRzdCkKICAgICAgICAgICAg
ICAgIGF0b21pY19kZWMoJmRzdC0+X19yZWZjbnQpOwp9CgpleHRlcm4gdm9pZCAqIGRzdF9hbGxv
Y19SOTAzOWViMWIoc3RydWN0IGRzdF9vcHMgKiBvcHMpOwpleHRlcm4gdm9pZCBfX2RzdF9mcmVl
X1JjNjEzYjdjNChzdHJ1Y3QgZHN0X2VudHJ5ICogZHN0KTsKZXh0ZXJuIHZvaWQgZHN0X2Rlc3Ry
b3lfUjY0NjQxYWU2KHN0cnVjdCBkc3RfZW50cnkgKiBkc3QpOwoKc3RhdGljIGlubGluZQp2b2lk
IGRzdF9mcmVlKHN0cnVjdCBkc3RfZW50cnkgKiBkc3QpCnsKICAgICAgICBpZiAoZHN0LT5vYnNv
bGV0ZSA+IDEpCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgaWYgKCEoKCZkc3QtPl9f
cmVmY250KS0+Y291bnRlcikpIHsKICAgICAgICAgICAgICAgIGRzdF9kZXN0cm95X1I2NDY0MWFl
Nihkc3QpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBfX2RzdF9m
cmVlX1JjNjEzYjdjNChkc3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZHN0X2NvbmZpcm0oc3Ry
dWN0IGRzdF9lbnRyeSAqZHN0KQp7CiAgICAgICAgaWYgKGRzdCkKICAgICAgICAgICAgICAgIG5l
aWdoX2NvbmZpcm0oZHN0LT5uZWlnaGJvdXIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgZHN0X25l
Z2F0aXZlX2FkdmljZShzdHJ1Y3QgZHN0X2VudHJ5ICoqZHN0X3ApCnsKICAgICAgICBzdHJ1Y3Qg
ZHN0X2VudHJ5ICogZHN0ID0gKmRzdF9wOwogICAgICAgIGlmIChkc3QgJiYgZHN0LT5vcHMtPm5l
Z2F0aXZlX2FkdmljZSkKICAgICAgICAgICAgICAgICpkc3RfcCA9IGRzdC0+b3BzLT5uZWdhdGl2
ZV9hZHZpY2UoZHN0KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRzdF9saW5rX2ZhaWx1cmUoc3Ry
dWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIHN0cnVjdCBkc3RfZW50cnkgKiBkc3QgPSBza2It
PmRzdDsKICAgICAgICBpZiAoZHN0ICYmIGRzdC0+b3BzICYmIGRzdC0+b3BzLT5saW5rX2ZhaWx1
cmUpCiAgICAgICAgICAgICAgICBkc3QtPm9wcy0+bGlua19mYWlsdXJlKHNrYik7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCBkc3Rfc2V0X2V4cGlyZXMoc3RydWN0IGRzdF9lbnRyeSAqZHN0LCBpbnQg
dGltZW91dCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgZXhwaXJlcyA9IGppZmZpZXNfUjBkYTAy
ZDY3ICsgdGltZW91dDsKCiAgICAgICAgaWYgKGV4cGlyZXMgPT0gMCkKICAgICAgICAgICAgICAg
IGV4cGlyZXMgPSAxOwoKICAgICAgICBpZiAoZHN0LT5leHBpcmVzID09IDAgfHwgKGxvbmcpKGRz
dC0+ZXhwaXJlcyAtIGV4cGlyZXMpID4gMCkKICAgICAgICAgICAgICAgIGRzdC0+ZXhwaXJlcyA9
IGV4cGlyZXM7Cn0KCmV4dGVybiB2b2lkIGRzdF9pbml0KHZvaWQpOwojIDI5ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9yb3V0ZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9uZXQvaW5ldHBlZXIuaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL25ldC9pbmV0cGVlci5oIgpzdHJ1Y3QgaW5ldF9wZWVyCnsKICAgICAg
ICBzdHJ1Y3QgaW5ldF9wZWVyICphdmxfbGVmdCwgKmF2bF9yaWdodDsKICAgICAgICBzdHJ1Y3Qg
aW5ldF9wZWVyICp1bnVzZWRfbmV4dCwgKip1bnVzZWRfcHJldnA7CiAgICAgICAgYXRvbWljX3Qg
cmVmY250OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZHRpbWU7CgogICAgICAgIF9fdTMyIHY0ZGFk
ZHI7CiAgICAgICAgX191MTYgYXZsX2hlaWdodDsKICAgICAgICBfX3UxNiBpcF9pZF9jb3VudDsK
ICAgICAgICBfX3UzMiB0Y3BfdHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0Y3BfdHNfc3RhbXA7
Cn07Cgp2b2lkIGluZXRfaW5pdHBlZXJzKHZvaWQpIDsKCgpzdHJ1Y3QgaW5ldF9wZWVyICppbmV0
X2dldHBlZXIoX191MzIgZGFkZHIsIGludCBjcmVhdGUpOwoKZXh0ZXJuIHNwaW5sb2NrX3QgaW5l
dF9wZWVyX3VudXNlZF9sb2NrOwpleHRlcm4gc3RydWN0IGluZXRfcGVlciAqaW5ldF9wZWVyX3Vu
dXNlZF9oZWFkOwpleHRlcm4gc3RydWN0IGluZXRfcGVlciAqKmluZXRfcGVlcl91bnVzZWRfdGFp
bHA7CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5ldF9wdXRwZWVyKHN0cnVjdCBpbmV0X3BlZXIgKnAp
CnsKICAgICAgICBkbyB7IGRvIHsgKCh2b2lkKSgoMCkpLCBpcnFfc3RhdF9SY2EwMjgzYjBbMF0u
X19sb2NhbF9iaF9jb3VudCkrKzsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnki
KTsgfSB3aGlsZSAoMCk7ICh2b2lkKSgmaW5ldF9wZWVyX3VudXNlZF9sb2NrKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJnAtPnJlZmNudCkpIHsKICAgICAg
ICAgICAgICAgIHAtPnVudXNlZF9wcmV2cCA9IGluZXRfcGVlcl91bnVzZWRfdGFpbHA7CiAgICAg
ICAgICAgICAgICBwLT51bnVzZWRfbmV4dCA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAg
KmluZXRfcGVlcl91bnVzZWRfdGFpbHAgPSBwOwogICAgICAgICAgICAgICAgaW5ldF9wZWVyX3Vu
dXNlZF90YWlscCA9ICZwLT51bnVzZWRfbmV4dDsKICAgICAgICAgICAgICAgIHAtPmR0aW1lID0g
amlmZmllc19SMGRhMDJkNjc7CiAgICAgICAgfQogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDAp
OyBkbyB7IHVuc2lnbmVkIGludCAqcHRyID0gJigodm9pZCkoKDApKSwgaXJxX3N0YXRfUmNhMDI4
M2IwWzBdLl9fbG9jYWxfYmhfY291bnQpOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l
bW9yeSIpOyBpZiAoIS0tKnB0cikgX19hc21fXyBfX3ZvbGF0aWxlX18gKCAiY21wbCAkMCwgLTgo
JTApOyIgImpueiAyZjsiICIxOjsiICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAi
LnRleHQubG9jay4iICJza2dlcG5taSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNrZ2Vwbm1pIiAi
OlxuXHQiICIuZW5kaWZcblx0IiAiMjogcHVzaGwgJSVlYXg7IHB1c2hsICUlZWN4OyBwdXNobCAl
JWVkeDsiICJjYWxsICVjMTsiICJwb3BsICUlZWR4OyBwb3BsICUlZWN4OyBwb3BsICUlZWF4OyIg
ImptcCAxYjsiICIucHJldmlvdXNcblx0IiA6IDogInIiIChwdHIpLCAiaSIgKGRvX3NvZnRpcnFf
UmYwYTUyOWI3KSApOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7Cn0KCmV4dGVybiBzcGlubG9j
a190IGluZXRfcGVlcl9pZGxvY2s7CgpzdGF0aWMgaW5saW5lIF9fdTE2IGluZXRfZ2V0aWQoc3Ry
dWN0IGluZXRfcGVlciAqcCkKewogICAgICAgIF9fdTE2IGlkOwoKICAgICAgICBkbyB7IGRvIHsg
KCh2b2lkKSgoMCkpLCBpcnFfc3RhdF9SY2EwMjgzYjBbMF0uX19sb2NhbF9iaF9jb3VudCkrKzsg
X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7ICh2b2lk
KSgmaW5ldF9wZWVyX2lkbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIGlkID0gcC0+aXBfaWRf
Y291bnQrKzsKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgZG8geyB1bnNpZ25lZCBpbnQg
KnB0ciA9ICYoKHZvaWQpKCgwKSksIGlycV9zdGF0X1JjYTAyODNiMFswXS5fX2xvY2FsX2JoX2Nv
dW50KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKCEtLSpwdHIp
IF9fYXNtX18gX192b2xhdGlsZV9fICggImNtcGwgJDAsIC04KCUwKTsiICJqbnogMmY7IiAiMTo7
IiAiLnN1YnNlY3Rpb24gMVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic2tnZXBu
bWkiICJcblx0IiAiLnRleHQubG9jay4iICJza2dlcG5taSIgIjpcblx0IiAiLmVuZGlmXG5cdCIg
IjI6IHB1c2hsICUlZWF4OyBwdXNobCAlJWVjeDsgcHVzaGwgJSVlZHg7IiAiY2FsbCAlYzE7IiAi
cG9wbCAlJWVkeDsgcG9wbCAlJWVjeDsgcG9wbCAlJWVheDsiICJqbXAgMWI7IiAiLnByZXZpb3Vz
XG5cdCIgOiA6ICJyIiAocHRyKSwgImkiIChkb19zb2Z0aXJxX1JmMGE1MjliNykgKTsgfSB3aGls
ZSAoMCk7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiBpZDsKfQojIDMwICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9yb3V0ZS5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L25ldGxpbmsuaCIgMQojIDE4ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L25ldGxpbmsuaCIKc3RydWN0IHNvY2thZGRyX25s
CnsKICAgICAgICBzYV9mYW1pbHlfdCBubF9mYW1pbHk7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
bmxfcGFkOwogICAgICAgIF9fdTMyIG5sX3BpZDsKICAgICAgICBfX3UzMiBubF9ncm91cHM7Cn07
CgpzdHJ1Y3Qgbmxtc2doZHIKewogICAgICAgIF9fdTMyIG5sbXNnX2xlbjsKICAgICAgICBfX3Ux
NiBubG1zZ190eXBlOwogICAgICAgIF9fdTE2IG5sbXNnX2ZsYWdzOwogICAgICAgIF9fdTMyIG5s
bXNnX3NlcTsKICAgICAgICBfX3UzMiBubG1zZ19waWQ7Cn07CiMgNzkgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbGludXgvbmV0bGluay5oIgpzdHJ1Y3Qgbmxtc2dlcnIKewogICAg
ICAgIGludCBlcnJvcjsKICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgbXNnOwp9OwoKCgoKCnN0cnVj
dCBuZXRsaW5rX3NrYl9wYXJtcwp7CiAgICAgICAgc3RydWN0IHVjcmVkIGNyZWRzOwogICAgICAg
IF9fdTMyIHBpZDsKICAgICAgICBfX3UzMiBncm91cHM7CiAgICAgICAgX191MzIgZHN0X3BpZDsK
ICAgICAgICBfX3UzMiBkc3RfZ3JvdXBzOwogICAgICAgIGtlcm5lbF9jYXBfdCBlZmZfY2FwOwp9
OwoKCgoKCmV4dGVybiBpbnQgbmV0bGlua19hdHRhY2hfUjcxOTFhYmQyKGludCB1bml0LCBpbnQg
KCpmdW5jdGlvbikoaW50LHN0cnVjdCBza19idWZmICpza2IpKTsKZXh0ZXJuIHZvaWQgbmV0bGlu
a19kZXRhY2hfUjFkNzQyNDk1KGludCB1bml0KTsKZXh0ZXJuIGludCBuZXRsaW5rX3Bvc3RfUjcy
OGQ0MDBiKGludCB1bml0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKZXh0ZXJuIGludCBpbml0X25l
dGxpbmsodm9pZCk7CmV4dGVybiBzdHJ1Y3Qgc29jayAqbmV0bGlua19rZXJuZWxfY3JlYXRlX1Ix
MGFkZDhlYihpbnQgdW5pdCwgdm9pZCAoKmlucHV0KShzdHJ1Y3Qgc29jayAqc2ssIGludCBsZW4p
KTsKZXh0ZXJuIHZvaWQgbmV0bGlua19hY2tfUjljZDg4M2FkKHN0cnVjdCBza19idWZmICppbl9z
a2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLCBpbnQgZXJyKTsKZXh0ZXJuIGludCBuZXRsaW5rX3Vu
aWNhc3RfUjE5M2Y0ZjAxKHN0cnVjdCBzb2NrICpzc2ssIHN0cnVjdCBza19idWZmICpza2IsIF9f
dTMyIHBpZCwgaW50IG5vbmJsb2NrKTsKZXh0ZXJuIHZvaWQgbmV0bGlua19icm9hZGNhc3RfUmZl
MjAwNDNjKHN0cnVjdCBzb2NrICpzc2ssIHN0cnVjdCBza19idWZmICpza2IsIF9fdTMyIHBpZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZ3JvdXAsIGludCBhbGxvY2F0aW9u
KTsKZXh0ZXJuIHZvaWQgbmV0bGlua19zZXRfZXJyX1JmNTZlNmU3ZChzdHJ1Y3Qgc29jayAqc3Nr
LCBfX3UzMiBwaWQsIF9fdTMyIGdyb3VwLCBpbnQgY29kZSk7CmV4dGVybiBpbnQgbmV0bGlua19y
ZWdpc3Rlcl9ub3RpZmllcl9SZjc4ZDA0YWIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CmV4
dGVybiBpbnQgbmV0bGlua191bnJlZ2lzdGVyX25vdGlmaWVyX1JmMzM4ZDRjMyhzdHJ1Y3Qgbm90
aWZpZXJfYmxvY2sgKm5iKTsKIyAxMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUv
bGludXgvbmV0bGluay5oIgpzdHJ1Y3QgbmV0bGlua19jYWxsYmFjawp7CiAgICAgICAgc3RydWN0
IHNrX2J1ZmYgKnNrYjsKICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgKm5saDsKICAgICAgICBpbnQg
KCpkdW1wKShzdHJ1Y3Qgc2tfYnVmZiAqIHNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNi
KTsKICAgICAgICBpbnQgKCpkb25lKShzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpOwogICAg
ICAgIGludCBmYW1pbHk7CiAgICAgICAgbG9uZyBhcmdzWzRdOwp9OwoKc3RydWN0IG5ldGxpbmtf
bm90aWZ5CnsKICAgICAgICBpbnQgcGlkOwogICAgICAgIGludCBwcm90b2NvbDsKfTsKCnN0YXRp
YyBfX2lubGluZV9fIHN0cnVjdCBubG1zZ2hkciAqCl9fbmxtc2dfcHV0KHN0cnVjdCBza19idWZm
ICpza2IsIHUzMiBwaWQsIHUzMiBzZXEsIGludCB0eXBlLCBpbnQgbGVuKQp7CiAgICAgICAgc3Ry
dWN0IG5sbXNnaGRyICpubGg7CiAgICAgICAgaW50IHNpemUgPSAoKGxlbikrKCAoKHNpemVvZihz
dHJ1Y3Qgbmxtc2doZHIpKSs0IC0xKSAmIH4oNCAtMSkgKSk7CgogICAgICAgIG5saCA9IChzdHJ1
Y3Qgbmxtc2doZHIqKXNrYl9wdXQoc2tiLCAoICgoc2l6ZSkrNCAtMSkgJiB+KDQgLTEpICkpOwog
ICAgICAgIG5saC0+bmxtc2dfdHlwZSA9IHR5cGU7CiAgICAgICAgbmxoLT5ubG1zZ19sZW4gPSBz
aXplOwogICAgICAgIG5saC0+bmxtc2dfZmxhZ3MgPSAwOwogICAgICAgIG5saC0+bmxtc2dfcGlk
ID0gcGlkOwogICAgICAgIG5saC0+bmxtc2dfc2VxID0gc2VxOwogICAgICAgIHJldHVybiBubGg7
Cn0KCgoKCgpleHRlcm4gaW50IG5ldGxpbmtfZHVtcF9zdGFydF9SNWExODI1NWMoc3RydWN0IHNv
Y2sgKnNzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IG5sbXNnaGRyICpubGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCAoKmR1bXApKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrKiks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKmRvbmUpKHN0cnVjdCBuZXRsaW5r
X2NhbGxiYWNrKikpOwoKCgpleHRlcm4gdm9pZCBuZXRsaW5rX3NldF9ub25yb290X1I1YTc0NGI4
NihpbnQgcHJvdG9jb2wsIHVuc2lnbmVkIGZsYWcpOwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiIDIKIyA1NyAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IHJ0YXR0cgp7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgcnRhX2xlbjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBydGFfdHlwZTsK
fTsKIyA4MyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsu
aCIKc3RydWN0IHJ0bXNnCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJ0bV9mYW1pbHk7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBydG1fZHN0X2xlbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJ0bV9z
cmNfbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcnRtX3RvczsKCiAgICAgICAgdW5zaWduZWQg
Y2hhciBydG1fdGFibGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1fcHJvdG9jb2w7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBydG1fc2NvcGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1fdHlw
ZTsKCiAgICAgICAgdW5zaWduZWQgcnRtX2ZsYWdzOwp9OwoKCgplbnVtCnsKICAgICAgICBSVE5f
VU5TUEVDLAogICAgICAgIFJUTl9VTklDQVNULAogICAgICAgIFJUTl9MT0NBTCwKICAgICAgICBS
VE5fQlJPQURDQVNULAoKICAgICAgICBSVE5fQU5ZQ0FTVCwKCiAgICAgICAgUlROX01VTFRJQ0FT
VCwKICAgICAgICBSVE5fQkxBQ0tIT0xFLAogICAgICAgIFJUTl9VTlJFQUNIQUJMRSwKICAgICAg
ICBSVE5fUFJPSElCSVQsCiAgICAgICAgUlROX1RIUk9XLAogICAgICAgIFJUTl9OQVQsCiAgICAg
ICAgUlROX1hSRVNPTFZFLAp9OwojIDE1NSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9saW51eC9ydG5ldGxpbmsuaCIKZW51bSBydF9zY29wZV90CnsKICAgICAgICBSVF9TQ09QRV9V
TklWRVJTRT0wLAoKICAgICAgICBSVF9TQ09QRV9TSVRFPTIwMCwKICAgICAgICBSVF9TQ09QRV9M
SU5LPTI1MywKICAgICAgICBSVF9TQ09QRV9IT1NUPTI1NCwKICAgICAgICBSVF9TQ09QRV9OT1dI
RVJFPTI1NQp9OwojIDE3MyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9y
dG5ldGxpbmsuaCIKZW51bSBydF9jbGFzc190CnsKICAgICAgICBSVF9UQUJMRV9VTlNQRUM9MCwK
CiAgICAgICAgUlRfVEFCTEVfREVGQVVMVD0yNTMsCiAgICAgICAgUlRfVEFCTEVfTUFJTj0yNTQs
CiAgICAgICAgUlRfVEFCTEVfTE9DQUw9MjU1Cn07CgoKCgoKCmVudW0gcnRhdHRyX3R5cGVfdAp7
CiAgICAgICAgUlRBX1VOU1BFQywKICAgICAgICBSVEFfRFNULAogICAgICAgIFJUQV9TUkMsCiAg
ICAgICAgUlRBX0lJRiwKICAgICAgICBSVEFfT0lGLAogICAgICAgIFJUQV9HQVRFV0FZLAogICAg
ICAgIFJUQV9QUklPUklUWSwKICAgICAgICBSVEFfUFJFRlNSQywKICAgICAgICBSVEFfTUVUUklD
UywKICAgICAgICBSVEFfTVVMVElQQVRILAogICAgICAgIFJUQV9QUk9UT0lORk8sCiAgICAgICAg
UlRBX0ZMT1csCiAgICAgICAgUlRBX0NBQ0hFSU5GTwp9OwojIDIxOCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IHJ0bmV4dGhvcAp7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgcnRuaF9sZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBydG5o
X2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcnRuaF9ob3BzOwogICAgICAgIGludCBydG5o
X2lmaW5kZXg7Cn07CiMgMjQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L3J0bmV0bGluay5oIgpzdHJ1Y3QgcnRhX2NhY2hlaW5mbwp7CiAgICAgICAgX191MzIgcnRhX2Ns
bnRyZWY7CiAgICAgICAgX191MzIgcnRhX2xhc3R1c2U7CiAgICAgICAgX19zMzIgcnRhX2V4cGly
ZXM7CiAgICAgICAgX191MzIgcnRhX2Vycm9yOwogICAgICAgIF9fdTMyIHJ0YV91c2VkOwoKCiAg
ICAgICAgX191MzIgcnRhX2lkOwogICAgICAgIF9fdTMyIHJ0YV90czsKICAgICAgICBfX3UzMiBy
dGFfdHNhZ2U7Cn07CgoKCmVudW0KewogICAgICAgIFJUQVhfVU5TUEVDLAoKICAgICAgICBSVEFY
X0xPQ0ssCgogICAgICAgIFJUQVhfTVRVLAoKICAgICAgICBSVEFYX1dJTkRPVywKCiAgICAgICAg
UlRBWF9SVFQsCgogICAgICAgIFJUQVhfUlRUVkFSLAoKICAgICAgICBSVEFYX1NTVEhSRVNILAoK
ICAgICAgICBSVEFYX0NXTkQsCgogICAgICAgIFJUQVhfQURWTVNTLAoKICAgICAgICBSVEFYX1JF
T1JERVJJTkcsCgp9OwojIDI5MyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9ydG5ldGxpbmsuaCIKc3RydWN0IGlmYWRkcm1zZwp7CiAgICAgICAgdW5zaWduZWQgY2hhciBp
ZmFfZmFtaWx5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgaWZhX3ByZWZpeGxlbjsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGlmYV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlmYV9zY29wZTsK
ICAgICAgICBpbnQgaWZhX2luZGV4Owp9OwoKZW51bQp7CiAgICAgICAgSUZBX1VOU1BFQywKICAg
ICAgICBJRkFfQUREUkVTUywKICAgICAgICBJRkFfTE9DQUwsCiAgICAgICAgSUZBX0xBQkVMLAog
ICAgICAgIElGQV9CUk9BRENBU1QsCiAgICAgICAgSUZBX0FOWUNBU1QsCiAgICAgICAgSUZBX0NB
Q0hFSU5GTwp9OwojIDMyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9y
dG5ldGxpbmsuaCIKc3RydWN0IGlmYV9jYWNoZWluZm8KewogICAgICAgIF9fczMyIGlmYV9wcmVm
ZXJlZDsKICAgICAgICBfX3MzMiBpZmFfdmFsaWQ7Cn07CiMgMzQ1ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgbmRtc2cKewogICAgICAg
IHVuc2lnbmVkIGNoYXIgbmRtX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG5kbV9wYWQx
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG5kbV9wYWQyOwogICAgICAgIGludCBuZG1faWZpbmRl
eDsKICAgICAgICBfX3UxNiBuZG1fc3RhdGU7CiAgICAgICAgX191OCBuZG1fZmxhZ3M7CiAgICAg
ICAgX191OCBuZG1fdHlwZTsKfTsKCmVudW0KewogICAgICAgIE5EQV9VTlNQRUMsCiAgICAgICAg
TkRBX0RTVCwKICAgICAgICBOREFfTExBRERSLAogICAgICAgIE5EQV9DQUNIRUlORk8KfTsKIyAz
OTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0
cnVjdCBuZGFfY2FjaGVpbmZvCnsKICAgICAgICBfX3UzMiBuZG1fY29uZmlybWVkOwogICAgICAg
IF9fdTMyIG5kbV91c2VkOwogICAgICAgIF9fdTMyIG5kbV91cGRhdGVkOwogICAgICAgIF9fdTMy
IG5kbV9yZWZjbnQ7Cn07CgoKCgoKc3RydWN0IHJ0Z2VubXNnCnsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHJ0Z2VuX2ZhbWlseTsKfTsKIyA0MTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0cnVjdCBpZmluZm9tc2cKewogICAgICAgIHVuc2lnbmVk
IGNoYXIgaWZpX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9faWZpX3BhZDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBpZmlfdHlwZTsKICAgICAgICBpbnQgaWZpX2luZGV4OwogICAgICAg
IHVuc2lnbmVkIGlmaV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBpZmlfY2hhbmdlOwp9OwoKZW51
bQp7CiAgICAgICAgSUZMQV9VTlNQRUMsCiAgICAgICAgSUZMQV9BRERSRVNTLAogICAgICAgIElG
TEFfQlJPQURDQVNULAogICAgICAgIElGTEFfSUZOQU1FLAogICAgICAgIElGTEFfTVRVLAogICAg
ICAgIElGTEFfTElOSywKICAgICAgICBJRkxBX1FESVNDLAogICAgICAgIElGTEFfU1RBVFMsCiAg
ICAgICAgSUZMQV9DT1NULAoKICAgICAgICBJRkxBX1BSSU9SSVRZLAoKICAgICAgICBJRkxBX01B
U1RFUiwKCiAgICAgICAgSUZMQV9XSVJFTEVTUywKCn07CiMgNDg4ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgdGNtc2cKewogICAgICAg
IHVuc2lnbmVkIGNoYXIgdGNtX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRjbV9fcGFk
MTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0Y21fX3BhZDI7CiAgICAgICAgaW50IHRjbV9pZmlu
ZGV4OwogICAgICAgIF9fdTMyIHRjbV9oYW5kbGU7CiAgICAgICAgX191MzIgdGNtX3BhcmVudDsK
ICAgICAgICBfX3UzMiB0Y21faW5mbzsKfTsKCmVudW0KewogICAgICAgIFRDQV9VTlNQRUMsCiAg
ICAgICAgVENBX0tJTkQsCiAgICAgICAgVENBX09QVElPTlMsCiAgICAgICAgVENBX1NUQVRTLAog
ICAgICAgIFRDQV9YU1RBVFMsCiAgICAgICAgVENBX1JBVEUsCn07CiMgNTQzICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdGF0aWMgX19pbmxpbmVf
XyBpbnQgcnRhdHRyX3N0cmNtcChzdHJ1Y3QgcnRhdHRyICpydGEsIGNoYXIgKnN0cikKewogICAg
ICAgIGludCBsZW4gPSBzdHJsZW4oc3RyKSArIDE7CiAgICAgICAgcmV0dXJuIGxlbiA+IHJ0YS0+
cnRhX2xlbiB8fCBfX2J1aWx0aW5fbWVtY21wKCgodm9pZCopKCgoY2hhciopKHJ0YSkpICsgKCgg
KChzaXplb2Yoc3RydWN0IHJ0YXR0cikpKzQgLTEpICYgfig0IC0xKSApICsgKDApKSkpLCBzdHIs
IGxlbik7Cn0KCmV4dGVybiBpbnQgcnRhdHRyX3BhcnNlX1JlNDk0MTRlOShzdHJ1Y3QgcnRhdHRy
ICp0YltdLCBpbnQgbWF4YXR0ciwgc3RydWN0IHJ0YXR0ciAqcnRhLCBpbnQgbGVuKTsKCmV4dGVy
biBzdHJ1Y3Qgc29jayAqcnRubF9SN2I2NzFlYmU7CgpzdHJ1Y3QgcnRuZXRsaW5rX2xpbmsKewog
ICAgICAgIGludCAoKmRvaXQpKHN0cnVjdCBza19idWZmICosIHN0cnVjdCBubG1zZ2hkciosIHZv
aWQgKmF0dHIpOwogICAgICAgIGludCAoKmR1bXBpdCkoc3RydWN0IHNrX2J1ZmYgKiwgc3RydWN0
IG5ldGxpbmtfY2FsbGJhY2sgKmNiKTsKfTsKCmV4dGVybiBzdHJ1Y3QgcnRuZXRsaW5rX2xpbmsg
KiBydG5ldGxpbmtfbGlua3NfUjBkNTVjMDhiWzMyXTsKZXh0ZXJuIGludCBydG5ldGxpbmtfZHVt
cF9pZmluZm9fUjVhMTE1OWU1KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2Nh
bGxiYWNrICpjYik7CmV4dGVybiBpbnQgcnRuZXRsaW5rX3NlbmQoc3RydWN0IHNrX2J1ZmYgKnNr
YiwgdTMyIHBpZCwgdTMyIGdyb3VwLCBpbnQgZWNobyk7CmV4dGVybiBpbnQgcnRuZXRsaW5rX3B1
dF9tZXRyaWNzX1JkZWY3ZjVmMShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCAqbWV0cmlj
cyk7CgpleHRlcm4gdm9pZCBfX3J0YV9maWxsX1IxMTdlMzQ3OChzdHJ1Y3Qgc2tfYnVmZiAqc2ti
LCBpbnQgYXR0cnR5cGUsIGludCBhdHRybGVuLCBjb25zdCB2b2lkICpkYXRhKTsKCgoKCgpleHRl
cm4gdm9pZCBydG1zZ19pZmluZm8oaW50IHR5cGUsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVu
c2lnbmVkIGNoYW5nZSk7CgpleHRlcm4gc3RydWN0IHNlbWFwaG9yZSBydG5sX3NlbV9SNTExZDBl
YmU7CiMgNTg2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3J0bmV0bGlu
ay5oIgpleHRlcm4gdm9pZCBydG5sX2xvY2tfUmM3YTRmYmVkKHZvaWQpOwpleHRlcm4gdm9pZCBy
dG5sX3VubG9ja19SNmU3MjBmZjIodm9pZCk7CmV4dGVybiB2b2lkIHJ0bmV0bGlua19pbml0KHZv
aWQpOwojIDMyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9yb3V0ZS5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9yb3V0ZS5oIiAxCiMg
MzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvcm91dGUuaCIKc3RydWN0
IHJ0ZW50cnkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcnRfcGFkMTsKICAgICAgICBzdHJ1Y3Qg
c29ja2FkZHIgcnRfZHN0OwogICAgICAgIHN0cnVjdCBzb2NrYWRkciBydF9nYXRld2F5OwogICAg
ICAgIHN0cnVjdCBzb2NrYWRkciBydF9nZW5tYXNrOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHJ0
X2ZsYWdzOwogICAgICAgIHNob3J0IHJ0X3BhZDI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBydF9w
YWQzOwogICAgICAgIHZvaWQgKnJ0X3BhZDQ7CiAgICAgICAgc2hvcnQgcnRfbWV0cmljOwogICAg
ICAgIGNoYXIgKnJ0X2RldjsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X210dTsKCgoKICAgICAg
ICB1bnNpZ25lZCBsb25nIHJ0X3dpbmRvdzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBydF9pcnR0
Owp9OwojIDMzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9yb3V0ZS5oIiAy
CiMgNDggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L3JvdXRlLmgiCnN0cnVj
dCBydF9rZXkKewogICAgICAgIF9fdTMyIGRzdDsKICAgICAgICBfX3UzMiBzcmM7CiAgICAgICAg
aW50IGlpZjsKICAgICAgICBpbnQgb2lmOwoKICAgICAgICBfX3UzMiBmd21hcms7CgogICAgICAg
IF9fdTggdG9zOwogICAgICAgIF9fdTggc2NvcGU7Cn07CgpzdHJ1Y3QgaW5ldF9wZWVyOwpzdHJ1
Y3QgcnRhYmxlCnsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVj
dCBkc3RfZW50cnkgZHN0OwogICAgICAgICAgICAgICAgc3RydWN0IHJ0YWJsZSAqcnRfbmV4dDsK
ICAgICAgICB9IHU7CgogICAgICAgIHVuc2lnbmVkIHJ0X2ZsYWdzOwogICAgICAgIHVuc2lnbmVk
IHJ0X3R5cGU7CgogICAgICAgIF9fdTMyIHJ0X2RzdDsKICAgICAgICBfX3UzMiBydF9zcmM7CiAg
ICAgICAgaW50IHJ0X2lpZjsKCgogICAgICAgIF9fdTMyIHJ0X2dhdGV3YXk7CgoKICAgICAgICBz
dHJ1Y3QgcnRfa2V5IGtleTsKCgogICAgICAgIF9fdTMyIHJ0X3NwZWNfZHN0OwogICAgICAgIHN0
cnVjdCBpbmV0X3BlZXIgKnBlZXI7CgoKICAgICAgICBfX3UzMiBydF9zcmNfbWFwOwogICAgICAg
IF9fdTMyIHJ0X2RzdF9tYXA7Cgp9OwoKc3RydWN0IGlwX3J0X2FjY3QKewogICAgICAgIF9fdTMy
IG9fYnl0ZXM7CiAgICAgICAgX191MzIgb19wYWNrZXRzOwogICAgICAgIF9fdTMyIGlfYnl0ZXM7
CiAgICAgICAgX191MzIgaV9wYWNrZXRzOwp9OwoKc3RydWN0IHJ0X2NhY2hlX3N0YXQKewogICAg
ICAgIHVuc2lnbmVkIGludCBpbl9oaXQ7CiAgICAgICAgdW5zaWduZWQgaW50IGluX3Nsb3dfdG90
OwogICAgICAgIHVuc2lnbmVkIGludCBpbl9zbG93X21jOwogICAgICAgIHVuc2lnbmVkIGludCBp
bl9ub19yb3V0ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgaW5fYnJkOwogICAgICAgIHVuc2lnbmVk
IGludCBpbl9tYXJ0aWFuX2RzdDsKICAgICAgICB1bnNpZ25lZCBpbnQgaW5fbWFydGlhbl9zcmM7
CiAgICAgICAgdW5zaWduZWQgaW50IG91dF9oaXQ7CiAgICAgICAgdW5zaWduZWQgaW50IG91dF9z
bG93X3RvdDsKICAgICAgICB1bnNpZ25lZCBpbnQgb3V0X3Nsb3dfbWM7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGdjX3RvdGFsOwogICAgICAgIHVuc2lnbmVkIGludCBnY19pZ25vcmVkOwogICAgICAg
IHVuc2lnbmVkIGludCBnY19nb2FsX21pc3M7CiAgICAgICAgdW5zaWduZWQgaW50IGdjX2RzdF9v
dmVyZmxvdzsKfSA7CgpleHRlcm4gc3RydWN0IGlwX3J0X2FjY3QgKmlwX3J0X2FjY3Q7CgpzdHJ1
Y3QgaW5fZGV2aWNlOwpleHRlcm4gdm9pZCBpcF9ydF9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBp
cF9ydF9yZWRpcmVjdCh1MzIgb2xkX2d3LCB1MzIgZHN0LCB1MzIgbmV3X2d3LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgc3JjLCB1OCB0b3MsIHN0cnVjdCBuZXRf
ZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBpcF9ydF9hZHZpY2Uoc3RydWN0IHJ0YWJsZSAqKnJw
LCBpbnQgYWR2aWNlKTsKZXh0ZXJuIHZvaWQgcnRfY2FjaGVfZmx1c2goaW50IGhvdyk7CmV4dGVy
biBpbnQgaXBfcm91dGVfb3V0cHV0X2tleV9SYzg2ZmNhYjQoc3RydWN0IHJ0YWJsZSAqKiwgY29u
c3Qgc3RydWN0IHJ0X2tleSAqa2V5KTsKZXh0ZXJuIGludCBpcF9yb3V0ZV9pbnB1dF9SMmE4YmI0
ZTgoc3RydWN0IHNrX2J1ZmYqLCB1MzIgZHN0LCB1MzIgc3JjLCB1OCB0b3MsIHN0cnVjdCBuZXRf
ZGV2aWNlICpkZXZpbik7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpcF9ydF9mcmFnX25lZWRlZChz
dHJ1Y3QgaXBoZHIgKmlwaCwgdW5zaWduZWQgc2hvcnQgbmV3X210dSk7CmV4dGVybiB2b2lkIGlw
X3J0X3VwZGF0ZV9wbXR1KHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgdW5zaWduZWQgbXR1KTsKZXh0
ZXJuIHZvaWQgaXBfcnRfc2VuZF9yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKCmV4dGVy
biB1bnNpZ25lZCBpbmV0X2FkZHJfdHlwZV9SZThjZjNhZTcodTMyIGFkZHIpOwpleHRlcm4gdm9p
ZCBpcF9ydF9tdWx0aWNhc3RfZXZlbnQoc3RydWN0IGluX2RldmljZSAqKTsKZXh0ZXJuIGludCBp
cF9ydF9pb2N0bF9SOTQyMDhlODQodW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKTsKZXh0ZXJu
IHZvaWQgaXBfcnRfZ2V0X3NvdXJjZSh1OCAqc3JjLCBzdHJ1Y3QgcnRhYmxlICpydCk7CmV4dGVy
biBpbnQgaXBfcnRfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxs
YmFjayAqY2IpOwoKCnN0YXRpYyBpbmxpbmUgaW50IGlwX3JvdXRlX291dHB1dChzdHJ1Y3QgcnRh
YmxlICoqcnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGRhZGRy
LCB1MzIgc2FkZHIsIHUzMiB0b3MsIGludCBvaWYpCnsKICAgICAgICBzdHJ1Y3QgcnRfa2V5IGtl
eSA9IHsgZHN0OmRhZGRyLCBzcmM6c2FkZHIsIG9pZjpvaWYsIHRvczp0b3MgfTsKCiAgICAgICAg
cmV0dXJuIGlwX3JvdXRlX291dHB1dF9rZXlfUmM4NmZjYWI0KHJwLCAma2V5KTsKfQoKCnN0YXRp
YyBpbmxpbmUgdm9pZCBpcF9ydF9wdXQoc3RydWN0IHJ0YWJsZSAqIHJ0KQp7CiAgICAgICAgaWYg
KHJ0KQogICAgICAgICAgICAgICAgZHN0X3JlbGVhc2UoJnJ0LT51LmRzdCk7Cn0KCgoKZXh0ZXJu
IF9fdTggaXBfdG9zMnByaW9bMTZdOwoKc3RhdGljIGlubGluZSBjaGFyIHJ0X3RvczJwcmlvcml0
eSh1OCB0b3MpCnsKICAgICAgICByZXR1cm4gaXBfdG9zMnByaW9bKCh0b3MpJjB4MUUpPj4xXTsK
fQoKc3RhdGljIGlubGluZSBpbnQgaXBfcm91dGVfY29ubmVjdChzdHJ1Y3QgcnRhYmxlICoqcnAs
IHUzMiBkc3QsIHUzMiBzcmMsIHUzMiB0b3MsIGludCBvaWYpCnsKICAgICAgICBpbnQgZXJyOwog
ICAgICAgIGVyciA9IGlwX3JvdXRlX291dHB1dChycCwgZHN0LCBzcmMsIHRvcywgb2lmKTsKICAg
ICAgICBpZiAoZXJyIHx8IChkc3QgJiYgc3JjKSkKICAgICAgICAgICAgICAgIHJldHVybiBlcnI7
CiAgICAgICAgZHN0ID0gKCpycCktPnJ0X2RzdDsKICAgICAgICBzcmMgPSAoKnJwKS0+cnRfc3Jj
OwogICAgICAgIGlwX3J0X3B1dCgqcnApOwogICAgICAgICpycCA9ICgodm9pZCAqKTApOwogICAg
ICAgIHJldHVybiBpcF9yb3V0ZV9vdXRwdXQocnAsIGRzdCwgc3JjLCB0b3MsIG9pZik7Cn0KCmV4
dGVybiB2b2lkIHJ0X2JpbmRfcGVlcihzdHJ1Y3QgcnRhYmxlICpydCwgaW50IGNyZWF0ZSk7Cgpz
dGF0aWMgaW5saW5lIHN0cnVjdCBpbmV0X3BlZXIgKnJ0X2dldF9wZWVyKHN0cnVjdCBydGFibGUg
KnJ0KQp7CiAgICAgICAgaWYgKHJ0LT5wZWVyKQogICAgICAgICAgICAgICAgcmV0dXJuIHJ0LT5w
ZWVyOwoKICAgICAgICBydF9iaW5kX3BlZXIocnQsIDApOwogICAgICAgIHJldHVybiBydC0+cGVl
cjsKfQojIDMzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9pcC5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvYXJwLmgiIDEKCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pZl9hcnAuaCIgMQojIDEwMCAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pZl9hcnAuaCIKc3RydWN0IGFy
cHJlcSB7CiAgc3RydWN0IHNvY2thZGRyIGFycF9wYTsKICBzdHJ1Y3Qgc29ja2FkZHIgYXJwX2hh
OwogIGludCBhcnBfZmxhZ3M7CiAgc3RydWN0IHNvY2thZGRyIGFycF9uZXRtYXNrOwogIGNoYXIg
YXJwX2RldlsxNl07Cn07CgpzdHJ1Y3QgYXJwcmVxX29sZCB7CiAgc3RydWN0IHNvY2thZGRyIGFy
cF9wYTsKICBzdHJ1Y3Qgc29ja2FkZHIgYXJwX2hhOwogIGludCBhcnBfZmxhZ3M7CiAgc3RydWN0
IHNvY2thZGRyIGFycF9uZXRtYXNrOwp9OwojIDEyOCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9pZl9hcnAuaCIKc3RydWN0IGFycGhkcgp7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgYXJfaHJkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGFyX3BybzsKICAgICAgICB1bnNp
Z25lZCBjaGFyIGFyX2hsbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGFyX3BsbjsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBhcl9vcDsKIyAxNDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbGludXgvaWZfYXJwLmgiCn07CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9uZXQvYXJwLmgiIDIKCgpleHRlcm4gc3RydWN0IG5laWdoX3RhYmxlIGFycF90YmxfUjIyYjU5
NGFhOwoKZXh0ZXJuIHZvaWQgYXJwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgYXJwX3Jjdl9SNjZh
NmExOTAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCk7CmV4dGVybiBpbnQgYXJw
X2ZpbmRfUjRmMzJhNGQyKHVuc2lnbmVkIGNoYXIgKmhhZGRyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2ti
KTsKZXh0ZXJuIGludCBhcnBfaW9jdGwodW5zaWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKTsKZXh0
ZXJuIHZvaWQgYXJwX3NlbmRfUmFjN2JmNmI0KGludCB0eXBlLCBpbnQgcHR5cGUsIHUzMiBkZXN0
X2lwLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMy
IHNyY19pcCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmRlc3RfaHcs
IHVuc2lnbmVkIGNoYXIgKnNyY19odywgdW5zaWduZWQgY2hhciAqdGgpOwpleHRlcm4gaW50IGFy
cF9iaW5kX25laWdoYm91cihzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QpOwpleHRlcm4gaW50IGFycF9t
Y19tYXAodTMyIGFkZHIsIHU4ICpoYWRkciwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGRp
cik7CmV4dGVybiB2b2lkIGFycF9pZmRvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgpleHRl
cm4gc3RydWN0IG5laWdoX29wcyBhcnBfYnJva2VuX29wc19SNzY1OTgwMjE7CiMgMzQgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2lwLmgiIDIKCgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L3NubXAuaCIgMQojIDQ1ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL25ldC9zbm1wLmgiCnN0cnVjdCBpcF9taWIKewogICAgICAgIHVuc2ln
bmVkIGxvbmcgSXBJblJlY2VpdmVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSXBJbkhkckVycm9y
czsKICAgICAgICB1bnNpZ25lZCBsb25nIElwSW5BZGRyRXJyb3JzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgSXBGb3J3RGF0YWdyYW1zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSXBJblVua25vd25Q
cm90b3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJcEluRGlzY2FyZHM7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBJcEluRGVsaXZlcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJcE91dFJlcXVlc3Rz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgSXBPdXREaXNjYXJkczsKICAgICAgICB1bnNpZ25lZCBs
b25nIElwT3V0Tm9Sb3V0ZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJcFJlYXNtVGltZW91dDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIElwUmVhc21SZXFkczsKICAgICAgICB1bnNpZ25lZCBsb25n
IElwUmVhc21PS3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJcFJlYXNtRmFpbHM7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBJcEZyYWdPS3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJcEZyYWdGYWls
czsKICAgICAgICB1bnNpZ25lZCBsb25nIElwRnJhZ0NyZWF0ZXM7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBfX3BhZFswXTsKfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoKDUpKSkp
KSk7CgpzdHJ1Y3QgaXB2Nl9taWIKewogICAgICAgIHVuc2lnbmVkIGxvbmcgSXA2SW5SZWNlaXZl
czsKICAgICAgICB1bnNpZ25lZCBsb25nIElwNkluSGRyRXJyb3JzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgSXA2SW5Ub29CaWdFcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJcDZJbk5vUm91
dGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSXA2SW5BZGRyRXJyb3JzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgSXA2SW5Vbmtub3duUHJvdG9zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSXA2SW5U
cnVuY2F0ZWRQa3RzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSXA2SW5EaXNjYXJkczsKICAgICAg
ICB1bnNpZ25lZCBsb25nIElwNkluRGVsaXZlcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJcDZP
dXRGb3J3RGF0YWdyYW1zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSXA2T3V0UmVxdWVzdHM7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBJcDZPdXREaXNjYXJkczsKICAgICAgICB1bnNpZ25lZCBsb25n
IElwNk91dE5vUm91dGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSXA2UmVhc21UaW1lb3V0Owog
ICAgICAgIHVuc2lnbmVkIGxvbmcgSXA2UmVhc21SZXFkczsKICAgICAgICB1bnNpZ25lZCBsb25n
IElwNlJlYXNtT0tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSXA2UmVhc21GYWlsczsKICAgICAg
ICB1bnNpZ25lZCBsb25nIElwNkZyYWdPS3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJcDZGcmFn
RmFpbHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJcDZGcmFnQ3JlYXRlczsKICAgICAgICB1bnNp
Z25lZCBsb25nIElwNkluTWNhc3RQa3RzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSXA2T3V0TWNh
c3RQa3RzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWRbMF07Cn0gX19hdHRyaWJ1dGVfXygo
X19hbGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpOwoKc3RydWN0IGljbXBfbWliCnsKICAgICAgICB1
bnNpZ25lZCBsb25nIEljbXBJbk1zZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wSW5FcnJv
cnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wSW5EZXN0VW5yZWFjaHM7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBJY21wSW5UaW1lRXhjZHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wSW5Q
YXJtUHJvYnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wSW5TcmNRdWVuY2hzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgSWNtcEluUmVkaXJlY3RzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSWNt
cEluRWNob3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wSW5FY2hvUmVwczsKICAgICAgICB1
bnNpZ25lZCBsb25nIEljbXBJblRpbWVzdGFtcHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21w
SW5UaW1lc3RhbXBSZXBzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSWNtcEluQWRkck1hc2tzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgSWNtcEluQWRkck1hc2tSZXBzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgSWNtcE91dE1zZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wT3V0RXJyb3JzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgSWNtcE91dERlc3RVbnJlYWNoczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIEljbXBPdXRUaW1lRXhjZHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wT3V0UGFy
bVByb2JzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSWNtcE91dFNyY1F1ZW5jaHM7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBJY21wT3V0UmVkaXJlY3RzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSWNt
cE91dEVjaG9zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSWNtcE91dEVjaG9SZXBzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgSWNtcE91dFRpbWVzdGFtcHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJ
Y21wT3V0VGltZXN0YW1wUmVwczsKICAgICAgICB1bnNpZ25lZCBsb25nIEljbXBPdXRBZGRyTWFz
a3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wT3V0QWRkck1hc2tSZXBzOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZHVtbXk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3BhZFswXTsKfSBfX2F0
dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoKDUpKSkpKSk7CgpzdHJ1Y3QgaWNtcHY2X21p
Ygp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wNkluTXNnczsKICAgICAgICB1bnNpZ25lZCBs
b25nIEljbXA2SW5FcnJvcnM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgSWNtcDZJbkRlc3RVbnJl
YWNoczsKICAgICAgICB1bnNpZ25lZCBsb25nIEljbXA2SW5Qa3RUb29CaWdzOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgSWNtcDZJblRpbWVFeGNkczsKICAgICAgICB1bnNpZ25lZCBsb25nIEljbXA2
SW5QYXJtUHJvYmxlbXM7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgSWNtcDZJbkVjaG9zOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgSWNtcDZJbkVjaG9SZXBsaWVzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgSWNtcDZJbkdyb3VwTWVtYlF1ZXJpZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wNklu
R3JvdXBNZW1iUmVzcG9uc2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSWNtcDZJbkdyb3VwTWVt
YlJlZHVjdGlvbnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wNkluUm91dGVyU29saWNpdHM7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wNkluUm91dGVyQWR2ZXJ0aXNlbWVudHM7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBJY21wNkluTmVpZ2hib3JTb2xpY2l0czsKICAgICAgICB1bnNpZ25l
ZCBsb25nIEljbXA2SW5OZWlnaGJvckFkdmVydGlzZW1lbnRzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgSWNtcDZJblJlZGlyZWN0czsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wNk91dE1zZ3M7
CgogICAgICAgIHVuc2lnbmVkIGxvbmcgSWNtcDZPdXREZXN0VW5yZWFjaHM7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBJY21wNk91dFBrdFRvb0JpZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21w
Nk91dFRpbWVFeGNkczsKICAgICAgICB1bnNpZ25lZCBsb25nIEljbXA2T3V0UGFybVByb2JsZW1z
OwoKICAgICAgICB1bnNpZ25lZCBsb25nIEljbXA2T3V0RWNob1JlcGxpZXM7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBJY21wNk91dFJvdXRlclNvbGljaXRzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
SWNtcDZPdXROZWlnaGJvclNvbGljaXRzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSWNtcDZPdXRO
ZWlnaGJvckFkdmVydGlzZW1lbnRzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgSWNtcDZPdXRSZWRp
cmVjdHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBJY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIEljbXA2T3V0R3JvdXBNZW1iUmVkdWN0aW9uczsKICAgICAg
ICB1bnNpZ25lZCBsb25nIF9fcGFkWzBdOwp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgx
IDw8ICgoNSkpKSkpKTsKCnN0cnVjdCB0Y3BfbWliCnsKICAgICAgICB1bnNpZ25lZCBsb25nIFRj
cFJ0b0FsZ29yaXRobTsKICAgICAgICB1bnNpZ25lZCBsb25nIFRjcFJ0b01pbjsKICAgICAgICB1
bnNpZ25lZCBsb25nIFRjcFJ0b01heDsKICAgICAgICB1bnNpZ25lZCBsb25nIFRjcE1heENvbm47
CiAgICAgICAgdW5zaWduZWQgbG9uZyBUY3BBY3RpdmVPcGVuczsKICAgICAgICB1bnNpZ25lZCBs
b25nIFRjcFBhc3NpdmVPcGVuczsKICAgICAgICB1bnNpZ25lZCBsb25nIFRjcEF0dGVtcHRGYWls
czsKICAgICAgICB1bnNpZ25lZCBsb25nIFRjcEVzdGFiUmVzZXRzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgVGNwQ3VyckVzdGFiOwogICAgICAgIHVuc2lnbmVkIGxvbmcgVGNwSW5TZWdzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgVGNwT3V0U2VnczsKICAgICAgICB1bnNpZ25lZCBsb25nIFRjcFJl
dHJhbnNTZWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgVGNwSW5FcnJzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgVGNwT3V0UnN0czsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkWzBdOwp9IF9f
YXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgoNSkpKSkpKTsKCnN0cnVjdCB1ZHBfbWli
CnsKICAgICAgICB1bnNpZ25lZCBsb25nIFVkcEluRGF0YWdyYW1zOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgVWRwTm9Qb3J0czsKICAgICAgICB1bnNpZ25lZCBsb25nIFVkcEluRXJyb3JzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgVWRwT3V0RGF0YWdyYW1zOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
X19wYWRbMF07Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg1KSkpKSkpOwoK
c3RydWN0IGxpbnV4X21pYgp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBTeW5jb29raWVzU2VudDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIFN5bmNvb2tpZXNSZWN2OwogICAgICAgIHVuc2lnbmVkIGxv
bmcgU3luY29va2llc0ZhaWxlZDsKICAgICAgICB1bnNpZ25lZCBsb25nIEVtYnJ5b25pY1JzdHM7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBQcnVuZUNhbGxlZDsKICAgICAgICB1bnNpZ25lZCBsb25n
IFJjdlBydW5lZDsKICAgICAgICB1bnNpZ25lZCBsb25nIE9mb1BydW5lZDsKICAgICAgICB1bnNp
Z25lZCBsb25nIE91dE9mV2luZG93SWNtcHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBMb2NrRHJv
cHBlZEljbXBzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgQXJwRmlsdGVyOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgVGltZVdhaXRlZDsKICAgICAgICB1bnNpZ25lZCBsb25nIFRpbWVXYWl0UmVjeWNs
ZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUaW1lV2FpdEtpbGxlZDsKICAgICAgICB1bnNpZ25l
ZCBsb25nIFBBV1NQYXNzaXZlUmVqZWN0ZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBQQVdTQWN0
aXZlUmVqZWN0ZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBQQVdTRXN0YWJSZWplY3RlZDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIERlbGF5ZWRBQ0tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgRGVs
YXllZEFDS0xvY2tlZDsKICAgICAgICB1bnNpZ25lZCBsb25nIERlbGF5ZWRBQ0tMb3N0OwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgTGlzdGVuT3ZlcmZsb3dzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
TGlzdGVuRHJvcHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BQcmVxdWV1ZWQ7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBUQ1BEaXJlY3RDb3B5RnJvbUJhY2tsb2c7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBUQ1BEaXJlY3RDb3B5RnJvbVByZXF1ZXVlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgVENQ
UHJlcXVldWVEcm9wcGVkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgVENQSFBIaXRzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgVENQSFBIaXRzVG9Vc2VyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgVENQ
UHVyZUFja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BIUEFja3M7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBUQ1BSZW5vUmVjb3Zlcnk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BTYWNrUmVj
b3Zlcnk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BTQUNLUmVuZWdpbmc7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBUQ1BGQUNLUmVvcmRlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIFRDUFNBQ0tS
ZW9yZGVyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgVENQUmVub1Jlb3JkZXI7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBUQ1BUU1Jlb3JkZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BGdWxsVW5k
bzsKICAgICAgICB1bnNpZ25lZCBsb25nIFRDUFBhcnRpYWxVbmRvOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgVENQRFNBQ0tVbmRvOwogICAgICAgIHVuc2lnbmVkIGxvbmcgVENQTG9zc1VuZG87CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBUQ1BMb3NzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgVENQTG9z
dFJldHJhbnNtaXQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BSZW5vRmFpbHVyZXM7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBUQ1BTYWNrRmFpbHVyZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBU
Q1BMb3NzRmFpbHVyZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BGYXN0UmV0cmFuczsKICAg
ICAgICB1bnNpZ25lZCBsb25nIFRDUEZvcndhcmRSZXRyYW5zOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgVENQU2xvd1N0YXJ0UmV0cmFuczsKICAgICAgICB1bnNpZ25lZCBsb25nIFRDUFRpbWVvdXRz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgVENQUmVub1JlY292ZXJ5RmFpbDsKICAgICAgICB1bnNp
Z25lZCBsb25nIFRDUFNhY2tSZWNvdmVyeUZhaWw7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BT
Y2hlZHVsZXJGYWlsZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BSY3ZDb2xsYXBzZWQ7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBUQ1BEU0FDS09sZFNlbnQ7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBUQ1BEU0FDS09mb1NlbnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BEU0FDS1JlY3Y7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBUQ1BEU0FDS09mb1JlY3Y7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBUQ1BBYm9ydE9uU3luOwogICAgICAgIHVuc2lnbmVkIGxvbmcgVENQQWJvcnRPbkRhdGE7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBUQ1BBYm9ydE9uQ2xvc2U7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBUQ1BBYm9ydE9uTWVtb3J5OwogICAgICAgIHVuc2lnbmVkIGxvbmcgVENQQWJvcnRPblRpbWVv
dXQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BBYm9ydE9uTGluZ2VyOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgVENQQWJvcnRGYWlsZWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBUQ1BNZW1vcnlQ
cmVzc3VyZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3BhZFswXTsKfSBfX2F0dHJpYnV0ZV9f
KChfX2FsaWduZWRfXygoMSA8PCAoKDUpKSkpKSk7CiMgMzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbmV0L2lwLmgiIDIKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2lu
Y2x1ZGUvbmV0L3NvY2suaCIgMQojIDM5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L25ldC9zb2NrLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9p
bi5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaW4uaCIK
ZW51bSB7CiAgSVBQUk9UT19JUCA9IDAsCiAgSVBQUk9UT19JQ01QID0gMSwKICBJUFBST1RPX0lH
TVAgPSAyLAogIElQUFJPVE9fSVBJUCA9IDQsCiAgSVBQUk9UT19UQ1AgPSA2LAogIElQUFJPVE9f
RUdQID0gOCwKICBJUFBST1RPX1BVUCA9IDEyLAogIElQUFJPVE9fVURQID0gMTcsCiAgSVBQUk9U
T19JRFAgPSAyMiwKICBJUFBST1RPX1JTVlAgPSA0NiwKICBJUFBST1RPX0dSRSA9IDQ3LAoKICBJ
UFBST1RPX0lQVjYgPSA0MSwKCiAgSVBQUk9UT19QSU0gPSAxMDMsCgogIElQUFJPVE9fRVNQID0g
NTAsCiAgSVBQUk9UT19BSCA9IDUxLAogIElQUFJPVE9fQ09NUCA9IDEwOCwKCiAgSVBQUk9UT19S
QVcgPSAyNTUsCiAgSVBQUk9UT19NQVgKfTsKCgoKc3RydWN0IGluX2FkZHIgewogICAgICAgIF9f
dTMyIHNfYWRkcjsKfTsKIyA5MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9pbi5oIgpzdHJ1Y3QgaXBfbXJlcQp7CiAgICAgICAgc3RydWN0IGluX2FkZHIgaW1yX211bHRp
YWRkcjsKICAgICAgICBzdHJ1Y3QgaW5fYWRkciBpbXJfaW50ZXJmYWNlOwp9OwoKc3RydWN0IGlw
X21yZXFuCnsKICAgICAgICBzdHJ1Y3QgaW5fYWRkciBpbXJfbXVsdGlhZGRyOwogICAgICAgIHN0
cnVjdCBpbl9hZGRyIGltcl9hZGRyZXNzOwogICAgICAgIGludCBpbXJfaWZpbmRleDsKfTsKCnN0
cnVjdCBpbl9wa3RpbmZvCnsKICAgICAgICBpbnQgaXBpX2lmaW5kZXg7CiAgICAgICAgc3RydWN0
IGluX2FkZHIgaXBpX3NwZWNfZHN0OwogICAgICAgIHN0cnVjdCBpbl9hZGRyIGlwaV9hZGRyOwp9
OwoKCgpzdHJ1Y3Qgc29ja2FkZHJfaW4gewogIHNhX2ZhbWlseV90IHNpbl9mYW1pbHk7CiAgdW5z
aWduZWQgc2hvcnQgaW50IHNpbl9wb3J0OwogIHN0cnVjdCBpbl9hZGRyIHNpbl9hZGRyOwoKCiAg
dW5zaWduZWQgY2hhciBfX3BhZFsxNiAtIHNpemVvZihzaG9ydCBpbnQpIC0KICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIHNob3J0IGludCkgLSBzaXplb2Yoc3RydWN0IGlu
X2FkZHIpXTsKfTsKIyA0MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvc29j
ay5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2luNi5o
IiAxCiMgMzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaW42LmgiCnN0
cnVjdCBpbjZfYWRkcgp7CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBf
X3U4IHU2X2FkZHI4WzE2XTsKICAgICAgICAgICAgICAgIF9fdTE2IHU2X2FkZHIxNls4XTsKICAg
ICAgICAgICAgICAgIF9fdTMyIHU2X2FkZHIzMls0XTsKICAgICAgICB9IGluNl91OwoKCgp9OwoK
c3RydWN0IHNvY2thZGRyX2luNiB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaW50IHNpbjZfZmFt
aWx5OwogICAgICAgIF9fdTE2IHNpbjZfcG9ydDsKICAgICAgICBfX3UzMiBzaW42X2Zsb3dpbmZv
OwogICAgICAgIHN0cnVjdCBpbjZfYWRkciBzaW42X2FkZHI7CiAgICAgICAgX191MzIgc2luNl9z
Y29wZV9pZDsKfTsKCnN0cnVjdCBpcHY2X21yZXEgewoKICAgICAgICBzdHJ1Y3QgaW42X2FkZHIg
aXB2Nm1yX211bHRpYWRkcjsKCgogICAgICAgIGludCBpcHY2bXJfaWZpbmRleDsKfTsKCnN0cnVj
dCBpbjZfZmxvd2xhYmVsX3JlcQp7CiAgICAgICAgc3RydWN0IGluNl9hZGRyIGZscl9kc3Q7CiAg
ICAgICAgX191MzIgZmxyX2xhYmVsOwogICAgICAgIF9fdTggZmxyX2FjdGlvbjsKICAgICAgICBf
X3U4IGZscl9zaGFyZTsKICAgICAgICBfX3UxNiBmbHJfZmxhZ3M7CiAgICAgICAgX191MTYgZmxy
X2V4cGlyZXM7CiAgICAgICAgX191MTYgZmxyX2xpbmdlcjsKICAgICAgICBfX3UzMiBfX2Zscl9w
YWQ7Cgp9OwojIDQzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9zb2NrLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2lwdjYuaCIgMQoj
IDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2lwdjYuaCIKc3RydWN0
IGluNl9wa3RpbmZvIHsKICAgICAgICBzdHJ1Y3QgaW42X2FkZHIgaXBpNl9hZGRyOwogICAgICAg
IGludCBpcGk2X2lmaW5kZXg7Cn07CgoKc3RydWN0IGluNl9pZnJlcSB7CiAgICAgICAgc3RydWN0
IGluNl9hZGRyIGlmcjZfYWRkcjsKICAgICAgICBfX3UzMiBpZnI2X3ByZWZpeGxlbjsKICAgICAg
ICBpbnQgaWZyNl9pZmluZGV4Owp9OwoKCgoKCgoKc3RydWN0IGlwdjZfcnRfaGRyIHsKICAgICAg
ICBfX3U4IG5leHRoZHI7CiAgICAgICAgX191OCBoZHJsZW47CiAgICAgICAgX191OCB0eXBlOwog
ICAgICAgIF9fdTggc2VnbWVudHNfbGVmdDsKCgoKCgp9OwoKCnN0cnVjdCBpcHY2X29wdF9oZHIg
ewogICAgICAgIF9fdTggbmV4dGhkcjsKICAgICAgICBfX3U4IGhkcmxlbjsKCgoKfTsKIyA2OCAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pcHY2LmgiCnN0cnVjdCBydDBf
aGRyIHsKICAgICAgICBzdHJ1Y3QgaXB2Nl9ydF9oZHIgcnRfaGRyOwogICAgICAgIF9fdTMyIGJp
dG1hcDsKICAgICAgICBzdHJ1Y3QgaW42X2FkZHIgYWRkclswXTsKCgp9OwojIDgzICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2lwdjYuaCIKc3RydWN0IGlwdjZoZHIgewoK
ICAgICAgICBfX3U4IHByaW9yaXR5OjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmVyc2lvbjo0OwoKCgoKCgogICAgICAgIF9fdTggZmxvd19sYmxbM107CgogICAgICAgIF9fdTE2
IHBheWxvYWRfbGVuOwogICAgICAgIF9fdTggbmV4dGhkcjsKICAgICAgICBfX3U4IGhvcF9saW1p
dDsKCiAgICAgICAgc3RydWN0IGluNl9hZGRyIHNhZGRyOwogICAgICAgIHN0cnVjdCBpbjZfYWRk
ciBkYWRkcjsKfTsKIyAxMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
aXB2Ni5oIgpzdHJ1Y3QgaW5ldDZfc2tiX3Bhcm0KewogICAgICAgIGludCBpaWY7CiAgICAgICAg
X191MTYgcmE7CiAgICAgICAgX191MTYgaG9wOwogICAgICAgIF9fdTE2IGF1dGg7CiAgICAgICAg
X191MTYgZHN0MDsKICAgICAgICBfX3UxNiBzcmNydDsKICAgICAgICBfX3UxNiBkc3QxOwp9Owoj
IDQ0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9zb2NrLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ljbXB2Ni5oIiAxCgoKCgoKc3Ry
dWN0IGljbXA2aGRyIHsKCiAgICAgICAgX191OCBpY21wNl90eXBlOwogICAgICAgIF9fdTggaWNt
cDZfY29kZTsKICAgICAgICBfX3UxNiBpY21wNl9ja3N1bTsKCgogICAgICAgIHVuaW9uIHsKICAg
ICAgICAgICAgICAgIF9fdTMyIHVuX2RhdGEzMlsxXTsKICAgICAgICAgICAgICAgIF9fdTE2IHVu
X2RhdGExNlsyXTsKICAgICAgICAgICAgICAgIF9fdTggdW5fZGF0YThbNF07CgogICAgICAgICAg
ICAgICAgc3RydWN0IGljbXB2Nl9lY2hvIHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYg
aWRlbnRpZmllcjsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYgc2VxdWVuY2U7CiAgICAg
ICAgICAgICAgICB9IHVfZWNobzsKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcHY2X25kX2Fk
dnQgewoKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgcmVzZXJ2ZWQ6NSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlOjEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzb2xpY2l0ZWQ6MSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJvdXRlcjoxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzZXJ2ZWQyOjI0OwojIDM4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L2ljbXB2Ni5oIgogICAgICAgICAgICAgICAgfSB1X25kX2FkdnQ7Cgog
ICAgICAgICAgICAgICAgc3RydWN0IGljbXB2Nl9uZF9yYSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTggaG9wX2xpbWl0OwoKICAgICAgICAgICAgICAgICAgICAgICAgX191OCByZXNlcnZl
ZDo2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXI6MSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZWQ6MTsKIyA1NCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pY21wdjYuaCIKICAgICAgICAgICAg
ICAgICAgICAgICAgX191MTYgcnRfbGlmZXRpbWU7CiAgICAgICAgICAgICAgICB9IHVfbmRfcmE7
CgogICAgICAgIH0gaWNtcDZfZGF0YXVuOwojIDczICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L2ljbXB2Ni5oIgp9OwojIDEyNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9pY21wdjYuaCIKc3RydWN0IGljbXA2X2ZpbHRlciB7CiAgICAgICAgX191
MzIgZGF0YVs4XTsKfTsKCgoKCgoKCmV4dGVybiB2b2lkIGljbXB2Nl9zZW5kKHN0cnVjdCBza19i
dWZmICpza2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgdHlwZSwgaW50IGNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiBpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgpleHRl
cm4gaW50IGljbXB2Nl9pbml0KHN0cnVjdCBuZXRfcHJvdG9fZmFtaWx5ICpvcHMpOwpleHRlcm4g
aW50IGljbXB2Nl9lcnJfY29udmVydChpbnQgdHlwZSwgaW50IGNvZGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICplcnIpOwpl
eHRlcm4gdm9pZCBpY21wdjZfY2xlYW51cCh2b2lkKTsKZXh0ZXJuIHZvaWQgaWNtcHY2X3BhcmFt
X3Byb2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2RlLCBpbnQgcG9zKTsKIyA0NSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvc29jay5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvaWZfaW5ldDYuaCIgMQojIDIzICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9pZl9pbmV0Ni5oIgpzdHJ1Y3QgaW5ldDZfaWZhZGRy
CnsKICAgICAgICBzdHJ1Y3QgaW42X2FkZHIgYWRkcjsKICAgICAgICBfX3UzMiBwcmVmaXhfbGVu
OwoKICAgICAgICBfX3UzMiB2YWxpZF9sZnQ7CiAgICAgICAgX191MzIgcHJlZmVyZWRfbGZ0Owog
ICAgICAgIHVuc2lnbmVkIGxvbmcgdHN0YW1wOwogICAgICAgIGF0b21pY190IHJlZmNudDsKICAg
ICAgICBzcGlubG9ja190IGxvY2s7CgogICAgICAgIF9fdTggcHJvYmVzOwogICAgICAgIF9fdTgg
ZmxhZ3M7CgogICAgICAgIF9fdTE2IHNjb3BlOwoKICAgICAgICBzdHJ1Y3QgdGltZXJfbGlzdCB0
aW1lcjsKCiAgICAgICAgc3RydWN0IGluZXQ2X2RldiAqaWRldjsKCiAgICAgICAgc3RydWN0IGlu
ZXQ2X2lmYWRkciAqbHN0X25leHQ7CiAgICAgICAgc3RydWN0IGluZXQ2X2lmYWRkciAqaWZfbmV4
dDsKCiAgICAgICAgaW50IGRlYWQ7Cn07CgpzdHJ1Y3QgaXB2Nl9tY19zb2NrbGlzdAp7CiAgICAg
ICAgc3RydWN0IGluNl9hZGRyIGFkZHI7CiAgICAgICAgaW50IGlmaW5kZXg7CiAgICAgICAgc3Ry
dWN0IGlwdjZfbWNfc29ja2xpc3QgKm5leHQ7Cn07CgoKCgoKc3RydWN0IGlmbWNhZGRyNgp7CiAg
ICAgICAgc3RydWN0IGluNl9hZGRyIG1jYV9hZGRyOwogICAgICAgIHN0cnVjdCBpbmV0Nl9kZXYg
KmlkZXY7CiAgICAgICAgc3RydWN0IGlmbWNhZGRyNiAqbmV4dDsKICAgICAgICBzdHJ1Y3QgdGlt
ZXJfbGlzdCBtY2FfdGltZXI7CiAgICAgICAgdW5zaWduZWQgbWNhX2ZsYWdzOwogICAgICAgIGlu
dCBtY2FfdXNlcnM7CiAgICAgICAgYXRvbWljX3QgbWNhX3JlZmNudDsKICAgICAgICBzcGlubG9j
a190IG1jYV9sb2NrOwp9OwoKCgoKCgpzdHJ1Y3QgaXB2Nl9kZXZjb25mCnsKICAgICAgICBpbnQg
Zm9yd2FyZGluZzsKICAgICAgICBpbnQgaG9wX2xpbWl0OwogICAgICAgIGludCBtdHU2OwogICAg
ICAgIGludCBhY2NlcHRfcmE7CiAgICAgICAgaW50IGFjY2VwdF9yZWRpcmVjdHM7CiAgICAgICAg
aW50IGF1dG9jb25mOwogICAgICAgIGludCBkYWRfdHJhbnNtaXRzOwogICAgICAgIGludCBydHJf
c29saWNpdHM7CiAgICAgICAgaW50IHJ0cl9zb2xpY2l0X2ludGVydmFsOwogICAgICAgIGludCBy
dHJfc29saWNpdF9kZWxheTsKCiAgICAgICAgdm9pZCAqc3lzY3RsOwp9OwoKc3RydWN0IGluZXQ2
X2Rldgp7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKCiAgICAgICAgc3RydWN0IGlu
ZXQ2X2lmYWRkciAqYWRkcl9saXN0OwogICAgICAgIHN0cnVjdCBpZm1jYWRkcjYgKm1jX2xpc3Q7
CiAgICAgICAgcndsb2NrX3QgbG9jazsKICAgICAgICBhdG9taWNfdCByZWZjbnQ7CiAgICAgICAg
X191MzIgaWZfZmxhZ3M7CiAgICAgICAgaW50IGRlYWQ7CgogICAgICAgIHN0cnVjdCBuZWlnaF9w
YXJtcyAqbmRfcGFybXM7CiAgICAgICAgc3RydWN0IGluZXQ2X2RldiAqbmV4dDsKICAgICAgICBz
dHJ1Y3QgaXB2Nl9kZXZjb25mIGNuZjsKfTsKCmV4dGVybiBzdHJ1Y3QgaXB2Nl9kZXZjb25mIGlw
djZfZGV2Y29uZjsKCnN0YXRpYyBpbmxpbmUgdm9pZCBpcHY2X2V0aF9tY19tYXAoc3RydWN0IGlu
Nl9hZGRyICphZGRyLCBjaGFyICpidWYpCnsKCgoKCgoKICAgICAgICBidWZbMF09IDB4MzM7CiAg
ICAgICAgYnVmWzFdPSAweDMzOwoKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9m
KF9fdTMyKSkgPyBfX2NvbnN0YW50X21lbWNweSgoYnVmICsgMiksKCZhZGRyLT5pbjZfdS51Nl9h
ZGRyMzJbM10pLChzaXplb2YoX191MzIpKSkgOiBfX21lbWNweSgoYnVmICsgMiksKCZhZGRyLT5p
bjZfdS51Nl9hZGRyMzJbM10pLChzaXplb2YoX191MzIpKSkpOwp9CgpzdGF0aWMgaW5saW5lIHZv
aWQgaXB2Nl90cl9tY19tYXAoc3RydWN0IGluNl9hZGRyICphZGRyLCBjaGFyICpidWYpCnsKCgog
ICAgICAgIGlmICgoKGFkZHItPmluNl91LnU2X2FkZHI4WzBdID09IDB4RkYpICYmCiAgICAgICAg
ICAgICgoYWRkci0+aW42X3UudTZfYWRkcjhbMV0gPT0gMHgwMSkgfHwgKGFkZHItPmluNl91LnU2
X2FkZHI4WzFdID09IDB4MDIpKSAmJgogICAgICAgICAgICAgKGFkZHItPmluNl91LnU2X2FkZHIx
NlsxXSA9PSAwKSAmJgogICAgICAgICAgICAgKGFkZHItPmluNl91LnU2X2FkZHIzMlsxXSA9PSAw
KSAmJgogICAgICAgICAgICAgKGFkZHItPmluNl91LnU2X2FkZHIzMlsyXSA9PSAwKSAmJgogICAg
ICAgICAgICAgKGFkZHItPmluNl91LnU2X2FkZHIxNls2XSA9PSAwKSAmJgogICAgICAgICAgICAg
KGFkZHItPmluNl91LnU2X2FkZHI4WzE1XSA9PSAxKSkgfHwKICAgICAgICAgICAgKChhZGRyLT5p
bjZfdS51Nl9hZGRyOFswXSA9PSAweEZGKSAmJgogICAgICAgICAgICAgKGFkZHItPmluNl91LnU2
X2FkZHI4WzFdID09IDB4MDIpICYmCiAgICAgICAgICAgICAoYWRkci0+aW42X3UudTZfYWRkcjE2
WzFdID09IDApICYmCiAgICAgICAgICAgICAoYWRkci0+aW42X3UudTZfYWRkcjMyWzFdID09IDAp
ICYmCiAgICAgICAgICAgICAoYWRkci0+aW42X3UudTZfYWRkcjE2WzRdID09IDApICYmCiAgICAg
ICAgICAgICAoYWRkci0+aW42X3UudTZfYWRkcjhbMTBdID09IDApICYmCiAgICAgICAgICAgICAo
YWRkci0+aW42X3UudTZfYWRkcjhbMTFdID09IDEpICYmCiAgICAgICAgICAgICAoYWRkci0+aW42
X3UudTZfYWRkcjhbMTJdID09IDB4ZmYpKSkKICAgICAgICB7CiAgICAgICAgICAgICAgICBidWZb
MF09MHhDMDsKICAgICAgICAgICAgICAgIGJ1ZlsxXT0weDAwOwogICAgICAgICAgICAgICAgYnVm
WzJdPTB4MDE7CiAgICAgICAgICAgICAgICBidWZbM109MHgwMDsKICAgICAgICAgICAgICAgIGJ1
Zls0XT0weDAwOwogICAgICAgICAgICAgICAgYnVmWzVdPTB4MDA7CgogICAgICAgIH0gZWxzZSBp
ZiAoKGFkZHItPmluNl91LnU2X2FkZHI4WzBdID09MHhmZikgJiYKICAgICAgICAgICAgICAgICgo
YWRkci0+aW42X3UudTZfYWRkcjhbMV0gJiAweEYwKSA9PSAwKSAmJgogICAgICAgICAgICAgICAg
KGFkZHItPmluNl91LnU2X2FkZHIxNlsxXSA9PSAwKSAmJgogICAgICAgICAgICAgICAgKGFkZHIt
PmluNl91LnU2X2FkZHIzMlsxXSA9PSAwKSAmJgogICAgICAgICAgICAgICAgKGFkZHItPmluNl91
LnU2X2FkZHIzMlsyXSA9PSAwKSAmJgogICAgICAgICAgICAgICAgKGFkZHItPmluNl91LnU2X2Fk
ZHIxNls2XSA9PSAwKSAmJgogICAgICAgICAgICAgICAgKGFkZHItPmluNl91LnU2X2FkZHI4WzE1
XSA9PSAyKSkKICAgICAgICB7CiAgICAgICAgICAgICAgICBidWZbMF09MHhDMDsKICAgICAgICAg
ICAgICAgIGJ1ZlsxXT0weDAwOwogICAgICAgICAgICAgICAgYnVmWzJdPTB4MDI7CiAgICAgICAg
ICAgICAgICBidWZbM109MHgwMDsKICAgICAgICAgICAgICAgIGJ1Zls0XT0weDAwOwogICAgICAg
ICAgICAgICAgYnVmWzVdPTB4MDA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgaSA7CgogICAgICAgICAgICAgICAgaSA9IGFkZHItPmluNl91LnU2X2FkZHI4
WzE1XSAmIDcgOwogICAgICAgICAgICAgICAgYnVmWzBdPTB4QzA7CiAgICAgICAgICAgICAgICBi
dWZbMV09MHgwMDsKICAgICAgICAgICAgICAgIGJ1ZlsyXT0weDAwOwogICAgICAgICAgICAgICAg
YnVmWzNdPTB4MDEgPDwgaSA7CiAgICAgICAgICAgICAgICBidWZbNF09MHgwMDsKICAgICAgICAg
ICAgICAgIGJ1Zls1XT0weDAwOwogICAgICAgIH0KfQojIDQ2ICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL25ldC9zb2NrLmgiIDIKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL2xpbnV4L2ljbXAuaCIgMQojIDY2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L2ljbXAuaCIKc3RydWN0IGljbXBoZHIgewogIF9fdTggdHlwZTsKICBfX3U4
IGNvZGU7CiAgX191MTYgY2hlY2tzdW07CiAgdW5pb24gewogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICBfX3UxNiBpZDsKICAgICAgICAgICAgICAgIF9fdTE2IHNlcXVlbmNlOwogICAg
ICAgIH0gZWNobzsKICAgICAgICBfX3UzMiBnYXRld2F5OwogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICBfX3UxNiBfX3VudXNlZDsKICAgICAgICAgICAgICAgIF9fdTE2IG10dTsKICAg
ICAgICB9IGZyYWc7CiAgfSB1bjsKfTsKCgoKCgoKCnN0cnVjdCBpY21wX2ZpbHRlciB7CiAgICAg
ICAgX191MzIgZGF0YTsKfTsKIyA1MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9u
ZXQvc29jay5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgv
dGNwLmgiIDEKIyAyMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC90Y3Au
aCIKc3RydWN0IHRjcGhkciB7CiAgICAgICAgX191MTYgc291cmNlOwogICAgICAgIF9fdTE2IGRl
c3Q7CiAgICAgICAgX191MzIgc2VxOwogICAgICAgIF9fdTMyIGFja19zZXE7CgogICAgICAgIF9f
dTE2IHJlczE6NCwKICAgICAgICAgICAgICAgIGRvZmY6NCwKICAgICAgICAgICAgICAgIGZpbjox
LAogICAgICAgICAgICAgICAgc3luOjEsCiAgICAgICAgICAgICAgICByc3Q6MSwKICAgICAgICAg
ICAgICAgIHBzaDoxLAogICAgICAgICAgICAgICAgYWNrOjEsCiAgICAgICAgICAgICAgICB1cmc6
MSwKICAgICAgICAgICAgICAgIGVjZToxLAogICAgICAgICAgICAgICAgY3dyOjE7CiMgNTMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvdGNwLmgiCiAgICAgICAgX191MTYg
d2luZG93OwogICAgICAgIF9fdTE2IGNoZWNrOwogICAgICAgIF9fdTE2IHVyZ19wdHI7Cn07CgoK
ZW51bSB7CiAgVENQX0VTVEFCTElTSEVEID0gMSwKICBUQ1BfU1lOX1NFTlQsCiAgVENQX1NZTl9S
RUNWLAogIFRDUF9GSU5fV0FJVDEsCiAgVENQX0ZJTl9XQUlUMiwKICBUQ1BfVElNRV9XQUlULAog
IFRDUF9DTE9TRSwKICBUQ1BfQ0xPU0VfV0FJVCwKICBUQ1BfTEFTVF9BQ0ssCiAgVENQX0xJU1RF
TiwKICBUQ1BfQ0xPU0lORywKCiAgVENQX01BWF9TVEFURVMKfTsKCgoKCmVudW0gewogIFRDUEZf
RVNUQUJMSVNIRUQgPSAoMSA8PCAxKSwKICBUQ1BGX1NZTl9TRU5UID0gKDEgPDwgMiksCiAgVENQ
Rl9TWU5fUkVDViA9ICgxIDw8IDMpLAogIFRDUEZfRklOX1dBSVQxID0gKDEgPDwgNCksCiAgVENQ
Rl9GSU5fV0FJVDIgPSAoMSA8PCA1KSwKICBUQ1BGX1RJTUVfV0FJVCA9ICgxIDw8IDYpLAogIFRD
UEZfQ0xPU0UgPSAoMSA8PCA3KSwKICBUQ1BGX0NMT1NFX1dBSVQgPSAoMSA8PCA4KSwKICBUQ1BG
X0xBU1RfQUNLID0gKDEgPDwgOSksCiAgVENQRl9MSVNURU4gPSAoMSA8PCAxMCksCiAgVENQRl9D
TE9TSU5HID0gKDEgPDwgMTEpCn07CgoKCgoKCnVuaW9uIHRjcF93b3JkX2hkciB7CiAgICAgICAg
c3RydWN0IHRjcGhkciBoZHI7CiAgICAgICAgX191MzIgd29yZHNbNV07Cn07CgoKCmVudW0gewog
ICAgICAgIFRDUF9GTEFHX0NXUiA9ICgoX191MzIpKCAoKChfX3UzMikoKDB4MDA4MDAwMDApKSAm
IChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKSgoMHgwMDgwMDAwMCkpICYg
KF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoKDB4MDA4MDAwMDApKSAmIChf
X3UzMikweDAwZmYwMDAwVUwpID4+IDgpIHwgKCgoX191MzIpKCgweDAwODAwMDAwKSkgJiAoX191
MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSksCiAgICAgICAgVENQX0ZMQUdfRUNFID0gKChfX3Uz
MikoICgoKF9fdTMyKSgoMHgwMDQwMDAwMCkpICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQp
IHwgKCgoX191MzIpKCgweDAwNDAwMDAwKSkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCA4KSB8
ICgoKF9fdTMyKSgoMHgwMDQwMDAwMCkpICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gOCkgfCAo
KChfX3UzMikoKDB4MDA0MDAwMDApKSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSApKSwK
ICAgICAgICBUQ1BfRkxBR19VUkcgPSAoKF9fdTMyKSggKCgoX191MzIpKCgweDAwMjAwMDAwKSkg
JiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoKDB4MDAyMDAwMDApKSAm
IChfX3UzMikweDAwMDBmZjAwVUwpIDw8IDgpIHwgKCgoX191MzIpKCgweDAwMjAwMDAwKSkgJiAo
X191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8ICgoKF9fdTMyKSgoMHgwMDIwMDAwMCkpICYgKF9f
dTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpLAogICAgICAgIFRDUF9GTEFHX0FDSyA9ICgoX191
MzIpKCAoKChfX3UzMikoKDB4MDAxMDAwMDApKSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0
KSB8ICgoKF9fdTMyKSgoMHgwMDEwMDAwMCkpICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgOCkg
fCAoKChfX3UzMikoKDB4MDAxMDAwMDApKSAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+IDgpIHwg
KCgoX191MzIpKCgweDAwMTAwMDAwKSkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSks
CiAgICAgICAgVENQX0ZMQUdfUFNIID0gKChfX3UzMikoICgoKF9fdTMyKSgoMHgwMDA4MDAwMCkp
ICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCgweDAwMDgwMDAwKSkg
JiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCA4KSB8ICgoKF9fdTMyKSgoMHgwMDA4MDAwMCkpICYg
KF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gOCkgfCAoKChfX3UzMikoKDB4MDAwODAwMDApKSAmIChf
X3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSApKSwKICAgICAgICBUQ1BfRkxBR19SU1QgPSAoKF9f
dTMyKSggKCgoX191MzIpKCgweDAwMDQwMDAwKSkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAy
NCkgfCAoKChfX3UzMikoKDB4MDAwNDAwMDApKSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8IDgp
IHwgKCgoX191MzIpKCgweDAwMDQwMDAwKSkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8
ICgoKF9fdTMyKSgoMHgwMDA0MDAwMCkpICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkp
LAogICAgICAgIFRDUF9GTEFHX1NZTiA9ICgoX191MzIpKCAoKChfX3UzMikoKDB4MDAwMjAwMDAp
KSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKSgoMHgwMDAyMDAwMCkp
ICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoKDB4MDAwMjAwMDApKSAm
IChfX3UzMikweDAwZmYwMDAwVUwpID4+IDgpIHwgKCgoX191MzIpKCgweDAwMDIwMDAwKSkgJiAo
X191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSksCiAgICAgICAgVENQX0ZMQUdfRklOID0gKChf
X3UzMikoICgoKF9fdTMyKSgoMHgwMDAxMDAwMCkpICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwg
MjQpIHwgKCgoX191MzIpKCgweDAwMDEwMDAwKSkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCA4
KSB8ICgoKF9fdTMyKSgoMHgwMDAxMDAwMCkpICYgKF9fdTMyKTB4MDBmZjAwMDBVTCkgPj4gOCkg
fCAoKChfX3UzMikoKDB4MDAwMTAwMDApKSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+IDI0KSAp
KSwKICAgICAgICBUQ1BfUkVTRVJWRURfQklUUyA9ICgoX191MzIpKCAoKChfX3UzMikoKDB4MEYw
MDAwMDApKSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKSgoMHgwRjAw
MDAwMCkpICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoKDB4MEYwMDAw
MDApKSAmIChfX3UzMikweDAwZmYwMDAwVUwpID4+IDgpIHwgKCgoX191MzIpKCgweDBGMDAwMDAw
KSkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkgKSksCiAgICAgICAgVENQX0RBVEFfT0ZG
U0VUID0gKChfX3UzMikoICgoKF9fdTMyKSgoMHhGMDAwMDAwMCkpICYgKF9fdTMyKTB4MDAwMDAw
ZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKCgweEYwMDAwMDAwKSkgJiAoX191MzIpMHgwMDAwZmYw
MFVMKSA8PCA4KSB8ICgoKF9fdTMyKSgoMHhGMDAwMDAwMCkpICYgKF9fdTMyKTB4MDBmZjAwMDBV
TCkgPj4gOCkgfCAoKChfX3UzMikoKDB4RjAwMDAwMDApKSAmIChfX3UzMikweGZmMDAwMDAwVUwp
ID4+IDI0KSApKQp9OwojIDEzNiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC90Y3AuaCIKZW51bSB0Y3BfY2Ffc3RhdGUKewogICAgICAgIFRDUF9DQV9PcGVuID0gMCwKCiAg
ICAgICAgVENQX0NBX0Rpc29yZGVyID0gMSwKCiAgICAgICAgVENQX0NBX0NXUiA9IDIsCgogICAg
ICAgIFRDUF9DQV9SZWNvdmVyeSA9IDMsCgogICAgICAgIFRDUF9DQV9Mb3NzID0gNAoKfTsKCnN0
cnVjdCB0Y3BfaW5mbwp7CiAgICAgICAgX191OCB0Y3BpX3N0YXRlOwogICAgICAgIF9fdTggdGNw
aV9jYV9zdGF0ZTsKICAgICAgICBfX3U4IHRjcGlfcmV0cmFuc21pdHM7CiAgICAgICAgX191OCB0
Y3BpX3Byb2JlczsKICAgICAgICBfX3U4IHRjcGlfYmFja29mZjsKICAgICAgICBfX3U4IHRjcGlf
b3B0aW9uczsKICAgICAgICBfX3U4IHRjcGlfc25kX3dzY2FsZSA6IDQsIHRjcGlfcmN2X3dzY2Fs
ZSA6IDQ7CgogICAgICAgIF9fdTMyIHRjcGlfcnRvOwogICAgICAgIF9fdTMyIHRjcGlfYXRvOwog
ICAgICAgIF9fdTMyIHRjcGlfc25kX21zczsKICAgICAgICBfX3UzMiB0Y3BpX3Jjdl9tc3M7Cgog
ICAgICAgIF9fdTMyIHRjcGlfdW5hY2tlZDsKICAgICAgICBfX3UzMiB0Y3BpX3NhY2tlZDsKICAg
ICAgICBfX3UzMiB0Y3BpX2xvc3Q7CiAgICAgICAgX191MzIgdGNwaV9yZXRyYW5zOwogICAgICAg
IF9fdTMyIHRjcGlfZmFja2V0czsKCgogICAgICAgIF9fdTMyIHRjcGlfbGFzdF9kYXRhX3NlbnQ7
CiAgICAgICAgX191MzIgdGNwaV9sYXN0X2Fja19zZW50OwogICAgICAgIF9fdTMyIHRjcGlfbGFz
dF9kYXRhX3JlY3Y7CiAgICAgICAgX191MzIgdGNwaV9sYXN0X2Fja19yZWN2OwoKCiAgICAgICAg
X191MzIgdGNwaV9wbXR1OwogICAgICAgIF9fdTMyIHRjcGlfcmN2X3NzdGhyZXNoOwogICAgICAg
IF9fdTMyIHRjcGlfcnR0OwogICAgICAgIF9fdTMyIHRjcGlfcnR0dmFyOwogICAgICAgIF9fdTMy
IHRjcGlfc25kX3NzdGhyZXNoOwogICAgICAgIF9fdTMyIHRjcGlfc25kX2N3bmQ7CiAgICAgICAg
X191MzIgdGNwaV9hZHZtc3M7CiAgICAgICAgX191MzIgdGNwaV9yZW9yZGVyaW5nOwp9OwojIDUy
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9zb2NrLmgiIDIKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9wcm90b2NvbC5oIiAxCiMgMzcgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L3Byb3RvY29sLmgiCnN0cnVjdCBpbmV0
X3Byb3RvY29sCnsKICAgICAgICBpbnQgKCpoYW5kbGVyKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsK
ICAgICAgICB2b2lkICgqZXJyX2hhbmRsZXIpKHN0cnVjdCBza19idWZmICpza2IsIHUzMiBpbmZv
KTsKICAgICAgICBzdHJ1Y3QgaW5ldF9wcm90b2NvbCAqbmV4dDsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHByb3RvY29sOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY29weToxOwogICAgICAgIHZvaWQg
KmRhdGE7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKfTsKCgpzdHJ1Y3QgaW5ldDZfcHJvdG9j
b2wKewogICAgICAgIGludCAoKmhhbmRsZXIpKHN0cnVjdCBza19idWZmICpza2IpOwoKICAgICAg
ICB2b2lkICgqZXJyX2hhbmRsZXIpKHN0cnVjdCBza19idWZmICpza2IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5ldDZfc2tiX3Bhcm0gKm9wdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCB0eXBlLCBpbnQgY29kZSwgaW50IG9mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGluZm8pOwogICAgICAgIHN0cnVjdCBpbmV0
Nl9wcm90b2NvbCAqbmV4dDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHByb3RvY29sOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgY29weToxOwogICAgICAgIHZvaWQgKmRhdGE7CiAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZTsKfTsKCgoKCnN0cnVjdCBpbmV0X3Byb3Rvc3cgewogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgbGlzdDsKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGU7CiAgICAgICAgaW50
IHByb3RvY29sOwoKICAgICAgICBzdHJ1Y3QgcHJvdG8gKnByb3Q7CiAgICAgICAgc3RydWN0IHBy
b3RvX29wcyAqb3BzOwoKICAgICAgICBpbnQgY2FwYWJpbGl0eTsKCgoKICAgICAgICBjaGFyIG5v
X2NoZWNrOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3M7Cn07CgoKCmV4dGVybiBzdHJ1Y3Qg
aW5ldF9wcm90b2NvbCAqaW5ldF9wcm90b2NvbF9iYXNlOwpleHRlcm4gc3RydWN0IGluZXRfcHJv
dG9jb2wgKmluZXRfcHJvdG9zWzMyXTsKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgaW5ldHN3Wygx
MCArMSldOwoKCmV4dGVybiBzdHJ1Y3QgaW5ldDZfcHJvdG9jb2wgKmluZXQ2X3Byb3Rvc1szMl07
CmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGluZXRzdzZbKDEwICsxKV07CgoKZXh0ZXJuIHZvaWQg
aW5ldF9hZGRfcHJvdG9jb2xfUjdkNWRkYjU0KHN0cnVjdCBpbmV0X3Byb3RvY29sICpwcm90KTsK
ZXh0ZXJuIGludCBpbmV0X2RlbF9wcm90b2NvbF9SOTAwNDE3MDAoc3RydWN0IGluZXRfcHJvdG9j
b2wgKnByb3QpOwpleHRlcm4gdm9pZCBpbmV0X3JlZ2lzdGVyX3Byb3Rvc3dfUmY1MDRlNjQ3KHN0
cnVjdCBpbmV0X3Byb3Rvc3cgKnApOwpleHRlcm4gdm9pZCBpbmV0X3VucmVnaXN0ZXJfcHJvdG9z
d19SN2YwMzU1OWUoc3RydWN0IGluZXRfcHJvdG9zdyAqcCk7CgoKZXh0ZXJuIHZvaWQgaW5ldDZf
YWRkX3Byb3RvY29sKHN0cnVjdCBpbmV0Nl9wcm90b2NvbCAqcHJvdCk7CmV4dGVybiBpbnQgaW5l
dDZfZGVsX3Byb3RvY29sKHN0cnVjdCBpbmV0Nl9wcm90b2NvbCAqcHJvdCk7CmV4dGVybiB2b2lk
IGluZXQ2X3JlZ2lzdGVyX3Byb3Rvc3coc3RydWN0IGluZXRfcHJvdG9zdyAqcCk7CmV4dGVybiB2
b2lkIGluZXQ2X3VucmVnaXN0ZXJfcHJvdG9zdyhzdHJ1Y3QgaW5ldF9wcm90b3N3ICpwKTsKIyA1
NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvc29jay5oIiAyCgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaWZfd2FucGlwZS5oIiAxCiMg
MjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaWZfd2FucGlwZS5oIgpz
dHJ1Y3Qgd2FuX3NvY2thZGRyX2xsCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzbGxfZmFtaWx5
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNsbF9wcm90b2NvbDsKICAgICAgICBpbnQgc2xsX2lm
aW5kZXg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2xsX2hhdHlwZTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIHNsbF9wa3R0eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xsX2hhbGVuOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgc2xsX2FkZHJbOF07CiAgICAgICAgdW5zaWduZWQgY2hhciBzbGxf
ZGV2aWNlWzE0XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNsbF9jYXJkWzE0XTsKfTsKCnR5cGVk
ZWYgc3RydWN0CnsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZyZWU7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBza19zdGF0ZTsKICAgICAgICBpbnQgcmN2YnVmOwogICAgICAgIGludCBzbmRidWY7CiAg
ICAgICAgaW50IHJtZW07CiAgICAgICAgaW50IHdtZW07CiAgICAgICAgaW50IHNrX2NvdW50Owog
ICAgICAgIHVuc2lnbmVkIGNoYXIgYm91bmQ7CiAgICAgICAgY2hhciBuYW1lWzE0XTsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGRfc3RhdGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzdmM7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgbGNuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbWJveDsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGNtZF9idXN5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgY29tbWFuZDsK
ICAgICAgICB1bnNpZ25lZCBwb2xsOwogICAgICAgIHVuc2lnbmVkIHBvbGxfY250OwogICAgICAg
IGludCByYmxvY2s7Cn0gd2FuX2RlYnVnX2hkcl90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICAg
ICAgICB3YW5fZGVidWdfaGRyX3QgZGVidWdbMTBdOwp9d2FuX2RlYnVnX3Q7CiMgMTA0ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2lmX3dhbnBpcGUuaCIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L3ZlcnNpb24uaCIgMQojIDEwNSAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pZl93YW5waXBlLmgiIDIKIyAxMTMg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaWZfd2FucGlwZS5oIgpzdHJ1
Y3Qgd2FucGlwZV9vcHQKewogICAgICAgIHZvaWQgKm1ib3g7CiAgICAgICAgdm9pZCAqY2FyZDsK
ICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGxj
bjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHN2YzsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRpbWVy
OwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHR4X3RpbWVyOwogICAgICAgIHVuc2lnbmVkIHBv
bGxfY250OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZm9yY2U7CiAgICAgICAgYXRvbWljX3QgcGFj
a2V0X3NlbnQ7Cn07CiMgNjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L3Nv
Y2suaCIgMgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2F4MjUu
aCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9heDI1LmgiCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9heDI1LmgiIDEKIyA0MyAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9heDI1LmgiCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBjaGFyIGF4MjVfY2FsbFs3XTsKfSBheDI1X2FkZHJlc3M7CgpzdHJ1Y3Qg
c29ja2FkZHJfYXgyNSB7CiAgICAgICAgc2FfZmFtaWx5X3Qgc2F4MjVfZmFtaWx5OwogICAgICAg
IGF4MjVfYWRkcmVzcyBzYXgyNV9jYWxsOwogICAgICAgIGludCBzYXgyNV9uZGlnaXM7Cgp9OwoK
CgpzdHJ1Y3QgZnVsbF9zb2NrYWRkcl9heDI1IHsKICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfYXgy
NSBmc2FfYXgyNTsKICAgICAgICBheDI1X2FkZHJlc3MgZnNhX2RpZ2lwZWF0ZXJbOF07Cn07Cgpz
dHJ1Y3QgYXgyNV9yb3V0ZXNfc3RydWN0IHsKICAgICAgICBheDI1X2FkZHJlc3MgcG9ydF9hZGRy
OwogICAgICAgIGF4MjVfYWRkcmVzcyBkZXN0X2FkZHI7CiAgICAgICAgdW5zaWduZWQgY2hhciBk
aWdpX2NvdW50OwogICAgICAgIGF4MjVfYWRkcmVzcyBkaWdpX2FkZHJbOF07Cn07CgpzdHJ1Y3Qg
YXgyNV9yb3V0ZV9vcHRfc3RydWN0IHsKICAgICAgICBheDI1X2FkZHJlc3MgcG9ydF9hZGRyOwog
ICAgICAgIGF4MjVfYWRkcmVzcyBkZXN0X2FkZHI7CiAgICAgICAgaW50IGNtZDsKICAgICAgICBp
bnQgYXJnOwp9OwoKc3RydWN0IGF4MjVfY3RsX3N0cnVjdCB7CiAgICAgICAgYXgyNV9hZGRyZXNz
IHBvcnRfYWRkcjsKICAgICAgICBheDI1X2FkZHJlc3Mgc291cmNlX2FkZHI7CiAgICAgICAgYXgy
NV9hZGRyZXNzIGRlc3RfYWRkcjsKICAgICAgICB1bnNpZ25lZCBpbnQgY21kOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgYXJnOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZGlnaV9jb3VudDsKICAgICAg
ICBheDI1X2FkZHJlc3MgZGlnaV9hZGRyWzhdOwp9OwoKCnN0cnVjdCBheDI1X2luZm9fc3RydWN0
X2RlcHJlY2lhdGVkIHsKICAgICAgICB1bnNpZ25lZCBpbnQgbjIsIG4yY291bnQ7CiAgICAgICAg
dW5zaWduZWQgaW50IHQxLCB0MXRpbWVyOwogICAgICAgIHVuc2lnbmVkIGludCB0MiwgdDJ0aW1l
cjsKICAgICAgICB1bnNpZ25lZCBpbnQgdDMsIHQzdGltZXI7CiAgICAgICAgdW5zaWduZWQgaW50
IGlkbGUsIGlkbGV0aW1lcjsKICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdGU7CiAgICAgICAgdW5z
aWduZWQgaW50IHJjdl9xLCBzbmRfcTsKfTsKCnN0cnVjdCBheDI1X2luZm9fc3RydWN0IHsKICAg
ICAgICB1bnNpZ25lZCBpbnQgbjIsIG4yY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHQxLCB0
MXRpbWVyOwogICAgICAgIHVuc2lnbmVkIGludCB0MiwgdDJ0aW1lcjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgdDMsIHQzdGltZXI7CiAgICAgICAgdW5zaWduZWQgaW50IGlkbGUsIGlkbGV0aW1lcjsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgaW50IHJjdl9xLCBz
bmRfcTsKICAgICAgICB1bnNpZ25lZCBpbnQgdnMsIHZyLCB2YSwgdnNfbWF4OwogICAgICAgIHVu
c2lnbmVkIGludCBwYWNsZW47CiAgICAgICAgdW5zaWduZWQgaW50IHdpbmRvdzsKfTsKCnN0cnVj
dCBheDI1X2Z3ZF9zdHJ1Y3QgewogICAgICAgIGF4MjVfYWRkcmVzcyBwb3J0X2Zyb207CiAgICAg
ICAgYXgyNV9hZGRyZXNzIHBvcnRfdG87Cn07CiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbmV0L2F4MjUuaCIgMgojIDg0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL25ldC9heDI1LmgiCmVudW0gewogICAgICAgIEFYMjVfU1RBVEVfMCwKICAgICAgICBBWDI1
X1NUQVRFXzEsCiAgICAgICAgQVgyNV9TVEFURV8yLAogICAgICAgIEFYMjVfU1RBVEVfMywKICAg
ICAgICBBWDI1X1NUQVRFXzQKfTsKCgoKCmVudW0gewogICAgICAgIEFYMjVfUFJPVE9fU1REX1NJ
TVBMRVgsCiAgICAgICAgQVgyNV9QUk9UT19TVERfRFVQTEVYLAogICAgICAgIEFYMjVfUFJPVE9f
REFNQV9TTEFWRSwKICAgICAgICBBWDI1X1BST1RPX0RBTUFfTUFTVEVSCn07CgplbnVtIHsKICAg
ICAgICBBWDI1X1ZBTFVFU19JUERFRk1PREUsCiAgICAgICAgQVgyNV9WQUxVRVNfQVhERUZNT0RF
LAogICAgICAgIEFYMjVfVkFMVUVTX0JBQ0tPRkYsCiAgICAgICAgQVgyNV9WQUxVRVNfQ09OTU9E
RSwKICAgICAgICBBWDI1X1ZBTFVFU19XSU5ET1csCiAgICAgICAgQVgyNV9WQUxVRVNfRVdJTkRP
VywKICAgICAgICBBWDI1X1ZBTFVFU19UMSwKICAgICAgICBBWDI1X1ZBTFVFU19UMiwKICAgICAg
ICBBWDI1X1ZBTFVFU19UMywKICAgICAgICBBWDI1X1ZBTFVFU19JRExFLAogICAgICAgIEFYMjVf
VkFMVUVTX04yLAogICAgICAgIEFYMjVfVkFMVUVTX1BBQ0xFTiwKICAgICAgICBBWDI1X1ZBTFVF
U19QUk9UT0NPTCwKICAgICAgICBBWDI1X1ZBTFVFU19EU19USU1FT1VULAogICAgICAgIEFYMjVf
TUFYX1ZBTFVFUwp9OwojIDEzNSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQv
YXgyNS5oIgp0eXBlZGVmIHN0cnVjdCBheDI1X3VpZF9hc3NvYyB7CiAgICAgICAgc3RydWN0IGF4
MjVfdWlkX2Fzc29jICpuZXh0OwogICAgICAgIHVpZF90IHVpZDsKICAgICAgICBheDI1X2FkZHJl
c3MgY2FsbDsKfSBheDI1X3VpZF9hc3NvYzsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBheDI1
X2FkZHJlc3MgY2FsbHNbOF07CiAgICAgICAgdW5zaWduZWQgY2hhciByZXBlYXRlZFs4XTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIG5kaWdpOwogICAgICAgIGNoYXIgbGFzdHJlcGVhdDsKfSBheDI1
X2RpZ2k7Cgp0eXBlZGVmIHN0cnVjdCBheDI1X3JvdXRlIHsKICAgICAgICBzdHJ1Y3QgYXgyNV9y
b3V0ZSAqbmV4dDsKICAgICAgICBheDI1X2FkZHJlc3MgY2FsbHNpZ247CiAgICAgICAgc3RydWN0
IG5ldF9kZXZpY2UgKmRldjsKICAgICAgICBheDI1X2RpZ2kgKmRpZ2lwZWF0OwogICAgICAgIGNo
YXIgaXBfbW9kZTsKfSBheDI1X3JvdXRlOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGNoYXIg
c2xhdmU7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3Qgc2xhdmVfdGltZXI7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc2xhdmVfdGltZW91dDsKfSBheDI1X2RhbWFfaW5mbzsKCnN0cnVjdCBjdGxf
dGFibGU7Cgp0eXBlZGVmIHN0cnVjdCBheDI1X2RldiB7CiAgICAgICAgc3RydWN0IGF4MjVfZGV2
ICpuZXh0OwogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAgICAgICAgc3RydWN0IG5l
dF9kZXZpY2UgKmZvcndhcmQ7CiAgICAgICAgc3RydWN0IGN0bF90YWJsZSAqc3lzdGFibGU7CiAg
ICAgICAgaW50IHZhbHVlc1tBWDI1X01BWF9WQUxVRVNdOwoKCgp9IGF4MjVfZGV2OwoKdHlwZWRl
ZiBzdHJ1Y3QgYXgyNV9jYiB7CiAgICAgICAgc3RydWN0IGF4MjVfY2IgKm5leHQ7CiAgICAgICAg
YXgyNV9hZGRyZXNzIHNvdXJjZV9hZGRyLCBkZXN0X2FkZHI7CiAgICAgICAgYXgyNV9kaWdpICpk
aWdpcGVhdDsKICAgICAgICBheDI1X2RldiAqYXgyNV9kZXY7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBpYW1kaWdpOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc3RhdGUsIG1vZHVsdXMsIHBpZGluY2w7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdnMsIHZyLCB2YTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IGNvbmRpdGlvbiwgYmFja29mZjsKICAgICAgICB1bnNpZ25lZCBjaGFyIG4yLCBuMmNvdW50Owog
ICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHQxdGltZXIsIHQydGltZXIsIHQzdGltZXIsIGlkbGV0
aW1lcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHQxLCB0MiwgdDMsIGlkbGUsIHJ0dDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBwYWNsZW4sIGZyYWdubywgZnJhZ2xlbjsKICAgICAgICBzdHJ1Y3Qg
c2tfYnVmZl9oZWFkIHdyaXRlX3F1ZXVlOwogICAgICAgIHN0cnVjdCBza19idWZmX2hlYWQgcmVz
ZXFfcXVldWU7CiAgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCBhY2tfcXVldWU7CiAgICAgICAg
c3RydWN0IHNrX2J1ZmZfaGVhZCBmcmFnX3F1ZXVlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgd2lu
ZG93OwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOwogICAgICAgIHN0cnVjdCBzb2Nr
ICpzazsKfSBheDI1X2NiOwoKCmV4dGVybiBheDI1X2NiICp2b2xhdGlsZSBheDI1X2xpc3Q7CmV4
dGVybiB2b2lkIGF4MjVfZnJlZV9jYihheDI1X2NiICopOwpleHRlcm4gdm9pZCBheDI1X2luc2Vy
dF9zb2NrZXQoYXgyNV9jYiAqKTsKc3RydWN0IHNvY2sgKmF4MjVfZmluZF9saXN0ZW5lcihheDI1
X2FkZHJlc3MgKiwgaW50LCBzdHJ1Y3QgbmV0X2RldmljZSAqLCBpbnQpOwpzdHJ1Y3Qgc29jayAq
YXgyNV9maW5kX3NvY2tldChheDI1X2FkZHJlc3MgKiwgYXgyNV9hZGRyZXNzICosIGludCk7CmV4
dGVybiBheDI1X2NiICpheDI1X2ZpbmRfY2JfUmJjNjRjODI4KGF4MjVfYWRkcmVzcyAqLCBheDI1
X2FkZHJlc3MgKiwgYXgyNV9kaWdpICosIHN0cnVjdCBuZXRfZGV2aWNlICopOwpleHRlcm4gc3Ry
dWN0IHNvY2sgKmF4MjVfYWRkcl9tYXRjaChheDI1X2FkZHJlc3MgKik7CmV4dGVybiB2b2lkIGF4
MjVfc2VuZF90b19yYXcoc3RydWN0IHNvY2sgKiwgc3RydWN0IHNrX2J1ZmYgKiwgaW50KTsKZXh0
ZXJuIHZvaWQgYXgyNV9kZXN0cm95X3NvY2tldChheDI1X2NiICopOwpleHRlcm4gYXgyNV9jYiAq
YXgyNV9jcmVhdGVfY2Iodm9pZCk7CmV4dGVybiB2b2lkIGF4MjVfZmlsbGluX2NiKGF4MjVfY2Ig
KiwgYXgyNV9kZXYgKik7CmV4dGVybiBpbnQgYXgyNV9jcmVhdGUoc3RydWN0IHNvY2tldCAqLCBp
bnQpOwpleHRlcm4gc3RydWN0IHNvY2sgKmF4MjVfbWFrZV9uZXcoc3RydWN0IHNvY2sgKiwgc3Ry
dWN0IGF4MjVfZGV2ICopOwoKCmV4dGVybiBheDI1X2FkZHJlc3MgbnVsbF9heDI1X2FkZHJlc3Nf
UjQzNjIxZTE4OwpleHRlcm4gY2hhciAqYXgyYXNjX1I5NzEyMzYwOChheDI1X2FkZHJlc3MgKik7
CmV4dGVybiBheDI1X2FkZHJlc3MgKmFzYzJheF9SNzllNzliMTYoY2hhciAqKTsKZXh0ZXJuIGlu
dCBheDI1Y21wX1I1YjVmZWY0MShheDI1X2FkZHJlc3MgKiwgYXgyNV9hZGRyZXNzICopOwpleHRl
cm4gaW50IGF4MjVkaWdpY21wKGF4MjVfZGlnaSAqLCBheDI1X2RpZ2kgKik7CmV4dGVybiB1bnNp
Z25lZCBjaGFyICpheDI1X2FkZHJfcGFyc2UodW5zaWduZWQgY2hhciAqLCBpbnQsIGF4MjVfYWRk
cmVzcyAqLCBheDI1X2FkZHJlc3MgKiwgYXgyNV9kaWdpICosIGludCAqLCBpbnQgKik7CmV4dGVy
biBpbnQgYXgyNV9hZGRyX2J1aWxkKHVuc2lnbmVkIGNoYXIgKiwgYXgyNV9hZGRyZXNzICosIGF4
MjVfYWRkcmVzcyAqLCBheDI1X2RpZ2kgKiwgaW50LCBpbnQpOwpleHRlcm4gaW50IGF4MjVfYWRk
cl9zaXplKGF4MjVfZGlnaSAqKTsKZXh0ZXJuIHZvaWQgYXgyNV9kaWdpX2ludmVydChheDI1X2Rp
Z2kgKiwgYXgyNV9kaWdpICopOwoKCmV4dGVybiBheDI1X2RldiAqYXgyNV9kZXZfbGlzdDsKZXh0
ZXJuIGF4MjVfZGV2ICpheDI1X2Rldl9heDI1ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICopOwpleHRl
cm4gYXgyNV9kZXYgKmF4MjVfYWRkcl9heDI1ZGV2KGF4MjVfYWRkcmVzcyAqKTsKZXh0ZXJuIHZv
aWQgYXgyNV9kZXZfZGV2aWNlX3VwKHN0cnVjdCBuZXRfZGV2aWNlICopOwpleHRlcm4gdm9pZCBh
eDI1X2Rldl9kZXZpY2VfZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqKTsKZXh0ZXJuIGludCBheDI1
X2Z3ZF9pb2N0bCh1bnNpZ25lZCBpbnQsIHN0cnVjdCBheDI1X2Z3ZF9zdHJ1Y3QgKik7CmV4dGVy
biBzdHJ1Y3QgbmV0X2RldmljZSAqYXgyNV9md2RfZGV2KHN0cnVjdCBuZXRfZGV2aWNlICopOwpl
eHRlcm4gdm9pZCBheDI1X2Rldl9mcmVlKHZvaWQpOwoKCmV4dGVybiBpbnQgYXgyNV9kc19mcmFt
ZV9pbihheDI1X2NiICosIHN0cnVjdCBza19idWZmICosIGludCk7CgoKZXh0ZXJuIHZvaWQgYXgy
NV9kc19ucl9lcnJvcl9yZWNvdmVyeShheDI1X2NiICopOwpleHRlcm4gdm9pZCBheDI1X2RzX2Vu
cXVpcnlfcmVzcG9uc2UoYXgyNV9jYiAqKTsKZXh0ZXJuIHZvaWQgYXgyNV9kc19lc3RhYmxpc2hf
ZGF0YV9saW5rKGF4MjVfY2IgKik7CmV4dGVybiB2b2lkIGF4MjVfZGV2X2RhbWFfb24oYXgyNV9k
ZXYgKik7CmV4dGVybiB2b2lkIGF4MjVfZGV2X2RhbWFfb2ZmKGF4MjVfZGV2ICopOwpleHRlcm4g
dm9pZCBheDI1X2RhbWFfb24oYXgyNV9jYiAqKTsKZXh0ZXJuIHZvaWQgYXgyNV9kYW1hX29mZihh
eDI1X2NiICopOwoKCmV4dGVybiB2b2lkIGF4MjVfZHNfc2V0X3RpbWVyKGF4MjVfZGV2ICopOwpl
eHRlcm4gdm9pZCBheDI1X2RzX2RlbF90aW1lcihheDI1X2RldiAqKTsKZXh0ZXJuIHZvaWQgYXgy
NV9kc190aW1lcihheDI1X2NiICopOwpleHRlcm4gdm9pZCBheDI1X2RzX3QxX3RpbWVvdXQoYXgy
NV9jYiAqKTsKZXh0ZXJuIHZvaWQgYXgyNV9kc19oZWFydGJlYXRfZXhwaXJ5KGF4MjVfY2IgKik7
CmV4dGVybiB2b2lkIGF4MjVfZHNfdDN0aW1lcl9leHBpcnkoYXgyNV9jYiAqKTsKZXh0ZXJuIHZv
aWQgYXgyNV9kc19pZGxldGltZXJfZXhwaXJ5KGF4MjVfY2IgKik7CgoKZXh0ZXJuIGludCBheDI1
X3Byb3RvY29sX3JlZ2lzdGVyX1I3ZWZiZDU4MSh1bnNpZ25lZCBpbnQsIGludCAoKikoc3RydWN0
IHNrX2J1ZmYgKiwgYXgyNV9jYiAqKSk7CmV4dGVybiB2b2lkIGF4MjVfcHJvdG9jb2xfcmVsZWFz
ZV9SOGVkZTllMjYodW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCBheDI1X2xpbmtmYWlsX3JlZ2lz
dGVyX1JjNjljNDM1MSh2b2lkICgqKShheDI1X2NiICosIGludCkpOwpleHRlcm4gdm9pZCBheDI1
X2xpbmtmYWlsX3JlbGVhc2VfUjg5ODlhMmNjKHZvaWQgKCopKGF4MjVfY2IgKiwgaW50KSk7CmV4
dGVybiBpbnQgYXgyNV9saXN0ZW5fcmVnaXN0ZXJfUjU4ZTE0MzIzKGF4MjVfYWRkcmVzcyAqLCBz
dHJ1Y3QgbmV0X2RldmljZSAqKTsKZXh0ZXJuIHZvaWQgYXgyNV9saXN0ZW5fcmVsZWFzZV9SNGRh
YmJhNDIoYXgyNV9hZGRyZXNzICosIHN0cnVjdCBuZXRfZGV2aWNlICopOwpleHRlcm4gaW50ICgq
YXgyNV9wcm90b2NvbF9mdW5jdGlvbih1bnNpZ25lZCBpbnQpKShzdHJ1Y3Qgc2tfYnVmZiAqLCBh
eDI1X2NiICopOwpleHRlcm4gaW50IGF4MjVfbGlzdGVuX21pbmUoYXgyNV9hZGRyZXNzICosIHN0
cnVjdCBuZXRfZGV2aWNlICopOwpleHRlcm4gdm9pZCBheDI1X2xpbmtfZmFpbGVkKGF4MjVfY2Ig
KiwgaW50KTsKZXh0ZXJuIGludCBheDI1X3Byb3RvY29sX2lzX3JlZ2lzdGVyZWQodW5zaWduZWQg
aW50KTsKCgpleHRlcm4gaW50IGF4MjVfcnhfaWZyYW1lKGF4MjVfY2IgKiwgc3RydWN0IHNrX2J1
ZmYgKik7CmV4dGVybiBpbnQgYXgyNV9raXNzX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqLCBzdHJ1Y3Qg
bmV0X2RldmljZSAqLCBzdHJ1Y3QgcGFja2V0X3R5cGUgKik7CgoKZXh0ZXJuIGludCBheDI1X2Vu
Y2Fwc3VsYXRlX1JhMzRjZjhiMShzdHJ1Y3Qgc2tfYnVmZiAqLCBzdHJ1Y3QgbmV0X2RldmljZSAq
LCB1bnNpZ25lZCBzaG9ydCwgdm9pZCAqLCB2b2lkICosIHVuc2lnbmVkIGludCk7CmV4dGVybiBp
bnQgYXgyNV9yZWJ1aWxkX2hlYWRlcl9SMDZhM2QzYmEoc3RydWN0IHNrX2J1ZmYgKik7CgoKZXh0
ZXJuIGF4MjVfY2IgKmF4MjVfc2VuZF9mcmFtZV9SMGQ1ODcwMDEoc3RydWN0IHNrX2J1ZmYgKiwg
aW50LCBheDI1X2FkZHJlc3MgKiwgYXgyNV9hZGRyZXNzICosIGF4MjVfZGlnaSAqLCBzdHJ1Y3Qg
bmV0X2RldmljZSAqKTsKZXh0ZXJuIHZvaWQgYXgyNV9vdXRwdXQoYXgyNV9jYiAqLCBpbnQsIHN0
cnVjdCBza19idWZmICopOwpleHRlcm4gdm9pZCBheDI1X2tpY2soYXgyNV9jYiAqKTsKZXh0ZXJu
IHZvaWQgYXgyNV90cmFuc21pdF9idWZmZXIoYXgyNV9jYiAqLCBzdHJ1Y3Qgc2tfYnVmZiAqLCBp
bnQpOwpleHRlcm4gdm9pZCBheDI1X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKik7CmV4dGVy
biBpbnQgYXgyNV9jaGVja19pZnJhbWVzX2Fja2VkKGF4MjVfY2IgKiwgdW5zaWduZWQgc2hvcnQp
OwoKCmV4dGVybiB2b2lkIGF4MjVfcnRfZGV2aWNlX2Rvd24oc3RydWN0IG5ldF9kZXZpY2UgKik7
CmV4dGVybiBpbnQgYXgyNV9ydF9pb2N0bCh1bnNpZ25lZCBpbnQsIHZvaWQgKik7CmV4dGVybiBp
bnQgYXgyNV9ydF9nZXRfaW5mbyhjaGFyICosIGNoYXIgKiosIG9mZl90LCBpbnQpOwpleHRlcm4g
aW50IGF4MjVfcnRfYXV0b2JpbmQoYXgyNV9jYiAqLCBheDI1X2FkZHJlc3MgKik7CmV4dGVybiBh
eDI1X3JvdXRlICpheDI1X3J0X2ZpbmRfcm91dGUoYXgyNV9hZGRyZXNzICosIHN0cnVjdCBuZXRf
ZGV2aWNlICopOwpleHRlcm4gc3RydWN0IHNrX2J1ZmYgKmF4MjVfcnRfYnVpbGRfcGF0aChzdHJ1
Y3Qgc2tfYnVmZiAqLCBheDI1X2FkZHJlc3MgKiwgYXgyNV9hZGRyZXNzICosIGF4MjVfZGlnaSAq
KTsKZXh0ZXJuIHZvaWQgYXgyNV9ydF9mcmVlKHZvaWQpOwoKCmV4dGVybiBpbnQgYXgyNV9zdGRf
ZnJhbWVfaW4oYXgyNV9jYiAqLCBzdHJ1Y3Qgc2tfYnVmZiAqLCBpbnQpOwoKCmV4dGVybiB2b2lk
IGF4MjVfc3RkX25yX2Vycm9yX3JlY292ZXJ5KGF4MjVfY2IgKik7CmV4dGVybiB2b2lkIGF4MjVf
c3RkX2VzdGFibGlzaF9kYXRhX2xpbmsoYXgyNV9jYiAqKTsKZXh0ZXJuIHZvaWQgYXgyNV9zdGRf
dHJhbnNtaXRfZW5xdWlyeShheDI1X2NiICopOwpleHRlcm4gdm9pZCBheDI1X3N0ZF9lbnF1aXJ5
X3Jlc3BvbnNlKGF4MjVfY2IgKik7CmV4dGVybiB2b2lkIGF4MjVfc3RkX3RpbWVvdXRfcmVzcG9u
c2UoYXgyNV9jYiAqKTsKCgpleHRlcm4gdm9pZCBheDI1X3N0ZF9oZWFydGJlYXRfZXhwaXJ5KGF4
MjVfY2IgKik7CmV4dGVybiB2b2lkIGF4MjVfc3RkX3QxdGltZXJfZXhwaXJ5KGF4MjVfY2IgKik7
CmV4dGVybiB2b2lkIGF4MjVfc3RkX3QydGltZXJfZXhwaXJ5KGF4MjVfY2IgKik7CmV4dGVybiB2
b2lkIGF4MjVfc3RkX3QzdGltZXJfZXhwaXJ5KGF4MjVfY2IgKik7CmV4dGVybiB2b2lkIGF4MjVf
c3RkX2lkbGV0aW1lcl9leHBpcnkoYXgyNV9jYiAqKTsKCgpleHRlcm4gdm9pZCBheDI1X2NsZWFy
X3F1ZXVlcyhheDI1X2NiICopOwpleHRlcm4gdm9pZCBheDI1X2ZyYW1lc19hY2tlZChheDI1X2Ni
ICosIHVuc2lnbmVkIHNob3J0KTsKZXh0ZXJuIHZvaWQgYXgyNV9yZXF1ZXVlX2ZyYW1lcyhheDI1
X2NiICopOwpleHRlcm4gaW50IGF4MjVfdmFsaWRhdGVfbnIoYXgyNV9jYiAqLCB1bnNpZ25lZCBz
aG9ydCk7CmV4dGVybiBpbnQgYXgyNV9kZWNvZGUoYXgyNV9jYiAqLCBzdHJ1Y3Qgc2tfYnVmZiAq
LCBpbnQgKiwgaW50ICosIGludCAqKTsKZXh0ZXJuIHZvaWQgYXgyNV9zZW5kX2NvbnRyb2woYXgy
NV9jYiAqLCBpbnQsIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgYXgyNV9yZXR1cm5fZG0oc3RydWN0
IG5ldF9kZXZpY2UgKiwgYXgyNV9hZGRyZXNzICosIGF4MjVfYWRkcmVzcyAqLCBheDI1X2RpZ2kg
Kik7CmV4dGVybiB2b2lkIGF4MjVfY2FsY3VsYXRlX3QxKGF4MjVfY2IgKik7CmV4dGVybiB2b2lk
IGF4MjVfY2FsY3VsYXRlX3J0dChheDI1X2NiICopOwpleHRlcm4gdm9pZCBheDI1X2Rpc2Nvbm5l
Y3QoYXgyNV9jYiAqLCBpbnQpOwoKCmV4dGVybiB2b2lkIGF4MjVfc3RhcnRfaGVhcnRiZWF0KGF4
MjVfY2IgKik7CmV4dGVybiB2b2lkIGF4MjVfc3RhcnRfdDF0aW1lcihheDI1X2NiICopOwpleHRl
cm4gdm9pZCBheDI1X3N0YXJ0X3QydGltZXIoYXgyNV9jYiAqKTsKZXh0ZXJuIHZvaWQgYXgyNV9z
dGFydF90M3RpbWVyKGF4MjVfY2IgKik7CmV4dGVybiB2b2lkIGF4MjVfc3RhcnRfaWRsZXRpbWVy
KGF4MjVfY2IgKik7CmV4dGVybiB2b2lkIGF4MjVfc3RvcF9oZWFydGJlYXQoYXgyNV9jYiAqKTsK
ZXh0ZXJuIHZvaWQgYXgyNV9zdG9wX3QxdGltZXIoYXgyNV9jYiAqKTsKZXh0ZXJuIHZvaWQgYXgy
NV9zdG9wX3QydGltZXIoYXgyNV9jYiAqKTsKZXh0ZXJuIHZvaWQgYXgyNV9zdG9wX3QzdGltZXIo
YXgyNV9jYiAqKTsKZXh0ZXJuIHZvaWQgYXgyNV9zdG9wX2lkbGV0aW1lcihheDI1X2NiICopOwpl
eHRlcm4gaW50IGF4MjVfdDF0aW1lcl9ydW5uaW5nKGF4MjVfY2IgKik7CmV4dGVybiB1bnNpZ25l
ZCBsb25nIGF4MjVfZGlzcGxheV90aW1lcl9SZTE5NjVlMzEoc3RydWN0IHRpbWVyX2xpc3QgKik7
CgoKZXh0ZXJuIGludCBheDI1X3VpZF9wb2xpY3lfUjI0Mjg1MmI5OwpleHRlcm4gYXgyNV9hZGRy
ZXNzICpheDI1X2ZpbmRieXVpZF9SMzI3MWNlZTcodWlkX3QpOwpleHRlcm4gaW50IGF4MjVfdWlk
X2lvY3RsKGludCwgc3RydWN0IHNvY2thZGRyX2F4MjUgKik7CmV4dGVybiBpbnQgYXgyNV91aWRf
Z2V0X2luZm8oY2hhciAqLCBjaGFyICoqLCBvZmZfdCwgaW50KTsKZXh0ZXJuIHZvaWQgYXgyNV91
aWRfZnJlZSh2b2lkKTsKCgoKZXh0ZXJuIHZvaWQgYXgyNV9yZWdpc3Rlcl9zeXNjdGwodm9pZCk7
CmV4dGVybiB2b2lkIGF4MjVfdW5yZWdpc3Rlcl9zeXNjdGwodm9pZCk7CiMgNjUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L3NvY2suaCIgMgoKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9uZXRyb20uaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbmV0L25ldHJvbS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvbmV0cm9tLmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9uZXRyb20uaCIKc3RydWN0IG5yX3JvdXRlX3N0cnVjdCB7CgoKICAgICAg
ICBpbnQgdHlwZTsKICAgICAgICBheDI1X2FkZHJlc3MgY2FsbHNpZ247CiAgICAgICAgY2hhciBk
ZXZpY2VbMTZdOwogICAgICAgIHVuc2lnbmVkIGludCBxdWFsaXR5OwogICAgICAgIGNoYXIgbW5l
bW9uaWNbN107CiAgICAgICAgYXgyNV9hZGRyZXNzIG5laWdoYm91cjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgb2JzX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBuZGlnaXM7CiAgICAgICAgYXgy
NV9hZGRyZXNzIGRpZ2lwZWF0ZXJzWzhdOwp9OwojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL25ldC9uZXRyb20uaCIgMgojIDI5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL25ldC9uZXRyb20uaCIKZW51bSB7CiAgICAgICAgTlJfU1RBVEVfMCwKICAgICAgICBO
Ul9TVEFURV8xLAogICAgICAgIE5SX1NUQVRFXzIsCiAgICAgICAgTlJfU1RBVEVfMwp9OwojIDU3
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9uZXRyb20uaCIKdHlwZWRlZiBz
dHJ1Y3QgewogICAgICAgIGF4MjVfYWRkcmVzcyB1c2VyX2FkZHIsIHNvdXJjZV9hZGRyLCBkZXN0
X2FkZHI7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldmljZTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIG15X2luZGV4LCBteV9pZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHlvdXJfaW5kZXgs
IHlvdXJfaWQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBzdGF0ZSwgY29uZGl0aW9uLCBicHFleHQs
IHdpbmRvdzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2cywgdnIsIHZhLCB2bDsKICAgICAgICB1
bnNpZ25lZCBjaGFyIG4yLCBuMmNvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdDEsIHQyLCB0
NCwgaWRsZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcmFnbGVuOwogICAgICAgIHN0cnVjdCB0
aW1lcl9saXN0IHQxdGltZXI7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgdDJ0aW1lcjsKICAg
ICAgICBzdHJ1Y3QgdGltZXJfbGlzdCB0NHRpbWVyOwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0
IGlkbGV0aW1lcjsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGFja19xdWV1ZTsKICAgICAg
ICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHJlc2VxX3F1ZXVlOwogICAgICAgIHN0cnVjdCBza19idWZm
X2hlYWQgZnJhZ19xdWV1ZTsKICAgICAgICBzdHJ1Y3Qgc29jayAqc2s7Cn0gbnJfY2I7CgpzdHJ1
Y3QgbnJfbmVpZ2ggewogICAgICAgIHN0cnVjdCBucl9uZWlnaCAqbmV4dDsKICAgICAgICBheDI1
X2FkZHJlc3MgY2FsbHNpZ247CiAgICAgICAgYXgyNV9kaWdpICpkaWdpcGVhdDsKICAgICAgICBh
eDI1X2NiICpheDI1OwogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAgICAgICAgdW5z
aWduZWQgY2hhciBxdWFsaXR5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG9ja2VkOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IGNvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBudW1iZXI7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBmYWlsZWQ7Cn07CgpzdHJ1Y3QgbnJfcm91dGUgewogICAgICAgIHVu
c2lnbmVkIGNoYXIgcXVhbGl0eTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9ic19jb3VudDsKICAg
ICAgICBzdHJ1Y3QgbnJfbmVpZ2ggKm5laWdoYm91cjsKfTsKCnN0cnVjdCBucl9ub2RlIHsKICAg
ICAgICBzdHJ1Y3QgbnJfbm9kZSAqbmV4dDsKICAgICAgICBheDI1X2FkZHJlc3MgY2FsbHNpZ247
CiAgICAgICAgY2hhciBtbmVtb25pY1s3XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHdoaWNoOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgY291bnQ7CiAgICAgICAgc3RydWN0IG5yX3JvdXRlIHJvdXRl
c1szXTsKfTsKCgpleHRlcm4gaW50IHN5c2N0bF9uZXRyb21fZGVmYXVsdF9wYXRoX3F1YWxpdHk7
CmV4dGVybiBpbnQgc3lzY3RsX25ldHJvbV9vYnNvbGVzY2VuY2VfY291bnRfaW5pdGlhbGlzZXI7
CmV4dGVybiBpbnQgc3lzY3RsX25ldHJvbV9uZXR3b3JrX3R0bF9pbml0aWFsaXNlcjsKZXh0ZXJu
IGludCBzeXNjdGxfbmV0cm9tX3RyYW5zcG9ydF90aW1lb3V0OwpleHRlcm4gaW50IHN5c2N0bF9u
ZXRyb21fdHJhbnNwb3J0X21heGltdW1fdHJpZXM7CmV4dGVybiBpbnQgc3lzY3RsX25ldHJvbV90
cmFuc3BvcnRfYWNrbm93bGVkZ2VfZGVsYXk7CmV4dGVybiBpbnQgc3lzY3RsX25ldHJvbV90cmFu
c3BvcnRfYnVzeV9kZWxheTsKZXh0ZXJuIGludCBzeXNjdGxfbmV0cm9tX3RyYW5zcG9ydF9yZXF1
ZXN0ZWRfd2luZG93X3NpemU7CmV4dGVybiBpbnQgc3lzY3RsX25ldHJvbV90cmFuc3BvcnRfbm9f
YWN0aXZpdHlfdGltZW91dDsKZXh0ZXJuIGludCBzeXNjdGxfbmV0cm9tX3JvdXRpbmdfY29udHJv
bDsKZXh0ZXJuIGludCBzeXNjdGxfbmV0cm9tX2xpbmtfZmFpbHNfY291bnQ7CmV4dGVybiBpbnQg
bnJfcnhfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKiwgc3RydWN0IG5ldF9kZXZpY2UgKik7CmV4dGVy
biB2b2lkIG5yX2Rlc3Ryb3lfc29ja2V0KHN0cnVjdCBzb2NrICopOwoKCmV4dGVybiBpbnQgbnJf
cnhfaXAoc3RydWN0IHNrX2J1ZmYgKiwgc3RydWN0IG5ldF9kZXZpY2UgKik7CmV4dGVybiBpbnQg
bnJfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqKTsKCgpleHRlcm4gaW50IG5yX3Byb2Nlc3Nfcnhf
ZnJhbWUoc3RydWN0IHNvY2sgKiwgc3RydWN0IHNrX2J1ZmYgKik7CgoKZXh0ZXJuIHZvaWQgbnJf
bG9vcGJhY2tfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgbnJfbG9vcGJhY2tfY2xlYXIodm9pZCk7
CmV4dGVybiBpbnQgbnJfbG9vcGJhY2tfcXVldWUoc3RydWN0IHNrX2J1ZmYgKik7CgoKZXh0ZXJu
IHZvaWQgbnJfb3V0cHV0KHN0cnVjdCBzb2NrICosIHN0cnVjdCBza19idWZmICopOwpleHRlcm4g
dm9pZCBucl9zZW5kX25ha19mcmFtZShzdHJ1Y3Qgc29jayAqKTsKZXh0ZXJuIHZvaWQgbnJfa2lj
ayhzdHJ1Y3Qgc29jayAqKTsKZXh0ZXJuIHZvaWQgbnJfdHJhbnNtaXRfYnVmZmVyKHN0cnVjdCBz
b2NrICosIHN0cnVjdCBza19idWZmICopOwpleHRlcm4gdm9pZCBucl9lc3RhYmxpc2hfZGF0YV9s
aW5rKHN0cnVjdCBzb2NrICopOwpleHRlcm4gdm9pZCBucl9lbnF1aXJ5X3Jlc3BvbnNlKHN0cnVj
dCBzb2NrICopOwpleHRlcm4gdm9pZCBucl9jaGVja19pZnJhbWVzX2Fja2VkKHN0cnVjdCBzb2Nr
ICosIHVuc2lnbmVkIHNob3J0KTsKCgpleHRlcm4gdm9pZCBucl9ydF9kZXZpY2VfZG93bihzdHJ1
Y3QgbmV0X2RldmljZSAqKTsKZXh0ZXJuIHN0cnVjdCBuZXRfZGV2aWNlICpucl9kZXZfZmlyc3Qo
dm9pZCk7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqbnJfZGV2X2dldChheDI1X2FkZHJlc3Mg
Kik7CmV4dGVybiBpbnQgbnJfcnRfaW9jdGwodW5zaWduZWQgaW50LCB2b2lkICopOwpleHRlcm4g
dm9pZCBucl9saW5rX2ZhaWxlZChheDI1X2NiICosIGludCk7CmV4dGVybiBpbnQgbnJfcm91dGVf
ZnJhbWUoc3RydWN0IHNrX2J1ZmYgKiwgYXgyNV9jYiAqKTsKZXh0ZXJuIGludCBucl9ub2Rlc19n
ZXRfaW5mbyhjaGFyICosIGNoYXIgKiosIG9mZl90LCBpbnQpOwpleHRlcm4gaW50IG5yX25laWdo
X2dldF9pbmZvKGNoYXIgKiwgY2hhciAqKiwgb2ZmX3QsIGludCk7CmV4dGVybiB2b2lkIG5yX3J0
X2ZyZWUodm9pZCk7CgoKZXh0ZXJuIHZvaWQgbnJfY2xlYXJfcXVldWVzKHN0cnVjdCBzb2NrICop
OwpleHRlcm4gdm9pZCBucl9mcmFtZXNfYWNrZWQoc3RydWN0IHNvY2sgKiwgdW5zaWduZWQgc2hv
cnQpOwpleHRlcm4gdm9pZCBucl9yZXF1ZXVlX2ZyYW1lcyhzdHJ1Y3Qgc29jayAqKTsKZXh0ZXJu
IGludCBucl92YWxpZGF0ZV9ucihzdHJ1Y3Qgc29jayAqLCB1bnNpZ25lZCBzaG9ydCk7CmV4dGVy
biBpbnQgbnJfaW5fcnhfd2luZG93KHN0cnVjdCBzb2NrICosIHVuc2lnbmVkIHNob3J0KTsKZXh0
ZXJuIHZvaWQgbnJfd3JpdGVfaW50ZXJuYWwoc3RydWN0IHNvY2sgKiwgaW50KTsKZXh0ZXJuIHZv
aWQgbnJfdHJhbnNtaXRfcmVmdXNhbChzdHJ1Y3Qgc2tfYnVmZiAqLCBpbnQpOwpleHRlcm4gdm9p
ZCBucl9kaXNjb25uZWN0KHN0cnVjdCBzb2NrICosIGludCk7CgoKZXh0ZXJuIHZvaWQgbnJfc3Rh
cnRfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICopOwpleHRlcm4gdm9pZCBucl9zdGFydF90MXRpbWVy
KHN0cnVjdCBzb2NrICopOwpleHRlcm4gdm9pZCBucl9zdGFydF90MnRpbWVyKHN0cnVjdCBzb2Nr
ICopOwpleHRlcm4gdm9pZCBucl9zdGFydF90NHRpbWVyKHN0cnVjdCBzb2NrICopOwpleHRlcm4g
dm9pZCBucl9zdGFydF9pZGxldGltZXIoc3RydWN0IHNvY2sgKik7CmV4dGVybiB2b2lkIG5yX3N0
b3BfaGVhcnRiZWF0KHN0cnVjdCBzb2NrICopOwpleHRlcm4gdm9pZCBucl9zdG9wX3QxdGltZXIo
c3RydWN0IHNvY2sgKik7CmV4dGVybiB2b2lkIG5yX3N0b3BfdDJ0aW1lcihzdHJ1Y3Qgc29jayAq
KTsKZXh0ZXJuIHZvaWQgbnJfc3RvcF90NHRpbWVyKHN0cnVjdCBzb2NrICopOwpleHRlcm4gdm9p
ZCBucl9zdG9wX2lkbGV0aW1lcihzdHJ1Y3Qgc29jayAqKTsKZXh0ZXJuIGludCBucl90MXRpbWVy
X3J1bm5pbmcoc3RydWN0IHNvY2sgKik7CgoKZXh0ZXJuIHZvaWQgbnJfcmVnaXN0ZXJfc3lzY3Rs
KHZvaWQpOwpleHRlcm4gdm9pZCBucl91bnJlZ2lzdGVyX3N5c2N0bCh2b2lkKTsKIyA2NyAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvc29jay5oIiAyCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9yb3NlLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9yb3NlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIw
LTgvaW5jbHVkZS9saW51eC9yb3NlLmgiIDEKIyA0MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9saW51eC9yb3NlLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBjaGFyIHJvc2Vf
YWRkcls1XTsKfSByb3NlX2FkZHJlc3M7CgpzdHJ1Y3Qgc29ja2FkZHJfcm9zZSB7CiAgICAgICAg
c2FfZmFtaWx5X3Qgc3Jvc2VfZmFtaWx5OwogICAgICAgIHJvc2VfYWRkcmVzcyBzcm9zZV9hZGRy
OwogICAgICAgIGF4MjVfYWRkcmVzcyBzcm9zZV9jYWxsOwogICAgICAgIGludCBzcm9zZV9uZGln
aXM7CiAgICAgICAgYXgyNV9hZGRyZXNzIHNyb3NlX2RpZ2k7Cn07CgpzdHJ1Y3QgZnVsbF9zb2Nr
YWRkcl9yb3NlIHsKICAgICAgICBzYV9mYW1pbHlfdCBzcm9zZV9mYW1pbHk7CiAgICAgICAgcm9z
ZV9hZGRyZXNzIHNyb3NlX2FkZHI7CiAgICAgICAgYXgyNV9hZGRyZXNzIHNyb3NlX2NhbGw7CiAg
ICAgICAgdW5zaWduZWQgaW50IHNyb3NlX25kaWdpczsKICAgICAgICBheDI1X2FkZHJlc3Mgc3Jv
c2VfZGlnaXNbNl07Cn07CgpzdHJ1Y3Qgcm9zZV9yb3V0ZV9zdHJ1Y3QgewogICAgICAgIHJvc2Vf
YWRkcmVzcyBhZGRyZXNzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1hc2s7CiAgICAgICAgYXgy
NV9hZGRyZXNzIG5laWdoYm91cjsKICAgICAgICBjaGFyIGRldmljZVsxNl07CiAgICAgICAgdW5z
aWduZWQgY2hhciBuZGlnaXM7CiAgICAgICAgYXgyNV9hZGRyZXNzIGRpZ2lwZWF0ZXJzWzhdOwp9
OwoKc3RydWN0IHJvc2VfY2F1c2Vfc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNhdXNl
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZGlhZ25vc3RpYzsKfTsKCnN0cnVjdCByb3NlX2ZhY2ls
aXRpZXNfc3RydWN0IHsKICAgICAgICByb3NlX2FkZHJlc3Mgc291cmNlX2FkZHIsIGRlc3RfYWRk
cjsKICAgICAgICBheDI1X2FkZHJlc3Mgc291cmNlX2NhbGwsIGRlc3RfY2FsbDsKICAgICAgICB1
bnNpZ25lZCBjaGFyIHNvdXJjZV9uZGlnaXMsIGRlc3RfbmRpZ2lzOwogICAgICAgIGF4MjVfYWRk
cmVzcyBzb3VyY2VfZGlnaXNbNl07CiAgICAgICAgYXgyNV9hZGRyZXNzIGRlc3RfZGlnaXNbNl07
CiAgICAgICAgdW5zaWduZWQgaW50IHJhbmQ7CiAgICAgICAgcm9zZV9hZGRyZXNzIGZhaWxfYWRk
cjsKICAgICAgICBheDI1X2FkZHJlc3MgZmFpbF9jYWxsOwp9OwojIDEwICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9yb3NlLmgiIDIKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9uZXQvcm9zZS5oIgplbnVtIHsKICAgICAgICBST1NFX1NUQVRFXzAsCiAg
ICAgICAgUk9TRV9TVEFURV8xLAogICAgICAgIFJPU0VfU1RBVEVfMiwKICAgICAgICBST1NFX1NU
QVRFXzMsCiAgICAgICAgUk9TRV9TVEFURV80LAogICAgICAgIFJPU0VfU1RBVEVfNQp9OwojIDgy
ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9yb3NlLmgiCnN0cnVjdCByb3Nl
X25laWdoIHsKICAgICAgICBzdHJ1Y3Qgcm9zZV9uZWlnaCAqbmV4dDsKICAgICAgICBheDI1X2Fk
ZHJlc3MgY2FsbHNpZ247CiAgICAgICAgYXgyNV9kaWdpICpkaWdpcGVhdDsKICAgICAgICBheDI1
X2NiICpheDI1OwogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgY291bnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdXNlOwogICAgICAgIHVuc2ln
bmVkIGludCBudW1iZXI7CiAgICAgICAgY2hhciByZXN0YXJ0ZWQ7CiAgICAgICAgY2hhciBkY2Vf
bW9kZTsKICAgICAgICBjaGFyIGxvb3BiYWNrOwogICAgICAgIHN0cnVjdCBza19idWZmX2hlYWQg
cXVldWU7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgdDB0aW1lcjsKICAgICAgICBzdHJ1Y3Qg
dGltZXJfbGlzdCBmdGltZXI7Cn07CgpzdHJ1Y3Qgcm9zZV9ub2RlIHsKICAgICAgICBzdHJ1Y3Qg
cm9zZV9ub2RlICpuZXh0OwogICAgICAgIHJvc2VfYWRkcmVzcyBhZGRyZXNzOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IG1hc2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBjb3VudDsKICAgICAgICBj
aGFyIGxvb3BiYWNrOwogICAgICAgIHN0cnVjdCByb3NlX25laWdoICpuZWlnaGJvdXJbM107Cn07
CgpzdHJ1Y3Qgcm9zZV9yb3V0ZSB7CiAgICAgICAgc3RydWN0IHJvc2Vfcm91dGUgKm5leHQ7CiAg
ICAgICAgdW5zaWduZWQgaW50IGxjaTEsIGxjaTI7CiAgICAgICAgcm9zZV9hZGRyZXNzIHNyY19h
ZGRyLCBkZXN0X2FkZHI7CiAgICAgICAgYXgyNV9hZGRyZXNzIHNyY19jYWxsLCBkZXN0X2NhbGw7
CiAgICAgICAgc3RydWN0IHJvc2VfbmVpZ2ggKm5laWdoMSwgKm5laWdoMjsKICAgICAgICB1bnNp
Z25lZCBpbnQgcmFuZDsKfTsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICByb3NlX2FkZHJlc3Mg
c291cmNlX2FkZHIsIGRlc3RfYWRkcjsKICAgICAgICBheDI1X2FkZHJlc3Mgc291cmNlX2NhbGws
IGRlc3RfY2FsbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNvdXJjZV9uZGlnaXMsIGRlc3RfbmRp
Z2lzOwogICAgICAgIGF4MjVfYWRkcmVzcyBzb3VyY2VfZGlnaXNbNl07CiAgICAgICAgYXgyNV9h
ZGRyZXNzIGRlc3RfZGlnaXNbNl07CiAgICAgICAgc3RydWN0IHJvc2VfbmVpZ2ggKm5laWdoYm91
cjsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIGlu
dCBsY2ksIHJhbmQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBzdGF0ZSwgY29uZGl0aW9uLCBxYml0
aW5jbCwgZGVmZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBjYXVzZSwgZGlhZ25vc3RpYzsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB2cywgdnIsIHZhLCB2bDsKICAgICAgICB1bnNpZ25lZCBsb25n
IHQxLCB0MiwgdDMsIGhiLCBpZGxlOwoKCgoKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGFj
a19xdWV1ZTsKICAgICAgICBzdHJ1Y3Qgcm9zZV9mYWNpbGl0aWVzX3N0cnVjdCBmYWNpbGl0aWVz
OwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOwogICAgICAgIHN0cnVjdCB0aW1lcl9s
aXN0IGlkbGV0aW1lcjsKICAgICAgICBzdHJ1Y3Qgc29jayAqc2s7Cn0gcm9zZV9jYjsKCgpleHRl
cm4gYXgyNV9hZGRyZXNzIHJvc2VfY2FsbHNpZ247CmV4dGVybiBpbnQgc3lzY3RsX3Jvc2VfcmVz
dGFydF9yZXF1ZXN0X3RpbWVvdXQ7CmV4dGVybiBpbnQgc3lzY3RsX3Jvc2VfY2FsbF9yZXF1ZXN0
X3RpbWVvdXQ7CmV4dGVybiBpbnQgc3lzY3RsX3Jvc2VfcmVzZXRfcmVxdWVzdF90aW1lb3V0Owpl
eHRlcm4gaW50IHN5c2N0bF9yb3NlX2NsZWFyX3JlcXVlc3RfdGltZW91dDsKZXh0ZXJuIGludCBz
eXNjdGxfcm9zZV9ub19hY3Rpdml0eV90aW1lb3V0OwpleHRlcm4gaW50IHN5c2N0bF9yb3NlX2Fj
a19ob2xkX2JhY2tfdGltZW91dDsKZXh0ZXJuIGludCBzeXNjdGxfcm9zZV9yb3V0aW5nX2NvbnRy
b2w7CmV4dGVybiBpbnQgc3lzY3RsX3Jvc2VfbGlua19mYWlsX3RpbWVvdXQ7CmV4dGVybiBpbnQg
c3lzY3RsX3Jvc2VfbWF4aW11bV92Y3M7CmV4dGVybiBpbnQgc3lzY3RsX3Jvc2Vfd2luZG93X3Np
emU7CmV4dGVybiBpbnQgcm9zZWNtcChyb3NlX2FkZHJlc3MgKiwgcm9zZV9hZGRyZXNzICopOwpl
eHRlcm4gaW50IHJvc2VjbXBtKHJvc2VfYWRkcmVzcyAqLCByb3NlX2FkZHJlc3MgKiwgdW5zaWdu
ZWQgc2hvcnQpOwpleHRlcm4gY2hhciAqcm9zZTJhc2Mocm9zZV9hZGRyZXNzICopOwpleHRlcm4g
c3RydWN0IHNvY2sgKnJvc2VfZmluZF9zb2NrZXQodW5zaWduZWQgaW50LCBzdHJ1Y3Qgcm9zZV9u
ZWlnaCAqKTsKZXh0ZXJuIHZvaWQgcm9zZV9raWxsX2J5X25laWdoKHN0cnVjdCByb3NlX25laWdo
ICopOwpleHRlcm4gdW5zaWduZWQgaW50IHJvc2VfbmV3X2xjaShzdHJ1Y3Qgcm9zZV9uZWlnaCAq
KTsKZXh0ZXJuIGludCByb3NlX3J4X2NhbGxfcmVxdWVzdChzdHJ1Y3Qgc2tfYnVmZiAqLCBzdHJ1
Y3QgbmV0X2RldmljZSAqLCBzdHJ1Y3Qgcm9zZV9uZWlnaCAqLCB1bnNpZ25lZCBpbnQpOwpleHRl
cm4gdm9pZCByb3NlX2Rlc3Ryb3lfc29ja2V0KHN0cnVjdCBzb2NrICopOwoKCmV4dGVybiBpbnQg
cm9zZV9yeF9pcChzdHJ1Y3Qgc2tfYnVmZiAqLCBzdHJ1Y3QgbmV0X2RldmljZSAqKTsKZXh0ZXJu
IGludCByb3NlX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKik7CgoKZXh0ZXJuIGludCByb3NlX3By
b2Nlc3NfcnhfZnJhbWUoc3RydWN0IHNvY2sgKiwgc3RydWN0IHNrX2J1ZmYgKik7CgoKZXh0ZXJu
IHZvaWQgcm9zZV9zdGFydF9mdGltZXIoc3RydWN0IHJvc2VfbmVpZ2ggKik7CmV4dGVybiB2b2lk
IHJvc2Vfc3RhcnRfdDB0aW1lcihzdHJ1Y3Qgcm9zZV9uZWlnaCAqKTsKZXh0ZXJuIHZvaWQgcm9z
ZV9zdG9wX2Z0aW1lcihzdHJ1Y3Qgcm9zZV9uZWlnaCAqKTsKZXh0ZXJuIHZvaWQgcm9zZV9zdG9w
X3QwdGltZXIoc3RydWN0IHJvc2VfbmVpZ2ggKik7CmV4dGVybiBpbnQgcm9zZV9mdGltZXJfcnVu
bmluZyhzdHJ1Y3Qgcm9zZV9uZWlnaCAqKTsKZXh0ZXJuIGludCByb3NlX3QwdGltZXJfcnVubmlu
ZyhzdHJ1Y3Qgcm9zZV9uZWlnaCAqKTsKZXh0ZXJuIHZvaWQgcm9zZV9saW5rX3J4X3Jlc3RhcnQo
c3RydWN0IHNrX2J1ZmYgKiwgc3RydWN0IHJvc2VfbmVpZ2ggKiwgdW5zaWduZWQgc2hvcnQpOwpl
eHRlcm4gdm9pZCByb3NlX3RyYW5zbWl0X3Jlc3RhcnRfcmVxdWVzdChzdHJ1Y3Qgcm9zZV9uZWln
aCAqKTsKZXh0ZXJuIHZvaWQgcm9zZV90cmFuc21pdF9yZXN0YXJ0X2NvbmZpcm1hdGlvbihzdHJ1
Y3Qgcm9zZV9uZWlnaCAqKTsKZXh0ZXJuIHZvaWQgcm9zZV90cmFuc21pdF9kaWFnbm9zdGljKHN0
cnVjdCByb3NlX25laWdoICosIHVuc2lnbmVkIGNoYXIpOwpleHRlcm4gdm9pZCByb3NlX3RyYW5z
bWl0X2NsZWFyX3JlcXVlc3Qoc3RydWN0IHJvc2VfbmVpZ2ggKiwgdW5zaWduZWQgaW50LCB1bnNp
Z25lZCBjaGFyLCB1bnNpZ25lZCBjaGFyKTsKZXh0ZXJuIHZvaWQgcm9zZV90cmFuc21pdF9saW5r
KHN0cnVjdCBza19idWZmICosIHN0cnVjdCByb3NlX25laWdoICopOwoKCmV4dGVybiB2b2lkIHJv
c2VfbG9vcGJhY2tfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgcm9zZV9sb29wYmFja19jbGVhcih2
b2lkKTsKZXh0ZXJuIGludCByb3NlX2xvb3BiYWNrX3F1ZXVlKHN0cnVjdCBza19idWZmICosIHN0
cnVjdCByb3NlX25laWdoICopOwoKCmV4dGVybiB2b2lkIHJvc2Vfa2ljayhzdHJ1Y3Qgc29jayAq
KTsKZXh0ZXJuIHZvaWQgcm9zZV9lbnF1aXJ5X3Jlc3BvbnNlKHN0cnVjdCBzb2NrICopOwoKCmV4
dGVybiBzdHJ1Y3Qgcm9zZV9uZWlnaCAqcm9zZV9sb29wYmFja19uZWlnaDsKCmV4dGVybiBpbnQg
cm9zZV9hZGRfbG9vcGJhY2tfbmVpZ2godm9pZCk7CmV4dGVybiBpbnQgcm9zZV9hZGRfbG9vcGJh
Y2tfbm9kZShyb3NlX2FkZHJlc3MgKik7CmV4dGVybiB2b2lkIHJvc2VfZGVsX2xvb3BiYWNrX25v
ZGUocm9zZV9hZGRyZXNzICopOwpleHRlcm4gdm9pZCByb3NlX3J0X2RldmljZV9kb3duKHN0cnVj
dCBuZXRfZGV2aWNlICopOwpleHRlcm4gdm9pZCByb3NlX2xpbmtfZGV2aWNlX2Rvd24oc3RydWN0
IG5ldF9kZXZpY2UgKik7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqcm9zZV9kZXZfZmlyc3Qo
dm9pZCk7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAqcm9zZV9kZXZfZ2V0KHJvc2VfYWRkcmVz
cyAqKTsKZXh0ZXJuIHN0cnVjdCByb3NlX3JvdXRlICpyb3NlX3JvdXRlX2ZyZWVfbGNpKHVuc2ln
bmVkIGludCwgc3RydWN0IHJvc2VfbmVpZ2ggKik7CmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAq
cm9zZV9heDI1X2Rldl9nZXQoY2hhciAqKTsKZXh0ZXJuIHN0cnVjdCByb3NlX25laWdoICpyb3Nl
X2dldF9uZWlnaChyb3NlX2FkZHJlc3MgKiwgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFy
ICopOwpleHRlcm4gaW50IHJvc2VfcnRfaW9jdGwodW5zaWduZWQgaW50LCB2b2lkICopOwpleHRl
cm4gdm9pZCByb3NlX2xpbmtfZmFpbGVkKGF4MjVfY2IgKiwgaW50KTsKZXh0ZXJuIGludCByb3Nl
X3JvdXRlX2ZyYW1lKHN0cnVjdCBza19idWZmICosIGF4MjVfY2IgKik7CmV4dGVybiBpbnQgcm9z
ZV9ub2Rlc19nZXRfaW5mbyhjaGFyICosIGNoYXIgKiosIG9mZl90LCBpbnQpOwpleHRlcm4gaW50
IHJvc2VfbmVpZ2hfZ2V0X2luZm8oY2hhciAqLCBjaGFyICoqLCBvZmZfdCwgaW50KTsKZXh0ZXJu
IGludCByb3NlX3JvdXRlc19nZXRfaW5mbyhjaGFyICosIGNoYXIgKiosIG9mZl90LCBpbnQpOwpl
eHRlcm4gdm9pZCByb3NlX3J0X2ZyZWUodm9pZCk7CgoKZXh0ZXJuIHZvaWQgcm9zZV9jbGVhcl9x
dWV1ZXMoc3RydWN0IHNvY2sgKik7CmV4dGVybiB2b2lkIHJvc2VfZnJhbWVzX2Fja2VkKHN0cnVj
dCBzb2NrICosIHVuc2lnbmVkIHNob3J0KTsKZXh0ZXJuIHZvaWQgcm9zZV9yZXF1ZXVlX2ZyYW1l
cyhzdHJ1Y3Qgc29jayAqKTsKZXh0ZXJuIGludCByb3NlX3ZhbGlkYXRlX25yKHN0cnVjdCBzb2Nr
ICosIHVuc2lnbmVkIHNob3J0KTsKZXh0ZXJuIHZvaWQgcm9zZV93cml0ZV9pbnRlcm5hbChzdHJ1
Y3Qgc29jayAqLCBpbnQpOwpleHRlcm4gaW50IHJvc2VfZGVjb2RlKHN0cnVjdCBza19idWZmICos
IGludCAqLCBpbnQgKiwgaW50ICosIGludCAqLCBpbnQgKik7CmV4dGVybiBpbnQgcm9zZV9wYXJz
ZV9mYWNpbGl0aWVzKHVuc2lnbmVkIGNoYXIgKiwgc3RydWN0IHJvc2VfZmFjaWxpdGllc19zdHJ1
Y3QgKik7CmV4dGVybiBpbnQgcm9zZV9jcmVhdGVfZmFjaWxpdGllcyh1bnNpZ25lZCBjaGFyICos
IHJvc2VfY2IgKik7CmV4dGVybiB2b2lkIHJvc2VfZGlzY29ubmVjdChzdHJ1Y3Qgc29jayAqLCBp
bnQsIGludCwgaW50KTsKCgpleHRlcm4gdm9pZCByb3NlX3N0YXJ0X2hlYXJ0YmVhdChzdHJ1Y3Qg
c29jayAqKTsKZXh0ZXJuIHZvaWQgcm9zZV9zdGFydF90MXRpbWVyKHN0cnVjdCBzb2NrICopOwpl
eHRlcm4gdm9pZCByb3NlX3N0YXJ0X3QydGltZXIoc3RydWN0IHNvY2sgKik7CmV4dGVybiB2b2lk
IHJvc2Vfc3RhcnRfdDN0aW1lcihzdHJ1Y3Qgc29jayAqKTsKZXh0ZXJuIHZvaWQgcm9zZV9zdGFy
dF9oYnRpbWVyKHN0cnVjdCBzb2NrICopOwpleHRlcm4gdm9pZCByb3NlX3N0YXJ0X2lkbGV0aW1l
cihzdHJ1Y3Qgc29jayAqKTsKZXh0ZXJuIHZvaWQgcm9zZV9zdG9wX2hlYXJ0YmVhdChzdHJ1Y3Qg
c29jayAqKTsKZXh0ZXJuIHZvaWQgcm9zZV9zdG9wX3RpbWVyKHN0cnVjdCBzb2NrICopOwpleHRl
cm4gdm9pZCByb3NlX3N0b3BfaWRsZXRpbWVyKHN0cnVjdCBzb2NrICopOwoKCmV4dGVybiB2b2lk
IHJvc2VfcmVnaXN0ZXJfc3lzY3RsKHZvaWQpOwpleHRlcm4gdm9pZCByb3NlX3VucmVnaXN0ZXJf
c3lzY3RsKHZvaWQpOwojIDcwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9z
b2NrLmgiIDIKIyA4MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvc29jay5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2lweC5oIiAxCiMgMTQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2lweC5oIgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2RhdGFsaW5rLmgiIDEKCgoKc3RydWN0IGRhdGFs
aW5rX3Byb3RvIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlX2xlbjsKICAgICAgICB1bnNp
Z25lZCBjaGFyIHR5cGVbOF07CiAgICAgICAgY29uc3QgY2hhciAqc3RyaW5nX25hbWU7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgaGVhZGVyX2xlbmd0aDsKICAgICAgICBpbnQgKCpyY3ZmdW5jKShz
dHJ1Y3Qgc2tfYnVmZiAqLCBzdHJ1Y3QgbmV0X2RldmljZSAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqKTsKICAgICAgICB2b2lkICgqZGF0YWxp
bmtfaGVhZGVyKShzdHJ1Y3QgZGF0YWxpbmtfcHJvdG8gKiwgc3RydWN0IHNrX2J1ZmYgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKik7CiAg
ICAgICAgc3RydWN0IGRhdGFsaW5rX3Byb3RvICpuZXh0Owp9OwojIDE1ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9pcHguaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbGludXgvaXB4LmgiIDEKCgoKCgoKCnN0cnVjdCBzb2NrYWRkcl9pcHgKewog
ICAgICAgIHNhX2ZhbWlseV90IHNpcHhfZmFtaWx5OwogICAgICAgIF9fdTE2IHNpcHhfcG9ydDsK
ICAgICAgICBfX3UzMiBzaXB4X25ldHdvcms7CiAgICAgICAgdW5zaWduZWQgY2hhciBzaXB4X25v
ZGVbNl07CiAgICAgICAgX191OCBzaXB4X3R5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzaXB4
X3plcm87Cn07CiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvaXB4
LmgiCnR5cGVkZWYgc3RydWN0IGlweF9yb3V0ZV9kZWZpbml0aW9uCnsKICAgICAgICBfX3UzMiBp
cHhfbmV0d29yazsKICAgICAgICBfX3UzMiBpcHhfcm91dGVyX25ldHdvcms7CiAgICAgICAgdW5z
aWduZWQgY2hhciBpcHhfcm91dGVyX25vZGVbNl07Cn0gaXB4X3JvdXRlX2RlZmluaXRpb247Cgp0
eXBlZGVmIHN0cnVjdCBpcHhfaW50ZXJmYWNlX2RlZmluaXRpb24KewogICAgICAgIF9fdTMyIGlw
eF9uZXR3b3JrOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaXB4X2RldmljZVsxNl07CiAgICAgICAg
dW5zaWduZWQgY2hhciBpcHhfZGxpbmtfdHlwZTsKCgoKCgoKICAgICAgICB1bnNpZ25lZCBjaGFy
IGlweF9zcGVjaWFsOwoKCgogICAgICAgIHVuc2lnbmVkIGNoYXIgaXB4X25vZGVbNl07Cn0gaXB4
X2ludGVyZmFjZV9kZWZpbml0aW9uOwoKdHlwZWRlZiBzdHJ1Y3QgaXB4X2NvbmZpZ19kYXRhCnsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGlweGNmZ19hdXRvX3NlbGVjdF9wcmltYXJ5OwogICAgICAg
IHVuc2lnbmVkIGNoYXIgaXB4Y2ZnX2F1dG9fY3JlYXRlX2ludGVyZmFjZXM7Cn0gaXB4X2NvbmZp
Z19kYXRhOwoKCgoKCnN0cnVjdCBpcHhfcm91dGVfZGVmCnsKICAgICAgICBfX3UzMiBpcHhfbmV0
d29yazsKICAgICAgICBfX3UzMiBpcHhfcm91dGVyX25ldHdvcms7CgogICAgICAgIHVuc2lnbmVk
IGNoYXIgaXB4X3JvdXRlcl9ub2RlWzZdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaXB4X2Rldmlj
ZVsxNl07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaXB4X2ZsYWdzOwoKCgoKfTsKIyA4NCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9pcHguaCIKZXh0ZXJuIGludCBpcHhy
dHJfcm91dGVfc2tiX1JlOTA5ZWI4OChzdHJ1Y3Qgc2tfYnVmZiAqKTsKZXh0ZXJuIGludCBpcHhf
aWZfb2Zmc2V0X1IwOGRlNGYyYyh1bnNpZ25lZCBsb25nIGlweF9uZXRfbnVtYmVyKTsKZXh0ZXJu
IHZvaWQgaXB4X3JlbW92ZV9zb2NrZXRfUmU0MTE5YjQ5KHN0cnVjdCBzb2NrICpzayk7CiMgMTYg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2lweC5oIiAyCgp0eXBlZGVmIHN0
cnVjdAp7CiAgICAgICAgX191MzIgbmV0OwogICAgICAgIF9fdTggbm9kZVs2XTsKICAgICAgICBf
X3UxNiBzb2NrOwp9IGlweF9hZGRyZXNzOwoKCgoKCgpzdHJ1Y3QgaXB4aGRyCnsKICAgICAgICBf
X3UxNiBpcHhfY2hlY2tzdW0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoKICAgICAgICBfX3Ux
NiBpcHhfcGt0c2l6ZSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBpcHhf
dGN0cmw7CiAgICAgICAgX191OCBpcHhfdHlwZTsKCgoKCgoKICAgICAgICBpcHhfYWRkcmVzcyBp
cHhfZGVzdCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgaXB4X2FkZHJlc3MgaXB4
X3NvdXJjZSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7Cn07Cgp0eXBlZGVmIHN0cnVjdCBpcHhf
aW50ZXJmYWNlIHsKCiAgICAgICAgX191MzIgaWZfbmV0bnVtOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgaWZfbm9kZVs2XTsKICAgICAgICBhdG9taWNfdCByZWZjbnQ7CgoKICAgICAgICBzdHJ1Y3Qg
bmV0X2RldmljZSAqaWZfZGV2OwogICAgICAgIHN0cnVjdCBkYXRhbGlua19wcm90byAqaWZfZGxp
bms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaWZfZGxpbmtfdHlwZTsKCgogICAgICAgIHVuc2ln
bmVkIHNob3J0IGlmX3NrbnVtOwogICAgICAgIHN0cnVjdCBzb2NrICppZl9za2xpc3Q7CiAgICAg
ICAgc3BpbmxvY2tfdCBpZl9za2xpc3RfbG9jazsKCgogICAgICAgIGludCBpZl9pcHhfb2Zmc2V0
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgaWZfaW50ZXJuYWw7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBpZl9wcmltYXJ5OwoKICAgICAgICBzdHJ1Y3QgaXB4X2ludGVyZmFjZSAqaWZfbmV4dDsKfSBp
cHhfaW50ZXJmYWNlOwoKdHlwZWRlZiBzdHJ1Y3QgaXB4X3JvdXRlIHsKICAgICAgICBfX3UzMiBp
cl9uZXQ7CiAgICAgICAgaXB4X2ludGVyZmFjZSAqaXJfaW50cmZjOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgaXJfcm91dGVkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaXJfcm91dGVyX25vZGVbNl07
CiAgICAgICAgc3RydWN0IGlweF9yb3V0ZSAqaXJfbmV4dDsKICAgICAgICBhdG9taWNfdCByZWZj
bnQ7Cn0gaXB4X3JvdXRlOwoKCnN0cnVjdCBpcHhfY2IgewogICAgICAgIHU4IGlweF90Y3RybDsK
ICAgICAgICB1MzIgaXB4X2Rlc3RfbmV0OwogICAgICAgIHUzMiBpcHhfc291cmNlX25ldDsKICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdTMyIG5ldG51bTsKICAgICAgICAgICAgICAg
IGludCBpbmRleDsKICAgICAgICB9IGxhc3RfaG9wOwp9OwoKCgoKZXh0ZXJuIGludCBpcHhfcmVn
aXN0ZXJfc3B4X1IxMjM0OGU2ZihzdHJ1Y3QgcHJvdG9fb3BzICoqLCBzdHJ1Y3QgbmV0X3Byb3Rv
X2ZhbWlseSAqKTsKZXh0ZXJuIGludCBpcHhfdW5yZWdpc3Rlcl9zcHhfUmI1ZTM5ZTY0KHZvaWQp
OwojIDgzICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9zb2NrLmgiIDIKCgoK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9hdGFsay5oIiAxCiMg
MjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbGludXgvYXRhbGsuaCIKc3RydWN0
IGF0X2FkZHIKewogICAgICAgIF9fdTE2IHNfbmV0OwogICAgICAgIF9fdTggc19ub2RlOwp9OwoK
c3RydWN0IHNvY2thZGRyX2F0CnsKICAgICAgICBzYV9mYW1pbHlfdCBzYXRfZmFtaWx5OwogICAg
ICAgIF9fdTggc2F0X3BvcnQ7CiAgICAgICAgc3RydWN0IGF0X2FkZHIgc2F0X2FkZHI7CiAgICAg
ICAgY2hhciBzYXRfemVyb1sgOCBdOwp9OwoKc3RydWN0IG5ldHJhbmdlCnsKICAgICAgICBfX3U4
IG5yX3BoYXNlOwogICAgICAgIF9fdTE2IG5yX2ZpcnN0bmV0OwogICAgICAgIF9fdTE2IG5yX2xh
c3RuZXQ7Cn07CgpzdHJ1Y3QgYXRhbGtfcm91dGUKewogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXY7CiAgICAgICAgc3RydWN0IGF0X2FkZHIgdGFyZ2V0OwogICAgICAgIHN0cnVjdCBhdF9h
ZGRyIGdhdGV3YXk7CiAgICAgICAgaW50IGZsYWdzOwogICAgICAgIHN0cnVjdCBhdGFsa19yb3V0
ZSAqbmV4dDsKfTsKCnN0cnVjdCBhdGFsa19pZmFjZQp7CiAgICAgICAgc3RydWN0IG5ldF9kZXZp
Y2UgKmRldjsKICAgICAgICBzdHJ1Y3QgYXRfYWRkciBhZGRyZXNzOwogICAgICAgIGludCBzdGF0
dXM7CgoKICAgICAgICBzdHJ1Y3QgbmV0cmFuZ2UgbmV0czsKICAgICAgICBzdHJ1Y3QgYXRhbGtf
aWZhY2UgKm5leHQ7Cn07CgpzdHJ1Y3QgYXRhbGtfc29jawp7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgZGVzdF9uZXQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3JjX25ldDsKICAgICAgICB1bnNp
Z25lZCBjaGFyIGRlc3Rfbm9kZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNyY19ub2RlOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgZGVzdF9wb3J0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc3JjX3Bv
cnQ7Cn07CgoKCgoKc3RydWN0IGRkcGVoZHIKewoKICAgICAgICBfX3UxNiBkZWhfbGVuOjEwLCBk
ZWhfaG9wczo0LCBkZWhfcGFkOjI7CgoKCiAgICAgICAgX191MTYgZGVoX3N1bTsKICAgICAgICBf
X3UxNiBkZWhfZG5ldDsKICAgICAgICBfX3UxNiBkZWhfc25ldDsKICAgICAgICBfX3U4IGRlaF9k
bm9kZTsKICAgICAgICBfX3U4IGRlaF9zbm9kZTsKICAgICAgICBfX3U4IGRlaF9kcG9ydDsKICAg
ICAgICBfX3U4IGRlaF9zcG9ydDsKCn07CgoKCgoKCnN0cnVjdCBkZHBlYml0cwp7CgogICAgICAg
IF9fdTE2IGRlaF9sZW46MTAsIGRlaF9ob3BzOjQsIGRlaF9wYWQ6MjsKCgoKfTsKCgoKCgpzdHJ1
Y3QgZGRwc2hkcgp7CgogICAgICAgIF9fdTE2IGRzaF9sZW46MTAsIGRzaF9wYWQ6NjsKCgoKICAg
ICAgICBfX3U4IGRzaF9kcG9ydDsKICAgICAgICBfX3U4IGRzaF9zcG9ydDsKCn07CgoKCnN0cnVj
dCBlbGFwYWFycAp7CiAgICAgICAgX191MTYgaHdfdHlwZTsKCgogICAgICAgIF9fdTE2IHBhX3R5
cGU7CiAgICAgICAgX191OCBod19sZW47CiAgICAgICAgX191OCBwYV9sZW47CgogICAgICAgIF9f
dTE2IGZ1bmN0aW9uOwoKCgogICAgICAgIF9fdTggaHdfc3JjWzZdIF9fYXR0cmlidXRlX18gKChw
YWNrZWQpKTsKICAgICAgICBfX3U4IHBhX3NyY196ZXJvIF9fYXR0cmlidXRlX18gKChwYWNrZWQp
KTsKICAgICAgICBfX3UxNiBwYV9zcmNfbmV0IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAg
ICAgICBfX3U4IHBhX3NyY19ub2RlIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKICAgICAgICBf
X3U4IGh3X2RzdFs2XSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBwYV9k
c3RfemVybyBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191MTYgcGFfZHN0X25l
dCBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAgICAgICAgX191OCBwYV9kc3Rfbm9kZSBfX2F0
dHJpYnV0ZV9fICgocGFja2VkKSk7Cn07CgoKCgoKCgpleHRlcm4gc3RydWN0IGRhdGFsaW5rX3By
b3RvICpkZHBfZGwsICphYXJwX2RsOwpleHRlcm4gdm9pZCBhYXJwX3Byb3RvX2luaXQodm9pZCk7
CgoKCgoKCnN0YXRpYyBpbmxpbmUgc3RydWN0IGF0YWxrX2lmYWNlICphdGFsa19maW5kX2Rldihz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgcmV0dXJuIGRldi0+YXRhbGtfcHRyOwp9
CgpleHRlcm4gc3RydWN0IGF0X2FkZHIgKmF0YWxrX2ZpbmRfZGV2X2FkZHJfUmNjMjZkMmJlKHN0
cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmF0cnRyX2dl
dF9kZXZfUjY0NDExZTlhKHN0cnVjdCBhdF9hZGRyICpzYSk7CmV4dGVybiBpbnQgYWFycF9zZW5k
X2RkcF9SNjZiMDQxMTEoc3RydWN0IG5ldF9kZXZpY2UgKmRldixzdHJ1Y3Qgc2tfYnVmZiAqc2ti
LCBzdHJ1Y3QgYXRfYWRkciAqc2EsIHZvaWQgKmh3YWRkcik7CmV4dGVybiB2b2lkIGFhcnBfc2Vu
ZF9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgYXRfYWRkciAqYWRkcik7CmV4
dGVybiB2b2lkIGFhcnBfZGV2aWNlX2Rvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgoKZXh0
ZXJuIHZvaWQgYWFycF9jbGVhbnVwX21vZHVsZSh2b2lkKTsKIyA4OCAiL3Vzci9zcmMvbGludXgt
Mi40LjIwLTgvaW5jbHVkZS9uZXQvc29jay5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9uZXQvZG4uaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbGludXgvZG4uaCIgMQojIDcyICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL2xpbnV4L2RuLmgiCnN0cnVjdCBkbl9uYWRkcgp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
YV9sZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBhX2FkZHJbMl07Cn07CgpzdHJ1Y3Qgc29ja2Fk
ZHJfZG4KewogICAgICAgIHVuc2lnbmVkIHNob3J0IHNkbl9mYW1pbHk7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBzZG5fZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZG5fb2JqbnVtOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNkbl9vYmpuYW1lbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNk
bl9vYmpuYW1lWzE2XTsKICAgICAgICBzdHJ1Y3QgZG5fbmFkZHIgc2RuX2FkZDsKfTsKIyA5NSAi
L3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9kbi5oIgpzdHJ1Y3Qgb3B0ZGF0
YV9kbiB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3B0X3N0YXR1czsKCiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgb3B0X29wdGw7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcHRfZGF0YVsxNl07Cn07
CgpzdHJ1Y3QgYWNjZXNzZGF0YV9kbgp7CiAgICAgICAgdW5zaWduZWQgY2hhciBhY2NfYWNjbDsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGFjY19hY2NbNDBdOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
YWNjX3Bhc3NsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYWNjX3Bhc3NbNDBdOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgYWNjX3VzZXJsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYWNjX3VzZXJbNDBd
Owp9OwoKCgoKc3RydWN0IGxpbmtpbmZvX2RuIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBpZG5f
c2Vnc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlkbl9saW5rc3RhdGU7Cn07CgoKCgp1bmlv
biBldGhlcmFkZHJlc3MgewogICAgICAgIHVuc2lnbmVkIGNoYXIgZG5lX2FkZHJbNl07CiAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZG5lX2hpb3JkWzRdOwogICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBkbmVfbm9kZWFkZHJbMl07CiAgfSBkbmVfcmVtb3RlOwp9
OwoKCgoKCnN0cnVjdCBkbl9hZGRyIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkbmFfZmFtaWx5
OwogICAgICAgIHVuaW9uIGV0aGVyYWRkcmVzcyBkbmFfbmV0YWRkcjsKfTsKIyA1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9kbi5oIiAyCgoKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBkbl9hZGRyZXNzOwoKCgoKCgpzdHJ1Y3QgZG5fc2NwCnsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHN0YXRlOwojIDM0ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9kbi5o
IgogICAgICAgIHVuc2lnbmVkIHNob3J0IGFkZHJsb2M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
YWRkcnJlbTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBudW1kYXQ7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgbnVtb3RoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG51bW90aF9yY3Y7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgbnVtZGF0X3JjdjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBhY2t4bXRf
ZGF0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGFja3htdF9vdGg7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgYWNrcmN2X2RhdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBhY2tyY3Zfb3RoOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgZmxvd3JlbV9zdzsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZsb3ds
b2Nfc3c7CgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmxvd3JlbV9kYXQ7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgZmxvd3JlbV9vdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmxvd2xvY19k
YXQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmxvd2xvY19vdGg7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBzZXJ2aWNlc19yZW07CiAgICAgICAgdW5zaWduZWQgY2hhciBzZXJ2aWNlc19sb2M7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBpbmZvX3JlbTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGluZm9f
bG9jOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZWdzaXplX3JlbTsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBzZWdzaXplX2xvYzsKCiAgICAgICAgdW5zaWduZWQgY2hhciBub25hZ2xlOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgbXVsdGlfaXJlcTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGFjY2Vw
dF9tb2RlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VnX3RvdGFsOwoKICAgICAgICBzdHJ1Y3Qg
b3B0ZGF0YV9kbiBjb25uZGF0YV9pbjsKICAgICAgICBzdHJ1Y3Qgb3B0ZGF0YV9kbiBjb25uZGF0
YV9vdXQ7CiAgICAgICAgc3RydWN0IG9wdGRhdGFfZG4gZGlzY2RhdGFfaW47CiAgICAgICAgc3Ry
dWN0IG9wdGRhdGFfZG4gZGlzY2RhdGFfb3V0OwogICAgICAgIHN0cnVjdCBhY2Nlc3NkYXRhX2Ru
IGFjY2Vzc2RhdGE7CgogICAgICAgIHN0cnVjdCBzb2NrYWRkcl9kbiBhZGRyOwogICAgICAgIHN0
cnVjdCBzb2NrYWRkcl9kbiBwZWVyOwojIDk5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL25ldC9kbi5oIgogICAgICAgIHVuc2lnbmVkIGxvbmcgbWF4X3dpbmRvdzsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNuZF93aW5kb3c7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgbnNwX3NydHQ7
CgogICAgICAgIHVuc2lnbmVkIGxvbmcgbnNwX3J0dHZhcjsKCiAgICAgICAgdW5zaWduZWQgbG9u
ZyBuc3Bfcnh0c2hpZnQ7CgoKCgogICAgICAgIHN0cnVjdCBza19idWZmX2hlYWQgZGF0YV94bWl0
X3F1ZXVlOwogICAgICAgIHN0cnVjdCBza19idWZmX2hlYWQgb3RoZXJfeG1pdF9xdWV1ZTsKCgoK
CiAgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCBvdGhlcl9yZWNlaXZlX3F1ZXVlOwogICAgICAg
IGludCBvdGhlcl9yZXBvcnQ7CgoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhbXA7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBwZXJzaXN0OwogICAgICAgIGludCAoKnBlcnNpc3RfZnhuKShzdHJ1
Y3Qgc29jayAqc2spOwogICAgICAgIHVuc2lnbmVkIGxvbmcga2VlcGFsaXZlOwogICAgICAgIHZv
aWQgKCprZWVwYWxpdmVfZnhuKShzdHJ1Y3Qgc29jayAqc2spOwoKCgoKICAgICAgICBzdHJ1Y3Qg
dGltZXJfbGlzdCBkZWxhY2tfdGltZXI7CiAgICAgICAgaW50IGRlbGFja19wZW5kaW5nOwogICAg
ICAgIHZvaWQgKCpkZWxhY2tfZnhuKShzdHJ1Y3Qgc29jayAqc2spOwoKfTsKIyAxNTcgIi91c3Iv
c3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2RuLmgiCnN0cnVjdCBkbl9za2JfY2Igewog
ICAgICAgIHVuc2lnbmVkIHNob3J0IGRzdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcmM7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgaG9wczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkc3RfcG9y
dDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcmNfcG9ydDsKICAgICAgICB1bnNpZ25lZCBjaGFy
IHNlcnZpY2VzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaW5mbzsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHJ0X2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbnNwX2ZsYWdzOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHNlZ3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VnbnVtOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHhtaXRfY291bnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFt
cDsKICAgICAgICBpbnQgaWlmOwp9OwoKc3RhdGljIF9faW5saW5lX18gZG5fYWRkcmVzcyBkbl9l
dGgyZG4odW5zaWduZWQgY2hhciAqZXRoYWRkcikKewogICAgICAgIHJldHVybiBldGhhZGRyWzRd
IHwgKGV0aGFkZHJbNV0gPDwgOCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGRuX2FkZHJlc3MgZG5f
c2FkZHIyZG4oc3RydWN0IHNvY2thZGRyX2RuICpzYWRkcikKewogICAgICAgIHJldHVybiAqKGRu
X2FkZHJlc3MgKilzYWRkci0+c2RuX2FkZC5hX2FkZHI7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZv
aWQgZG5fZG4yZXRoKHVuc2lnbmVkIGNoYXIgKmV0aGFkZHIsIGRuX2FkZHJlc3MgYWRkcikKewog
ICAgICAgIGV0aGFkZHJbMF0gPSAweEFBOwogICAgICAgIGV0aGFkZHJbMV0gPSAweDAwOwogICAg
ICAgIGV0aGFkZHJbMl0gPSAweDA0OwogICAgICAgIGV0aGFkZHJbM10gPSAweDAwOwogICAgICAg
IGV0aGFkZHJbNF0gPSAodW5zaWduZWQgY2hhcikoYWRkciAmIDB4ZmYpOwogICAgICAgIGV0aGFk
ZHJbNV0gPSAodW5zaWduZWQgY2hhcikoYWRkciA+PiA4KTsKfQoKCgoKCgpleHRlcm4gc3RydWN0
IHNvY2sgKmRuX3NrbGlzdF9maW5kX2xpc3RlbmVyKHN0cnVjdCBzb2NrYWRkcl9kbiAqYWRkcik7
CmV4dGVybiBzdHJ1Y3Qgc29jayAqZG5fZmluZF9ieV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYik7
CgpleHRlcm4gY2hhciAqZG5fYWRkcjJhc2MoZG5fYWRkcmVzcywgY2hhciAqKTsKZXh0ZXJuIGlu
dCBkbl9kZXN0cm95X3RpbWVyKHN0cnVjdCBzb2NrICpzayk7CgpleHRlcm4gaW50IGRuX3NvY2th
ZGRyMnVzZXJuYW1lKHN0cnVjdCBzb2NrYWRkcl9kbiAqYWRkciwgdW5zaWduZWQgY2hhciAqYnVm
LCB1bnNpZ25lZCBjaGFyIHR5cGUpOwpleHRlcm4gaW50IGRuX3VzZXJuYW1lMnNvY2thZGRyKHVu
c2lnbmVkIGNoYXIgKmRhdGEsIGludCBsZW4sIHN0cnVjdCBzb2NrYWRkcl9kbiAqYWRkciwgdW5z
aWduZWQgY2hhciAqdHlwZSk7CgpleHRlcm4gdm9pZCBkbl9zdGFydF9zbG93X3RpbWVyKHN0cnVj
dCBzb2NrICpzayk7CmV4dGVybiB2b2lkIGRuX3N0b3Bfc2xvd190aW1lcihzdHJ1Y3Qgc29jayAq
c2spOwpleHRlcm4gdm9pZCBkbl9zdGFydF9mYXN0X3RpbWVyKHN0cnVjdCBzb2NrICpzayk7CmV4
dGVybiB2b2lkIGRuX3N0b3BfZmFzdF90aW1lcihzdHJ1Y3Qgc29jayAqc2spOwoKZXh0ZXJuIGRu
X2FkZHJlc3MgZGVjbmV0X2FkZHJlc3M7CmV4dGVybiB1bnNpZ25lZCBjaGFyIGRlY25ldF9ldGhl
cl9hZGRyZXNzWzZdOwpleHRlcm4gaW50IGRlY25ldF9kZWJ1Z19sZXZlbDsKZXh0ZXJuIGludCBk
ZWNuZXRfdGltZV93YWl0OwpleHRlcm4gaW50IGRlY25ldF9kbl9jb3VudDsKZXh0ZXJuIGludCBk
ZWNuZXRfZGlfY291bnQ7CmV4dGVybiBpbnQgZGVjbmV0X2RyX2NvdW50OwpleHRlcm4gaW50IGRl
Y25ldF9ub19mY19tYXhfY3duZDsKIyA5MiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVk
ZS9uZXQvc29jay5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9u
ZXQvaXJkYS9pcmRhLmgiIDEKIyAzMyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9u
ZXQvaXJkYS9pcmRhLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51
eC9pcmRhLmgiIDEKIyA2MCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9p
cmRhLmgiCnR5cGVkZWYgZW51bSB7CiAgICAgICAgSVJEQV9URUtSQU1fRE9OR0xFID0gMCwKICAg
ICAgICBJUkRBX0VTSV9ET05HTEUgPSAxLAogICAgICAgIElSREFfQUNUSVNZU19ET05HTEUgPSAy
LAogICAgICAgIElSREFfQUNUSVNZU19QTFVTX0RPTkdMRSA9IDMsCiAgICAgICAgSVJEQV9HSVJC
SUxfRE9OR0xFID0gNCwKICAgICAgICBJUkRBX0xJVEVMSU5LX0RPTkdMRSA9IDUsCiAgICAgICAg
SVJEQV9BSVJQT1JUX0RPTkdMRSA9IDYsCiAgICAgICAgSVJEQV9PTERfQkVMS0lOX0RPTkdMRSA9
IDcsCiAgICAgICAgSVJEQV9FUDcyMTFfSVIgPSA4LAogICAgICAgIElSREFfTUNQMjEyMF9ET05H
TEUgPSA5LAogICAgICAgIElSREFfQUNUMjAwTF9ET05HTEUgPSAxMCwKICAgICAgICBJUkRBX01B
NjAwX0RPTkdMRSA9IDExLAp9IElSREFfRE9OR0xFOwoKCmVudW0gewogICAgICAgIElSREFQUk9U
T19VTklUREFUQSA9IDAsCiAgICAgICAgSVJEQVBST1RPX1VMVFJBID0gMSwKICAgICAgICBJUkRB
UFJPVE9fTUFYCn07CiMgMTE3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4
L2lyZGEuaCIKc3RydWN0IHNvY2thZGRyX2lyZGEgewogICAgICAgIHNhX2ZhbWlseV90IHNpcl9m
YW1pbHk7CiAgICAgICAgX191OCBzaXJfbHNhcF9zZWw7CiAgICAgICAgX191MzIgc2lyX2FkZHI7
CiAgICAgICAgY2hhciBzaXJfbmFtZVsyNV07Cn07CgpzdHJ1Y3QgaXJkYV9kZXZpY2VfaW5mbyB7
CiAgICAgICAgX191MzIgc2FkZHI7CiAgICAgICAgX191MzIgZGFkZHI7CiAgICAgICAgY2hhciBp
bmZvWzIyXTsKICAgICAgICBfX3U4IGNoYXJzZXQ7CiAgICAgICAgX191OCBoaW50c1syXTsKfTsK
CnN0cnVjdCBpcmRhX2RldmljZV9saXN0IHsKICAgICAgIF9fdTMyIGxlbjsKICAgICAgIHN0cnVj
dCBpcmRhX2RldmljZV9pbmZvIGRldlsxXTsKfTsKCnN0cnVjdCBpcmRhX2lhc19zZXQgewogICAg
ICAgIGNoYXIgaXJkYV9jbGFzc19uYW1lWzY0XTsKICAgICAgICBjaGFyIGlyZGFfYXR0cmliX25h
bWVbMjU2XTsKICAgICAgICB1bnNpZ25lZCBpbnQgaXJkYV9hdHRyaWJfdHlwZTsKICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaXJkYV9hdHRyaWJfaW50OwogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hv
cnQgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBfX3U4IG9jdGV0X3NlcVsxMDI0XTsKICAg
ICAgICAgICAgICAgIH0gaXJkYV9hdHRyaWJfb2N0ZXRfc2VxOwogICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBsZW47CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fdTggY2hhcnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBzdHJpbmdb
MjU2XTsKICAgICAgICAgICAgICAgIH0gaXJkYV9hdHRyaWJfc3RyaW5nOwogICAgICAgIH0gYXR0
cmlidXRlOwogICAgICAgIF9fdTMyIGRhZGRyOwp9OwojIDE3MiAiL3Vzci9zcmMvbGludXgtMi40
LjIwLTgvaW5jbHVkZS9saW51eC9pcmRhLmgiCnN0cnVjdCBpZl9pcmRhX3FvcyB7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBiYXVkcmF0ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkYXRhX3NpemU7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd2luZG93X3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgbWluX3R1cm5fdGltZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtYXhfdHVybl90aW1lOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgYWRkX2JvZnM7CiAgICAgICAgdW5zaWduZWQgY2hhciBsaW5r
X2Rpc2M7Cn07CgoKc3RydWN0IGlmX2lyZGFfbGluZSB7CiAgICAgICAgX191OCBkdHI7CiAgICAg
ICAgX191OCBydHM7Cn07CgoKc3RydWN0IGlmX2lyZGFfcmVxIHsKICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICAgICBjaGFyIGlmcm5fbmFtZVsxNl07CiAgICAgICAgfSBpZnJfaWZybjsKCgog
ICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBpZl9pcmRhX2xpbmUgaWZydV9s
aW5lOwogICAgICAgICAgICAgICAgc3RydWN0IGlmX2lyZGFfcW9zIGlmcnVfcW9zOwogICAgICAg
ICAgICAgICAgdW5zaWduZWQgc2hvcnQgaWZydV9mbGFnczsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBpZnJ1X3JlY2VpdmluZzsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpZnJ1
X21vZGU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWZydV9kb25nbGU7CiAgICAgICAg
fSBpZnJfaWZydTsKfTsKIyAzNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQv
aXJkYS9pcmRhLmgiIDIKCnR5cGVkZWYgX191MzIgbWFnaWNfdDsKCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvaXJkYS9xb3MuaCIgMQojIDM3ICIvdXNyL3NyYy9saW51
eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9pcmRhL3Fvcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4yMC04L2luY2x1ZGUvbmV0L2lyZGEvcGFyYW1ldGVycy5oIiAxCiMgNDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2lyZGEvcGFyYW1ldGVycy5oIgp0eXBlZGVmIGVudW0g
ewogICAgICAgIFBWX0lOVEVHRVIsCiAgICAgICAgUFZfSU5UXzhfQklUUywKICAgICAgICBQVl9J
TlRfMTZfQklUUywKICAgICAgICBQVl9TVFJJTkcsCiAgICAgICAgUFZfSU5UXzMyX0JJVFMsCiAg
ICAgICAgUFZfT0NUX1NFUSwKICAgICAgICBQVl9OT19WQUxVRQp9IFBWX1RZUEU7CiMgNTkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2lyZGEvcGFyYW1ldGVycy5oIgp0eXBl
ZGVmIHVuaW9uIHsKICAgICAgICBjaGFyICpjOwogICAgICAgIF9fdTMyIGk7CiAgICAgICAgX191
MzIgKmlwOwp9IGlyZGFfcHZfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBfX3U4IHBpOwog
ICAgICAgIF9fdTggcGw7CiAgICAgICAgaXJkYV9wdl90IHB2Owp9IGlyZGFfcGFyYW1fdDsKCnR5
cGVkZWYgaW50ICgqUElfSEFORExFUikodm9pZCAqc2VsZiwgaXJkYV9wYXJhbV90ICpwYXJhbSwg
aW50IGdldCk7CnR5cGVkZWYgaW50ICgqUFZfSEFORExFUikodm9pZCAqc2VsZiwgX191OCAqYnVm
LCBpbnQgbGVuLCBfX3U4IHBpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFBWX1RZUEUgdHlw
ZSwgUElfSEFORExFUiBmdW5jKTsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBQSV9IQU5ETEVS
IGZ1bmM7CiAgICAgICAgUFZfVFlQRSB0eXBlOwp9IHBpX21pbm9yX2luZm9fdDsKCnR5cGVkZWYg
c3RydWN0IHsKICAgICAgICBwaV9taW5vcl9pbmZvX3QgKnBpX21pbm9yX2NhbGxfdGFibGU7CiAg
ICAgICAgaW50IGxlbjsKfSBwaV9tYWpvcl9pbmZvX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAg
ICAgcGlfbWFqb3JfaW5mb190ICp0YWJsZXM7CiAgICAgICAgaW50IGxlbjsKICAgICAgICBfX3U4
IHBpX21hc2s7CiAgICAgICAgaW50IHBpX21ham9yX29mZnNldDsKfSBwaV9wYXJhbV9pbmZvX3Q7
CgppbnQgaXJkYV9wYXJhbV9wYWNrX1I5MTgxNTU4NihfX3U4ICpidWYsIGNoYXIgKmZtdCwgLi4u
KTsKaW50IGlyZGFfcGFyYW1fdW5wYWNrX1I3MzBjMzVjZShfX3U4ICpidWYsIGNoYXIgKmZtdCwg
Li4uKTsKCmludCBpcmRhX3BhcmFtX2luc2VydF9SMjAzNmFkMDYodm9pZCAqc2VsZiwgX191OCBw
aSwgX191OCAqYnVmLCBpbnQgbGVuLAogICAgICAgICAgICAgICAgICAgICAgcGlfcGFyYW1faW5m
b190ICppbmZvKTsKaW50IGlyZGFfcGFyYW1fZXh0cmFjdF9SNmVhZTc4ZWModm9pZCAqc2VsZiwg
X191OCAqYnVmLCBpbnQgbGVuLCBwaV9wYXJhbV9pbmZvX3QgKmluZm8pOwppbnQgaXJkYV9wYXJh
bV9leHRyYWN0X2FsbF9SOTkzYWQxNGIodm9pZCAqc2VsZiwgX191OCAqYnVmLCBpbnQgbGVuLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBwaV9wYXJhbV9pbmZvX3QgKmluZm8pOwojIDM4ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9pcmRhL3Fvcy5oIiAyCiMgNjQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2lyZGEvcW9zLmgiCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBfX3UzMiB2YWx1ZTsKICAgICAgICBfX3UxNiBiaXRzOwp9IHFvc192YWx1
ZV90OwoKc3RydWN0IHFvc19pbmZvIHsKICAgICAgICBtYWdpY190IG1hZ2ljOwoKICAgICAgICBx
b3NfdmFsdWVfdCBiYXVkX3JhdGU7CiAgICAgICAgcW9zX3ZhbHVlX3QgbWF4X3R1cm5fdGltZTsK
ICAgICAgICBxb3NfdmFsdWVfdCBkYXRhX3NpemU7CiAgICAgICAgcW9zX3ZhbHVlX3Qgd2luZG93
X3NpemU7CiAgICAgICAgcW9zX3ZhbHVlX3QgYWRkaXRpb25hbF9ib2ZzOwogICAgICAgIHFvc192
YWx1ZV90IG1pbl90dXJuX3RpbWU7CiAgICAgICAgcW9zX3ZhbHVlX3QgbGlua19kaXNjX3RpbWU7
CgogICAgICAgIHFvc192YWx1ZV90IHBvd2VyOwp9OwoKZXh0ZXJuIGludCBzeXNjdGxfbWF4X2Jh
dWRfcmF0ZTsKZXh0ZXJuIGludCBzeXNjdGxfbWF4X2luYWN0aXZlX3RpbWU7CgpleHRlcm4gX191
MzIgYmF1ZF9yYXRlc1tdOwpleHRlcm4gX191MzIgZGF0YV9zaXplc1tdOwpleHRlcm4gX191MzIg
bWluX3R1cm5fdGltZXNbXTsKZXh0ZXJuIF9fdTMyIGFkZF9ib2ZzW107CmV4dGVybiBfX3UzMiBj
b21wcmVzc2lvbnNbXTsKCnZvaWQgaXJkYV9pbml0X21heF9xb3NfY2FwYWJpbGllc19SNmIwNDNl
YmEoc3RydWN0IHFvc19pbmZvICpxb3MpOwp2b2lkIGlyZGFfcW9zX2NvbXB1dGVfaW50ZXJzZWN0
aW9uKHN0cnVjdCBxb3NfaW5mbyAqLCBzdHJ1Y3QgcW9zX2luZm8gKik7CgpfX3UzMiBpcmxhcF9t
YXhfbGluZV9jYXBhY2l0eShfX3UzMiBzcGVlZCwgX191MzIgbWF4X3R1cm5fdGltZSk7Cl9fdTMy
IGlybGFwX3JlcXVlc3RlZF9saW5lX2NhcGFjaXR5KHN0cnVjdCBxb3NfaW5mbyAqcW9zKTsKCmlu
dCBtc2JfaW5kZXgoX191MTYgYnl0ZSk7CnZvaWQgaXJkYV9xb3NfYml0c190b192YWx1ZV9SNDQ4
YjhhYWEoc3RydWN0IHFvc19pbmZvICpxb3MpOwojIDM4ICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL25ldC9pcmRhL2lyZGEuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbmV0L2lyZGEvaXJxdWV1ZS5oIiAxCiMgNTggIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvbmV0L2lyZGEvaXJxdWV1ZS5oIgp0eXBlZGVmIHZvaWQgKCpGUkVFX0ZVTkMp
KHZvaWQgKmFyZyk7CgoKCgoKCnN0cnVjdCBpcmRhX3F1ZXVlIHsKICAgICAgICBzdHJ1Y3QgaXJk
YV9xdWV1ZSAqcV9uZXh0OwogICAgICAgIHN0cnVjdCBpcmRhX3F1ZXVlICpxX3ByZXY7CgogICAg
ICAgIGNoYXIgcV9uYW1lWzMyXTsKICAgICAgICBfX3UzMiBxX2hhc2g7Cn07CnR5cGVkZWYgc3Ry
dWN0IGlyZGFfcXVldWUgaXJkYV9xdWV1ZV90OwoKdHlwZWRlZiBzdHJ1Y3QgaGFzaGJpbl90IHsK
ICAgICAgICBfX3UzMiBtYWdpYzsKICAgICAgICBpbnQgaGJfdHlwZTsKICAgICAgICBpbnQgaGJf
c2l6ZTsKICAgICAgICBzcGlubG9ja190IGhiX211dGV4WzhdIF9fYXR0cmlidXRlX18oKGFsaWdu
ZWQpKTsKICAgICAgICBpcmRhX3F1ZXVlX3QgKmhiX3F1ZXVlWzhdIF9fYXR0cmlidXRlX18oKGFs
aWduZWQpKTsKCiAgICAgICAgaXJkYV9xdWV1ZV90KiBoYl9jdXJyZW50Owp9IGhhc2hiaW5fdDsK
Cmhhc2hiaW5fdCAqaGFzaGJpbl9uZXdfUmYxZGQ3M2JjKGludCB0eXBlKTsKaW50IGhhc2hiaW5f
ZGVsZXRlX1JmZGY4OTY4NShoYXNoYmluX3QqIGhhc2hiaW4sIEZSRUVfRlVOQyBmdW5jKTsKaW50
IGhhc2hiaW5fY2xlYXIoaGFzaGJpbl90KiBoYXNoYmluLCBGUkVFX0ZVTkMgZnJlZV9mdW5jKTsK
dm9pZCBoYXNoYmluX2luc2VydF9SYTQxMGQwMzYoaGFzaGJpbl90KiBoYXNoYmluLCBpcmRhX3F1
ZXVlX3QqIGVudHJ5LCBfX3UzMiBoYXNodiwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciog
bmFtZSk7CnZvaWQqIGhhc2hiaW5fZmluZF9SNjEzNjQ2NWMoaGFzaGJpbl90KiBoYXNoYmluLCBf
X3UzMiBoYXNodiwgY2hhciogbmFtZSk7CnZvaWQqIGhhc2hiaW5fcmVtb3ZlX1I3MDljYjU2Yyho
YXNoYmluX3QqIGhhc2hiaW4sIF9fdTMyIGhhc2h2LCBjaGFyKiBuYW1lKTsKdm9pZCogaGFzaGJp
bl9yZW1vdmVfZmlyc3QoaGFzaGJpbl90ICpoYXNoYmluKTsKdm9pZCogaGFzaGJpbl9yZW1vdmVf
dGhpc19SZjg4MjkzNWIoIGhhc2hiaW5fdCogaGFzaGJpbiwgaXJkYV9xdWV1ZV90KiBlbnRyeSk7
CmlyZGFfcXVldWVfdCAqaGFzaGJpbl9nZXRfZmlyc3RfUmJkNzcxMTQzKGhhc2hiaW5fdCAqaGFz
aGJpbik7CmlyZGFfcXVldWVfdCAqaGFzaGJpbl9nZXRfbmV4dF9SNDZkNzJmMmEoaGFzaGJpbl90
ICpoYXNoYmluKTsKCnZvaWQgZW5xdWV1ZV9sYXN0KGlyZGFfcXVldWVfdCAqKnF1ZXVlLCBpcmRh
X3F1ZXVlX3QqIGVsZW1lbnQpOwp2b2lkIGVucXVldWVfZmlyc3QoaXJkYV9xdWV1ZV90ICoqcXVl
dWUsIGlyZGFfcXVldWVfdCogZWxlbWVudCk7CmlyZGFfcXVldWVfdCAqZGVxdWV1ZV9maXJzdChp
cmRhX3F1ZXVlX3QgKipxdWV1ZSk7CiMgMzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1
ZGUvbmV0L2lyZGEvaXJkYS5oIiAyCiMgMTE5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL25ldC9pcmRhL2lyZGEuaCIKdHlwZWRlZiBlbnVtIHsgRkxPV19TVE9QLCBGTE9XX1NUQVJU
IH0gTE9DQUxfRkxPVzsKCgpzdHJ1Y3QgdHNhcF9jYjsKc3RydWN0IGxzYXBfY2I7CnN0cnVjdCBp
cmlhcF9jYjsKc3RydWN0IGlhc192YWx1ZTsKc3RydWN0IGRpc2NvdmVyeV90OwoKCnN0cnVjdCBp
cmRhX3NvY2sgewogICAgICAgIF9fdTMyIHNhZGRyOwogICAgICAgIF9fdTMyIGRhZGRyOwoKICAg
ICAgICBzdHJ1Y3QgbHNhcF9jYiAqbHNhcDsKICAgICAgICBfX3U4IHBpZDsKCiAgICAgICAgc3Ry
dWN0IHRzYXBfY2IgKnRzYXA7CiAgICAgICAgX191OCBkdHNhcF9zZWw7CiAgICAgICAgX191OCBz
dHNhcF9zZWw7CgogICAgICAgIF9fdTMyIG1heF9zZHVfc2l6ZV9yeDsKICAgICAgICBfX3UzMiBt
YXhfc2R1X3NpemVfdHg7CiAgICAgICAgX191MzIgbWF4X2RhdGFfc2l6ZTsKICAgICAgICBfX3U4
IG1heF9oZWFkZXJfc2l6ZTsKICAgICAgICBzdHJ1Y3QgcW9zX2luZm8gcW9zX3R4OwoKICAgICAg
ICBfX3UxNiBtYXNrOwogICAgICAgIF9fdTE2IGhpbnRzOwoKICAgICAgICBfX3UzMiBja2V5Owog
ICAgICAgIF9fdTMyIHNrZXk7CgogICAgICAgIHN0cnVjdCBpYXNfb2JqZWN0ICppYXNfb2JqOwog
ICAgICAgIHN0cnVjdCBpcmlhcF9jYiAqaXJpYXA7CiAgICAgICAgc3RydWN0IGlhc192YWx1ZSAq
aWFzX3Jlc3VsdDsKCiAgICAgICAgaGFzaGJpbl90ICpjYWNoZWxvZzsKICAgICAgICBzdHJ1Y3Qg
ZGlzY292ZXJ5X3QgKmNhY2hlZGlzY292ZXJ5OwoKICAgICAgICBpbnQgbnNsb3RzOwoKICAgICAg
ICBpbnQgZXJybm87CgogICAgICAgIHN0cnVjdCBzb2NrICpzazsKICAgICAgICB3YWl0X3F1ZXVl
X2hlYWRfdCBxdWVyeV93YWl0OwogICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHdhdGNoZG9nOwoK
ICAgICAgICBMT0NBTF9GTE9XIHR4X2Zsb3c7CiAgICAgICAgTE9DQUxfRkxPVyByeF9mbG93Owp9
OwoKCgoKCgoKdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgX191MTYgd29yZDsKICAgICAgICBfX3U4
IGJ5dGVbMl07Cn0gX191MTZfaG9zdF9vcmRlcjsKCgoKCgpzdHJ1Y3QgaXJkYV9za2JfY2Igewog
ICAgICAgIG1hZ2ljX3QgbWFnaWM7CiAgICAgICAgX191MzIgbmV4dF9zcGVlZDsKICAgICAgICBf
X3UxNiBtdHQ7CiAgICAgICAgX191MTYgeGJvZnM7CiAgICAgICAgX191MTYgbmV4dF94Ym9mczsK
ICAgICAgICB2b2lkICpjb250ZXh0OwogICAgICAgIHZvaWQgKCpkZXN0cnVjdG9yKShzdHJ1Y3Qg
c2tfYnVmZiAqc2tiKTsKICAgICAgICBfX3UxNiB4Ym9mc19kZWxheTsKICAgICAgICBfX3U4IGxp
bmU7Cn07CgoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBTVEFUVVNfT0ssCiAgICAgICAgU1RBVFVT
X0FCT1JURUQsCiAgICAgICAgU1RBVFVTX05PX0FDVElWSVRZLAogICAgICAgIFNUQVRVU19OT0lT
WSwKICAgICAgICBTVEFUVVNfUkVNT1RFLAp9IExJTktfU1RBVFVTOwoKdHlwZWRlZiBlbnVtIHsK
ICAgICAgICBMT0NLX05PX0NIQU5HRSwKICAgICAgICBMT0NLX0xPQ0tFRCwKICAgICAgICBMT0NL
X1VOTE9DS0VELAp9IExPQ0tfU1RBVFVTOwoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBMQVBfRElT
Q19JTkRJQ0FUSU9OPTEsCiAgICAgICAgTEFQX05PX1JFU1BPTlNFLAogICAgICAgIExBUF9SRVNF
VF9JTkRJQ0FUSU9OLAogICAgICAgIExBUF9GT1VORF9OT05FLAogICAgICAgIExBUF9NRURJQV9C
VVNZLAogICAgICAgIExBUF9QUklNQVJZX0NPTkZMSUNULAp9IExBUF9SRUFTT047CgoKCgoKCnR5
cGVkZWYgZW51bSB7CiAgICAgICAgTE1fVVNFUl9SRVFVRVNUID0gMSwKICAgICAgICBMTV9MQVBf
RElTQ09OTkVDVCwKICAgICAgICBMTV9DT05ORUNUX0ZBSUxVUkUsCiAgICAgICAgTE1fTEFQX1JF
U0VULAogICAgICAgIExNX0lOSVRfRElTQ09OTkVDVCwKICAgICAgICBMTV9MU0FQX05PVENPTk4s
CiAgICAgICAgTE1fTk9OX1JFU1BfQ0xJRU5ULAogICAgICAgIExNX05PX0FWQUlMX0NMSUVOVCwK
ICAgICAgICBMTV9DT05OX0hBTEZfT1BFTiwKICAgICAgICBMTV9CQURfU09VUkNFX0FERFIsCn0g
TE1fUkVBU09OOwoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgKCpkYXRhX2luZGlj
YXRpb24pKHZvaWQgKnByaXYsIHZvaWQgKnNhcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAgICAg
ICAgaW50ICgqdWRhdGFfaW5kaWNhdGlvbikodm9pZCAqcHJpdiwgdm9pZCAqc2FwLCBzdHJ1Y3Qg
c2tfYnVmZiAqc2tiKTsKICAgICAgICB2b2lkICgqY29ubmVjdF9jb25maXJtKSh2b2lkICppbnN0
YW5jZSwgdm9pZCAqc2FwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBx
b3NfaW5mbyAqcW9zLCBfX3UzMiBtYXhfc2R1X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX191OCBtYXhfaGVhZGVyX3NpemUsIHN0cnVjdCBza19idWZmICpza2IpOwogICAg
ICAgIHZvaWQgKCpjb25uZWN0X2luZGljYXRpb24pKHZvaWQgKmluc3RhbmNlLCB2b2lkICpzYXAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHFvc19pbmZvICpxb3Ms
IF9fdTMyIG1heF9zZHVfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X3U4IG1heF9oZWFkZXJfc2l6ZSwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAgICAgICAgdm9pZCAo
KmRpc2Nvbm5lY3RfaW5kaWNhdGlvbikodm9pZCAqaW5zdGFuY2UsIHZvaWQgKnNhcCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTV9SRUFTT04gcmVhc29uLCBzdHJ1Y3Qg
c2tfYnVmZiAqKTsKICAgICAgICB2b2lkICgqZmxvd19pbmRpY2F0aW9uKSh2b2lkICppbnN0YW5j
ZSwgdm9pZCAqc2FwLCBMT0NBTF9GTE9XIGZsb3cpOwogICAgICAgIHZvaWQgKCpzdGF0dXNfaW5k
aWNhdGlvbikodm9pZCAqaW5zdGFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMSU5LX1NUQVRVUyBsaW5rLCBMT0NLX1NUQVRVUyBsb2NrKTsKICAgICAgICB2b2lkICppbnN0
YW5jZTsKICAgICAgICBjaGFyIG5hbWVbMTZdOwp9IG5vdGlmeV90OwojIDk2ICIvdXNyL3NyYy9s
aW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9zb2NrLmgiIDIKCgoKc3RydWN0IGF0bV92Y2M7CgoK
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9saW51eC9maWx0ZXIuaCIgMQoj
IDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIgpzdHJ1
Y3Qgc29ja19maWx0ZXIKewogICAgICAgIF9fdTE2IGNvZGU7CiAgICAgICAgX191OCBqdDsKICAg
ICAgICBfX3U4IGpmOwogICAgICAgIF9fdTMyIGs7Cn07CgpzdHJ1Y3Qgc29ja19mcHJvZwp7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgbGVuOwogICAgICAgIHN0cnVjdCBzb2NrX2ZpbHRlciAqZmls
dGVyOwp9OwoKCnN0cnVjdCBza19maWx0ZXIKewogICAgICAgIGF0b21pY190IHJlZmNudDsKICAg
ICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHN0cnVjdCBzb2NrX2ZpbHRlciBpbnNuc1sw
XTsKfTsKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHNrX2ZpbHRlcl9sZW4oc3RydWN0IHNr
X2ZpbHRlciAqZnApCnsKICAgICAgICByZXR1cm4gZnAtPmxlbipzaXplb2Yoc3RydWN0IHNvY2tf
ZmlsdGVyKSArIHNpemVvZigqZnApOwp9CiMgMTM2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9p
bmNsdWRlL2xpbnV4L2ZpbHRlci5oIgpleHRlcm4gaW50IHNrX3J1bl9maWx0ZXJfUjg4ZGE3Yzdm
KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrX2ZpbHRlciAqZmlsdGVyLCBpbnQgZmxl
bik7CmV4dGVybiBpbnQgc2tfYXR0YWNoX2ZpbHRlcihzdHJ1Y3Qgc29ja19mcHJvZyAqZnByb2cs
IHN0cnVjdCBzb2NrICpzayk7CmV4dGVybiBpbnQgc2tfY2hrX2ZpbHRlcl9SNTNjMDc2N2Moc3Ry
dWN0IHNvY2tfZmlsdGVyICpmaWx0ZXIsIGludCBmbGVuKTsKIyAxMDQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4yMC04L2luY2x1ZGUvbmV0L3NvY2suaCIgMgoKCgoKCgoKc3RydWN0IHVuaXhfb3B0IHsK
ICAgICAgICBzdHJ1Y3QgdW5peF9hZGRyZXNzICphZGRyOwogICAgICAgIHN0cnVjdCBkZW50cnkg
KiBkZW50cnk7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICogbW50OwogICAgICAgIHN0cnVjdCBz
ZW1hcGhvcmUgcmVhZHNlbTsKICAgICAgICBzdHJ1Y3Qgc29jayAqIG90aGVyOwogICAgICAgIHN0
cnVjdCBzb2NrICoqIGxpc3Q7CiAgICAgICAgc3RydWN0IHNvY2sgKiBnY190cmVlOwogICAgICAg
IGF0b21pY190IGluZmxpZ2h0OwogICAgICAgIHJ3bG9ja190IGxvY2s7CiAgICAgICAgd2FpdF9x
dWV1ZV9oZWFkX3QgcGVlcl93YWl0Owp9OwoKCgoKc3RydWN0IGlweF9vcHQgewogICAgICAgIGlw
eF9hZGRyZXNzIGRlc3RfYWRkcjsKICAgICAgICBpcHhfaW50ZXJmYWNlICppbnRyZmM7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgcG9ydDsKCgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlOwoK
CgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBpcHhfbmNwX2Nvbm47Cn07CgoKCnN0cnVjdCBpcHY2
X3BpbmZvIHsKICAgICAgICBzdHJ1Y3QgaW42X2FkZHIgc2FkZHI7CiAgICAgICAgc3RydWN0IGlu
Nl9hZGRyIHJjdl9zYWRkcjsKICAgICAgICBzdHJ1Y3QgaW42X2FkZHIgZGFkZHI7CiAgICAgICAg
c3RydWN0IGluNl9hZGRyICpkYWRkcl9jYWNoZTsKCiAgICAgICAgX191MzIgZmxvd19sYWJlbDsK
ICAgICAgICBfX3UzMiBmcmFnX3NpemU7CiAgICAgICAgaW50IGhvcF9saW1pdDsKICAgICAgICBp
bnQgbWNhc3RfaG9wczsKICAgICAgICBpbnQgbWNhc3Rfb2lmOwoKCiAgICAgICAgdW5pb24gewog
ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBzcmNy
dDoyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4aW5mbzoxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ4aGxpbToxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhvcG9wdHM6MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RvcHRz
OjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0aGhkcjoxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ4ZmxvdzoxOwogICAgICAgICAgICAgICAgfSBiaXRzOwog
ICAgICAgICAgICAgICAgX191OCBhbGw7CiAgICAgICAgfSByeG9wdDsKCgogICAgICAgIF9fdTgg
bWNfbG9vcDoxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3ZlcnI6MSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmRmbG93OjEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcG10dWRpc2M6MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpcHY2b25seToxOwoKICAgICAgICBzdHJ1Y3QgaXB2Nl9tY19zb2NrbGlzdCAqaXB2Nl9tY19s
aXN0OwogICAgICAgIHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICppcHY2X2ZsX2xpc3Q7CiAgICAg
ICAgX191MzIgZHN0X2Nvb2tpZTsKCiAgICAgICAgc3RydWN0IGlwdjZfdHhvcHRpb25zICpvcHQ7
CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKnBrdG9wdGlvbnM7Cn07CgpzdHJ1Y3QgcmF3Nl9vcHQg
ewogICAgICAgIF9fdTMyIGNoZWNrc3VtOwogICAgICAgIF9fdTMyIG9mZnNldDsKCiAgICAgICAg
c3RydWN0IGljbXA2X2ZpbHRlciBmaWx0ZXI7Cn07CiMgMjAxICIvdXNyL3NyYy9saW51eC0yLjQu
MjAtOC9pbmNsdWRlL25ldC9zb2NrLmgiCnN0cnVjdCByYXdfb3B0IHsKICAgICAgICBzdHJ1Y3Qg
aWNtcF9maWx0ZXIgZmlsdGVyOwp9OwoKCgpzdHJ1Y3QgaW5ldF9vcHQKewogICAgICAgIGludCB0
dGw7CiAgICAgICAgaW50IHRvczsKICAgICAgICB1bnNpZ25lZCBjbXNnX2ZsYWdzOwogICAgICAg
IHN0cnVjdCBpcF9vcHRpb25zICpvcHQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBoZHJpbmNsOwog
ICAgICAgIF9fdTggbWNfdHRsOwogICAgICAgIF9fdTggbWNfbG9vcDsKICAgICAgICB1bnNpZ25l
ZCByZWN2ZXJyIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlYmluZCA6
IDE7CiAgICAgICAgX191MTYgaWQ7CiAgICAgICAgX191OCBwbXR1ZGlzYzsKICAgICAgICBpbnQg
bWNfaW5kZXg7CiAgICAgICAgX191MzIgbWNfYWRkcjsKICAgICAgICBzdHJ1Y3QgaXBfbWNfc29j
a2xpc3QgKm1jX2xpc3Q7Cn07CiMgMjUwICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRl
L25ldC9zb2NrLmgiCnN0cnVjdCB0Y3Bfc2Fja19ibG9jayB7CiAgICAgICAgX191MzIgc3RhcnRf
c2VxOwogICAgICAgIF9fdTMyIGVuZF9zZXE7Cn07CgpzdHJ1Y3QgdGNwX29wdCB7CiAgICAgICAg
aW50IHRjcF9oZWFkZXJfbGVuOwoKCgoKCiAgICAgICAgX191MzIgcHJlZF9mbGFnczsKCgoKCgoK
ICAgICAgICBfX3UzMiByY3Zfbnh0OwogICAgICAgIF9fdTMyIHNuZF9ueHQ7CgogICAgICAgIF9f
dTMyIHNuZF91bmE7CiAgICAgICAgX191MzIgc25kX3NtbDsKICAgICAgICBfX3UzMiByY3ZfdHN0
YW1wOwogICAgICAgIF9fdTMyIGxzbmR0aW1lOwoKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgIF9fdTggcGVuZGluZzsKICAgICAgICAgICAgICAgIF9fdTggcXVpY2s7CiAgICAgICAg
ICAgICAgICBfX3U4IHBpbmdwb25nOwogICAgICAgICAgICAgICAgX191OCBibG9ja2VkOwogICAg
ICAgICAgICAgICAgX191MzIgYXRvOwogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB0aW1l
b3V0OwogICAgICAgICAgICAgICAgX191MzIgbHJjdnRpbWU7CiAgICAgICAgICAgICAgICBfX3Ux
NiBsYXN0X3NlZ19zaXplOwogICAgICAgICAgICAgICAgX191MTYgcmN2X21zczsKICAgICAgICB9
IGFjazsKCgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2tfYnVmZl9o
ZWFkIHByZXF1ZXVlOwogICAgICAgICAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwog
ICAgICAgICAgICAgICAgc3RydWN0IGlvdmVjICppb3Y7CiAgICAgICAgICAgICAgICBpbnQgbWVt
b3J5OwogICAgICAgICAgICAgICAgaW50IGxlbjsKICAgICAgICB9IHVjb3B5OwoKICAgICAgICBf
X3UzMiBzbmRfd2wxOwogICAgICAgIF9fdTMyIHNuZF93bmQ7CiAgICAgICAgX191MzIgbWF4X3dp
bmRvdzsKICAgICAgICBfX3UzMiBwbXR1X2Nvb2tpZTsKICAgICAgICBfX3UxNiBtc3NfY2FjaGU7
CiAgICAgICAgX191MTYgbXNzX2NsYW1wOwogICAgICAgIF9fdTE2IGV4dF9oZWFkZXJfbGVuOwog
ICAgICAgIF9fdTggY2Ffc3RhdGU7CiAgICAgICAgX191OCByZXRyYW5zbWl0czsKCiAgICAgICAg
X191OCByZW9yZGVyaW5nOwogICAgICAgIF9fdTggcXVldWVfc2hydW5rOwogICAgICAgIF9fdTgg
ZGVmZXJfYWNjZXB0OwoKCiAgICAgICAgX191OCBiYWNrb2ZmOwogICAgICAgIF9fdTMyIHNydHQ7
CiAgICAgICAgX191MzIgbWRldjsKICAgICAgICBfX3UzMiBtZGV2X21heDsKICAgICAgICBfX3Uz
MiBydHR2YXI7CiAgICAgICAgX191MzIgcnR0X3NlcTsKICAgICAgICBfX3UzMiBydG87CgogICAg
ICAgIF9fdTMyIHBhY2tldHNfb3V0OwogICAgICAgIF9fdTMyIGxlZnRfb3V0OwogICAgICAgIF9f
dTMyIHJldHJhbnNfb3V0OwoKCgoKCiAgICAgICAgX191MzIgc25kX3NzdGhyZXNoOwogICAgICAg
IF9fdTMyIHNuZF9jd25kOwogICAgICAgIF9fdTE2IHNuZF9jd25kX2NudDsKICAgICAgICBfX3Ux
NiBzbmRfY3duZF9jbGFtcDsKICAgICAgICBfX3UzMiBzbmRfY3duZF91c2VkOwogICAgICAgIF9f
dTMyIHNuZF9jd25kX3N0YW1wOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0OwogICAg
ICAgIHN0cnVjdCB0aW1lcl9saXN0IHJldHJhbnNtaXRfdGltZXI7CiAgICAgICAgc3RydWN0IHRp
bWVyX2xpc3QgZGVsYWNrX3RpbWVyOwoKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZl9oZWFkIG91dF9v
Zl9vcmRlcl9xdWV1ZTsKCiAgICAgICAgc3RydWN0IHRjcF9mdW5jICphZl9zcGVjaWZpYzsKICAg
ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2VuZF9oZWFkOwogICAgICAgIHN0cnVjdCBwYWdlICpzbmRt
c2dfcGFnZTsKICAgICAgICB1MzIgc25kbXNnX29mZjsKCiAgICAgICAgX191MzIgcmN2X3duZDsK
ICAgICAgICBfX3UzMiByY3Zfd3VwOwogICAgICAgIF9fdTMyIHdyaXRlX3NlcTsKICAgICAgICBf
X3UzMiBwdXNoZWRfc2VxOwogICAgICAgIF9fdTMyIGNvcGllZF9zZXE7CgoKCiAgICAgICAgY2hh
ciB0c3RhbXBfb2ssCiAgICAgICAgICAgICAgICB3c2NhbGVfb2ssCiAgICAgICAgICAgICAgICBz
YWNrX29rOwogICAgICAgIGNoYXIgc2F3X3RzdGFtcDsKICAgICAgICBfX3U4IHNuZF93c2NhbGU7
CiAgICAgICAgX191OCByY3Zfd3NjYWxlOwogICAgICAgIF9fdTggbm9uYWdsZTsKICAgICAgICBf
X3U4IGtlZXBhbGl2ZV9wcm9iZXM7CgoKICAgICAgICBfX3UzMiByY3ZfdHN2YWw7CiAgICAgICAg
X191MzIgcmN2X3RzZWNyOwogICAgICAgIF9fdTMyIHRzX3JlY2VudDsKICAgICAgICBsb25nIHRz
X3JlY2VudF9zdGFtcDsKCgogICAgICAgIF9fdTE2IHVzZXJfbXNzOwogICAgICAgIF9fdTggZHNh
Y2s7CiAgICAgICAgX191OCBlZmZfc2Fja3M7CiAgICAgICAgc3RydWN0IHRjcF9zYWNrX2Jsb2Nr
IGR1cGxpY2F0ZV9zYWNrWzFdOwogICAgICAgIHN0cnVjdCB0Y3Bfc2Fja19ibG9jayBzZWxlY3Rp
dmVfYWNrc1s0XTsKCiAgICAgICAgX191MzIgd2luZG93X2NsYW1wOwogICAgICAgIF9fdTMyIHJj
dl9zc3RocmVzaDsKICAgICAgICBfX3U4IHByb2Jlc19vdXQ7CiAgICAgICAgX191OCBudW1fc2Fj
a3M7CiAgICAgICAgX191MTYgYWR2bXNzOwoKICAgICAgICBfX3U4IHN5bl9yZXRyaWVzOwogICAg
ICAgIF9fdTggZWNuX2ZsYWdzOwogICAgICAgIF9fdTE2IHByaW9yX3NzdGhyZXNoOwogICAgICAg
IF9fdTMyIGxvc3Rfb3V0OwogICAgICAgIF9fdTMyIHNhY2tlZF9vdXQ7CiAgICAgICAgX191MzIg
ZmFja2V0c19vdXQ7CiAgICAgICAgX191MzIgaGlnaF9zZXE7CgogICAgICAgIF9fdTMyIHJldHJh
bnNfc3RhbXA7CgoKICAgICAgICBfX3UzMiB1bmRvX21hcmtlcjsKICAgICAgICBpbnQgdW5kb19y
ZXRyYW5zOwogICAgICAgIF9fdTMyIHVyZ19zZXE7CiAgICAgICAgX191MTYgdXJnX2RhdGE7CiAg
ICAgICAgX191OCBwZW5kaW5nOwogICAgICAgIF9fdTggdXJnX21vZGU7CiAgICAgICAgX191MzIg
c25kX3VwOwojIDQxNCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvc29jay5o
IgogICAgICAgIHJ3bG9ja190IHN5bl93YWl0X2xvY2s7CiAgICAgICAgc3RydWN0IHRjcF9saXN0
ZW5fb3B0ICpsaXN0ZW5fb3B0OwoKCiAgICAgICAgc3RydWN0IG9wZW5fcmVxdWVzdCAqYWNjZXB0
X3F1ZXVlOwogICAgICAgIHN0cnVjdCBvcGVuX3JlcXVlc3QgKmFjY2VwdF9xdWV1ZV90YWlsOwoK
ICAgICAgICBpbnQgd3JpdGVfcGVuZGluZzsKCiAgICAgICAgdW5zaWduZWQgaW50IGtlZXBhbGl2
ZV90aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBrZWVwYWxpdmVfaW50dmw7CiAgICAgICAgaW50
IGxpbmdlcjI7CgogICAgICAgIGludCBmcnRvX2NvdW50ZXI7CiAgICAgICAgX191MzIgZnJ0b19o
aWdobWFyazsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBsYXN0X3N5bnFfb3ZlcmZsb3c7Cn07CiMg
NDg3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9zb2NrLmgiCnR5cGVkZWYg
c3RydWN0IHsKICAgICAgICBzcGlubG9ja190IHNsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCB1
c2VyczsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3cTsKfSBzb2NrZXRfbG9ja190OwoKCgoK
CgoKc3RydWN0IHNvY2sgewoKICAgICAgICBfX3UzMiBkYWRkcjsKICAgICAgICBfX3UzMiByY3Zf
c2FkZHI7CiAgICAgICAgX191MTYgZHBvcnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbnVtOwog
ICAgICAgIGludCBib3VuZF9kZXZfaWY7CgoKICAgICAgICBzdHJ1Y3Qgc29jayAqbmV4dDsKICAg
ICAgICBzdHJ1Y3Qgc29jayAqKnBwcmV2OwogICAgICAgIHN0cnVjdCBzb2NrICpiaW5kX25leHQ7
CiAgICAgICAgc3RydWN0IHNvY2sgKipiaW5kX3BwcmV2OwoKICAgICAgICB2b2xhdGlsZSB1bnNp
Z25lZCBjaGFyIHN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHphcHBlZDsK
ICAgICAgICBfX3UxNiBzcG9ydDsKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmFtaWx5OwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgcmV1c2U7CiAgICAgICAgdW5zaWduZWQgY2hhciBzaHV0ZG93bjsK
ICAgICAgICBhdG9taWNfdCByZWZjbnQ7CgogICAgICAgIHNvY2tldF9sb2NrX3QgbG9jazsKICAg
ICAgICBpbnQgcmN2YnVmOwoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCAqc2xlZXA7CiAgICAg
ICAgc3RydWN0IGRzdF9lbnRyeSAqZHN0X2NhY2hlOwogICAgICAgIHJ3bG9ja190IGRzdF9sb2Nr
OwogICAgICAgIGF0b21pY190IHJtZW1fYWxsb2M7CiAgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVh
ZCByZWNlaXZlX3F1ZXVlOwogICAgICAgIGF0b21pY190IHdtZW1fYWxsb2M7CiAgICAgICAgc3Ry
dWN0IHNrX2J1ZmZfaGVhZCB3cml0ZV9xdWV1ZTsKICAgICAgICBhdG9taWNfdCBvbWVtX2FsbG9j
OwogICAgICAgIGludCB3bWVtX3F1ZXVlZDsKICAgICAgICBpbnQgZm9yd2FyZF9hbGxvYzsKICAg
ICAgICBfX3UzMiBzYWRkcjsKICAgICAgICB1bnNpZ25lZCBpbnQgYWxsb2NhdGlvbjsKICAgICAg
ICBpbnQgc25kYnVmOwogICAgICAgIHN0cnVjdCBzb2NrICpwcmV2OwoKCgoKICAgICAgICB2b2xh
dGlsZSBjaGFyIGRlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmdpbmxpbmUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga2VlcG9wZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGluZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3ksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9fY2hlY2ssCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJvYWRjYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJzZGlz
bTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRlYnVnOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcmN2
dHN0YW1wOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdXNlX3dyaXRlX3F1ZXVlOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgdXNlcmxvY2tzOwoKICAgICAgICBpbnQgcm91dGVfY2FwczsKICAgICAgICBp
bnQgcHJvYzsKICAgICAgICB1bnNpZ25lZCBsb25nIGxpbmdlcnRpbWU7CgogICAgICAgIGludCBo
YXNoZW50OwogICAgICAgIHN0cnVjdCBzb2NrICpwYWlyOwoKCgoKCiAgICAgICAgc3RydWN0IHsK
ICAgICAgICAgICAgICAgIHN0cnVjdCBza19idWZmICpoZWFkOwogICAgICAgICAgICAgICAgc3Ry
dWN0IHNrX2J1ZmYgKnRhaWw7CiAgICAgICAgfSBiYWNrbG9nOwoKICAgICAgICByd2xvY2tfdCBj
YWxsYmFja19sb2NrOwoKCiAgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCBlcnJvcl9xdWV1ZTsK
CiAgICAgICAgc3RydWN0IHByb3RvICpwcm90OwoKCiAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgICAgc3RydWN0IGlwdjZfcGluZm8gYWZfaW5ldDY7CiAgICAgICAgfSBuZXRfcGluZm87CgoK
ICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdGNwX29wdCBhZl90Y3A7Cgog
ICAgICAgICAgICAgICAgc3RydWN0IHJhd19vcHQgdHBfcmF3NDsKCgogICAgICAgICAgICAgICAg
c3RydWN0IHJhdzZfb3B0IHRwX3JhdzsKCgoKCgogICAgICAgIH0gdHBfcGluZm87CgogICAgICAg
IGludCBlcnIsIGVycl9zb2Z0OwoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGFja19iYWNrbG9n
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1heF9hY2tfYmFja2xvZzsKICAgICAgICBfX3UzMiBw
cmlvcml0eTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgbG9jYWxyb3V0ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHByb3RvY29sOwogICAgICAgIHN0
cnVjdCB1Y3JlZCBwZWVyY3JlZDsKICAgICAgICBpbnQgcmN2bG93YXQ7CiAgICAgICAgbG9uZyBy
Y3Z0aW1lbzsKICAgICAgICBsb25nIHNuZHRpbWVvOwoKCgogICAgICAgIHN0cnVjdCBza19maWx0
ZXIgKmZpbHRlcjsKCgoKCgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHZvaWQgKmRl
c3RydWN0X2hvb2s7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdW5peF9vcHQgYWZfdW5peDsKCiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgaW5ldF9vcHQgYWZfaW5ldDsKCgogICAgICAgICAgICAgICAg
c3RydWN0IGF0YWxrX3NvY2sgYWZfYXQ7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCBpcHhfb3B0
IGFmX2lweDsKCgogICAgICAgICAgICAgICAgc3RydWN0IGRuX3NjcCBkbjsKCgogICAgICAgICAg
ICAgICAgc3RydWN0IHBhY2tldF9vcHQgKmFmX3BhY2tldDsKCgoKCgogICAgICAgICAgICAgICAg
YXgyNV9jYiAqYXgyNTsKCgogICAgICAgICAgICAgICAgbnJfY2IgKm5yOwoKCiAgICAgICAgICAg
ICAgICByb3NlX2NiICpyb3NlOwoKCgoKICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRsaW5rX29w
dCAqYWZfbmV0bGluazsKCgoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgYXRtX3ZjYyAqYWZfYXRt
OwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXJkYV9zb2NrICppcmRhOwoKCiAgICAgICAgICAg
ICAgIHN0cnVjdCB3YW5waXBlX29wdCAqYWZfd2FucGlwZTsKCiAgICAgICAgfSBwcm90aW5mbzsK
CgoKICAgICAgICBzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsKICAgICAgICBzdHJ1Y3QgdGltZXZh
bCBzdGFtcDsKCgogICAgICAgIHN0cnVjdCBzb2NrZXQgKnNvY2tldDsKCgogICAgICAgIHZvaWQg
KnVzZXJfZGF0YTsKCgogICAgICAgIHZvaWQgKCpzdGF0ZV9jaGFuZ2UpKHN0cnVjdCBzb2NrICpz
ayk7CiAgICAgICAgdm9pZCAoKmRhdGFfcmVhZHkpKHN0cnVjdCBzb2NrICpzayxpbnQgYnl0ZXMp
OwogICAgICAgIHZvaWQgKCp3cml0ZV9zcGFjZSkoc3RydWN0IHNvY2sgKnNrKTsKICAgICAgICB2
b2lkICgqZXJyb3JfcmVwb3J0KShzdHJ1Y3Qgc29jayAqc2spOwoKICAgICAgICBpbnQgKCpiYWNr
bG9nX3JjdikgKHN0cnVjdCBzb2NrICpzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAgICAgICAgdm9pZCAoKmNy
ZWF0ZV9jaGlsZCkoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqbmV3c2spOwogICAgICAg
IHZvaWQgKCpkZXN0cnVjdCkoc3RydWN0IHNvY2sgKnNrKTsKfTsKIyA3MTAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L3NvY2suaCIKc3RydWN0IHByb3RvIHsKICAgICAgICB2
b2lkICgqY2xvc2UpKHN0cnVjdCBzb2NrICpzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvbmcgdGltZW91dCk7CiAgICAgICAgaW50ICgqY29ubmVjdCkoc3RydWN0
IHNvY2sgKnNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHNvY2thZGRyICp1YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBhZGRyX2xlbik7CiAgICAgICAgaW50ICgqZGlzY29ubmVjdCkoc3RydWN0IHNvY2sgKnNr
LCBpbnQgZmxhZ3MpOwoKICAgICAgICBzdHJ1Y3Qgc29jayAqICgqYWNjZXB0KSAoc3RydWN0IHNv
Y2sgKnNrLCBpbnQgZmxhZ3MsIGludCAqZXJyKTsKCiAgICAgICAgaW50ICgqaW9jdGwpKHN0cnVj
dCBzb2NrICpzaywgaW50IGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIGFyZyk7CiAgICAgICAgaW50ICgqaW5pdCkoc3RydWN0IHNvY2sg
KnNrKTsKICAgICAgICBpbnQgKCpkZXN0cm95KShzdHJ1Y3Qgc29jayAqc2spOwogICAgICAgIHZv
aWQgKCpzaHV0ZG93bikoc3RydWN0IHNvY2sgKnNrLCBpbnQgaG93KTsKICAgICAgICBpbnQgKCpz
ZXRzb2Nrb3B0KShzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBvcHRuYW1lLCBjaGFyICpvcHR2YWwsIGludCBvcHRs
ZW4pOwogICAgICAgIGludCAoKmdldHNvY2tvcHQpKHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wdG5hbWUsIGNo
YXIgKm9wdHZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAq
b3B0aW9uKTsKICAgICAgICBpbnQgKCpzZW5kbXNnKShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBt
c2doZHIgKm1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBsZW4pOwogICAgICAgIGludCAoKnJlY3Ztc2cpKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1z
Z2hkciAqbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxl
biwgaW50IG5vYmxvY2ssIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCAqYWRkcl9sZW4pOwogICAgICAgIGludCAoKmJpbmQpKHN0cnVjdCBzb2Nr
ICpzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2Nr
YWRkciAqdWFkZHIsIGludCBhZGRyX2xlbik7CgogICAgICAgIGludCAoKmJhY2tsb2dfcmN2KSAo
c3RydWN0IHNvY2sgKnNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKCgogICAgICAgIHZvaWQgKCpoYXNoKShzdHJ1
Y3Qgc29jayAqc2spOwogICAgICAgIHZvaWQgKCp1bmhhc2gpKHN0cnVjdCBzb2NrICpzayk7CiAg
ICAgICAgaW50ICgqZ2V0X3BvcnQpKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgc2hvcnQgc251
bSk7CgogICAgICAgIGNoYXIgbmFtZVszMl07CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAg
ICAgICBpbnQgaW51c2U7CiAgICAgICAgICAgICAgICB1OCBfX3BhZFsoMSA8PCAoKDUpKSkgLSBz
aXplb2YoaW50KV07CiAgICAgICAgfSBzdGF0c1sxXTsKfTsKCgpzdGF0aWMgX19pbmxpbmVfXyB2
b2lkIHNvY2tfcHJvdF9pbmNfdXNlKHN0cnVjdCBwcm90byAqcHJvdCkKewogICAgICAgIHByb3Qt
PnN0YXRzWzBdLmludXNlKys7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgc29ja19wcm90X2Rl
Y191c2Uoc3RydWN0IHByb3RvICpwcm90KQp7CiAgICAgICAgcHJvdC0+c3RhdHNbMF0uaW51c2Ut
LTsKfQojIDc5NCAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvc29jay5oIgpl
eHRlcm4gdm9pZCBfX2xvY2tfc29ja19SZGVhY2ZhYmMoc3RydWN0IHNvY2sgKnNrKTsKZXh0ZXJu
IHZvaWQgX19yZWxlYXNlX3NvY2tfUjhjNDcyMjAyKHN0cnVjdCBzb2NrICpzayk7CiMgODE3ICIv
dXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9zb2NrLmgiCmV4dGVybiBzdHJ1Y3Qg
c29jayAqIHNrX2FsbG9jX1IxZDNlNTU5OShpbnQgZmFtaWx5LCBpbnQgcHJpb3JpdHksIGludCB6
ZXJvX2l0KTsKZXh0ZXJuIHZvaWQgc2tfZnJlZV9SNzE3NzE4MDEoc3RydWN0IHNvY2sgKnNrKTsK
CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqc29ja193bWFsbG9jX1JhNjlhNDY4MyhzdHJ1Y3Qgc29j
ayAqc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIHNpemUsIGludCBmb3JjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBwcmlvcml0eSk7CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqc29j
a19ybWFsbG9jX1JhMWE5NDllZChzdHJ1Y3Qgc29jayAqc2ssCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsIGludCBmb3JjZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcmlvcml0
eSk7CmV4dGVybiB2b2lkIHNvY2tfd2ZyZWVfUjYwNDViYzBkKHN0cnVjdCBza19idWZmICpza2Ip
OwpleHRlcm4gdm9pZCBzb2NrX3JmcmVlX1I3M2VmZmIwNChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsK
CmV4dGVybiBpbnQgc29ja19zZXRzb2Nrb3B0X1IyOThhYjZjNihzdHJ1Y3Qgc29ja2V0ICpzb2Nr
LCBpbnQgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBvcCwgY2hhciAqb3B0dmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgb3B0bGVuKTsKCmV4dGVybiBpbnQgc29ja19nZXRzb2Nrb3B0
X1I2NjlkMmU3MyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcCwgY2hhciAqb3B0dmFsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm9wdGxl
bik7CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqc29ja19hbGxvY19zZW5kX3NrYl9SOWM1NTBkMTUo
c3RydWN0IHNvY2sgKnNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbm9ibG9jaywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmVycmNvZGUpOwpleHRl
cm4gc3RydWN0IHNrX2J1ZmYgKnNvY2tfYWxsb2Nfc2VuZF9wc2tiX1JiOTMxZTk5YShzdHJ1Y3Qg
c29jayAqc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgaGVhZGVyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhX2xlbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5v
YmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAqZXJyY29kZSk7CmV4dGVybiB2b2lkICpzb2NrX2ttYWxsb2NfUmRlNDJmNGQ0KHN0
cnVjdCBzb2NrICpzaywgaW50IHNpemUsIGludCBwcmlvcml0eSk7CmV4dGVybiB2b2lkIHNvY2tf
a2ZyZWVfc19SM2RhOTA0N2Ioc3RydWN0IHNvY2sgKnNrLCB2b2lkICptZW0sIGludCBzaXplKTsK
CgoKCgpleHRlcm4gaW50IHNvY2tfbm9fcmVsZWFzZV9SZTRmZDBmMTIoc3RydWN0IHNvY2tldCAq
KTsKZXh0ZXJuIGludCBzb2NrX25vX2JpbmRfUjIxMjliYWI5KHN0cnVjdCBzb2NrZXQgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRy
ICosIGludCk7CmV4dGVybiBpbnQgc29ja19ub19jb25uZWN0X1I4YmQ5NmVjNyhzdHJ1Y3Qgc29j
a2V0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzb2NrYWRkciAqLCBpbnQsIGludCk7CmV4dGVybiBpbnQgc29ja19ub19zb2NrZXRwYWly
X1I5Njk0OWE3NyhzdHJ1Y3Qgc29ja2V0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrZXQgKik7CmV4dGVybiBpbnQgc29ja19u
b19hY2NlcHRfUmYwY2IzNjZhKHN0cnVjdCBzb2NrZXQgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2V0ICosIGludCk7CmV4dGVybiBp
bnQgc29ja19ub19nZXRuYW1lX1IwOTU1YmIzNihzdHJ1Y3Qgc29ja2V0ICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkciAqLCBp
bnQgKiwgaW50KTsKZXh0ZXJuIHVuc2lnbmVkIGludCBzb2NrX25vX3BvbGxfUmExMTkzMmEwKHN0
cnVjdCBmaWxlICosIHN0cnVjdCBzb2NrZXQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwpleHRlcm4gaW50
IHNvY2tfbm9faW9jdGxfUjMyMGU3ZGQwKHN0cnVjdCBzb2NrZXQgKiwgdW5zaWduZWQgaW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
Zyk7CmV4dGVybiBpbnQgc29ja19ub19saXN0ZW5fUjIwMDM5ZTMxKHN0cnVjdCBzb2NrZXQgKiwg
aW50KTsKZXh0ZXJuIGludCBzb2NrX25vX3NodXRkb3duX1JlZjFmZmIwZShzdHJ1Y3Qgc29ja2V0
ICosIGludCk7CmV4dGVybiBpbnQgc29ja19ub19nZXRzb2Nrb3B0X1IzNmM4MjUyNChzdHJ1Y3Qg
c29ja2V0ICosIGludCAsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqLCBpbnQgKik7CmV4dGVybiBpbnQgc29ja19ub19zZXRzb2Nr
b3B0X1I1NjkwZmFiNihzdHJ1Y3Qgc29ja2V0ICosIGludCwgaW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIGludCk7CmV4dGVybiBp
bnQgc29ja19ub19mY250bChzdHJ1Y3Qgc29ja2V0ICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxvbmcpOwpleHRl
cm4gaW50IHNvY2tfbm9fc2VuZG1zZ19SNDljNjJhZGMoc3RydWN0IHNvY2tldCAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXNnaGRyICos
IGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHNjbV9jb29raWUgKik7CmV4dGVybiBpbnQgc29ja19ub19yZWN2bXNnX1I1OGQzMzA5MShz
dHJ1Y3Qgc29ja2V0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBtc2doZHIgKiwgaW50LCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY21fY29va2llICopOwpleHRlcm4gaW50
IHNvY2tfbm9fbW1hcF9SN2I3OWU2NTUoc3RydWN0IGZpbGUgKmZpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrZXQgKnNvY2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0
cnVjdCAqdm1hKTsKZXh0ZXJuIHNzaXplX3Qgc29ja19ub19zZW5kcGFnZV9SZmY0MjBiN2Yoc3Ry
dWN0IHNvY2tldCAqc29jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHBhZ2UgKnBhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsIHNpemVfdCBzaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOwoKCgoKCmV4dGVy
biB2b2lkIHNvY2tfZGVmX2Rlc3RydWN0KHN0cnVjdCBzb2NrICopOwoKCmV4dGVybiB2b2lkIHNv
Y2tfaW5pdF9kYXRhX1IyNTNmMGY3MyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29jayAq
c2spOwoKZXh0ZXJuIHZvaWQgc2tsaXN0X3JlbW92ZV9zb2NrZXRfUjkxYWU3YzBhKHN0cnVjdCBz
b2NrICoqbGlzdCwgc3RydWN0IHNvY2sgKnNrKTsKZXh0ZXJuIHZvaWQgc2tsaXN0X2luc2VydF9z
b2NrZXRfUmI5ZjFkYTNiKHN0cnVjdCBzb2NrICoqbGlzdCwgc3RydWN0IHNvY2sgKnNrKTsKZXh0
ZXJuIHZvaWQgc2tsaXN0X2Rlc3Ryb3lfc29ja2V0X1JiMjFjZGRmNyhzdHJ1Y3Qgc29jayAqKmxp
c3QsIHN0cnVjdCBzb2NrICpzayk7CiMgOTE2ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNs
dWRlL25ldC9zb2NrLmgiCnN0YXRpYyBpbmxpbmUgaW50IHNrX2ZpbHRlcihzdHJ1Y3Qgc2tfYnVm
ZiAqc2tiLCBzdHJ1Y3Qgc2tfZmlsdGVyICpmaWx0ZXIpCnsKICAgICAgICBpbnQgcGt0X2xlbjsK
CiAgICAgICAgcGt0X2xlbiA9IHNrX3J1bl9maWx0ZXJfUjg4ZGE3YzdmKHNrYiwgZmlsdGVyLT5p
bnNucywgZmlsdGVyLT5sZW4pOwogICAgICAgIGlmKCFwa3RfbGVuKQogICAgICAgICAgICAgICAg
cmV0dXJuIDE7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgc2tiX3RyaW0oc2tiLCBwa3Rf
bGVuKTsKCiAgICAgICAgcmV0dXJuIDA7Cn0KIyA5MzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbmV0L3NvY2suaCIKc3RhdGljIGlubGluZSB2b2lkIHNrX2ZpbHRlcl9yZWxlYXNl
KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2ZpbHRlciAqZnApCnsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc2l6ZSA9IHNrX2ZpbHRlcl9sZW4oZnApOwoKICAgICAgICBhdG9taWNfc3ViKHNpemUs
ICZzay0+b21lbV9hbGxvYyk7CgogICAgICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZmcC0+
cmVmY250KSkKICAgICAgICAgICAgICAgIGtmcmVlX1IwMzdhMGNiYShmcCk7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCBza19maWx0ZXJfY2hhcmdlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2Zp
bHRlciAqZnApCnsKICAgICAgICBhdG9taWNfaW5jKCZmcC0+cmVmY250KTsKICAgICAgICBhdG9t
aWNfYWRkKHNrX2ZpbHRlcl9sZW4oZnApLCAmc2stPm9tZW1fYWxsb2MpOwp9CiMgOTg2ICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9zb2NrLmgiCnN0YXRpYyBpbmxpbmUgdm9p
ZCBzb2NrX2hvbGQoc3RydWN0IHNvY2sgKnNrKQp7CiAgICAgICAgYXRvbWljX2luYygmc2stPnJl
ZmNudCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NvY2tfcHV0KHN0cnVjdCBzb2NrICpz
aykKewogICAgICAgIGF0b21pY19kZWMoJnNrLT5yZWZjbnQpOwp9CgoKc3RhdGljIGlubGluZSB2
b2lkIHNvY2tfcHV0KHN0cnVjdCBzb2NrICpzaykKewogICAgICAgIGlmIChhdG9taWNfZGVjX2Fu
ZF90ZXN0KCZzay0+cmVmY250KSkKICAgICAgICAgICAgICAgIHNrX2ZyZWVfUjcxNzcxODAxKHNr
KTsKfQojIDEwMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L3NvY2suaCIK
c3RhdGljIGlubGluZSB2b2lkIHNvY2tfb3JwaGFuKHN0cnVjdCBzb2NrICpzaykKewogICAgICAg
IGRvIHsgZG8geyAoKHZvaWQpKCgwKSksIGlycV9zdGF0X1JjYTAyODNiMFswXS5fX2xvY2FsX2Jo
X2NvdW50KSsrOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxl
ICgwKTsgKHZvaWQpKCZzay0+Y2FsbGJhY2tfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIHNr
LT5kZWFkID0gMTsKICAgICAgICBzay0+c29ja2V0ID0gKCh2b2lkICopMCk7CiAgICAgICAgc2st
PnNsZWVwID0gKCh2b2lkICopMCk7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IGRvIHsg
dW5zaWduZWQgaW50ICpwdHIgPSAmKCh2b2lkKSgoMCkpLCBpcnFfc3RhdF9SY2EwMjgzYjBbMF0u
X19sb2NhbF9iaF9jb3VudCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7
IGlmICghLS0qcHRyKSBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoICJjbXBsICQwLCAtOCglMCk7IiAi
am56IDJmOyIgIjE6OyIgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5s
b2NrLiIgInNrZ2Vwbm1pIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAic2tnZXBubWkiICI6XG5cdCIg
Ii5lbmRpZlxuXHQiICIyOiBwdXNobCAlJWVheDsgcHVzaGwgJSVlY3g7IHB1c2hsICUlZWR4OyIg
ImNhbGwgJWMxOyIgInBvcGwgJSVlZHg7IHBvcGwgJSVlY3g7IHBvcGwgJSVlYXg7IiAiam1wIDFi
OyIgIi5wcmV2aW91c1xuXHQiIDogOiAiciIgKHB0ciksICJpIiAoZG9fc29mdGlycV9SZjBhNTI5
YjcpICk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNv
Y2tfZ3JhZnQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29ja2V0ICpwYXJlbnQpCnsKICAgICAg
ICBkbyB7IGRvIHsgKCh2b2lkKSgoMCkpLCBpcnFfc3RhdF9SY2EwMjgzYjBbMF0uX19sb2NhbF9i
aF9jb3VudCkrKzsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfSB3aGls
ZSAoMCk7ICh2b2lkKSgmc2stPmNhbGxiYWNrX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBz
ay0+c2xlZXAgPSAmcGFyZW50LT53YWl0OwogICAgICAgIHBhcmVudC0+c2sgPSBzazsKICAgICAg
ICBzay0+c29ja2V0ID0gcGFyZW50OwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBkbyB7
IHVuc2lnbmVkIGludCAqcHRyID0gJigodm9pZCkoKDApKSwgaXJxX3N0YXRfUmNhMDI4M2IwWzBd
Ll9fbG9jYWxfYmhfY291bnQpOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp
OyBpZiAoIS0tKnB0cikgX19hc21fXyBfX3ZvbGF0aWxlX18gKCAiY21wbCAkMCwgLTgoJTApOyIg
ImpueiAyZjsiICIxOjsiICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQu
bG9jay4iICJza2dlcG5taSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNrZ2Vwbm1pIiAiOlxuXHQi
ICIuZW5kaWZcblx0IiAiMjogcHVzaGwgJSVlYXg7IHB1c2hsICUlZWN4OyBwdXNobCAlJWVkeDsi
ICJjYWxsICVjMTsiICJwb3BsICUlZWR4OyBwb3BsICUlZWN4OyBwb3BsICUlZWF4OyIgImptcCAx
YjsiICIucHJldmlvdXNcblx0IiA6IDogInIiIChwdHIpLCAiaSIgKGRvX3NvZnRpcnFfUmYwYTUy
OWI3KSApOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNv
Y2tfaV91aWQoc3RydWN0IHNvY2sgKnNrKQp7CiAgICAgICAgaW50IHVpZDsKCiAgICAgICAgKHZv
aWQpKCZzay0+Y2FsbGJhY2tfbG9jayk7CiAgICAgICAgdWlkID0gc2stPnNvY2tldCA/IHNrLT5z
b2NrZXQtPmlub2RlLT5pX3VpZCA6IDA7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAg
IHJldHVybiB1aWQ7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBzb2NrX2lfaW5vKHN0
cnVjdCBzb2NrICpzaykKewogICAgICAgIHVuc2lnbmVkIGxvbmcgaW5vOwoKICAgICAgICAodm9p
ZCkoJnNrLT5jYWxsYmFja19sb2NrKTsKICAgICAgICBpbm8gPSBzay0+c29ja2V0ID8gc2stPnNv
Y2tldC0+aW5vZGUtPmlfaW5vIDogMDsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAg
cmV0dXJuIGlubzsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgZHN0X2VudHJ5ICoKX19za19kc3Rf
Z2V0KHN0cnVjdCBzb2NrICpzaykKewogICAgICAgIHJldHVybiBzay0+ZHN0X2NhY2hlOwp9Cgpz
dGF0aWMgaW5saW5lIHN0cnVjdCBkc3RfZW50cnkgKgpza19kc3RfZ2V0KHN0cnVjdCBzb2NrICpz
aykKewogICAgICAgIHN0cnVjdCBkc3RfZW50cnkgKmRzdDsKCiAgICAgICAgKHZvaWQpKCZzay0+
ZHN0X2xvY2spOwogICAgICAgIGRzdCA9IHNrLT5kc3RfY2FjaGU7CiAgICAgICAgaWYgKGRzdCkK
ICAgICAgICAgICAgICAgIGRzdF9ob2xkKGRzdCk7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwog
ICAgICAgIHJldHVybiBkc3Q7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZApfX3NrX2RzdF9zZXQoc3Ry
dWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QpCnsKICAgICAgICBzdHJ1Y3QgZHN0
X2VudHJ5ICpvbGRfZHN0OwoKICAgICAgICBvbGRfZHN0ID0gc2stPmRzdF9jYWNoZTsKICAgICAg
ICBzay0+ZHN0X2NhY2hlID0gZHN0OwogICAgICAgIGRzdF9yZWxlYXNlKG9sZF9kc3QpOwp9Cgpz
dGF0aWMgaW5saW5lIHZvaWQKc2tfZHN0X3NldChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBkc3Rf
ZW50cnkgKmRzdCkKewogICAgICAgICh2b2lkKSgmc2stPmRzdF9sb2NrKTsKICAgICAgICBfX3Nr
X2RzdF9zZXQoc2ssIGRzdCk7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQKX19za19kc3RfcmVzZXQoc3RydWN0IHNvY2sgKnNrKQp7CiAgICAgICAgc3RydWN0
IGRzdF9lbnRyeSAqb2xkX2RzdDsKCiAgICAgICAgb2xkX2RzdCA9IHNrLT5kc3RfY2FjaGU7CiAg
ICAgICAgc2stPmRzdF9jYWNoZSA9ICgodm9pZCAqKTApOwogICAgICAgIGRzdF9yZWxlYXNlKG9s
ZF9kc3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQKc2tfZHN0X3Jlc2V0KHN0cnVjdCBzb2NrICpz
aykKewogICAgICAgICh2b2lkKSgmc2stPmRzdF9sb2NrKTsKICAgICAgICBfX3NrX2RzdF9yZXNl
dChzayk7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBk
c3RfZW50cnkgKgpfX3NrX2RzdF9jaGVjayhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBjb29raWUpCnsK
ICAgICAgICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBzay0+ZHN0X2NhY2hlOwoKICAgICAgICBp
ZiAoZHN0ICYmIGRzdC0+b2Jzb2xldGUgJiYgZHN0LT5vcHMtPmNoZWNrKGRzdCwgY29va2llKSA9
PSAoKHZvaWQgKikwKSkgewogICAgICAgICAgICAgICAgc2stPmRzdF9jYWNoZSA9ICgodm9pZCAq
KTApOwogICAgICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIH0KCiAgICAg
ICAgcmV0dXJuIGRzdDsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3QgZHN0X2VudHJ5ICoKc2tfZHN0
X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgdTMyIGNvb2tpZSkKewogICAgICAgIHN0cnVjdCBkc3Rf
ZW50cnkgKmRzdCA9IHNrX2RzdF9nZXQoc2spOwoKICAgICAgICBpZiAoZHN0ICYmIGRzdC0+b2Jz
b2xldGUgJiYgZHN0LT5vcHMtPmNoZWNrKGRzdCwgY29va2llKSA9PSAoKHZvaWQgKikwKSkgewog
ICAgICAgICAgICAgICAgc2tfZHN0X3Jlc2V0KHNrKTsKICAgICAgICAgICAgICAgIHJldHVybiAo
KHZvaWQgKikwKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBkc3Q7Cn0KIyAxMTQyICIvdXNy
L3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9zb2NrLmgiCnN0YXRpYyBpbmxpbmUgdm9p
ZCBza2Jfc2V0X293bmVyX3coc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKQp7
CiAgICAgICAgc29ja19ob2xkKHNrKTsKICAgICAgICBza2ItPnNrID0gc2s7CiAgICAgICAgc2ti
LT5kZXN0cnVjdG9yID0gc29ja193ZnJlZV9SNjA0NWJjMGQ7CiAgICAgICAgYXRvbWljX2FkZChz
a2ItPnRydWVzaXplLCAmc2stPndtZW1fYWxsb2MpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2ti
X3NldF9vd25lcl9yKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaykKewogICAg
ICAgIHNrYi0+c2sgPSBzazsKICAgICAgICBza2ItPmRlc3RydWN0b3IgPSBzb2NrX3JmcmVlX1I3
M2VmZmIwNDsKICAgICAgICBhdG9taWNfYWRkKHNrYi0+dHJ1ZXNpemUsICZzay0+cm1lbV9hbGxv
Yyk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNvY2tfcXVldWVfcmN2X3NrYihzdHJ1Y3Qgc29jayAq
c2ssIHN0cnVjdCBza19idWZmICpza2IpCnsKCgoKICAgICAgICBpZiAoKCgmc2stPnJtZW1fYWxs
b2MpLT5jb3VudGVyKSArIHNrYi0+dHJ1ZXNpemUgPj0gKHVuc2lnbmVkKXNrLT5yY3ZidWYpCiAg
ICAgICAgICAgICAgICByZXR1cm4gLTEyOwoKCiAgICAgICAgaWYgKHNrLT5maWx0ZXIpIHsKICAg
ICAgICAgICAgICAgIGludCBlcnIgPSAwOwogICAgICAgICAgICAgICAgc3RydWN0IHNrX2ZpbHRl
ciAqZmlsdGVyOwoKCgoKCiAgICAgICAgICAgICAgICAodm9pZCkoJigoc2spLT5sb2NrLnNsb2Nr
KSk7CiAgICAgICAgICAgICAgICBpZiAoKGZpbHRlciA9IHNrLT5maWx0ZXIpICE9ICgodm9pZCAq
KTApICYmIHNrX2ZpbHRlcihza2IsIGZpbHRlcikpCiAgICAgICAgICAgICAgICAgICAgICAgIGVy
ciA9IC0xOwogICAgICAgICAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgICAgICAgICAg
aWYgKGVycikKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKICAgICAgICB9CgoK
ICAgICAgICBza2ItPmRldiA9ICgodm9pZCAqKTApOwogICAgICAgIHNrYl9zZXRfb3duZXJfcihz
a2IsIHNrKTsKICAgICAgICBza2JfcXVldWVfdGFpbCgmc2stPnJlY2VpdmVfcXVldWUsIHNrYik7
CiAgICAgICAgaWYgKCFzay0+ZGVhZCkKICAgICAgICAgICAgICAgIHNrLT5kYXRhX3JlYWR5KHNr
LHNrYi0+bGVuKTsKICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgc29ja19x
dWV1ZV9lcnJfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKewoKCgog
ICAgICAgIGlmICgoKCZzay0+cm1lbV9hbGxvYyktPmNvdW50ZXIpICsgc2tiLT50cnVlc2l6ZSA+
PSAodW5zaWduZWQpc2stPnJjdmJ1ZikKICAgICAgICAgICAgICAgIHJldHVybiAtMTI7CiAgICAg
ICAgc2tiX3NldF9vd25lcl9yKHNrYiwgc2spOwogICAgICAgIHNrYl9xdWV1ZV90YWlsKCZzay0+
ZXJyb3JfcXVldWUsc2tiKTsKICAgICAgICBpZiAoIXNrLT5kZWFkKQogICAgICAgICAgICAgICAg
c2stPmRhdGFfcmVhZHkoc2ssc2tiLT5sZW4pOwogICAgICAgIHJldHVybiAwOwp9CgoKCgoKc3Rh
dGljIGlubGluZSBpbnQgc29ja19lcnJvcihzdHJ1Y3Qgc29jayAqc2spCnsKICAgICAgICBpbnQg
ZXJyPSgoX190eXBlb2ZfXygqKCZzay0+ZXJyKSkpX194Y2hnKCh1bnNpZ25lZCBsb25nKSgwKSwo
JnNrLT5lcnIpLHNpemVvZigqKCZzay0+ZXJyKSkpKTsKICAgICAgICByZXR1cm4gLWVycjsKfQoK
c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHNvY2tfd3NwYWNlKHN0cnVjdCBzb2NrICpzaykK
ewogICAgICAgIGludCBhbXQgPSAwOwoKICAgICAgICBpZiAoIShzay0+c2h1dGRvd24gJiAyKSkg
ewogICAgICAgICAgICAgICAgYW10ID0gc2stPnNuZGJ1ZiAtICgoJnNrLT53bWVtX2FsbG9jKS0+
Y291bnRlcik7CiAgICAgICAgICAgICAgICBpZiAoYW10IDwgMCkKICAgICAgICAgICAgICAgICAg
ICAgICAgYW10ID0gMDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFtdDsKfQoKc3RhdGljIGlu
bGluZSB2b2lkIHNrX3dha2VfYXN5bmMoc3RydWN0IHNvY2sgKnNrLCBpbnQgaG93LCBpbnQgYmFu
ZCkKewogICAgICAgIGlmIChzay0+c29ja2V0ICYmIHNrLT5zb2NrZXQtPmZhc3luY19saXN0KQog
ICAgICAgICAgICAgICAgc29ja193YWtlX2FzeW5jX1JiYTk1MGM4Nihzay0+c29ja2V0LCBob3cs
IGJhbmQpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIGludCBzb2NrX3dyaXRlYWJsZShzdHJ1Y3Qg
c29jayAqc2spCnsKICAgICAgICByZXR1cm4gKCgmc2stPndtZW1fYWxsb2MpLT5jb3VudGVyKSA8
IChzay0+c25kYnVmIC8gMik7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGdmcF9hbnkodm9pZCkKewog
ICAgICAgIHJldHVybiAoKCh2b2lkKSgoMCkpLCBpcnFfc3RhdF9SY2EwMjgzYjBbMF0uX19sb2Nh
bF9iaF9jb3VudCkgIT0gMCkgPyAoMHgyMCkgOiAoMHgyMCB8IDB4MTAgfCAweDQwIHwgMHg4MCB8
IDB4MTAwKTsKfQoKc3RhdGljIGlubGluZSBsb25nIHNvY2tfcmN2dGltZW8oc3RydWN0IHNvY2sg
KnNrLCBpbnQgbm9ibG9jaykKewogICAgICAgIHJldHVybiBub2Jsb2NrID8gMCA6IHNrLT5yY3Z0
aW1lbzsKfQoKc3RhdGljIGlubGluZSBsb25nIHNvY2tfc25kdGltZW8oc3RydWN0IHNvY2sgKnNr
LCBpbnQgbm9ibG9jaykKewogICAgICAgIHJldHVybiBub2Jsb2NrID8gMCA6IHNrLT5zbmR0aW1l
bzsKfQoKc3RhdGljIGlubGluZSBpbnQgc29ja19yY3Zsb3dhdChzdHJ1Y3Qgc29jayAqc2ssIGlu
dCB3YWl0YWxsLCBpbnQgbGVuKQp7CiAgICAgICAgcmV0dXJuICh3YWl0YWxsID8gbGVuIDogKHsg
aW50IF9feCA9IChzay0+cmN2bG93YXQpOyBpbnQgX195ID0gKGxlbik7IF9feCA8IF9feSA/IF9f
eDogX195OyB9KSkgPyA6IDE7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgaW50IHNvY2tfaW50cl9lcnJu
byhsb25nIHRpbWVvKQp7CiAgICAgICAgcmV0dXJuIHRpbWVvID09ICgobG9uZykofjBVTD4+MSkp
ID8gLTUxMiA6IC00Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCnNvY2tfcmVjdl90aW1lc3Rh
bXAoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpz
a2IpCnsKICAgICAgICBpZiAoc2stPnJjdnRzdGFtcCkKICAgICAgICAgICAgICAgIHB1dF9jbXNn
X1JmMzliZjRkOShtc2csIDEsIDI5LCBzaXplb2Yoc2tiLT5zdGFtcCksICZza2ItPnN0YW1wKTsK
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBzay0+c3RhbXAgPSBza2ItPnN0YW1wOwp9CiMg
MTMxMiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvc29jay5oIgpleHRlcm4g
X191MzIgc3lzY3RsX3dtZW1fbWF4X1JmYWM4ODY1ZjsKZXh0ZXJuIF9fdTMyIHN5c2N0bF9ybWVt
X21heF9SYjA1ZmMzMTA7CiMgNDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0
L2lwLmgiIDIKCnN0cnVjdCBpbmV0X3NrYl9wYXJtCnsKICAgICAgICBzdHJ1Y3QgaXBfb3B0aW9u
cyBvcHQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbGFnczsKCgoKCn07CgpzdHJ1Y3QgaXBjbV9j
b29raWUKewogICAgICAgIHUzMiBhZGRyOwogICAgICAgIGludCBvaWY7CiAgICAgICAgc3RydWN0
IGlwX29wdGlvbnMgKm9wdDsKfTsKCgoKc3RydWN0IGlwX3JhX2NoYWluCnsKICAgICAgICBzdHJ1
Y3QgaXBfcmFfY2hhaW4gKm5leHQ7CiAgICAgICAgc3RydWN0IHNvY2sgKnNrOwogICAgICAgIHZv
aWQgKCpkZXN0cnVjdG9yKShzdHJ1Y3Qgc29jayAqKTsKfTsKCmV4dGVybiBzdHJ1Y3QgaXBfcmFf
Y2hhaW4gKmlwX3JhX2NoYWluOwpleHRlcm4gcndsb2NrX3QgaXBfcmFfbG9jazsKIyA3OCAiL3Vz
ci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvaXAuaCIKZXh0ZXJuIHZvaWQgaXBfbWNf
ZHJvcHNvY2tldChzdHJ1Y3Qgc29jayAqKTsKZXh0ZXJuIHZvaWQgaXBfbWNfZHJvcGRldmljZShz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZXh0ZXJuIGludCBpcF9tY19wcm9jaW5mbyhjaGFyICos
IGNoYXIgKiosIG9mZl90LCBpbnQpOwoKCgoKCmV4dGVybiBpbnQgaXBfYnVpbGRfYW5kX3NlbmRf
cGt0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBzYWRkciwgdTMyIGRhZGRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlwX29wdGlv
bnMgKm9wdCk7CmV4dGVybiBpbnQgaXBfcmN2X1I5NjBkOGY5YShzdHJ1Y3Qgc2tfYnVmZiAqc2ti
LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IHBhY2tldF90eXBlICpwdCk7CmV4dGVybiBpbnQgaXBfbG9jYWxfZGVsaXZlcihzdHJ1
Y3Qgc2tfYnVmZiAqc2tiKTsKZXh0ZXJuIGludCBpcF9tcl9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAq
c2tiKTsKZXh0ZXJuIGludCBpcF9vdXRwdXQoc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiBp
bnQgaXBfbWNfb3V0cHV0KHN0cnVjdCBza19idWZmICpza2IpOwpleHRlcm4gaW50IGlwX2ZyYWdt
ZW50X1I4ZDMzYjc0MShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKCpvdXQpKHN0cnVjdCBza19i
dWZmKikpOwpleHRlcm4gaW50IGlwX2RvX25hdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKZXh0ZXJu
IHZvaWQgaXBfc2VuZF9jaGVja19SYTM3Yjc0NDEoc3RydWN0IGlwaGRyICppcCk7CmV4dGVybiBp
bnQgaXBfcXVldWVfeG1pdF9SMjk3YzBmZTAoc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiB2
b2lkIGlwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgaXBfYnVpbGRfeG1pdChzdHJ1Y3Qgc29jayAq
c2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdldGZyYWcgKGNv
bnN0IHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgdm9pZCAqZnJhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IGlwY21fY29va2llICppcGMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHJ0YWJsZSAqcnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKIyAxMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvbmV0L2lwLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBpcF90cl9tY19tYXAodTMyIGFk
ZHIsIGNoYXIgKmJ1ZikKewogICAgICAgIGJ1ZlswXT0weEMwOwogICAgICAgIGJ1ZlsxXT0weDAw
OwogICAgICAgIGJ1ZlsyXT0weDAwOwogICAgICAgIGJ1ZlszXT0weDA0OwogICAgICAgIGJ1Zls0
XT0weDAwOwogICAgICAgIGJ1Zls1XT0weDAwOwp9CgpzdHJ1Y3QgaXBfcmVwbHlfYXJnIHsKICAg
ICAgICBzdHJ1Y3QgaW92ZWMgaW92WzJdOwogICAgICAgIGludCBuX2lvdjsKICAgICAgICB1MzIg
Y3N1bTsKICAgICAgICBpbnQgY3N1bW9mZnNldDsKCn07Cgp2b2lkIGlwX3NlbmRfcmVwbHkoc3Ry
dWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfcmVwbHlfYXJnICph
cmcsCiAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuKTsKCmV4dGVybiBfX2lubGlu
ZV9fIGludCBpcF9maW5pc2hfb3V0cHV0X1I5NGJlNDAzNChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsK
CnN0cnVjdCBpcHY0X2NvbmZpZ19SMjZiOTk3ODIKewogICAgICAgIGludCBsb2dfbWFydGlhbnM7
CiAgICAgICAgaW50IGF1dG9jb25maWc7CiAgICAgICAgaW50IG5vX3BtdHVfZGlzYzsKfTsKCmV4
dGVybiBzdHJ1Y3QgaXB2NF9jb25maWdfUjI2Yjk5NzgyIGlwdjRfY29uZmlnX1IyNmI5OTc4MjsK
ZXh0ZXJuIHN0cnVjdCBpcF9taWIgaXBfc3RhdGlzdGljc19SYjE1NzllYmVbMSoyXTsKCgoKZXh0
ZXJuIHN0cnVjdCBsaW51eF9taWIgbmV0X3N0YXRpc3RpY3NfUmM0NjMwMzgxWzEqMl07CgoKCgpl
eHRlcm4gaW50IHN5c2N0bF9sb2NhbF9wb3J0X3JhbmdlX1JlZTA4MDA2ZlsyXTsKZXh0ZXJuIGlu
dCBzeXNjdGxfaXBfZGVmYXVsdF90dGxfUmY2Mzg4YzU2OwoKCnN0YXRpYyBpbmxpbmUgaW50IGlw
X3NlbmQoc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIGlmIChza2ItPmxlbiA+IHNrYi0+
ZHN0LT5wbXR1KQogICAgICAgICAgICAgICAgcmV0dXJuIGlwX2ZyYWdtZW50X1I4ZDMzYjc0MShz
a2IsIGlwX2ZpbmlzaF9vdXRwdXRfUjk0YmU0MDM0KTsKICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICByZXR1cm4gaXBfZmluaXNoX291dHB1dF9SOTRiZTQwMzQoc2tiKTsKfQoKCgpzdGF0aWMg
aW5saW5lCmludCBpcF9kZWNyZWFzZV90dGwoc3RydWN0IGlwaGRyICppcGgpCnsKICAgICAgICB1
MzIgY2hlY2sgPSBpcGgtPmNoZWNrOwogICAgICAgIGNoZWNrICs9ICgoX191MTYpKCAoKChfX3Ux
NikoKDB4MDEwMCkpICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCgweDAxMDAp
KSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKTsKICAgICAgICBpcGgtPmNoZWNrID0gY2hlY2sg
KyAoY2hlY2s+PTB4RkZGRik7CiAgICAgICAgcmV0dXJuIC0taXBoLT50dGw7Cn0KCnN0YXRpYyBp
bmxpbmUKaW50IGlwX2RvbnRfZnJhZ21lbnQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZHN0X2Vu
dHJ5ICpkc3QpCnsKICAgICAgICByZXR1cm4gKHNrLT5wcm90aW5mby5hZl9pbmV0LnBtdHVkaXNj
ID09IDIgfHwKICAgICAgICAgICAgICAgIChzay0+cHJvdGluZm8uYWZfaW5ldC5wbXR1ZGlzYyA9
PSAxICYmCiAgICAgICAgICAgICAgICAgIShkc3QtPm14bG9jayYoMTw8UlRBWF9NVFUpKSkpOwp9
CgpleHRlcm4gdm9pZCBfX2lwX3NlbGVjdF9pZGVudF9SYzAzYjE4M2Eoc3RydWN0IGlwaGRyICpp
cGgsIHN0cnVjdCBkc3RfZW50cnkgKmRzdCk7CgpzdGF0aWMgaW5saW5lIHZvaWQgaXBfc2VsZWN0
X2lkZW50KHN0cnVjdCBpcGhkciAqaXBoLCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIHN0cnVjdCBz
b2NrICpzaykKewogICAgICAgIGlmIChpcGgtPmZyYWdfb2ZmJigoX191MTYpKCAoKChfX3UxNiko
KDB4NDAwMCkpICYgKF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKCgweDQwMDApKSAm
IChfX3UxNikweGZmMDBVKSA+PiA4KSApKSkgewoKCgoKCiAgICAgICAgICAgICAgICBpcGgtPmlk
ID0gKChzayAmJiBzay0+ZGFkZHIpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UxNikoKHNr
LT5wcm90aW5mby5hZl9pbmV0LmlkKyspKSkgPyAoeyBfX3UxNiBfX3ggPSAoKChzay0+cHJvdGlu
Zm8uYWZfaW5ldC5pZCsrKSkpOyAoKF9fdTE2KSggKCgoX191MTYpKF9feCkgJiAoX191MTYpMHgw
MGZmVSkgPDwgOCkgfCAoKChfX3UxNikoX194KSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKTsg
fSkgOiBfX2Zzd2FiMTYoKChzay0+cHJvdGluZm8uYWZfaW5ldC5pZCsrKSkpKSA6IDApOwogICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgX19pcF9zZWxlY3RfaWRlbnRfUmMwM2IxODNhKGlw
aCwgZHN0KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpcF9ldGhfbWNfbWFwKHUzMiBhZGRy
LCBjaGFyICpidWYpCnsKICAgICAgICBhZGRyPShfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIp
KChhZGRyKSkpID8gKHsgX191MzIgX194ID0gKCgoYWRkcikpKTsgKChfX3UzMikoICgoKF9fdTMy
KShfX3gpICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIpKF9feCkgJiAo
X191MzIpMHgwMDAwZmYwMFVMKSA8PCA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDBm
ZjAwMDBVTCkgPj4gOCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweGZmMDAwMDAwVUwpID4+
IDI0KSApKTsgfSkgOiBfX2Zzd2FiMzIoKChhZGRyKSkpKTsKICAgICAgICBidWZbMF09MHgwMTsK
ICAgICAgICBidWZbMV09MHgwMDsKICAgICAgICBidWZbMl09MHg1ZTsKICAgICAgICBidWZbNV09
YWRkciYweEZGOwogICAgICAgIGFkZHI+Pj04OwogICAgICAgIGJ1Zls0XT1hZGRyJjB4RkY7CiAg
ICAgICAgYWRkcj4+PTg7CiAgICAgICAgYnVmWzNdPWFkZHImMHg3RjsKfQoKCgpleHRlcm4gaW50
IGlwX2NhbGxfcmFfY2hhaW4oc3RydWN0IHNrX2J1ZmYgKnNrYik7CgoKCgoKc3RydWN0IHNrX2J1
ZmYgKmlwX2RlZnJhZ19SNjg0ODRkNjAoc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiBpbnQg
aXBfZnJhZ19ucXVldWVzOwpleHRlcm4gYXRvbWljX3QgaXBfZnJhZ19tZW07CgoKCgoKZXh0ZXJu
IGludCBpcF9mb3J3YXJkKHN0cnVjdCBza19idWZmICpza2IpOwpleHRlcm4gaW50IGlwX25ldF91
bnJlYWNoYWJsZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKCgoKCgpleHRlcm4gdm9pZCBpcF9vcHRp
b25zX2J1aWxkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF9vcHRpb25zICpvcHQsIHUz
MiBkYWRkciwgc3RydWN0IHJ0YWJsZSAqcnQsIGludCBpc19mcmFnKTsKZXh0ZXJuIGludCBpcF9v
cHRpb25zX2VjaG8oc3RydWN0IGlwX29wdGlvbnMgKmRvcHQsIHN0cnVjdCBza19idWZmICpza2Ip
OwpleHRlcm4gdm9pZCBpcF9vcHRpb25zX2ZyYWdtZW50KHN0cnVjdCBza19idWZmICpza2IpOwpl
eHRlcm4gaW50IGlwX29wdGlvbnNfY29tcGlsZV9SNDMxOWY5MWQoc3RydWN0IGlwX29wdGlvbnMg
Km9wdCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiBpbnQgaXBfb3B0aW9uc19nZXQoc3Ry
dWN0IGlwX29wdGlvbnMgKipvcHRwLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBpbnQgb3B0bGVuLCBp
bnQgdXNlcik7CmV4dGVybiB2b2lkIGlwX29wdGlvbnNfdW5kb19SOTcyMWYxMmYoc3RydWN0IGlw
X29wdGlvbnMgKiBvcHQpOwpleHRlcm4gdm9pZCBpcF9mb3J3YXJkX29wdGlvbnMoc3RydWN0IHNr
X2J1ZmYgKnNrYik7CmV4dGVybiBpbnQgaXBfb3B0aW9uc19yY3Zfc3JyKHN0cnVjdCBza19idWZm
ICpza2IpOwoKCgoKCmV4dGVybiB2b2lkIGlwX2Ntc2dfcmVjdl9SNjc4MzAxZTcoc3RydWN0IG1z
Z2hkciAqbXNnLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKZXh0ZXJuIGludCBpcF9jbXNnX3NlbmQo
c3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3QgaXBjbV9jb29raWUgKmlwYyk7CmV4dGVybiBpbnQg
aXBfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNo
YXIgKm9wdHZhbCwgaW50IG9wdGxlbik7CmV4dGVybiBpbnQgaXBfZ2V0c29ja29wdChzdHJ1Y3Qg
c29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIGNoYXIgKm9wdHZhbCwgaW50ICpvcHRs
ZW4pOwpleHRlcm4gaW50IGlwX3JhX2NvbnRyb2woc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBj
aGFyIG9uLCB2b2lkICgqZGVzdHJ1Y3Rvcikoc3RydWN0IHNvY2sgKikpOwoKZXh0ZXJuIGludCBp
cF9yZWN2X2Vycm9yKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVu
KTsKZXh0ZXJuIHZvaWQgaXBfaWNtcF9lcnJvcihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19i
dWZmICpza2IsIGludCBlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBwb3J0
LCB1MzIgaW5mbywgdTggKnBheWxvYWQpOwpleHRlcm4gdm9pZCBpcF9sb2NhbF9lcnJvcihzdHJ1
Y3Qgc29jayAqc2ssIGludCBlcnIsIHUzMiBkYWRkciwgdTE2IGRwb3J0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdTMyIGluZm8pOwojIDMyICIvdXNyL3NyYy9saW51eC0yLjQuMjAt
OC9pbmNsdWRlL25ldC9jaGVja3N1bS5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04
L2luY2x1ZGUvYXNtL2NoZWNrc3VtLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgv
aW5jbHVkZS9hc20vY2hlY2tzdW0uaCIKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB1bnNp
Z25lZCBpbnQgY3N1bV9wYXJ0aWFsX1I5YTNkZThmOChjb25zdCB1bnNpZ25lZCBjaGFyICogYnVm
ZiwgaW50IGxlbiwgdW5zaWduZWQgaW50IHN1bSk7CiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4y
MC04L2luY2x1ZGUvYXNtL2NoZWNrc3VtLmgiCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg
dW5zaWduZWQgaW50IGNzdW1fcGFydGlhbF9jb3B5X2dlbmVyaWNfUmU4YWE5YTk2KCBjb25zdCBj
aGFyICpzcmMsIGNoYXIgKmRzdCwgaW50IGxlbiwgaW50IHN1bSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzcmNfZXJyX3B0ciwgaW50ICpk
c3RfZXJyX3B0cik7CiMgMzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNtL2No
ZWNrc3VtLmgiCnN0YXRpYyBfX2lubGluZV9fCnVuc2lnbmVkIGludCBjc3VtX3BhcnRpYWxfY29w
eV9ub2NoZWNrICggY29uc3QgY2hhciAqc3JjLCBjaGFyICpkc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuLCBpbnQgc3VtKQp7CiAgICAgICAgcmV0dXJu
IGNzdW1fcGFydGlhbF9jb3B5X2dlbmVyaWNfUmU4YWE5YTk2ICggc3JjLCBkc3QsIGxlbiwgc3Vt
LCAoKHZvaWQgKikwKSwgKCh2b2lkICopMCkpOwp9CgpzdGF0aWMgX19pbmxpbmVfXwp1bnNpZ25l
ZCBpbnQgY3N1bV9wYXJ0aWFsX2NvcHlfZnJvbV91c2VyICggY29uc3QgY2hhciAqc3JjLCBjaGFy
ICpkc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBsZW4sIGludCBzdW0sIGludCAqZXJyX3B0cikKewogICAgICAgIHJldHVybiBjc3VtX3BhcnRp
YWxfY29weV9nZW5lcmljX1JlOGFhOWE5NiAoIHNyYywgZHN0LCBsZW4sIHN1bSwgZXJyX3B0ciwg
KCh2b2lkICopMCkpOwp9CiMgNTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvYXNt
L2NoZWNrc3VtLmgiCnVuc2lnbmVkIGludCBjc3VtX3BhcnRpYWxfY29weSggY29uc3QgY2hhciAq
c3JjLCBjaGFyICpkc3QsIGludCBsZW4sIGludCBzdW0pOwojIDY4ICIvdXNyL3NyYy9saW51eC0y
LjQuMjAtOC9pbmNsdWRlL2FzbS9jaGVja3N1bS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHNo
b3J0IGlwX2Zhc3RfY3N1bSh1bnNpZ25lZCBjaGFyICogaXBoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWhsKQp7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHN1bTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICJt
b3ZsICglMSksICUwCTtcbiIKICAgICAgICAgICAgInN1YmwgJDQsICUyCTtcbiIKICAgICAgICAg
ICAgImpiZSAyZgkJO1xuIgogICAgICAgICAgICAiYWRkbCA0KCUxKSwgJTAJO1xuIgogICAgICAg
ICAgICAiYWRjbCA4KCUxKSwgJTAJO1xuIgogICAgICAgICAgICAiYWRjbCAxMiglMSksICUwCTtc
biIKIjE6CSAgICBhZGNsIDE2KCUxKSwgJTAJO1xuIgogICAgICAgICAgICAibGVhIDQoJTEpLCAl
MQk7XG4iCiAgICAgICAgICAgICJkZWNsICUyCQk7XG4iCiAgICAgICAgICAgICJqbmUgMWIJCTtc
biIKICAgICAgICAgICAgImFkY2wgJDAsICUwCTtcbiIKICAgICAgICAgICAgIm1vdmwgJTAsICUy
CTtcbiIKICAgICAgICAgICAgInNocmwgJDE2LCAlMAk7XG4iCiAgICAgICAgICAgICJhZGR3ICV3
MiwgJXcwCTtcbiIKICAgICAgICAgICAgImFkY2wgJDAsICUwCTtcbiIKICAgICAgICAgICAgIm5v
dGwgJTAJCTtcbiIKIjI6CQkJCTtcbiIKCgoKICAgICAgICA6ICI9ciIgKHN1bSksICI9ciIgKGlw
aCksICI9ciIgKGlobCkKICAgICAgICA6ICIxIiAoaXBoKSwgIjIiIChpaGwpKTsKICAgICAgICBy
ZXR1cm4oc3VtKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNzdW1fZm9sZCh1
bnNpZ25lZCBpbnQgc3VtKQp7CiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJhZGRs
ICUxLCAlMAkJO1xuIgogICAgICAgICAgICAgICAgImFkY2wgJDB4ZmZmZiwgJTAJO1xuIgogICAg
ICAgICAgICAgICAgOiAiPXIiIChzdW0pCiAgICAgICAgICAgICAgICA6ICJyIiAoc3VtIDw8IDE2
KSwgIjAiIChzdW0gJiAweGZmZmYwMDAwKQogICAgICAgICk7CiAgICAgICAgcmV0dXJuICh+c3Vt
KSA+PiAxNjsKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGNzdW1fdGNwdWRwX25vZm9s
ZCh1bnNpZ25lZCBsb25nIHNhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRhZGRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNo
b3J0IHByb3RvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgc3VtKQp7CiAgICBfX2FzbV9fKAogICAgICAgICJhZGRsICUxLCAl
MAk7XG4iCiAgICAgICAgImFkY2wgJTIsICUwCTtcbiIKICAgICAgICAiYWRjbCAlMywgJTAJO1xu
IgogICAgICAgICJhZGNsICQwLCAlMAk7XG4iCiAgICAgICAgOiAiPXIiIChzdW0pCiAgICAgICAg
OiAiZyIgKGRhZGRyKSwgImciKHNhZGRyKSwgImciKCgoX19idWlsdGluX2NvbnN0YW50X3AoKF9f
dTE2KSgobGVuKSkpID8gKHsgX191MTYgX194ID0gKCgobGVuKSkpOyAoKF9fdTE2KSggKCgoX191
MTYpKF9feCkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3UxNikoX194KSAmIChfX3Ux
NikweGZmMDBVKSA+PiA4KSApKTsgfSkgOiBfX2Zzd2FiMTYoKChsZW4pKSkpPDwxNikrcHJvdG8q
MjU2KSwgIjAiKHN1bSkpOwogICAgcmV0dXJuIHN1bTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdW5z
aWduZWQgc2hvcnQgaW50IGNzdW1fdGNwdWRwX21hZ2ljKHVuc2lnbmVkIGxvbmcgc2FkZHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgZGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIHNob3J0IGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJvdG8sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdW0pCnsK
ICAgICAgICByZXR1cm4gY3N1bV9mb2xkKGNzdW1fdGNwdWRwX25vZm9sZChzYWRkcixkYWRkcixs
ZW4scHJvdG8sc3VtKSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydCBpcF9j
b21wdXRlX2NzdW0odW5zaWduZWQgY2hhciAqIGJ1ZmYsIGludCBsZW4pCnsKICAgIHJldHVybiBj
c3VtX2ZvbGQgKGNzdW1fcGFydGlhbF9SOWEzZGU4ZjgoYnVmZiwgbGVuLCAwKSk7Cn0KCgpzdGF0
aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBzaG9ydCBpbnQgY3N1bV9pcHY2X21hZ2ljKHN0cnVjdCBp
bjZfYWRkciAqc2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGluNl9hZGRyICpkYWRkciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBsZW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJv
dG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IHN1bSkKewogICAgICAgIF9fYXNtX18oCiAgICAgICAgICAgICAgICAiYWRk
bCAwKCUxKSwgJTAJCTtcbiIKICAgICAgICAgICAgICAgICJhZGNsIDQoJTEpLCAlMAkJO1xuIgog
ICAgICAgICAgICAgICAgImFkY2wgOCglMSksICUwCQk7XG4iCiAgICAgICAgICAgICAgICAiYWRj
bCAxMiglMSksICUwCTtcbiIKICAgICAgICAgICAgICAgICJhZGNsIDAoJTIpLCAlMAkJO1xuIgog
ICAgICAgICAgICAgICAgImFkY2wgNCglMiksICUwCQk7XG4iCiAgICAgICAgICAgICAgICAiYWRj
bCA4KCUyKSwgJTAJCTtcbiIKICAgICAgICAgICAgICAgICJhZGNsIDEyKCUyKSwgJTAJO1xuIgog
ICAgICAgICAgICAgICAgImFkY2wgJTMsICUwCQk7XG4iCiAgICAgICAgICAgICAgICAiYWRjbCAl
NCwgJTAJCTtcbiIKICAgICAgICAgICAgICAgICJhZGNsICQwLCAlMAkJO1xuIgogICAgICAgICAg
ICAgICAgOiAiPSZyIiAoc3VtKQogICAgICAgICAgICAgICAgOiAiciIgKHNhZGRyKSwgInIiIChk
YWRkciksCiAgICAgICAgICAgICAgICAgICJyIigoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTMy
KSgobGVuKSkpID8gKHsgX191MzIgX194ID0gKCgobGVuKSkpOyAoKF9fdTMyKSggKCgoX191MzIp
KF9feCkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoX194KSAmIChf
X3UzMikweDAwMDBmZjAwVUwpIDw8IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMGZm
MDAwMFVMKSA+PiA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4g
MjQpICkpOyB9KSA6IF9fZnN3YWIzMigoKGxlbikpKSkpLCAiciIoKF9fYnVpbHRpbl9jb25zdGFu
dF9wKChfX3UzMikoKHByb3RvKSkpID8gKHsgX191MzIgX194ID0gKCgocHJvdG8pKSk7ICgoX191
MzIpKCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9f
dTMyKShfX3gpICYgKF9fdTMyKTB4MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoX194KSAm
IChfX3UzMikweDAwZmYwMDAwVUwpID4+IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHhm
ZjAwMDAwMFVMKSA+PiAyNCkgKSk7IH0pIDogX19mc3dhYjMyKCgocHJvdG8pKSkpKSwgIjAiKHN1
bSkpOwoKICAgICAgICByZXR1cm4gY3N1bV9mb2xkKHN1bSk7Cn0KCgoKCgpzdGF0aWMgX19pbmxp
bmVfXyB1bnNpZ25lZCBpbnQgY3N1bV9hbmRfY29weV90b191c2VyKGNvbnN0IGNoYXIgKnNyYywg
Y2hhciAqZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuLCBp
bnQgc3VtLCBpbnQgKmVycl9wdHIpCnsKICAgICAgICBpZiAoKCh7IHVuc2lnbmVkIGxvbmcgZmxh
ZyxzdW07IGFzbSgiYWRkbCAlMywlMSA7IHNiYmwgJTAsJTA7IGNtcGwgJTEsJTQ7IHNiYmwgJDAs
JTAiIDoiPSZyIiAoZmxhZyksICI9ciIgKHN1bSkgOiIxIiAoZHN0KSwiZyIgKChpbnQpKGxlbikp
LCJnIiAoZ2V0X2N1cnJlbnQoKS0+YWRkcl9saW1pdC5zZWcpKTsgZmxhZzsgfSkgPT0gMCkpCiAg
ICAgICAgICAgICAgICByZXR1cm4gY3N1bV9wYXJ0aWFsX2NvcHlfZ2VuZXJpY19SZThhYTlhOTYo
c3JjLCBkc3QsIGxlbiwgc3VtLCAoKHZvaWQgKikwKSwgZXJyX3B0cik7CgogICAgICAgIGlmIChs
ZW4pCiAgICAgICAgICAgICAgICAqZXJyX3B0ciA9IC0xNDsKCiAgICAgICAgcmV0dXJuIC0xOwp9
CiMgMzQgIi91c3Ivc3JjL2xpbnV4LTIuNC4yMC04L2luY2x1ZGUvbmV0L2NoZWNrc3VtLmgiIDIK
IyA5NiAiL3Vzci9zcmMvbGludXgtMi40LjIwLTgvaW5jbHVkZS9uZXQvY2hlY2tzdW0uaCIKc3Rh
dGljIGlubGluZQp1bnNpZ25lZCBpbnQgY3N1bV9hbmRfY29weV9mcm9tX3VzZXIgKGNvbnN0IGNo
YXIgKnNyYywgY2hhciAqZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBsZW4sIGludCBzdW0sIGludCAqZXJyX3B0cikKewogICAgICAgIGlmICh2ZXJpZnlfYXJl
YSgwLCBzcmMsIGxlbikgPT0gMCkKICAgICAgICAgICAgICAgIHJldHVybiBjc3VtX3BhcnRpYWxf
Y29weV9mcm9tX3VzZXIoc3JjLCBkc3QsIGxlbiwgc3VtLCBlcnJfcHRyKTsKCiAgICAgICAgaWYg
KGxlbikKICAgICAgICAgICAgICAgICplcnJfcHRyID0gLTE0OwoKICAgICAgICByZXR1cm4gc3Vt
Owp9CiMgMTI3ICIvdXNyL3NyYy9saW51eC0yLjQuMjAtOC9pbmNsdWRlL25ldC9jaGVja3N1bS5o
IgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjc3VtX2FkZCh1bnNpZ25lZCBpbnQgY3N1bSwg
dW5zaWduZWQgaW50IGFkZGVuZCkKewogICAgICAgIGNzdW0gKz0gYWRkZW5kOwogICAgICAgIHJl
dHVybiBjc3VtICsgKGNzdW0gPCBhZGRlbmQpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGlu
dCBjc3VtX3N1Yih1bnNpZ25lZCBpbnQgY3N1bSwgdW5zaWduZWQgaW50IGFkZGVuZCkKewogICAg
ICAgIHJldHVybiBjc3VtX2FkZChjc3VtLCB+YWRkZW5kKTsKfQoKc3RhdGljIGlubGluZSB1bnNp
Z25lZCBpbnQKY3N1bV9ibG9ja19hZGQodW5zaWduZWQgaW50IGNzdW0sIHVuc2lnbmVkIGludCBj
c3VtMiwgaW50IG9mZnNldCkKewogICAgICAgIGlmIChvZmZzZXQmMSkKICAgICAgICAgICAgICAg
IGNzdW0yID0gKChjc3VtMiYweEZGMDBGRik8PDgpKygoY3N1bTI+PjgpJjB4RkYwMEZGKTsKICAg
ICAgICByZXR1cm4gY3N1bV9hZGQoY3N1bSwgY3N1bTIpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGludApjc3VtX2Jsb2NrX3N1Yih1bnNpZ25lZCBpbnQgY3N1bSwgdW5zaWduZWQgaW50IGNz
dW0yLCBpbnQgb2Zmc2V0KQp7CiAgICAgICAgaWYgKG9mZnNldCYxKQogICAgICAgICAgICAgICAg
Y3N1bTIgPSAoKGNzdW0yJjB4RkYwMEZGKTw8OCkrKChjc3VtMj4+OCkmMHhGRjAwRkYpOwogICAg
ICAgIHJldHVybiBjc3VtX3N1Yihjc3VtLCBjc3VtMik7Cn0KIyAxMzYgImgvc2tkcnYxc3QuaCIg
MgoKIyAxICJoL3NrdHlwZXMuaCIgMQojIDEzOCAiaC9za2RydjFzdC5oIiAyCiMgMSAiaC9za2Vy
cm9yLmgiIDEKIyAxMzkgImgvc2tkcnYxc3QuaCIgMgojIDEgImgvc2tkZWJ1Zy5oIiAxCiMgMTQw
ICJoL3NrZHJ2MXN0LmgiIDIKIyAxICJoL2xtODAuaCIgMQojIDE0MSAiaC9za2RydjFzdC5oIiAy
CiMgMSAiaC94bWFjX2lpLmgiIDEKIyAxNDIgImgvc2tkcnYxc3QuaCIgMgojIDE2NCAiaC9za2Ry
djFzdC5oIgp0eXBlZGVmIHN0cnVjdCBzX0RydlJsbXRNYnVmIFNLX01CVUY7CiMgMjM3ICJoL3Nr
ZHJ2MXN0LmgiCmV4dGVybiB2b2lkIFNrRXJyb3JMb2coU0tfQUMqLCBpbnQsIGludCwgY2hhciop
OwojIDQ0MCAic2tnZXBubWkuYyIgMgoKCgojIDEgImgvc2txdWV1ZS5oIiAxCiMgMTExICJoL3Nr
cXVldWUuaCIKdHlwZWRlZiB1bmlvbiB1X0V2UGFyYSB7CiAgICAgICAgdm9pZCAqcFBhcmFQdHI7
CiAgICAgICAgdTY0IFBhcmE2NDsKICAgICAgICB1MzIgUGFyYTMyWzJdOwp9IFNLX0VWUEFSQTsK
IyAxMjQgImgvc2txdWV1ZS5oIgp0eXBlZGVmIHN0cnVjdCBzX0V2ZW50RWxlbSB7CiAgICAgICAg
dTMyIENsYXNzIDsKICAgICAgICB1MzIgRXZlbnQgOwogICAgICAgIFNLX0VWUEFSQSBQYXJhIDsK
fSBTS19FVkVOVEVMRU07Cgp0eXBlZGVmIHN0cnVjdCBzX1F1ZXVlIHsKICAgICAgICBTS19FVkVO
VEVMRU0gRXZRdWV1ZVs2NF07CiAgICAgICAgU0tfRVZFTlRFTEVNICpFdlB1dCA7CiAgICAgICAg
U0tfRVZFTlRFTEVNICpFdkdldCA7Cn0gU0tfUVVFVUU7CgpleHRlcm4gdm9pZCBTa0V2ZW50SW5p
dChTS19BQyAqcEFDLCBjaGFyKiBJb2MsIGludCBMZXZlbCk7CmV4dGVybiB2b2lkIFNrRXZlbnRR
dWV1ZShTS19BQyAqcEFDLCB1MzIgQ2xhc3MsIHUzMiBFdmVudCwKICAgICAgICBTS19FVlBBUkEg
UGFyYSk7CmV4dGVybiBpbnQgU2tFdmVudERpc3BhdGNoZXIoU0tfQUMgKnBBQyxjaGFyKiBJb2Mp
OwojIDQ0NCAic2tnZXBubWkuYyIgMgojIDEgImgvc2tnZXBubWkuaCIgMQojIDI0MSAiaC9za2dl
cG5taS5oIgojIDEgImgvc2t0aW1lci5oIiAxCiMgNzUgImgvc2t0aW1lci5oIgp0eXBlZGVmIHN0
cnVjdCBzX1RpbWVyIFNLX1RJTUVSOwoKc3RydWN0IHNfVGltZXIgewogICAgICAgIFNLX1RJTUVS
ICpUbU5leHQgOwogICAgICAgIHUzMiBUbUNsYXNzIDsKICAgICAgICB1MzIgVG1FdmVudCA7CiAg
ICAgICAgU0tfRVZQQVJBIFRtUGFyYSA7CiAgICAgICAgdTMyIFRtRGVsdGEgOwogICAgICAgIGlu
dCBUbUFjdGl2ZSA7Cn0gOwoKCgoKCnR5cGVkZWYgc3RydWN0IHNfVGltQ3RybCB7CiAgICAgICAg
U0tfVElNRVIgKlN0UXVldWUgOwp9IFNLX1RJTUNUUkwgOwoKZXh0ZXJuIHZvaWQgU2tUaW1lcklu
aXQoU0tfQUMgKnBBQyxjaGFyKiBJb2MsIGludCBMZXZlbCk7CmV4dGVybiB2b2lkIFNrVGltZXJT
dG9wKFNLX0FDICpwQUMsY2hhciogSW9jLFNLX1RJTUVSICpwVGltZXIpOwpleHRlcm4gdm9pZCBT
a1RpbWVyU3RhcnQoU0tfQUMgKnBBQyxjaGFyKiBJb2MsU0tfVElNRVIgKnBUaW1lciwKICAgICAg
ICB1MzIgVGltZSx1MzIgQ2xhc3MsdTMyIEV2ZW50LFNLX0VWUEFSQSBQYXJhKTsKZXh0ZXJuIHZv
aWQgU2tUaW1lckRvbmUoU0tfQUMgKnBBQyxjaGFyKiBJb2MpOwojIDI0MiAiaC9za2dlcG5taS5o
IiAyCiMgMSAiaC9za2kyYy5oIiAxCiMgMTQ5ICJoL3NraTJjLmgiCnR5cGVkZWYgc3RydWN0IHNf
U2Vuc29yIFNLX1NFTlNPUjsKCiMgMSAiaC9za2dlaTJjLmgiIDEKIyAyOTggImgvc2tnZWkyYy5o
IgpleHRlcm4gaW50IFNrTG04MFJlYWRTZW5zb3IoU0tfQUMgKnBBQywgY2hhciogSW9DLCBTS19T
RU5TT1IgKnBTZW4pOwojIDE1MiAiaC9za2kyYy5oIiAyCiMgMjQ0ICJoL3NraTJjLmgiCnN0cnVj
dCBzX1NlbnNvciB7CiAgICAgICAgY2hhciAqU2VuRGVzYzsKICAgICAgICBpbnQgU2VuVHlwZTsK
ICAgICAgICBzMzIgU2VuVmFsdWU7CiAgICAgICAgczMyIFNlblRocmVFcnJIaWdoOwogICAgICAg
IHMzMiBTZW5UaHJlV2FybkhpZ2g7CiAgICAgICAgczMyIFNlblRocmVFcnJMb3c7CiAgICAgICAg
czMyIFNlblRocmVXYXJuTG93OwogICAgICAgIGludCBTZW5FcnJGbGFnOwogICAgICAgIHU4IFNl
bkluaXQ7CiAgICAgICAgdTY0IFNlbkVyckN0czsKICAgICAgICB1NjQgU2VuV2FybkN0czsKICAg
ICAgICB1NjQgU2VuQmVnRXJyVFM7CiAgICAgICAgdTY0IFNlbkJlZ1dhcm5UUzsKICAgICAgICB1
NjQgU2VuTGFzdEVyclRyYXBUUzsKICAgICAgICB1NjQgU2VuTGFzdEVyckxvZ1RTOwogICAgICAg
IHU2NCBTZW5MYXN0V2FyblRyYXBUUzsKICAgICAgICB1NjQgU2VuTGFzdFdhcm5Mb2dUUzsKICAg
ICAgICBpbnQgU2VuU3RhdGU7CiAgICAgICAgaW50ICgqU2VuUmVhZCkoU0tfQUMgKnBBQywgY2hh
ciogSW9DLCBzdHJ1Y3Qgc19TZW5zb3IgKnBTZW4pOwoKICAgICAgICB1MTYgU2VuUmVnOwogICAg
ICAgIHU4IFNlbkRldjsKfTsKCnR5cGVkZWYgc3RydWN0IHNfSTJjIHsKICAgICAgICBTS19TRU5T
T1IgU2VuVGFibGVbOF07CiAgICAgICAgaW50IEN1cnJTZW5zOwogICAgICAgIGludCBNYXhTZW5z
OwogICAgICAgIGludCBUaW1lck1vZGU7CiAgICAgICAgaW50IEluaXRMZXZlbDsKCiAgICAgICAg
aW50IER1bW15UmVhZHM7CiAgICAgICAgU0tfVElNRVIgU2VuVGltZXI7Cgp9IFNLX0kyQzsKCmV4
dGVybiBpbnQgU2tJMmNSZWFkU2Vuc29yKFNLX0FDICpwQUMsIGNoYXIqIElvQywgU0tfU0VOU09S
ICpwU2VuKTsKCmV4dGVybiBpbnQgU2tJMmNFdmVudChTS19BQyAqcEFDLCBjaGFyKiBJb0MsIHUz
MiBFdmVudCwgU0tfRVZQQVJBIFBhcmEpOwpleHRlcm4gaW50IFNrSTJjSW5pdChTS19BQyAqcEFD
LCBjaGFyKiBJb0MsIGludCBMZXZlbCk7CmV4dGVybiB2b2lkIFNrSTJjV2FpdElycShTS19BQyAq
cEFDLCBjaGFyKiBJb0MpOwpleHRlcm4gdm9pZCBTa0kyY0lzcihTS19BQyAqcEFDLCBjaGFyKiBJ
b0MpOwojIDI0MyAiaC9za2dlcG5taS5oIiAyCiMgMSAiaC9za2FkZHIuaCIgMQojIDI0OSAiaC9z
a2FkZHIuaCIKdHlwZWRlZiBzdHJ1Y3Qgc19NYWNBZGRyIHsKICAgICAgICB1OCBhWzZdOwp9IFNL
X01BQ19BRERSOwoKCgp0eXBlZGVmIHVuaW9uIHNfSW5leGFjdEZpbHRlciB7CiAgICAgICAgdTgg
Qnl0ZXNbOF07CiAgICAgICAgdTY0IFZhbDsKfSBTS19GSUxURVI2NDsKCgp0eXBlZGVmIHN0cnVj
dCBzX0FkZHJOZXQgU0tfQUREUl9ORVQ7CgoKdHlwZWRlZiBzdHJ1Y3Qgc19BZGRyUG9ydCB7CgoK
CiAgICAgICAgU0tfTUFDX0FERFIgQ3VycmVudE1hY0FkZHJlc3M7CiAgICAgICAgU0tfTUFDX0FE
RFIgUGVybWFuZW50TWFjQWRkcmVzczsKICAgICAgICBpbnQgUHJvbU1vZGU7CgoKCiAgICAgICAg
U0tfTUFDX0FERFIgUHJldmlvdXNNYWNBZGRyZXNzOwogICAgICAgIHU4IEN1cnJlbnRNYWNBZGRy
ZXNzU2V0OwogICAgICAgIHU4IEFsaWduMDE7CgogICAgICAgIHUzMiBGaXJzdEV4YWN0TWF0Y2hS
bG10OwogICAgICAgIHUzMiBOZXh0RXhhY3RNYXRjaFJsbXQ7CiAgICAgICAgdTMyIEZpcnN0RXhh
Y3RNYXRjaERydjsKICAgICAgICB1MzIgTmV4dEV4YWN0TWF0Y2hEcnY7CiAgICAgICAgU0tfTUFD
X0FERFIgRXhhY3RbMTZdOwogICAgICAgIFNLX0ZJTFRFUjY0IEluZXhhY3RGaWx0ZXI7CiAgICAg
ICAgU0tfRklMVEVSNjQgSW5leGFjdFJsbXRGaWx0ZXI7CiAgICAgICAgU0tfRklMVEVSNjQgSW5l
eGFjdERydkZpbHRlcjsKfSBTS19BRERSX1BPUlQ7CgoKc3RydWN0IHNfQWRkck5ldCB7CgoKICAg
ICAgICBTS19NQUNfQUREUiBDdXJyZW50TWFjQWRkcmVzczsKICAgICAgICBTS19NQUNfQUREUiBQ
ZXJtYW5lbnRNYWNBZGRyZXNzOwoKCgogICAgICAgIHUzMiBBY3RpdmVQb3J0OwogICAgICAgIHU4
IEN1cnJlbnRNYWNBZGRyZXNzU2V0OwogICAgICAgIHU4IEFsaWduMDE7CiAgICAgICAgdTE2IEFs
aWduMDI7Cn07CgoKdHlwZWRlZiBzdHJ1Y3Qgc19BZGRyIHsKCgoKICAgICAgICBTS19BRERSX05F
VCBOZXRbMl07CiAgICAgICAgU0tfQUREUl9QT1JUIFBvcnRbMl07CgoKfSBTS19BRERSOwojIDMy
MiAiaC9za2FkZHIuaCIKZXh0ZXJuIGludCBTa0FkZHJJbml0KAogICAgICAgIFNLX0FDICpwQUMs
CiAgICAgICAgY2hhciogSW9DLAogICAgICAgIGludCBMZXZlbCk7CgpleHRlcm4gaW50IFNrQWRk
ck1jQ2xlYXIoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAg
dTMyIFBvcnROdW1iZXIsCiAgICAgICAgaW50IEZsYWdzKTsKCmV4dGVybiBpbnQgU2tBZGRyWG1h
Y01jQ2xlYXIoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAg
dTMyIFBvcnROdW1iZXIsCiAgICAgICAgaW50IEZsYWdzKTsKCmV4dGVybiBpbnQgU2tBZGRyR21h
Y01jQ2xlYXIoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAg
dTMyIFBvcnROdW1iZXIsCiAgICAgICAgaW50IEZsYWdzKTsKCmV4dGVybiBpbnQgU2tBZGRyTWNB
ZGQoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAgdTMyIFBv
cnROdW1iZXIsCiAgICAgICAgU0tfTUFDX0FERFIgKnBNYywKICAgICAgICBpbnQgRmxhZ3MpOwoK
ZXh0ZXJuIGludCBTa0FkZHJYbWFjTWNBZGQoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBj
aGFyKiBJb0MsCiAgICAgICAgdTMyIFBvcnROdW1iZXIsCiAgICAgICAgU0tfTUFDX0FERFIgKnBN
YywKICAgICAgICBpbnQgRmxhZ3MpOwoKZXh0ZXJuIGludCBTa0FkZHJHbWFjTWNBZGQoCiAgICAg
ICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAgdTMyIFBvcnROdW1iZXIs
CiAgICAgICAgU0tfTUFDX0FERFIgKnBNYywKICAgICAgICBpbnQgRmxhZ3MpOwoKZXh0ZXJuIGlu
dCBTa0FkZHJNY1VwZGF0ZSgKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQywK
ICAgICAgICB1MzIgUG9ydE51bWJlcik7CgpleHRlcm4gaW50IFNrQWRkclhtYWNNY1VwZGF0ZSgK
ICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQywKICAgICAgICB1MzIgUG9ydE51
bWJlcik7CgpleHRlcm4gaW50IFNrQWRkckdtYWNNY1VwZGF0ZSgKICAgICAgICBTS19BQyAqcEFD
LAogICAgICAgIGNoYXIqIElvQywKICAgICAgICB1MzIgUG9ydE51bWJlcik7CgpleHRlcm4gaW50
IFNrQWRkck92ZXJyaWRlKAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9DLAog
ICAgICAgIHUzMiBQb3J0TnVtYmVyLAogICAgICAgIFNLX01BQ19BRERSICpwTmV3QWRkciwKICAg
ICAgICBpbnQgRmxhZ3MpOwoKZXh0ZXJuIGludCBTa0FkZHJQcm9taXNjdW91c0NoYW5nZSgKICAg
ICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQywKICAgICAgICB1MzIgUG9ydE51bWJl
ciwKICAgICAgICBpbnQgTmV3UHJvbU1vZGUpOwoKZXh0ZXJuIGludCBTa0FkZHJYbWFjUHJvbWlz
Y3VvdXNDaGFuZ2UoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAg
ICAgdTMyIFBvcnROdW1iZXIsCiAgICAgICAgaW50IE5ld1Byb21Nb2RlKTsKCmV4dGVybiBpbnQg
U2tBZGRyR21hY1Byb21pc2N1b3VzQ2hhbmdlKAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAg
Y2hhciogSW9DLAogICAgICAgIHUzMiBQb3J0TnVtYmVyLAogICAgICAgIGludCBOZXdQcm9tTW9k
ZSk7CgpleHRlcm4gaW50IFNrQWRkclN3YXAoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBj
aGFyKiBJb0MsCiAgICAgICAgdTMyIEZyb21Qb3J0TnVtYmVyLAogICAgICAgIHUzMiBUb1BvcnRO
dW1iZXIpOwojIDI0NCAiaC9za2dlcG5taS5oIiAyCiMgMSAiaC9za3JsbXQuaCIgMQojIDM5OSAi
aC9za3JsbXQuaCIKdHlwZWRlZiBzdHJ1Y3Qgc19Sb290SWQgewogICAgICAgIHU4IElkWzhdOwp9
IFNLX1JMTVRfUk9PVF9JRDsKCgp0eXBlZGVmIHN0cnVjdCBzX3BvcnQgewogICAgICAgIFNLX01B
Q19BRERSIENoZWNrQWRkcjsKICAgICAgICB1OCBTdXNwZWN0VHg7Cn0gU0tfUE9SVF9DSEVDSzsK
Cgp0eXBlZGVmIHN0cnVjdCBzX1JsbXROZXQgU0tfUkxNVF9ORVQ7CgoKdHlwZWRlZiBzdHJ1Y3Qg
c19SbG10UG9ydCB7CgoKCiAgICAgICAgdTggUG9ydFN0YXRlOwoKCiAgICAgICAgdTggTGlua0Rv
d247CiAgICAgICAgdTggUG9ydERvd247CiAgICAgICAgdTggQWxpZ24wMTsKCiAgICAgICAgdTMy
IFBvcnROdW1iZXI7CiAgICAgICAgU0tfUkxNVF9ORVQgKiBOZXQ7CgogICAgICAgIHU2NCBUeEhl
bGxvQ3RzOwogICAgICAgIHU2NCBSeEhlbGxvQ3RzOwogICAgICAgIHU2NCBUeFNwSGVsbG9SZXFD
dHM7CiAgICAgICAgdTY0IFJ4U3BIZWxsb0N0czsKCgoKCiAgICAgICAgdTMyIFBhY2tldHNQZXJU
aW1lU2xvdDsKCiAgICAgICAgdTMyIEJwZHVQYWNrZXRzUGVyVGltZVNsb3Q7CiAgICAgICAgdTY0
IEJjVGltZVN0YW1wOwogICAgICAgIHU2NCBHdVRpbWVTdGFtcDsKCiAgICAgICAgU0tfVElNRVIg
VXBUaW1lcjsKICAgICAgICBTS19USU1FUiBEb3duUnhUaW1lcjsKICAgICAgICBTS19USU1FUiBE
b3duVHhUaW1lcjsKCiAgICAgICAgdTMyIENoZWNraW5nU3RhdGU7CgogICAgICAgIFNLX0FERFJf
UE9SVCAqIEFkZHJQb3J0OwoKICAgICAgICB1OCBSYW5kb21bNF07CiAgICAgICAgdW5zaWduZWQg
UG9ydHNDaGVja2VkOwogICAgICAgIHVuc2lnbmVkIFBvcnRzU3VzcGVjdDsKICAgICAgICBTS19Q
T1JUX0NIRUNLIFBvcnRDaGVja1sxXTsKCgogICAgICAgIHU4IFBvcnRTdGFydGVkOwogICAgICAg
IHU4IFBvcnROb1J4OwogICAgICAgIHU4IFJvb3RJZFNldDsKICAgICAgICBTS19STE1UX1JPT1Rf
SUQgUm9vdDsKfSBTS19STE1UX1BPUlQ7CgoKc3RydWN0IHNfUmxtdE5ldCB7CgoKCiAgICAgICAg
dTMyIE5ldE51bWJlcjsKCiAgICAgICAgU0tfUkxNVF9QT1JUICogUG9ydFsyXTsKICAgICAgICB1
MzIgTnVtUG9ydHM7CiAgICAgICAgdTMyIFByZWZQb3J0OwoKCgogICAgICAgIHUzMiBDaGdCY1By
aW87CiAgICAgICAgdTMyIFJsbXRNb2RlOwogICAgICAgIHUzMiBBY3RpdmVQb3J0OwogICAgICAg
IHUzMiBQcmVmZXJlbmNlOwoKICAgICAgICB1OCBSbG10U3RhdGU7CgoKICAgICAgICB1OCBSb290
SWRTZXQ7CiAgICAgICAgdTE2IEFsaWduMDE7CgogICAgICAgIGludCBMaW5rc1VwOwogICAgICAg
IGludCBQb3J0c1VwOwogICAgICAgIHUzMiBUaW1lb3V0VmFsdWU7CgogICAgICAgIHUzMiBDaGVj
a2luZ1N0YXRlOwogICAgICAgIFNLX1JMTVRfUk9PVF9JRCBSb290OwoKICAgICAgICBTS19USU1F
UiBMb2NUaW1lcjsKICAgICAgICBTS19USU1FUiBTZWdUaW1lcjsKfTsKCgp0eXBlZGVmIHN0cnVj
dCBzX1JsbXQgewoKCgogICAgICAgIHUzMiBOdW1OZXRzOwogICAgICAgIHUzMiBOZXRzU3RhcnRl
ZDsKICAgICAgICBTS19STE1UX05FVCBOZXRbMl07CiAgICAgICAgU0tfUkxNVF9QT1JUIFBvcnRb
Ml07CgoKICAgICAgICB1OCBDaGVja1N3aXRjaDsKICAgICAgICB1OCBBbGlnbjAxOwogICAgICAg
IHUxNiBBbGlnbjAyOwoKfSBTS19STE1UOwoKCmV4dGVybiBTS19NQUNfQUREUiBCcmlkZ2VNY0Fk
ZHI7CmV4dGVybiBTS19NQUNfQUREUiBTa1JsbXRNY0FkZHI7CiMgNTI2ICJoL3NrcmxtdC5oIgpl
eHRlcm4gdm9pZCBTa1JsbXRJbml0KAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciog
SW9DLAogICAgICAgIGludCBMZXZlbCk7CgpleHRlcm4gaW50IFNrUmxtdEV2ZW50KAogICAgICAg
IFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9DLAogICAgICAgIHUzMiBFdmVudCwKICAgICAg
ICBTS19FVlBBUkEgUGFyYSk7CiMgMjQ1ICJoL3NrZ2Vwbm1pLmgiIDIKIyAxICJoL3NrdnBkLmgi
IDEKIyAxNDcgImgvc2t2cGQuaCIKdHlwZWRlZiBzdHJ1Y3Qgc192cGRfc3RhdHVzIHsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBBbGlnbjAxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZwZF9zdGF0
dXM7CiAgICAgICAgaW50IHZwZF9mcmVlX3JvOwogICAgICAgIGludCB2cGRfZnJlZV9ydzsKfSBT
S19WUERfU1RBVFVTOwoKdHlwZWRlZiBzdHJ1Y3Qgc192cGQgewogICAgICAgIFNLX1ZQRF9TVEFU
VVMgdjsKICAgICAgICBjaGFyIHZwZF9idWZbNTEyXTsKICAgICAgICBpbnQgcm9tX3NpemU7CiAg
ICAgICAgaW50IHZwZF9zaXplOwp9IFNLX1ZQRDsKCnR5cGVkZWYgc3RydWN0IHNfdnBkX3BhcmEg
ewogICAgICAgIHVuc2lnbmVkIGludCBwX2xlbjsKICAgICAgICBjaGFyICpwX3ZhbDsKfSBTS19W
UERfUEFSQTsKIyAxNzUgImgvc2t2cGQuaCIKdHlwZWRlZiBzdHJ1Y3Qgc192cGRfa2V5IHsKICAg
ICAgICBjaGFyIHBfa2V5WzJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcF9sZW47CiAgICAgICAg
Y2hhciBwX3ZhbDsKfSBTS19WUERfS0VZOwojIDI1MCAiaC9za3ZwZC5oIgpleHRlcm4gaW50IFZw
ZFNldHVwUGFyYSgKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIgKmtleSwKICAgICAg
ICBjaGFyICpidWYsCiAgICAgICAgaW50IGxlbiwKICAgICAgICBpbnQgdHlwZSwKICAgICAgICBp
bnQgb3ApOwoKZXh0ZXJuIFNLX1ZQRF9TVEFUVVMgKlZwZFN0YXQoCiAgICAgICAgU0tfQUMgKnBB
QywKICAgICAgICBjaGFyKiBJb0MpOwoKZXh0ZXJuIGludCBWcGRLZXlzKAogICAgICAgIFNLX0FD
ICpwQUMsCiAgICAgICAgY2hhciogSW9DLAogICAgICAgIGNoYXIgKmJ1ZiwKICAgICAgICBpbnQg
KmxlbiwKICAgICAgICBpbnQgKmVsZW1lbnRzKTsKCmV4dGVybiBpbnQgVnBkUmVhZCgKICAgICAg
ICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQywKICAgICAgICBjaGFyICprZXksCiAgICAg
ICAgY2hhciAqYnVmLAogICAgICAgIGludCAqbGVuKTsKCmV4dGVybiB1OCBWcGRNYXlXcml0ZSgK
ICAgICAgICBjaGFyICprZXkpOwoKZXh0ZXJuIGludCBWcGRXcml0ZSgKICAgICAgICBTS19BQyAq
cEFDLAogICAgICAgIGNoYXIqIElvQywKICAgICAgICBjaGFyICprZXksCiAgICAgICAgY2hhciAq
YnVmKTsKCmV4dGVybiBpbnQgVnBkRGVsZXRlKAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAg
Y2hhciogSW9DLAogICAgICAgIGNoYXIgKmtleSk7CgpleHRlcm4gaW50IFZwZFVwZGF0ZSgKICAg
ICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQyk7CgpleHRlcm4gdm9pZCBWcGRFcnJM
b2coCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAgY2hhciAq
bXNnKTsKIyAyNDYgImgvc2tnZXBubWkuaCIgMgojIDU2MyAiaC9za2dlcG5taS5oIgp0eXBlZGVm
IHN0cnVjdCBzX1BubWlWY3QgewogICAgICAgIHU4IFZjdFN0YXR1czsKICAgICAgICB1OCBQQ2Fi
bGVMZW47CiAgICAgICAgdTMyIFBNZGlQYWlyTGVuWzRdOwogICAgICAgIHU4IFBNZGlQYWlyU3Rz
WzRdOwp9IFNLX1BOTUlfVkNUOwojIDc5NCAiaC9za2dlcG5taS5oIgp0eXBlZGVmIHN0cnVjdCBz
X1BubWlWcGQgewogICAgICAgIGNoYXIgVnBkS2V5WzVdOwogICAgICAgIGNoYXIgVnBkVmFsdWVb
MTI4XTsKICAgICAgICB1OCBWcGRBY2Nlc3M7CiAgICAgICAgdTggVnBkQWN0aW9uOwp9IFNLX1BO
TUlfVlBEOwoKdHlwZWRlZiBzdHJ1Y3Qgc19Qbm1pU2Vuc29yIHsKICAgICAgICB1OCBTZW5zb3JJ
bmRleDsKICAgICAgICBjaGFyIFNlbnNvckRlc2NyWzI1XTsKICAgICAgICB1OCBTZW5zb3JUeXBl
OwogICAgICAgIHUzMiBTZW5zb3JWYWx1ZTsKICAgICAgICB1MzIgU2Vuc29yV2FybmluZ1RocmVz
aG9sZExvdzsKICAgICAgICB1MzIgU2Vuc29yV2FybmluZ1RocmVzaG9sZEhpZ2g7CiAgICAgICAg
dTMyIFNlbnNvckVycm9yVGhyZXNob2xkTG93OwogICAgICAgIHUzMiBTZW5zb3JFcnJvclRocmVz
aG9sZEhpZ2g7CiAgICAgICAgdTggU2Vuc29yU3RhdHVzOwogICAgICAgIHU2NCBTZW5zb3JXYXJu
aW5nQ3RzOwogICAgICAgIHU2NCBTZW5zb3JFcnJvckN0czsKICAgICAgICB1NjQgU2Vuc29yV2Fy
bmluZ1RpbWVzdGFtcDsKICAgICAgICB1NjQgU2Vuc29yRXJyb3JUaW1lc3RhbXA7Cn0gU0tfUE5N
SV9TRU5TT1I7Cgp0eXBlZGVmIHN0cnVjdCBzX1BubWlDaGVja3N1bSB7CiAgICAgICAgdTY0IENo
ZWNrc3VtUnhPa0N0czsKICAgICAgICB1NjQgQ2hlY2tzdW1SeFVuYWJsZUN0czsKICAgICAgICB1
NjQgQ2hlY2tzdW1SeEVyckN0czsKICAgICAgICB1NjQgQ2hlY2tzdW1UeE9rQ3RzOwogICAgICAg
IHU2NCBDaGVja3N1bVR4VW5hYmxlQ3RzOwp9IFNLX1BOTUlfQ0hFQ0tTVU07Cgp0eXBlZGVmIHN0
cnVjdCBzX1BubWlTdGF0IHsKICAgICAgICB1NjQgU3RhdFR4T2tDdHM7CiAgICAgICAgdTY0IFN0
YXRUeE9jdGV0c09rQ3RzOwogICAgICAgIHU2NCBTdGF0VHhCcm9hZGNhc3RPa0N0czsKICAgICAg
ICB1NjQgU3RhdFR4TXVsdGljYXN0T2tDdHM7CiAgICAgICAgdTY0IFN0YXRUeFVuaWNhc3RPa0N0
czsKICAgICAgICB1NjQgU3RhdFR4TG9uZ0ZyYW1lc0N0czsKICAgICAgICB1NjQgU3RhdFR4QnVy
c3RDdHM7CiAgICAgICAgdTY0IFN0YXRUeFBhdXNlTWFjQ3RybEN0czsKICAgICAgICB1NjQgU3Rh
dFR4TWFjQ3RybEN0czsKICAgICAgICB1NjQgU3RhdFR4U2luZ2xlQ29sbGlzaW9uQ3RzOwogICAg
ICAgIHU2NCBTdGF0VHhNdWx0aXBsZUNvbGxpc2lvbkN0czsKICAgICAgICB1NjQgU3RhdFR4RXhj
ZXNzaXZlQ29sbGlzaW9uQ3RzOwogICAgICAgIHU2NCBTdGF0VHhMYXRlQ29sbGlzaW9uQ3RzOwog
ICAgICAgIHU2NCBTdGF0VHhEZWZlcnJhbEN0czsKICAgICAgICB1NjQgU3RhdFR4RXhjZXNzaXZl
RGVmZXJyYWxDdHM7CiAgICAgICAgdTY0IFN0YXRUeEZpZm9VbmRlcnJ1bkN0czsKICAgICAgICB1
NjQgU3RhdFR4Q2FycmllckN0czsKICAgICAgICB1NjQgRHVtbXkxOwogICAgICAgIHU2NCBTdGF0
VHg2NEN0czsKICAgICAgICB1NjQgU3RhdFR4MTI3Q3RzOwogICAgICAgIHU2NCBTdGF0VHgyNTVD
dHM7CiAgICAgICAgdTY0IFN0YXRUeDUxMUN0czsKICAgICAgICB1NjQgU3RhdFR4MTAyM0N0czsK
ICAgICAgICB1NjQgU3RhdFR4TWF4Q3RzOwogICAgICAgIHU2NCBTdGF0VHhTeW5jQ3RzOwogICAg
ICAgIHU2NCBTdGF0VHhTeW5jT2N0ZXRzQ3RzOwogICAgICAgIHU2NCBTdGF0UnhPa0N0czsKICAg
ICAgICB1NjQgU3RhdFJ4T2N0ZXRzT2tDdHM7CiAgICAgICAgdTY0IFN0YXRSeEJyb2FkY2FzdE9r
Q3RzOwogICAgICAgIHU2NCBTdGF0UnhNdWx0aWNhc3RPa0N0czsKICAgICAgICB1NjQgU3RhdFJ4
VW5pY2FzdE9rQ3RzOwogICAgICAgIHU2NCBTdGF0UnhMb25nRnJhbWVzQ3RzOwogICAgICAgIHU2
NCBTdGF0UnhQYXVzZU1hY0N0cmxDdHM7CiAgICAgICAgdTY0IFN0YXRSeE1hY0N0cmxDdHM7CiAg
ICAgICAgdTY0IFN0YXRSeFBhdXNlTWFjQ3RybEVycm9yQ3RzOwogICAgICAgIHU2NCBTdGF0UnhN
YWNDdHJsVW5rbm93bkN0czsKICAgICAgICB1NjQgU3RhdFJ4QnVyc3RDdHM7CiAgICAgICAgdTY0
IFN0YXRSeE1pc3NlZEN0czsKICAgICAgICB1NjQgU3RhdFJ4RnJhbWluZ0N0czsKICAgICAgICB1
NjQgU3RhdFJ4Rmlmb092ZXJmbG93Q3RzOwogICAgICAgIHU2NCBTdGF0UnhKYWJiZXJDdHM7CiAg
ICAgICAgdTY0IFN0YXRSeENhcnJpZXJDdHM7CiAgICAgICAgdTY0IFN0YXRSeElSTGVuZ3RoQ3Rz
OwogICAgICAgIHU2NCBTdGF0UnhTeW1ib2xDdHM7CiAgICAgICAgdTY0IFN0YXRSeFNob3J0c0N0
czsKICAgICAgICB1NjQgU3RhdFJ4UnVudEN0czsKICAgICAgICB1NjQgU3RhdFJ4Q2V4dEN0czsK
ICAgICAgICB1NjQgU3RhdFJ4VG9vTG9uZ0N0czsKICAgICAgICB1NjQgU3RhdFJ4RmNzQ3RzOwog
ICAgICAgIHU2NCBEdW1teTI7CiAgICAgICAgdTY0IFN0YXRSeDY0Q3RzOwogICAgICAgIHU2NCBT
dGF0UngxMjdDdHM7CiAgICAgICAgdTY0IFN0YXRSeDI1NUN0czsKICAgICAgICB1NjQgU3RhdFJ4
NTExQ3RzOwogICAgICAgIHU2NCBTdGF0UngxMDIzQ3RzOwogICAgICAgIHU2NCBTdGF0UnhNYXhD
dHM7Cn0gU0tfUE5NSV9TVEFUOwoKdHlwZWRlZiBzdHJ1Y3Qgc19Qbm1pQ29uZiB7CiAgICAgICAg
Y2hhciBDb25mTWFjQ3VycmVudEFkZHJbNl07CiAgICAgICAgY2hhciBDb25mTWFjRmFjdG9yeUFk
ZHJbNl07CiAgICAgICAgdTggQ29uZlBNRDsKICAgICAgICB1OCBDb25mQ29ubmVjdG9yOwogICAg
ICAgIHU4IENvbmZMaW5rQ2FwYWJpbGl0eTsKICAgICAgICB1OCBDb25mTGlua01vZGU7CiAgICAg
ICAgdTggQ29uZkxpbmtNb2RlU3RhdHVzOwogICAgICAgIHU4IENvbmZMaW5rU3RhdHVzOwogICAg
ICAgIHU4IENvbmZGbG93Q3RybENhcGFiaWxpdHk7CiAgICAgICAgdTggQ29uZkZsb3dDdHJsTW9k
ZTsKICAgICAgICB1OCBDb25mRmxvd0N0cmxTdGF0dXM7CiAgICAgICAgdTggQ29uZlBoeU9wZXJh
dGlvbkNhcGFiaWxpdHk7CiAgICAgICAgdTggQ29uZlBoeU9wZXJhdGlvbk1vZGU7CiAgICAgICAg
dTggQ29uZlBoeU9wZXJhdGlvblN0YXR1czsKICAgICAgICB1OCBDb25mU3BlZWRDYXBhYmlsaXR5
OwogICAgICAgIHU4IENvbmZTcGVlZE1vZGU7CiAgICAgICAgdTggQ29uZlNwZWVkU3RhdHVzOwp9
IFNLX1BOTUlfQ09ORjsKCnR5cGVkZWYgc3RydWN0IHNfUG5taVJsbXQgewogICAgICAgIHUzMiBS
bG10SW5kZXg7CiAgICAgICAgdTMyIFJsbXRTdGF0dXM7CiAgICAgICAgdTY0IFJsbXRUeEhlbGxv
Q3RzOwogICAgICAgIHU2NCBSbG10UnhIZWxsb0N0czsKICAgICAgICB1NjQgUmxtdFR4U3BIZWxs
b1JlcUN0czsKICAgICAgICB1NjQgUmxtdFJ4U3BIZWxsb0N0czsKfSBTS19QTk1JX1JMTVQ7Cgp0
eXBlZGVmIHN0cnVjdCBzX1BubWlSbG10TW9uaXRvciB7CiAgICAgICAgdTMyIFJsbXRNb25pdG9y
SW5kZXg7CiAgICAgICAgY2hhciBSbG10TW9uaXRvckFkZHJbNl07CiAgICAgICAgdTY0IFJsbXRN
b25pdG9yRXJyb3JDdHM7CiAgICAgICAgdTY0IFJsbXRNb25pdG9yVGltZXN0YW1wOwogICAgICAg
IHU4IFJsbXRNb25pdG9yQWRtaW47Cn0gU0tfUE5NSV9STE1UX01PTklUT1I7Cgp0eXBlZGVmIHN0
cnVjdCBzX1BubWlSZXF1ZXN0U3RhdHVzIHsKICAgICAgICB1MzIgRXJyb3JTdGF0dXM7CiAgICAg
ICAgdTMyIEVycm9yT2Zmc2V0Owp9IFNLX1BOTUlfUkVRVUVTVF9TVEFUVVM7Cgp0eXBlZGVmIHN0
cnVjdCBzX1BubWlTdHJ1Y0RhdGEgewogICAgICAgIHUzMiBNZ210REJWZXJzaW9uOwogICAgICAg
IFNLX1BOTUlfUkVRVUVTVF9TVEFUVVMgUmV0dXJuU3RhdHVzOwogICAgICAgIHUzMiBWcGRGcmVl
Qnl0ZXM7CiAgICAgICAgY2hhciBWcGRFbnRyaWVzTGlzdFsoNTEyIC8gNCkgKiA1XTsKICAgICAg
ICB1MzIgVnBkRW50cmllc051bWJlcjsKICAgICAgICBTS19QTk1JX1ZQRCBWcGRbKDUxMiAvIDQp
XTsKICAgICAgICB1MzIgUG9ydE51bWJlcjsKICAgICAgICB1MzIgRGV2aWNlVHlwZTsKICAgICAg
ICBjaGFyIERyaXZlckRlc2NyWzgwXTsKICAgICAgICBjaGFyIERyaXZlclZlcnNpb25bMjVdOwog
ICAgICAgIGNoYXIgSHdEZXNjcls4MF07CiAgICAgICAgY2hhciBId1ZlcnNpb25bMjVdOwogICAg
ICAgIHUxNiBDaGlwc2V0OwogICAgICAgIHUzMiBNdHVTaXplOwogICAgICAgIHUzMiBBY3Rpb247
CiAgICAgICAgdTMyIFRlc3RSZXN1bHQ7CiAgICAgICAgdTggQnVzVHlwZTsKICAgICAgICB1OCBC
dXNTcGVlZDsKICAgICAgICB1OCBCdXNXaWR0aDsKICAgICAgICB1OCBTZW5zb3JOdW1iZXI7CiAg
ICAgICAgU0tfUE5NSV9TRU5TT1IgU2Vuc29yWyg4KV07CiAgICAgICAgdTggQ2hlY2tzdW1OdW1i
ZXI7CiAgICAgICAgU0tfUE5NSV9DSEVDS1NVTSBDaGVja3N1bVszXTsKICAgICAgICBTS19QTk1J
X1NUQVQgU3RhdFsoMiArIDEpXTsKICAgICAgICBTS19QTk1JX0NPTkYgQ29uZlsoMiArIDEpXTsK
ICAgICAgICB1OCBSbG10TW9kZTsKICAgICAgICB1MzIgUmxtdFBvcnROdW1iZXI7CiAgICAgICAg
dTggUmxtdFBvcnRBY3RpdmU7CiAgICAgICAgdTggUmxtdFBvcnRQcmVmZXJyZWQ7CiAgICAgICAg
dTY0IFJsbXRDaGFuZ2VDdHM7CiAgICAgICAgdTY0IFJsbXRDaGFuZ2VUaW1lOwogICAgICAgIHU2
NCBSbG10Q2hhbmdlRXN0aW1hdGU7CiAgICAgICAgdTY0IFJsbXRDaGFuZ2VUaHJlc2hvbGQ7CiAg
ICAgICAgU0tfUE5NSV9STE1UIFJsbXRbMl07CiAgICAgICAgdTMyIFJsbXRNb25pdG9yTnVtYmVy
OwogICAgICAgIFNLX1BOTUlfUkxNVF9NT05JVE9SIFJsbXRNb25pdG9yWzIwXTsKICAgICAgICB1
MzIgVHJhcE51bWJlcjsKICAgICAgICB1OCBUcmFwWzUxMl07CiAgICAgICAgdTY0IFR4U3dRdWV1
ZUxlbjsKICAgICAgICB1NjQgVHhTd1F1ZXVlTWF4OwogICAgICAgIHU2NCBUeFJldHJ5Q3RzOwog
ICAgICAgIHU2NCBSeEludHJDdHM7CiAgICAgICAgdTY0IFR4SW50ckN0czsKICAgICAgICB1NjQg
UnhOb0J1ZkN0czsKICAgICAgICB1NjQgVHhOb0J1ZkN0czsKICAgICAgICB1NjQgVHhVc2VkRGVz
Y3JObzsKICAgICAgICB1NjQgUnhEZWxpdmVyZWRDdHM7CiAgICAgICAgdTY0IFJ4T2N0ZXRzRGVs
aXZlcmVkQ3RzOwogICAgICAgIHU2NCBSeEh3RXJyb3JzQ3RzOwogICAgICAgIHU2NCBUeEh3RXJy
b3JzQ3RzOwogICAgICAgIHU2NCBJbkVycm9yc0N0czsKICAgICAgICB1NjQgT3V0RXJyb3JzQ3Rz
OwogICAgICAgIHU2NCBFcnJSZWNvdmVyeUN0czsKICAgICAgICB1NjQgU3lzVXBUaW1lOwp9IFNL
X1BOTUlfU1RSVUNUX0RBVEE7CiMgMTAwNSAiaC9za2dlcG5taS5oIgp0eXBlZGVmIHN0cnVjdCBz
X1BubWlFc3RpbWF0ZSB7CiAgICAgICAgdW5zaWduZWQgaW50IEVzdFZhbHVlSW5kZXg7CiAgICAg
ICAgdTY0IEVzdFZhbHVlWzddOwogICAgICAgIHU2NCBFc3RpbWF0ZTsKICAgICAgICBTS19USU1F
UiBFc3RUaW1lcjsKfSBTS19QTk1JX0VTVElNQVRFOwoKCgoKCnR5cGVkZWYgc3RydWN0IHNfVmN0
VGltZXIgewogICAgICAgIFNLX1RJTUVSIFZjdFRpbWVyOwp9IFNLX1BOTUlfVkNUX1RJTUVSOwoK
CgoKCnR5cGVkZWYgc3RydWN0IHNfUG5taVBvcnQgewogICAgICAgIHU2NCBTdGF0U3luY0N0czsK
ICAgICAgICB1NjQgU3RhdFN5bmNPY3RldHNDdHM7CiAgICAgICAgdTY0IFN0YXRSeExvbmdGcmFt
ZUN0czsKICAgICAgICB1NjQgU3RhdFJ4RnJhbWVUb29Mb25nQ3RzOwogICAgICAgIHU2NCBTdGF0
UnhQTWFjY0VycjsKICAgICAgICB1NjQgVHhTd1F1ZXVlTGVuOwogICAgICAgIHU2NCBUeFN3UXVl
dWVNYXg7CiAgICAgICAgdTY0IFR4UmV0cnlDdHM7CiAgICAgICAgdTY0IFJ4SW50ckN0czsKICAg
ICAgICB1NjQgVHhJbnRyQ3RzOwogICAgICAgIHU2NCBSeE5vQnVmQ3RzOwogICAgICAgIHU2NCBU
eE5vQnVmQ3RzOwogICAgICAgIHU2NCBUeFVzZWREZXNjck5vOwogICAgICAgIHU2NCBSeERlbGl2
ZXJlZEN0czsKICAgICAgICB1NjQgUnhPY3RldHNEZWxpdmVyZWRDdHM7CiAgICAgICAgdTY0IFJ4
SHdFcnJvcnNDdHM7CiAgICAgICAgdTY0IFR4SHdFcnJvcnNDdHM7CiAgICAgICAgdTY0IEluRXJy
b3JzQ3RzOwogICAgICAgIHU2NCBPdXRFcnJvcnNDdHM7CiAgICAgICAgdTY0IEVyclJlY292ZXJ5
Q3RzOwogICAgICAgIHU2NCBSeFNob3J0WmVyb01hcms7CiAgICAgICAgdTY0IENvdW50ZXJPZmZz
ZXRbNjZdOwogICAgICAgIHUzMiBDb3VudGVySGlnaFs2Nl07CiAgICAgICAgdTggQWN0aXZlRmxh
ZzsKICAgICAgICB1OCBBbGlnblszXTsKfSBTS19QTk1JX1BPUlQ7CgoKdHlwZWRlZiBzdHJ1Y3Qg
c19Qbm1pRGF0YSB7CiAgICAgICAgU0tfUE5NSV9QT1JUIFBvcnQgWzJdOwogICAgICAgIFNLX1BO
TUlfUE9SVCBCdWZQb3J0IFsyXTsKICAgICAgICB1NjQgVmlydHVhbENvdW50ZXJPZmZzZXRbNjZd
OwogICAgICAgIHUzMiBUZXN0UmVzdWx0OwogICAgICAgIGNoYXIgSHdWZXJzaW9uWzEwXTsKICAg
ICAgICB1MTYgQWxpZ24wMTsKCiAgICAgICAgY2hhciAqcERyaXZlckRlc2NyaXB0aW9uOwogICAg
ICAgIGNoYXIgKnBEcml2ZXJWZXJzaW9uOwoKICAgICAgICBpbnQgTWFjVXBkYXRlZEZsYWc7CiAg
ICAgICAgaW50IFJsbXRVcGRhdGVkRmxhZzsKICAgICAgICBpbnQgU2lycVVwZGF0ZWRGbGFnOwoK
ICAgICAgICB1NjQgUmxtdENoYW5nZUN0czsKICAgICAgICB1NjQgUmxtdENoYW5nZVRpbWU7CiAg
ICAgICAgU0tfUE5NSV9FU1RJTUFURSBSbG10Q2hhbmdlRXN0aW1hdGU7CiAgICAgICAgdTY0IFJs
bXRDaGFuZ2VUaHJlc2hvbGQ7CgogICAgICAgIHU2NCBTdGFydFVwVGltZTsKICAgICAgICB1MzIg
RGV2aWNlVHlwZTsKICAgICAgICBjaGFyIFBjaUJ1c1NwZWVkOwogICAgICAgIGNoYXIgUGNpQnVz
V2lkdGg7CiAgICAgICAgY2hhciBDaGlwc2V0OwogICAgICAgIGNoYXIgUE1EOwogICAgICAgIGNo
YXIgQ29ubmVjdG9yOwogICAgICAgIHU4IER1YWxOZXRBY3RpdmVGbGFnOwogICAgICAgIHUxNiBB
bGlnbjAyOwoKICAgICAgICBjaGFyIFRyYXBCdWZbNTEyXTsKICAgICAgICB1bnNpZ25lZCBpbnQg
VHJhcEJ1ZkZyZWU7CiAgICAgICAgdW5zaWduZWQgaW50IFRyYXBRdWV1ZUJlZzsKICAgICAgICB1
bnNpZ25lZCBpbnQgVHJhcFF1ZXVlRW5kOwogICAgICAgIHVuc2lnbmVkIGludCBUcmFwQnVmUGFk
OwogICAgICAgIHVuc2lnbmVkIGludCBUcmFwVW5pcXVlOwogICAgICAgIHU4IFZjdFN0YXR1c1sy
XTsKICAgICAgICBTS19QTk1JX1ZDVCBWY3RCYWNrdXBbMl07CiAgICAgICAgU0tfUE5NSV9WQ1Rf
VElNRVIgVmN0VGltZW91dFsyXTsKfSBTS19QTk1JOwoKCgoKCmV4dGVybiBpbnQgU2tQbm1pSW5p
dChTS19BQyAqcEFjLCBjaGFyKiBJb0MsIGludCBsZXZlbCk7CmV4dGVybiBpbnQgU2tQbm1pR2V0
VmFyKFNLX0FDICpwQWMsIGNoYXIqIElvQywgdTMyIElkLCB2b2lkKiBwQnVmLAogICAgICAgIHVu
c2lnbmVkIGludCogcExlbiwgdTMyIEluc3RhbmNlLCB1MzIgTmV0SW5kZXgpOwpleHRlcm4gaW50
IFNrUG5taVByZVNldFZhcihTS19BQyAqcEFjLCBjaGFyKiBJb0MsIHUzMiBJZCwKICAgICAgICB2
b2lkKiBwQnVmLCB1bnNpZ25lZCBpbnQgKnBMZW4sIHUzMiBJbnN0YW5jZSwgdTMyIE5ldEluZGV4
KTsKZXh0ZXJuIGludCBTa1BubWlTZXRWYXIoU0tfQUMgKnBBYywgY2hhciogSW9DLCB1MzIgSWQs
IHZvaWQqIHBCdWYsCiAgICAgICAgdW5zaWduZWQgaW50ICpwTGVuLCB1MzIgSW5zdGFuY2UsIHUz
MiBOZXRJbmRleCk7CmV4dGVybiBpbnQgU2tQbm1pR2V0U3RydWN0KFNLX0FDICpwQWMsIGNoYXIq
IElvQywgdm9pZCogcEJ1ZiwKICAgICAgICB1bnNpZ25lZCBpbnQgKnBMZW4sIHUzMiBOZXRJbmRl
eCk7CmV4dGVybiBpbnQgU2tQbm1pUHJlU2V0U3RydWN0KFNLX0FDICpwQWMsIGNoYXIqIElvQywg
dm9pZCogcEJ1ZiwKICAgICAgICB1bnNpZ25lZCBpbnQgKnBMZW4sIHUzMiBOZXRJbmRleCk7CmV4
dGVybiBpbnQgU2tQbm1pU2V0U3RydWN0KFNLX0FDICpwQWMsIGNoYXIqIElvQywgdm9pZCogcEJ1
ZiwKICAgICAgICB1bnNpZ25lZCBpbnQgKnBMZW4sIHUzMiBOZXRJbmRleCk7CmV4dGVybiBpbnQg
U2tQbm1pRXZlbnQoU0tfQUMgKnBBYywgY2hhciogSW9DLCB1MzIgRXZlbnQsCiAgICAgICAgU0tf
RVZQQVJBIFBhcmFtKTsKIyA0NDUgInNrZ2Vwbm1pLmMiIDIKIyAxICJoL3NrZ2VzaXJxLmgiIDEK
IyAxODkgImgvc2tnZXNpcnEuaCIKZXh0ZXJuIHZvaWQgU2tHZVNpcnFJc3IoU0tfQUMgKnBBQywg
Y2hhciogSW9DLCB1MzIgSXN0YXR1cyk7CmV4dGVybiBpbnQgU2tHZVNpcnFFdmVudChTS19BQyAq
cEFDLCBjaGFyKiBJb0MsIHUzMiBFdmVudCwgU0tfRVZQQVJBIFBhcmEpOwpleHRlcm4gdm9pZCBT
a0hXTGlua1VwKFNLX0FDICpwQUMsIGNoYXIqIElvQywgaW50IFBvcnQpOwpleHRlcm4gdm9pZCBT
a0hXTGlua0Rvd24oU0tfQUMgKnBBQywgY2hhciogSW9DLCBpbnQgUG9ydCk7CiMgNDQ2ICJza2dl
cG5taS5jIiAyCiMgMSAiaC9za2NzdW0uaCIgMQojIDE4OCAiaC9za2NzdW0uaCIKdHlwZWRlZiBz
dHJ1Y3Qgc19Dc1Byb3RvY29sU3RhdGlzdGljcyB7CiAgICAgICAgdTY0IFJ4T2tDdHM7CiAgICAg
ICAgdTY0IFJ4VW5hYmxlQ3RzOwogICAgICAgIHU2NCBSeEVyckN0czsKICAgICAgICB1NjQgVHhP
a0N0czsKICAgICAgICB1NjQgVHhVbmFibGVDdHM7Cn0gU0tDU19QUk9UT19TVEFUUzsKCgoKCnR5
cGVkZWYgc3RydWN0IHNfQ3N1bSB7CgogICAgICAgIHVuc2lnbmVkIFJlY2VpdmVGbGFnc1syXTsK
CgoKCgogICAgICAgIFNLQ1NfUFJPVE9fU1RBVFMgUHJvdG9TdGF0c1syXVszXTsKfSBTS19DU1VN
OwoKCgoKdHlwZWRlZiBzdHJ1Y3Qgc19Dc1BhY2tldEluZm8gewoKICAgICAgICB1bnNpZ25lZCBQ
cm90b2NvbEZsYWdzOwoKCiAgICAgICAgdW5zaWduZWQgSXBIZWFkZXJMZW5ndGg7CgoKICAgICAg
ICB1bnNpZ25lZCBJcEhlYWRlckNoZWNrc3VtOwoKCiAgICAgICAgdW5zaWduZWQgUHNldWRvSGVh
ZGVyQ2hlY2tzdW07Cn0gU0tDU19QQUNLRVRfSU5GTzsKIyAyMzUgImgvc2tjc3VtLmgiCmV4dGVy
biBpbnQgU2tDc0V2ZW50KAogICAgICAgIFNLX0FDICpwQWMsCiAgICAgICAgY2hhciogSW9jLAog
ICAgICAgIHUzMiBFdmVudCwKICAgICAgICBTS19FVlBBUkEgUGFyYW0pOwoKZXh0ZXJuIGludCBT
a0NzR2V0UmVjZWl2ZUluZm8oCiAgICAgICAgU0tfQUMgKnBBYywKICAgICAgICB2b2lkICpwSXBI
ZWFkZXIsCiAgICAgICAgdW5zaWduZWQgQ2hlY2tzdW0xLAogICAgICAgIHVuc2lnbmVkIENoZWNr
c3VtMiwKICAgICAgICBpbnQgTmV0TnVtYmVyKTsKCmV4dGVybiB2b2lkIFNrQ3NHZXRTZW5kSW5m
bygKICAgICAgICBTS19BQyAqcEFjLAogICAgICAgIHZvaWQgKnBJcEhlYWRlciwKICAgICAgICBT
S0NTX1BBQ0tFVF9JTkZPICpwUGFja2V0SW5mbywKICAgICAgICBpbnQgTmV0TnVtYmVyKTsKCmV4
dGVybiB2b2lkIFNrQ3NTZXRSZWNlaXZlRmxhZ3MoCiAgICAgICAgU0tfQUMgKnBBYywKICAgICAg
ICB1bnNpZ25lZCBSZWNlaXZlRmxhZ3MsCiAgICAgICAgdW5zaWduZWQgKnBDaGVja3N1bTFPZmZz
ZXQsCiAgICAgICAgdW5zaWduZWQgKnBDaGVja3N1bTJPZmZzZXQsCiAgICAgICAgaW50IE5ldE51
bWJlcik7CiMgNDQ3ICJza2dlcG5taS5jIiAyCgojIDEgImgvc2tnZWh3LmgiIDEKIyAxNzg2ICJo
L3NrZ2Vody5oIgp0eXBlZGVmIHN0cnVjdCBzX0h3VHhkIHsKICAgICAgICB1MzIgdm9sYXRpbGUg
VHhDdHJsOwogICAgICAgIHUzMiBUeE5leHQ7CiAgICAgICAgdTMyIFR4QWRyTG87CiAgICAgICAg
dTMyIFR4QWRySGk7CiAgICAgICAgdTMyIFR4U3RhdDsKCiAgICAgICAgdTE2IFR4VGNwT2ZmczsK
ICAgICAgICB1MTYgVHhSZXMxOwogICAgICAgIHUxNiBUeFRjcFdwOwogICAgICAgIHUxNiBUeFRj
cFNwOwoKCgoKCgogICAgICAgIHUzMiBUeFJlczI7Cn0gU0tfSFdUWEQ7CgoKdHlwZWRlZiBzdHJ1
Y3Qgc19Id1J4ZCB7CiAgICAgICAgdTMyIHZvbGF0aWxlIFJ4Q3RybDsKICAgICAgICB1MzIgUnhO
ZXh0OwogICAgICAgIHUzMiBSeEFkckxvOwogICAgICAgIHUzMiBSeEFkckhpOwogICAgICAgIHUz
MiBSeFN0YXQ7CiAgICAgICAgdTMyIFJ4VGlTdDsKCiAgICAgICAgdTE2IFJ4VGNwU3VtMTsKICAg
ICAgICB1MTYgUnhUY3BTdW0yOwogICAgICAgIHUxNiBSeFRjcFNwMTsKICAgICAgICB1MTYgUnhU
Y3BTcDI7CgoKCgoKCn0gU0tfSFdSWEQ7CiMgNDQ5ICJza2dlcG5taS5jIiAyCiMgMSAiaC9za2dl
aW5pdC5oIiAxCiMgNTk4ICJoL3NrZ2Vpbml0LmgiCnR5cGVkZWYgc3RydWN0IHNfR2VNYWNGdW5j
IHsKICAgICAgICBpbnQgKCpwRm5NYWNVcGRhdGVTdGF0cykoU0tfQUMgKnBBQywgY2hhciogSW9D
LCB1bnNpZ25lZCBpbnQgUG9ydCk7CiAgICAgICAgaW50ICgqcEZuTWFjU3RhdGlzdGljKShTS19B
QyAqcEFDLCBjaGFyKiBJb0MsIHVuc2lnbmVkIGludCBQb3J0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBTdGF0QWRkciwgdTMyICpw
VmFsKTsKICAgICAgICBpbnQgKCpwRm5NYWNSZXNldENvdW50ZXIpKFNLX0FDICpwQUMsIGNoYXIq
IElvQywgdW5zaWduZWQgaW50IFBvcnQpOwogICAgICAgIGludCAoKnBGbk1hY092ZXJmbG93KShT
S19BQyAqcEFDLCBjaGFyKiBJb0MsIHVuc2lnbmVkIGludCBQb3J0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MTYgSVN0YXR1cywgdTY0ICpwVmFs
KTsKfSBTS19HRU1BQ0ZVTkM7CgoKCgp0eXBlZGVmIHN0cnVjdCBzX0dlUG9ydCB7CgogICAgICAg
IFNLX1RJTUVSIFBXYVRpbWVyOwogICAgICAgIFNLX1RJTUVSIEhhbGZEdXBDaGtUaW1lcjsKCiAg
ICAgICAgdTMyIFBQcmV2U2hvcnRzOwogICAgICAgIHUzMiBQUHJldkZjczsKICAgICAgICB1NjQg
UFByZXZSeDsKICAgICAgICB1NjQgUFJ4TGltOwogICAgICAgIHU2NCBMYXN0T2N0ZXRzOwogICAg
ICAgIGludCBQTGlua1Jlc0N0OwogICAgICAgIGludCBQQXV0b05lZ1RpbWVPdXQ7CiAgICAgICAg
aW50IFBBdXRvTmVnVE9DdDsKICAgICAgICBpbnQgUFJ4UVNpemU7CiAgICAgICAgaW50IFBYU1FT
aXplOwogICAgICAgIGludCBQWEFRU2l6ZTsKICAgICAgICB1MzIgUFJ4UVJhbVN0YXJ0OwogICAg
ICAgIHUzMiBQUnhRUmFtRW5kOwogICAgICAgIHUzMiBQWHNRUmFtU3RhcnQ7CiAgICAgICAgdTMy
IFBYc1FSYW1FbmQ7CiAgICAgICAgdTMyIFBYYVFSYW1TdGFydDsKICAgICAgICB1MzIgUFhhUVJh
bUVuZDsKICAgICAgICB1MzIgUFJ4T3ZlckNudDsKICAgICAgICBpbnQgUFJ4UU9mZjsKICAgICAg
ICBpbnQgUFhzUU9mZjsKICAgICAgICBpbnQgUFhhUU9mZjsKICAgICAgICBpbnQgUGh5VHlwZTsK
ICAgICAgICB1MTYgUGh5SWQxOwogICAgICAgIHUxNiBQaHlBZGRyOwogICAgICAgIHUxNiBQSXNh
dmU7CiAgICAgICAgdTE2IFBTc2F2ZTsKICAgICAgICB1OCBQSFdMaW5rVXA7CiAgICAgICAgdTgg
UFN0YXRlOwogICAgICAgIHU4IFBMaW5rQnJva2VuOwogICAgICAgIHU4IFBDaGVja1BhcjsKICAg
ICAgICB1OCBIYWxmRHVwVGltZXJBY3RpdmU7CiAgICAgICAgdTggUExpbmtDYXA7CiAgICAgICAg
dTggUExpbmtNb2RlQ29uZjsKICAgICAgICB1OCBQTGlua01vZGU7CiAgICAgICAgdTggUExpbmtN
b2RlU3RhdHVzOwogICAgICAgIHU4IFBMaW5rU3BlZWRDYXA7CiAgICAgICAgdTggUExpbmtTcGVl
ZDsKICAgICAgICB1OCBQTGlua1NwZWVkVXNlZDsKICAgICAgICB1OCBQRmxvd0N0cmxDYXA7CiAg
ICAgICAgdTggUEZsb3dDdHJsTW9kZTsKICAgICAgICB1OCBQRmxvd0N0cmxTdGF0dXM7CiAgICAg
ICAgdTggUE1TQ2FwOwogICAgICAgIHU4IFBNU01vZGU7CiAgICAgICAgdTggUE1TU3RhdHVzOwog
ICAgICAgIHU4IFBBdXRvTmVnRmFpbDsKICAgICAgICB1OCBQTGlwYUF1dG9OZWc7CiAgICAgICAg
dTggUENhYmxlTGVuOwogICAgICAgIHU4IFBNZGlQYWlyTGVuWzRdOwogICAgICAgIHU4IFBNZGlQ
YWlyU3RzWzRdOwp9IFNLX0dFUE9SVDsKCgoKCgp0eXBlZGVmIHN0cnVjdCBzX0dlSW5pdCB7CiAg
ICAgICAgdTggR0lQY2lId1JldjsKICAgICAgICB1OCBHSUNoaXBJZDsKICAgICAgICB1OCBHSUNo
aXBSZXY7CiAgICAgICAgdTggR0lHZW5lc2lzOwogICAgICAgIHU4IEdJQ29wcGVyVHlwZTsKICAg
ICAgICB1OCBHSVBjaVNsb3Q2NDsKICAgICAgICB1OCBHSVBjaUNsb2NrNjY7CiAgICAgICAgdTgg
R0lWYXV4QXZhaWw7CiAgICAgICAgdTggR0lZdWtvbjMyQml0OwogICAgICAgIGludCBHSU1hY3NG
b3VuZDsKICAgICAgICBpbnQgR0lNYWNUeXBlOwogICAgICAgIGludCBHSUhzdENsa0ZhY3Q7CiAg
ICAgICAgaW50IEdJUG9ydFVzYWdlOwogICAgICAgIGludCBHSUxldmVsOwogICAgICAgIGludCBH
SVJhbVNpemU7CiAgICAgICAgaW50IEdJV29sT2ZmczsKICAgICAgICB1MzIgR0lSYW1PZmZzOwog
ICAgICAgIHUzMiBHSVBvbGxUaW1lclZhbDsKICAgICAgICBTS19HRVBPUlQgR1BbMl07CiAgICAg
ICAgU0tfR0VNQUNGVU5DIEdJRnVuYzsKfSBTS19HRUlOSVQ7CiMgNzU0ICJoL3NrZ2Vpbml0Lmgi
CmV4dGVybiB2b2lkIFNrR2VQb2xsUnhEKAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hh
ciogSW9DLAogICAgICAgIGludCBQb3J0LAogICAgICAgIHU4IFBvbGxSeEQpOwoKZXh0ZXJuIHZv
aWQgU2tHZVBvbGxUeEQoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAg
ICAgICAgaW50IFBvcnQsCiAgICAgICAgdTggUG9sbFR4RCk7CgpleHRlcm4gdm9pZCBTa0dlWWVs
bG93TEVEKAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9DLAogICAgICAgIGlu
dCBTdGF0ZSk7CgpleHRlcm4gaW50IFNrR2VDZmdTeW5jKAogICAgICAgIFNLX0FDICpwQUMsCiAg
ICAgICAgY2hhciogSW9DLAogICAgICAgIGludCBQb3J0LAogICAgICAgIHUzMiBJbnRUaW1lLAog
ICAgICAgIHUzMiBMaW1Db3VudCwKICAgICAgICBpbnQgU3luY01vZGUpOwoKZXh0ZXJuIHZvaWQg
U2tHZUxvYWRMbmtTeW5jQ250KAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9D
LAogICAgICAgIGludCBQb3J0LAogICAgICAgIHUzMiBDbnRWYWwpOwoKZXh0ZXJuIHZvaWQgU2tH
ZVN0b3BQb3J0KAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9DLAogICAgICAg
IGludCBQb3J0LAogICAgICAgIGludCBEaXIsCiAgICAgICAgaW50IFJzdE1vZGUpOwoKZXh0ZXJu
IGludCBTa0dlSW5pdCgKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQywKICAg
ICAgICBpbnQgTGV2ZWwpOwoKZXh0ZXJuIHZvaWQgU2tHZURlSW5pdCgKICAgICAgICBTS19BQyAq
cEFDLAogICAgICAgIGNoYXIqIElvQyk7CgpleHRlcm4gaW50IFNrR2VJbml0UG9ydCgKICAgICAg
ICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQywKICAgICAgICBpbnQgUG9ydCk7CgpleHRl
cm4gdm9pZCBTa0dlWG1pdExFRCgKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElv
QywKICAgICAgICBpbnQgTGVkLAogICAgICAgIGludCBNb2RlKTsKCmV4dGVybiB2b2lkIFNrR2VJ
bml0UmFtSWZhY2UoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MpOwoKZXh0
ZXJuIGludCBTa0dlSW5pdEFzc2lnblJhbVRvUXVldWVzKAogICAgICAgIFNLX0FDICpwQUMsCiAg
ICAgICAgaW50IEFjdGl2ZVBvcnQsCiAgICAgICAgdTggRHVhbE5ldCk7CgoKCgpleHRlcm4gdm9p
ZCBTa01hY1J4VHhEaXNhYmxlKAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9D
LAogICAgICAgIGludCBQb3J0KTsKCmV4dGVybiB2b2lkIFNrTWFjU29mdFJzdCgKICAgICAgICBT
S19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQywKICAgICAgICBpbnQgUG9ydCk7CgpleHRlcm4g
dm9pZCBTa01hY0hhcmRSc3QoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0Ms
CiAgICAgICAgaW50IFBvcnQpOwoKZXh0ZXJuIHZvaWQgU2tYbUluaXRNYWMoCiAgICAgICAgU0tf
QUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAgaW50IFBvcnQpOwoKZXh0ZXJuIHZv
aWQgU2tHbUluaXRNYWMoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAg
ICAgICAgaW50IFBvcnQpOwoKZXh0ZXJuIHZvaWQgU2tNYWNJbml0UGh5KAogICAgICAgIFNLX0FD
ICpwQUMsCiAgICAgICAgY2hhciogSW9DLAogICAgICAgIGludCBQb3J0LAogICAgICAgIHU4IERv
TG9vcCk7CgpleHRlcm4gdm9pZCBTa01hY0lycURpc2FibGUoCiAgICAgICAgU0tfQUMgKnBBQywK
ICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAgaW50IFBvcnQpOwoKZXh0ZXJuIHZvaWQgU2tNYWNG
bHVzaFR4RmlmbygKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQywKICAgICAg
ICBpbnQgUG9ydCk7CgpleHRlcm4gdm9pZCBTa01hY0ZsdXNoUnhGaWZvKAogICAgICAgIFNLX0FD
ICpwQUMsCiAgICAgICAgY2hhciogSW9DLAogICAgICAgIGludCBQb3J0KTsKCmV4dGVybiB2b2lk
IFNrTWFjSXJxKAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9DLAogICAgICAg
IGludCBQb3J0KTsKCmV4dGVybiBpbnQgU2tNYWNBdXRvTmVnRG9uZSgKICAgICAgICBTS19BQyAq
cEFDLAogICAgICAgIGNoYXIqIElvQywKICAgICAgICBpbnQgUG9ydCk7CgpleHRlcm4gdm9pZCBT
a01hY0F1dG9OZWdMaXBhUGh5KAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9D
LAogICAgICAgIGludCBQb3J0LAogICAgICAgIHUxNiBJU3RhdHVzKTsKCmV4dGVybiB2b2lkIFNr
TWFjU2V0UnhUeEVuKAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9DLAogICAg
ICAgIGludCBQb3J0LAogICAgICAgIGludCBQYXJhKTsKCmV4dGVybiBpbnQgU2tNYWNSeFR4RW5h
YmxlKAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9DLAogICAgICAgIGludCBQ
b3J0KTsKCmV4dGVybiB2b2lkIFNrTWFjUHJvbWlzY01vZGUoCiAgICAgICAgU0tfQUMgKnBBQywK
ICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAgaW50IFBvcnQsCiAgICAgICAgdTggRW5hYmxlKTsK
CmV4dGVybiB2b2lkIFNrTWFjSGFzaGluZygKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNo
YXIqIElvQywKICAgICAgICBpbnQgUG9ydCwKICAgICAgICB1OCBFbmFibGUpOwoKZXh0ZXJuIHZv
aWQgU2tYbVBoeVJlYWQoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAg
ICAgICAgaW50IFBvcnQsCiAgICAgICAgaW50IEFkZHIsCiAgICAgICAgdTE2ICpwVmFsKTsKCmV4
dGVybiB2b2lkIFNrWG1QaHlXcml0ZSgKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIq
IElvQywKICAgICAgICBpbnQgUG9ydCwKICAgICAgICBpbnQgQWRkciwKICAgICAgICB1MTYgVmFs
KTsKCmV4dGVybiB2b2lkIFNrR21QaHlSZWFkKAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAg
Y2hhciogSW9DLAogICAgICAgIGludCBQb3J0LAogICAgICAgIGludCBBZGRyLAogICAgICAgIHUx
NiAqcFZhbCk7CgpleHRlcm4gdm9pZCBTa0dtUGh5V3JpdGUoCiAgICAgICAgU0tfQUMgKnBBQywK
ICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAgaW50IFBvcnQsCiAgICAgICAgaW50IEFkZHIsCiAg
ICAgICAgdTE2IFZhbCk7CgpleHRlcm4gdm9pZCBTa0dlUGh5UmVhZCgKICAgICAgICBTS19BQyAq
cEFDLAogICAgICAgIGNoYXIqIElvQywKICAgICAgICBpbnQgUG9ydCwKICAgICAgICBpbnQgQWRk
ciwKICAgICAgICB1MTYgKnBWYWwpOwoKZXh0ZXJuIHZvaWQgU2tHZVBoeVdyaXRlKAogICAgICAg
IFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9DLAogICAgICAgIGludCBQb3J0LAogICAgICAg
IGludCBBZGRyLAogICAgICAgIHUxNiBWYWwpOwoKZXh0ZXJuIHZvaWQgU2tYbUNsckV4YWN0QWRk
cigKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQywKICAgICAgICBpbnQgUG9y
dCwKICAgICAgICBpbnQgU3RhcnROdW0sCiAgICAgICAgaW50IFN0b3BOdW0pOwoKZXh0ZXJuIHZv
aWQgU2tYbUluaXREdXBNZCgKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQywK
ICAgICAgICBpbnQgUG9ydCk7CgpleHRlcm4gdm9pZCBTa1htSW5pdFBhdXNlTWQoCiAgICAgICAg
U0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAgaW50IFBvcnQpOwoKZXh0ZXJu
IHZvaWQgU2tYbUF1dG9OZWdMaXBhWG1hYygKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNo
YXIqIElvQywKICAgICAgICBpbnQgUG9ydCwKICAgICAgICB1MTYgSVN0YXR1cyk7CgpleHRlcm4g
aW50IFNrWG1VcGRhdGVTdGF0cygKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElv
QywKICAgICAgICB1bnNpZ25lZCBpbnQgUG9ydCk7CgpleHRlcm4gaW50IFNrR21VcGRhdGVTdGF0
cygKICAgICAgICBTS19BQyAqcEFDLAogICAgICAgIGNoYXIqIElvQywKICAgICAgICB1bnNpZ25l
ZCBpbnQgUG9ydCk7CgpleHRlcm4gaW50IFNrWG1NYWNTdGF0aXN0aWMoCiAgICAgICAgU0tfQUMg
KnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAgdW5zaWduZWQgaW50IFBvcnQsCiAgICAg
ICAgdTE2IFN0YXRBZGRyLAogICAgICAgIHUzMiAqcFZhbCk7CgpleHRlcm4gaW50IFNrR21NYWNT
dGF0aXN0aWMoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAg
dW5zaWduZWQgaW50IFBvcnQsCiAgICAgICAgdTE2IFN0YXRBZGRyLAogICAgICAgIHUzMiAqcFZh
bCk7CgpleHRlcm4gaW50IFNrWG1SZXNldENvdW50ZXIoCiAgICAgICAgU0tfQUMgKnBBQywKICAg
ICAgICBjaGFyKiBJb0MsCiAgICAgICAgdW5zaWduZWQgaW50IFBvcnQpOwoKZXh0ZXJuIGludCBT
a0dtUmVzZXRDb3VudGVyKAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9DLAog
ICAgICAgIHVuc2lnbmVkIGludCBQb3J0KTsKCmV4dGVybiBpbnQgU2tYbU92ZXJmbG93U3RhdHVz
KAogICAgICAgIFNLX0FDICpwQUMsCiAgICAgICAgY2hhciogSW9DLAogICAgICAgIHVuc2lnbmVk
IGludCBQb3J0LAogICAgICAgIHUxNiBJU3RhdHVzLAogICAgICAgIHU2NCAqcFN0YXR1cyk7Cgpl
eHRlcm4gaW50IFNrR21PdmVyZmxvd1N0YXR1cygKICAgICAgICBTS19BQyAqcEFDLAogICAgICAg
IGNoYXIqIElvQywKICAgICAgICB1bnNpZ25lZCBpbnQgUG9ydCwKICAgICAgICB1MTYgTWFjU3Rh
dHVzLAogICAgICAgIHU2NCAqcFN0YXR1cyk7CgpleHRlcm4gaW50IFNrR21DYWJsZURpYWdTdGF0
dXMoCiAgICAgICAgU0tfQUMgKnBBQywKICAgICAgICBjaGFyKiBJb0MsCiAgICAgICAgaW50IFBv
cnQsCiAgICAgICAgdTggU3RhcnRUZXN0KTsKIyA0NTAgInNrZ2Vwbm1pLmMiIDIKIyAxICJoL3Nr
ZHJ2Mm5kLmgiIDEKIyAxMDQgImgvc2tkcnYybmQuaCIKIyAxICJoL3NrZ2Vod3QuaCIgMQojIDYz
ICJoL3NrZ2Vod3QuaCIKdHlwZWRlZiBzdHJ1Y3Qgc19Id3QgewogICAgICAgIHUzMiBUU3RhcnQg
OwogICAgICAgIHUzMiBUU3RvcCA7CiAgICAgICAgaW50IFRBY3RpdmUgOwp9IFNLX0hXVDsKCmV4
dGVybiB2b2lkIFNrSHd0SW5pdChTS19BQyAqcEFDLCBjaGFyKiBJb2MpOwpleHRlcm4gdm9pZCBT
a0h3dFN0YXJ0KFNLX0FDICpwQUMsIGNoYXIqIElvYywgdTMyIFRpbWUpOwpleHRlcm4gdm9pZCBT
a0h3dFN0b3AoU0tfQUMgKnBBQywgY2hhciogSW9jKTsKZXh0ZXJuIHUzMiBTa0h3dFJlYWQoU0tf
QUMgKnBBQyxjaGFyKiBJb2MpOwpleHRlcm4gdm9pZCBTa0h3dElzcihTS19BQyAqcEFDLCBjaGFy
KiBJb2MpOwojIDEwNSAiaC9za2RydjJuZC5oIiAyCiMgMTE1ICJoL3NrZHJ2Mm5kLmgiCiMgMSAi
aC9za2dlZHJ2LmgiIDEKIyAxMTYgImgvc2tkcnYybmQuaCIgMgoKCmV4dGVybiBTS19NQlVGICpT
a0RydkFsbG9jUmxtdE1idWYoU0tfQUMqLCBjaGFyKiwgdW5zaWduZWQpOwpleHRlcm4gdm9pZCBT
a0RydkZyZWVSbG10TWJ1ZihTS19BQyosIGNoYXIqLCBTS19NQlVGKik7CmV4dGVybiB1NjQgU2tP
c0dldFRpbWUoU0tfQUMqKTsKZXh0ZXJuIGludCBTa1BjaVJlYWRDZmdEV29yZChTS19BQyosIGlu
dCwgdTMyKik7CmV4dGVybiBpbnQgU2tQY2lSZWFkQ2ZnV29yZChTS19BQyosIGludCwgdTE2Kik7
CmV4dGVybiBpbnQgU2tQY2lSZWFkQ2ZnQnl0ZShTS19BQyosIGludCwgdTgqKTsKZXh0ZXJuIGlu
dCBTa1BjaVdyaXRlQ2ZnRFdvcmQoU0tfQUMqLCBpbnQsIHUzMik7CmV4dGVybiBpbnQgU2tQY2lX
cml0ZUNmZ1dvcmQoU0tfQUMqLCBpbnQsIHUxNik7CmV4dGVybiBpbnQgU2tQY2lXcml0ZUNmZ0J5
dGUoU0tfQUMqLCBpbnQsIHU4KTsKZXh0ZXJuIGludCBTa0RydkV2ZW50KFNLX0FDKiwgY2hhciog
SW9DLCB1MzIsIFNLX0VWUEFSQSk7CgpzdHJ1Y3Qgc19EcnZSbG10TWJ1ZiB7CiAgICAgICAgU0tf
TUJVRiAqcE5leHQ7CiAgICAgICAgdTggKnBEYXRhOwogICAgICAgIHVuc2lnbmVkIFNpemU7CiAg
ICAgICAgdW5zaWduZWQgTGVuZ3RoOwogICAgICAgIHUzMiBQb3J0SWR4OwoKCgogICAgICAgIHN0
cnVjdCBza19idWZmICpwT3M7Cn07CiMgMTUxICJoL3NrZHJ2Mm5kLmgiCnR5cGVkZWYgc3RydWN0
IHNfSU9DVEwgU0tfR0VfSU9DVEw7CgpzdHJ1Y3Qgc19JT0NUTCB7CiAgICAgICAgY2hhciogcERh
dGE7CiAgICAgICAgdW5zaWduZWQgaW50IExlbjsKfTsKIyAyMDAgImgvc2tkcnYybmQuaCIKdHlw
ZWRlZiBzdHJ1Y3Qgc19SeEQgUlhEOwoKc3RydWN0IHNfUnhEIHsKICAgICAgICB2b2xhdGlsZSB1
MzIgUkJDb250cm9sOwogICAgICAgIHUzMiBWTmV4dFJ4ZDsKICAgICAgICB1MzIgVkRhdGFMb3c7
CiAgICAgICAgdTMyIFZEYXRhSGlnaDsKICAgICAgICB1MzIgRnJhbWVTdGF0OwogICAgICAgIHUz
MiBUaW1lU3RhbXA7CiAgICAgICAgdTMyIFRjcFN1bXM7CiAgICAgICAgdTMyIFRjcFN1bVN0YXJ0
czsKICAgICAgICBSWEQgKnBOZXh0UnhkOwogICAgICAgIHN0cnVjdCBza19idWZmICpwTUJ1ZjsK
fTsKCnR5cGVkZWYgc3RydWN0IHNfVHhEIFRYRDsKCnN0cnVjdCBzX1R4RCB7CiAgICAgICAgdm9s
YXRpbGUgdTMyIFRCQ29udHJvbDsKICAgICAgICB1MzIgVk5leHRUeGQ7CiAgICAgICAgdTMyIFZE
YXRhTG93OwogICAgICAgIHUzMiBWRGF0YUhpZ2g7CiAgICAgICAgdTMyIEZyYW1lU3RhdDsKICAg
ICAgICB1MzIgVGNwU3VtT2ZzOwogICAgICAgIHUxNiBUY3BTdW1TdDsKICAgICAgICB1MTYgVGNw
U3VtV3I7CiAgICAgICAgdTMyIFRjcFJlc2VydmVkOwogICAgICAgIFRYRCAqcE5leHRUeGQ7CiAg
ICAgICAgc3RydWN0IHNrX2J1ZmYgKnBNQnVmOwp9OwojIDM4MiAiaC9za2RydjJuZC5oIgp0eXBl
ZGVmIHN0cnVjdCBzX0Rldk5ldCBERVZfTkVUOwoKc3RydWN0IHNfRGV2TmV0IHsKICAgICAgICBp
bnQgUG9ydE5yOwogICAgICAgIGludCBOZXROcjsKICAgICAgICBpbnQgTXR1OwogICAgICAgIGlu
dCBVcDsKICAgICAgICBTS19BQyAqcEFDOwp9OwoKdHlwZWRlZiBzdHJ1Y3Qgc19UeFBvcnQgVFhf
UE9SVDsKCnN0cnVjdCBzX1R4UG9ydCB7CgogICAgICAgIGNhZGRyX3QgcFR4RGVzY3JSaW5nOwog
ICAgICAgIHU2NCBWVHhEZXNjclJpbmc7CiAgICAgICAgVFhEICpwVHhkUmluZ0hlYWQ7CiAgICAg
ICAgVFhEICpwVHhkUmluZ1RhaWw7CiAgICAgICAgVFhEICpwVHhkUmluZ1ByZXY7CiAgICAgICAg
aW50IFR4ZFJpbmdGcmVlOwogICAgICAgIHNwaW5sb2NrX3QgVHhEZXNSaW5nTG9jazsKICAgICAg
ICBjYWRkcl90IEh3QWRkcjsKICAgICAgICBpbnQgUG9ydEluZGV4Owp9OwoKdHlwZWRlZiBzdHJ1
Y3Qgc19SeFBvcnQgUlhfUE9SVDsKCnN0cnVjdCBzX1J4UG9ydCB7CgogICAgICAgIGNhZGRyX3Qg
cFJ4RGVzY3JSaW5nOwogICAgICAgIHU2NCBWUnhEZXNjclJpbmc7CiAgICAgICAgUlhEICpwUnhk
UmluZ0hlYWQ7CiAgICAgICAgUlhEICpwUnhkUmluZ1RhaWw7CiAgICAgICAgUlhEICpwUnhkUmlu
Z1ByZXY7CiAgICAgICAgaW50IFJ4ZFJpbmdGcmVlOwogICAgICAgIHNwaW5sb2NrX3QgUnhEZXNS
aW5nTG9jazsKICAgICAgICBpbnQgUnhGaWxsTGltaXQ7CiAgICAgICAgY2FkZHJfdCBId0FkZHI7
CiAgICAgICAgaW50IFBvcnRJbmRleDsKfTsKCnR5cGVkZWYgc3RydWN0IHNfUGVyU3RybSBQRVJf
U1RSTTsKIyA0MzIgImgvc2tkcnYybmQuaCIKc3RydWN0IHNfQUMgewogICAgICAgIFNLX0dFSU5J
VCBHSW5pOwogICAgICAgIFNLX1BOTUkgUG5taTsKICAgICAgICBTS19WUEQgdnBkOwogICAgICAg
IFNLX1FVRVVFIEV2ZW50OwogICAgICAgIFNLX0hXVCBId3Q7CiAgICAgICAgU0tfVElNQ1RSTCBU
aW07CiAgICAgICAgU0tfSTJDIEkyYzsKICAgICAgICBTS19BRERSIEFkZHI7CiAgICAgICAgU0tf
Q1NVTSBDc3VtOwogICAgICAgIFNLX1JMTVQgUmxtdDsKICAgICAgICBzcGlubG9ja190IFNsb3dQ
YXRoTG9jazsKICAgICAgICBTS19QTk1JX1NUUlVDVF9EQVRBIFBubWlTdHJ1Y3Q7CiAgICAgICAg
aW50IFJsbXRNb2RlOwogICAgICAgIGludCBSbG10TmV0czsKCiAgICAgICAgY2hhciogSW9CYXNl
OwogICAgICAgIGludCBCb2FyZExldmVsOwogICAgICAgIGNoYXIgRGV2aWNlU3RyWzgwXTsKICAg
ICAgICB1MzIgQWxsb2NGbGFnOwogICAgICAgIHN0cnVjdCBwY2lfZGV2ICpQY2lEZXY7CiAgICAg
ICAgdTMyIFBjaURldklkOwogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXZbMl07CiAgICAg
ICAgY2hhciBOYW1lWzMwXTsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqTmV4dDsKICAgICAg
ICBpbnQgUnhCdWZTaXplOwogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzIHN0YXRzOwog
ICAgICAgIGludCBJbmRleDsKCgogICAgICAgIGludCBSeFF1ZXVlU2l6ZTsKICAgICAgICBpbnQg
VHhTUXVldWVTaXplOwogICAgICAgIGludCBUeEFRdWV1ZVNpemU7CgogICAgICAgIGludCBQcm9t
aXNjQ291bnQ7CiAgICAgICAgaW50IEFsbE11bHRpQ291bnQ7CiAgICAgICAgaW50IE11bHRpY0Nv
dW50OwoKCgogICAgICAgIGludCBIV1JldmlzaW9uOwogICAgICAgIGludCBBY3RpdmVQb3J0Owog
ICAgICAgIGludCBNYXhQb3J0czsKICAgICAgICBpbnQgVHhEZXNjclBlclJpbmc7CiAgICAgICAg
aW50IFJ4RGVzY3JQZXJSaW5nOwoKICAgICAgICBjYWRkcl90IHBEZXNjck1lbTsKICAgICAgICBk
bWFfYWRkcl90IHBEZXNjck1lbURNQTsKCgogICAgICAgIFRYX1BPUlQgVHhQb3J0WzJdWzJdOwog
ICAgICAgIFJYX1BPUlQgUnhQb3J0WzJdOwoKICAgICAgICB1bnNpZ25lZCBpbnQgQ3NPZnMxOwog
ICAgICAgIHVuc2lnbmVkIGludCBDc09mczI7CiAgICAgICAgdTMyIENzT2ZzOwoKICAgICAgICB1
OCBDaGVja1F1ZXVlOwoKCiAgICAgICAgaW50IFBvcnRVcDsKICAgICAgICBpbnQgUG9ydERvd247
Cgp9OwojIDQ1MSAic2tnZXBubWkuYyIgMgojIDEgImgvc2tnZXBubTIuaCIgMQojIDIxOCAiaC9z
a2dlcG5tMi5oIgp0eXBlZGVmIHN0cnVjdCBzX09pZFRhYkVudHJ5IHsKICAgICAgICB1MzIgSWQ7
CiAgICAgICAgdTMyIEluc3RhbmNlTm87CiAgICAgICAgdW5zaWduZWQgaW50IFN0cnVjdFNpemU7
CiAgICAgICAgdW5zaWduZWQgaW50IE9mZnNldDsKICAgICAgICBpbnQgQWNjZXNzOwogICAgICAg
IGludCAoKiBGdW5jKShTS19BQyAqcEFjLCBjaGFyKiBwSW8sIGludCBhY3Rpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBJZCwg
Y2hhciogcEJ1ZiwgdW5zaWduZWQgaW50KiBwTGVuLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgSW5zdGFuY2UsIHVuc2lnbmVkIGlu
dCBUYWJsZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1MzIgTmV0TnVtYmVyKTsKICAgICAgICB1MTYgUGFyYW07Cn0gU0tfUE5N
SV9UQUJfRU5UUlk7CiMgMjQ4ICJoL3NrZ2Vwbm0yLmgiCmVudW0gU0tfTUFDU1RBVFMgewogICAg
ICAgIFNLX1BOTUlfSFRYID0gMCwKICAgICAgICBTS19QTk1JX0hUWF9PQ1RFVCwKICAgICAgICBT
S19QTk1JX0hUWF9PQ1RFVEhJR0ggPSBTS19QTk1JX0hUWF9PQ1RFVCwKICAgICAgICBTS19QTk1J
X0hUWF9PQ1RFVExPVywKICAgICAgICBTS19QTk1JX0hUWF9CUk9BRENBU1QsCiAgICAgICAgU0tf
UE5NSV9IVFhfTVVMVElDQVNULAogICAgICAgIFNLX1BOTUlfSFRYX1VOSUNBU1QsCiAgICAgICAg
U0tfUE5NSV9IVFhfQlVSU1QsCiAgICAgICAgU0tfUE5NSV9IVFhfUE1BQ0MsCiAgICAgICAgU0tf
UE5NSV9IVFhfTUFDQywKICAgICAgICBTS19QTk1JX0hUWF9DT0wsCiAgICAgICAgU0tfUE5NSV9I
VFhfU0lOR0xFX0NPTCwKICAgICAgICBTS19QTk1JX0hUWF9NVUxUSV9DT0wsCiAgICAgICAgU0tf
UE5NSV9IVFhfRVhDRVNTX0NPTCwKICAgICAgICBTS19QTk1JX0hUWF9MQVRFX0NPTCwKICAgICAg
ICBTS19QTk1JX0hUWF9ERUZGRVJBTCwKICAgICAgICBTS19QTk1JX0hUWF9FWENFU1NfREVGLAog
ICAgICAgIFNLX1BOTUlfSFRYX1VOREVSUlVOLAogICAgICAgIFNLX1BOTUlfSFRYX0NBUlJJRVIs
CiAgICAgICAgU0tfUE5NSV9IVFhfVVRJTFVOREVSLAogICAgICAgIFNLX1BOTUlfSFRYX1VUSUxP
VkVSLAogICAgICAgIFNLX1BOTUlfSFRYXzY0LAogICAgICAgIFNLX1BOTUlfSFRYXzEyNywKICAg
ICAgICBTS19QTk1JX0hUWF8yNTUsCiAgICAgICAgU0tfUE5NSV9IVFhfNTExLAogICAgICAgIFNL
X1BOTUlfSFRYXzEwMjMsCiAgICAgICAgU0tfUE5NSV9IVFhfTUFYLAogICAgICAgIFNLX1BOTUlf
SFRYX0xPTkdGUkFNRVMsCiAgICAgICAgU0tfUE5NSV9IVFhfU1lOQywKICAgICAgICBTS19QTk1J
X0hUWF9TWU5DX09DVEVULAogICAgICAgIFNLX1BOTUlfSFRYX1JFU0VSVkVELAoKICAgICAgICBT
S19QTk1JX0hSWCwKICAgICAgICBTS19QTk1JX0hSWF9PQ1RFVCwKICAgICAgICBTS19QTk1JX0hS
WF9PQ1RFVEhJR0ggPSBTS19QTk1JX0hSWF9PQ1RFVCwKICAgICAgICBTS19QTk1JX0hSWF9PQ1RF
VExPVywKICAgICAgICBTS19QTk1JX0hSWF9CQURPQ1RFVCwKICAgICAgICBTS19QTk1JX0hSWF9C
QURPQ1RFVEhJR0ggPSBTS19QTk1JX0hSWF9CQURPQ1RFVCwKICAgICAgICBTS19QTk1JX0hSWF9C
QURPQ1RFVExPVywKICAgICAgICBTS19QTk1JX0hSWF9CUk9BRENBU1QsCiAgICAgICAgU0tfUE5N
SV9IUlhfTVVMVElDQVNULAogICAgICAgIFNLX1BOTUlfSFJYX1VOSUNBU1QsCiAgICAgICAgU0tf
UE5NSV9IUlhfUE1BQ0MsCiAgICAgICAgU0tfUE5NSV9IUlhfTUFDQywKICAgICAgICBTS19QTk1J
X0hSWF9QTUFDQ19FUlIsCiAgICAgICAgU0tfUE5NSV9IUlhfTUFDQ19VTktXTiwKICAgICAgICBT
S19QTk1JX0hSWF9CVVJTVCwKICAgICAgICBTS19QTk1JX0hSWF9NSVNTRUQsCiAgICAgICAgU0tf
UE5NSV9IUlhfRlJBTUlORywKICAgICAgICBTS19QTk1JX0hSWF9VTkRFUlNJWkUsCiAgICAgICAg
U0tfUE5NSV9IUlhfT1ZFUkZMT1csCiAgICAgICAgU0tfUE5NSV9IUlhfSkFCQkVSLAogICAgICAg
IFNLX1BOTUlfSFJYX0NBUlJJRVIsCiAgICAgICAgU0tfUE5NSV9IUlhfSVJMRU5HVEgsCiAgICAg
ICAgU0tfUE5NSV9IUlhfU1lNQk9MLAogICAgICAgIFNLX1BOTUlfSFJYX1NIT1JUUywKICAgICAg
ICBTS19QTk1JX0hSWF9SVU5ULAogICAgICAgIFNLX1BOTUlfSFJYX1RPT19MT05HLAogICAgICAg
IFNLX1BOTUlfSFJYX0ZDUywKICAgICAgICBTS19QTk1JX0hSWF9DRVhULAogICAgICAgIFNLX1BO
TUlfSFJYX1VUSUxVTkRFUiwKICAgICAgICBTS19QTk1JX0hSWF9VVElMT1ZFUiwKICAgICAgICBT
S19QTk1JX0hSWF82NCwKICAgICAgICBTS19QTk1JX0hSWF8xMjcsCiAgICAgICAgU0tfUE5NSV9I
UlhfMjU1LAogICAgICAgIFNLX1BOTUlfSFJYXzUxMSwKICAgICAgICBTS19QTk1JX0hSWF8xMDIz
LAogICAgICAgIFNLX1BOTUlfSFJYX01BWCwKICAgICAgICBTS19QTk1JX0hSWF9MT05HRlJBTUVT
LAoKICAgICAgICBTS19QTk1JX0hSWF9SRVNFUlZFRCwKCiAgICAgICAgU0tfUE5NSV9NQVhfSURY
Cn07CgoKCgp0eXBlZGVmIHN0cnVjdCBzX1BubWlTdGF0QWRkciB7CiAgICAgICAgdTE2IFJlZzsK
ICAgICAgICB1OCBHZXRPZmZzZXQ7Cn0gU0tfUE5NSV9TVEFUQUREUjsKIyA0NTIgInNrZ2Vwbm1p
LmMiIDIKIyA0NjYgInNrZ2Vwbm1pLmMiCmludCBTa1BubWlJbml0KFNLX0FDICpwQUMsIGNoYXIq
IElvQywgaW50IGxldmVsKTsKaW50IFNrUG5taUdldFZhcihTS19BQyAqcEFDLCBjaGFyKiBJb0Ms
IHUzMiBJZCwgdm9pZCAqcEJ1ZiwKICAgICAgICB1bnNpZ25lZCBpbnQgKnBMZW4sIHUzMiBJbnN0
YW5jZSwgdTMyIE5ldEluZGV4KTsKaW50IFNrUG5taVByZVNldFZhcihTS19BQyAqcEFDLCBjaGFy
KiBJb0MsIHUzMiBJZCwgdm9pZCAqcEJ1ZiwKICAgICAgICB1bnNpZ25lZCBpbnQgKnBMZW4sIHUz
MiBJbnN0YW5jZSwgdTMyIE5ldEluZGV4KTsKaW50IFNrUG5taVNldFZhcihTS19BQyAqcEFDLCBj
aGFyKiBJb0MsIHUzMiBJZCwgdm9pZCAqcEJ1ZiwKICAgICAgICB1bnNpZ25lZCBpbnQgKnBMZW4s
IHUzMiBJbnN0YW5jZSwgdTMyIE5ldEluZGV4KTsKaW50IFNrUG5taUdldFN0cnVjdChTS19BQyAq
cEFDLCBjaGFyKiBJb0MsIHZvaWQgKnBCdWYsCiAgICAgICAgdW5zaWduZWQgaW50ICpwTGVuLCB1
MzIgTmV0SW5kZXgpOwppbnQgU2tQbm1pUHJlU2V0U3RydWN0KFNLX0FDICpwQUMsIGNoYXIqIElv
Qywgdm9pZCAqcEJ1ZiwKICAgICAgICB1bnNpZ25lZCBpbnQgKnBMZW4sIHUzMiBOZXRJbmRleCk7
CmludCBTa1BubWlTZXRTdHJ1Y3QoU0tfQUMgKnBBQywgY2hhciogSW9DLCB2b2lkICpwQnVmLAog
ICAgICAgIHVuc2lnbmVkIGludCAqcExlbiwgdTMyIE5ldEluZGV4KTsKaW50IFNrUG5taUV2ZW50
KFNLX0FDICpwQUMsIGNoYXIqIElvQywgdTMyIEV2ZW50LCBTS19FVlBBUkEgUGFyYW0pOwoKCgoK
CgpzdGF0aWMgdTggQ2FsY3VsYXRlTGlua01vZGVTdGF0dXMoU0tfQUMgKnBBQywgY2hhciogSW9D
LCB1bnNpZ25lZCBpbnQKICAgICAgICBQaHlzUG9ydEluZGV4KTsKc3RhdGljIHU4IENhbGN1bGF0
ZUxpbmtTdGF0dXMoU0tfQUMgKnBBQywgY2hhciogSW9DLCB1bnNpZ25lZCBpbnQKICAgICAgICBQ
aHlzUG9ydEluZGV4KTsKc3RhdGljIHZvaWQgQ29weU1hYyhjaGFyICpwRHN0LCBTS19NQUNfQURE
UiAqcE1hYyk7CnN0YXRpYyB2b2lkIENvcHlUcmFwUXVldWUoU0tfQUMgKnBBQywgY2hhciAqcERz
dEJ1Zik7CnN0YXRpYyB1NjQgR2V0UGh5c1N0YXRWYWwoU0tfQUMgKnBBQywgY2hhciogSW9DLAog
ICAgICAgIHVuc2lnbmVkIGludCBQaHlzUG9ydEluZGV4LCB1bnNpZ25lZCBpbnQgU3RhdEluZGV4
KTsKc3RhdGljIHU2NCBHZXRTdGF0VmFsKFNLX0FDICpwQUMsIGNoYXIqIElvQywgdW5zaWduZWQg
aW50IExvZ1BvcnRJbmRleCwKICAgICAgICB1bnNpZ25lZCBpbnQgU3RhdEluZGV4LCB1MzIgTmV0
SW5kZXgpOwpzdGF0aWMgY2hhciogR2V0VHJhcEVudHJ5KFNLX0FDICpwQUMsIHUzMiBUcmFwSWQs
IHVuc2lnbmVkIGludCBTaXplKTsKc3RhdGljIHZvaWQgR2V0VHJhcFF1ZXVlTGVuKFNLX0FDICpw
QUMsIHVuc2lnbmVkIGludCAqcExlbiwKICAgICAgICB1bnNpZ25lZCBpbnQgKnBFbnRyaWVzKTsK
c3RhdGljIGludCBHZXRWcGRLZXlBcnIoU0tfQUMgKnBBQywgY2hhciogSW9DLCBjaGFyICpwS2V5
QXJyLAogICAgICAgIHVuc2lnbmVkIGludCBLZXlBcnJMZW4sIHVuc2lnbmVkIGludCAqcEtleU5v
KTsKc3RhdGljIGludCBMb29rdXBJZCh1MzIgSWQpOwpzdGF0aWMgaW50IE1hY1VwZGF0ZShTS19B
QyAqcEFDLCBjaGFyKiBJb0MsIHVuc2lnbmVkIGludCBGaXJzdE1hYywKICAgICAgICB1bnNpZ25l
ZCBpbnQgTGFzdE1hYyk7CnN0YXRpYyBpbnQgUG5taVN0cnVjdChTS19BQyAqcEFDLCBjaGFyKiBJ
b0MsIGludCBBY3Rpb24sIGNoYXIgKnBCdWYsCiAgICAgICAgdW5zaWduZWQgaW50ICpwTGVuLCB1
MzIgTmV0SW5kZXgpOwpzdGF0aWMgaW50IFBubWlWYXIoU0tfQUMgKnBBQywgY2hhciogSW9DLCBp
bnQgQWN0aW9uLCB1MzIgSWQsCiAgICAgICAgY2hhciAqcEJ1ZiwgdW5zaWduZWQgaW50ICpwTGVu
LCB1MzIgSW5zdGFuY2UsIHUzMiBOZXRJbmRleCk7CnN0YXRpYyB2b2lkIFF1ZXVlUmxtdE5ld01h
Y1RyYXAoU0tfQUMgKnBBQywgdW5zaWduZWQgaW50IEFjdGl2ZU1hYyk7CnN0YXRpYyB2b2lkIFF1
ZXVlUmxtdFBvcnRUcmFwKFNLX0FDICpwQUMsIHUzMiBUcmFwSWQsCiAgICAgICAgdW5zaWduZWQg
aW50IFBvcnRJbmRleCk7CnN0YXRpYyB2b2lkIFF1ZXVlU2Vuc29yVHJhcChTS19BQyAqcEFDLCB1
MzIgVHJhcElkLAogICAgICAgIHVuc2lnbmVkIGludCBTZW5zb3JJbmRleCk7CnN0YXRpYyB2b2lk
IFF1ZXVlU2ltcGxlVHJhcChTS19BQyAqcEFDLCB1MzIgVHJhcElkKTsKc3RhdGljIHZvaWQgUmVz
ZXRDb3VudGVyKFNLX0FDICpwQUMsIGNoYXIqIElvQywgdTMyIE5ldEluZGV4KTsKc3RhdGljIGlu
dCBSbG10VXBkYXRlKFNLX0FDICpwQUMsIGNoYXIqIElvQywgdTMyIE5ldEluZGV4KTsKc3RhdGlj
IGludCBTaXJxVXBkYXRlKFNLX0FDICpwQUMsIGNoYXIqIElvQyk7CnN0YXRpYyB2b2lkIFZpcnR1
YWxDb25mKFNLX0FDICpwQUMsIGNoYXIqIElvQywgdTMyIElkLCBjaGFyICpwQnVmKTsKc3RhdGlj
IGludCBWY3QoU0tfQUMgKnBBQywgY2hhciogSW9DLCBpbnQgQWN0aW9uLCB1MzIgSWQsIGNoYXIg
KnBCdWYsCiAgICAgICAgdW5zaWduZWQgaW50ICpwTGVuLCB1MzIgSW5zdGFuY2UsIHVuc2lnbmVk
IGludCBUYWJsZUluZGV4LCB1MzIgTmV0SW5kZXgpOwpzdGF0aWMgdm9pZCBDaGVja1ZjdFN0YXR1
cyhTS19BQyAqLCBjaGFyKiwgY2hhciAqLCB1MzIsIHUzMik7CgoKCgoKIyAxICJza2dlbWliLmMi
IDEKIyA1NiAic2tnZW1pYi5jIgpzdGF0aWMgaW50IEFkZHIoU0tfQUMgKnBBQywgY2hhciogSW9D
LCBpbnQgYWN0aW9uLAogICAgICAgIHUzMiBJZCwgY2hhciAqcEJ1ZiwgdW5zaWduZWQgaW50ICpw
TGVuLCB1MzIgSW5zdGFuY2UsCiAgICAgICAgdW5zaWduZWQgaW50IFRhYmxlSW5kZXgsIHUzMiBO
ZXRJbmRleCk7CnN0YXRpYyBpbnQgQ3N1bVN0YXQoU0tfQUMgKnBBQywgY2hhciogSW9DLCBpbnQg
YWN0aW9uLCB1MzIgSWQsCiAgICAgICAgY2hhciAqcEJ1ZiwgdW5zaWduZWQgaW50ICpwTGVuLCB1
MzIgSW5zdGFuY2UsCiAgICAgICAgdW5zaWduZWQgaW50IFRhYmxlSW5kZXgsIHUzMiBOZXRJbmRl
eCk7CnN0YXRpYyBpbnQgR2VuZXJhbChTS19BQyAqcEFDLCBjaGFyKiBJb0MsIGludCBhY3Rpb24s
IHUzMiBJZCwKICAgICAgICBjaGFyICpwQnVmLCB1bnNpZ25lZCBpbnQgKnBMZW4sIHUzMiBJbnN0
YW5jZSwKICAgICAgICB1bnNpZ25lZCBpbnQgVGFibGVJbmRleCwgdTMyIE5ldEluZGV4KTsKc3Rh
dGljIGludCBNYWM4MDIzU3RhdChTS19BQyAqcEFDLCBjaGFyKiBJb0MsIGludCBhY3Rpb24sIHUz
MiBJZCwKICAgICAgICBjaGFyICpwQnVmLCB1bnNpZ25lZCBpbnQgKnBMZW4sIHUzMiBJbnN0YW5j
ZSwKICAgICAgICB1bnNpZ25lZCBpbnQgVGFibGVJbmRleCwgdTMyIE5ldEluZGV4KTsKc3RhdGlj
IGludCBNYWNQcml2YXRlQ29uZihTS19BQyAqcEFDLCBjaGFyKiBJb0MsIGludCBhY3Rpb24sIHUz
MiBJZCwKICAgICAgICBjaGFyICpwQnVmLCB1bnNpZ25lZCBpbnQgKnBMZW4sIHUzMiBJbnN0YW5j
ZSwKICAgICAgICB1bnNpZ25lZCBpbnQgVGFibGVJbmRleCwgdTMyIE5ldEluZGV4KTsKc3RhdGlj
IGludCBNYWNQcml2YXRlU3RhdChTS19BQyAqcEFDLCBjaGFyKiBJb0MsIGludCBhY3Rpb24sIHUz
MiBJZCwKICAgICAgICBjaGFyICpwQnVmLCB1bnNpZ25lZCBpbnQgKnBMZW4sIHUzMiBJbnN0YW5j
ZSwKICAgICAgICB1bnNpZ25lZCBpbnQgVGFibGVJbmRleCwgdTMyIE5ldEluZGV4KTsKc3RhdGlj
IGludCBNb25pdG9yKFNLX0FDICpwQUMsIGNoYXIqIElvQywgaW50IGFjdGlvbiwKICAgICAgICB1
MzIgSWQsIGNoYXIgKnBCdWYsIHVuc2lnbmVkIGludCAqcExlbiwgdTMyIEluc3RhbmNlLAogICAg
ICAgIHVuc2lnbmVkIGludCBUYWJsZUluZGV4LCB1MzIgTmV0SW5kZXgpOwpzdGF0aWMgaW50IE9p
ZFN0cnVjdChTS19BQyAqcEFDLCBjaGFyKiBJb0MsIGludCBhY3Rpb24sIHUzMiBJZCwKICAgICAg
ICBjaGFyICpwQnVmLCB1bnNpZ25lZCBpbnQgKnBMZW4sIHUzMiBJbnN0YW5jZSwKICAgICAgICB1
bnNpZ25lZCBpbnQgVGFibGVJbmRleCwgdTMyIE5ldEluZGV4KTsKc3RhdGljIGludCBQZXJmb3Jt
KFNLX0FDICpwQUMsIGNoYXIqIElvQywgaW50IGFjdGlvbiwgdTMyIElkLAogICAgICAgIGNoYXIg
KnBCdWYsIHVuc2lnbmVkIGludCogcExlbiwgdTMyIEluc3RhbmNlLAogICAgICAgIHVuc2lnbmVk
IGludCBUYWJsZUluZGV4LCB1MzIgTmV0SW5kZXgpOwpzdGF0aWMgaW50IFJsbXQoU0tfQUMgKnBB
QywgY2hhciogSW9DLCBpbnQgYWN0aW9uLCB1MzIgSWQsCiAgICAgICAgY2hhciAqcEJ1ZiwgdW5z
aWduZWQgaW50ICpwTGVuLCB1MzIgSW5zdGFuY2UsCiAgICAgICAgdW5zaWduZWQgaW50IFRhYmxl
SW5kZXgsIHUzMiBOZXRJbmRleCk7CnN0YXRpYyBpbnQgUmxtdFN0YXQoU0tfQUMgKnBBQywgY2hh
ciogSW9DLCBpbnQgYWN0aW9uLCB1MzIgSWQsCiAgICAgICAgY2hhciAqcEJ1ZiwgdW5zaWduZWQg
aW50ICpwTGVuLCB1MzIgSW5zdGFuY2UsCiAgICAgICAgdW5zaWduZWQgaW50IFRhYmxlSW5kZXgs
IHUzMiBOZXRJbmRleCk7CnN0YXRpYyBpbnQgU2Vuc29yU3RhdChTS19BQyAqcEFDLCBjaGFyKiBJ
b0MsIGludCBhY3Rpb24sIHUzMiBJZCwKICAgICAgICBjaGFyICpwQnVmLCB1bnNpZ25lZCBpbnQg
KnBMZW4sIHUzMiBJbnN0YW5jZSwKICAgICAgICB1bnNpZ25lZCBpbnQgVGFibGVJbmRleCwgdTMy
IE5ldEluZGV4KTsKc3RhdGljIGludCBWcGQoU0tfQUMgKnBBQywgY2hhciogSW9DLCBpbnQgYWN0
aW9uLCB1MzIgSWQsCiAgICAgICAgY2hhciAqcEJ1ZiwgdW5zaWduZWQgaW50ICpwTGVuLCB1MzIg
SW5zdGFuY2UsCiAgICAgICAgdW5zaWduZWQgaW50IFRhYmxlSW5kZXgsIHUzMiBOZXRJbmRleCk7
CnN0YXRpYyBpbnQgVmN0KFNLX0FDICpwQUMsIGNoYXIqIElvQywgaW50IGFjdGlvbiwgdTMyIElk
LAogICAgICAgIGNoYXIgKnBCdWYsIHVuc2lnbmVkIGludCAqcExlbiwgdTMyIEluc3RhbmNlLAog
ICAgICAgIHVuc2lnbmVkIGludCBUYWJsZUluZGV4LCB1MzIgTmV0SW5kZXgpOwojIDExNyAic2tn
ZW1pYi5jIgpzdGF0aWMgY29uc3QgU0tfUE5NSV9UQUJfRU5UUlkgSWRUYWJsZVtdID0gewogICAg
ICAgIHsweDAwMDIwMTAxLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsCiAg
ICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwgTWFjODAyM1N0YXQsIFNLX1BOTUlf
SFRYfSwKICAgICAgICB7MHgwMDAyMDEwMiwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAg
ICAgICAwLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsIE1hYzgwMjNTdGF0
LCBTS19QTk1JX0hSWH0sCiAgICAgICAgezB4MDAwMjAxMDMsCiAgICAgICAgICAgICAgICAwLAog
ICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLCBH
ZW5lcmFsLCAwfSwKICAgICAgICB7MHgwMDAyMDEwNCwKICAgICAgICAgICAgICAgIDAsCiAgICAg
ICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsIEdlbmVy
YWwsIDB9LAogICAgICAgIHsweDAwMDIwMTA1LAogICAgICAgICAgICAgICAgMCwKICAgICAgICAg
ICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwgR2VuZXJhbCwg
MH0sCiAgICAgICAgezB4MDAwMjAyMDIsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAg
ICAgMCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLCBNYWM4MDIzU3RhdCwg
U0tfUE5NSV9IVFhfVU5JQ0FTVH0sCiAgICAgICAgezB4MDAwMjAyMDQsCiAgICAgICAgICAgICAg
ICAwLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAg
ICAwLCBNYWM4MDIzU3RhdCwgU0tfUE5NSV9IVFhfTVVMVElDQVNUfSwKICAgICAgICB7MHgwMDAy
MDIwNiwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAg
ICAgMCwKICAgICAgICAgICAgICAgIDAsIE1hYzgwMjNTdGF0LCBTS19QTk1JX0hUWF9CUk9BRENB
U1R9LAogICAgICAgIHsweDAwMDIwMjA4LAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAg
ICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwgTWFjODAyM1N0YXQs
IFNLX1BOTUlfSFJYX1VOSUNBU1R9LAogICAgICAgIHsweDAwMDIwMjBBLAogICAgICAgICAgICAg
ICAgMCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAg
ICAgMCwgTWFjODAyM1N0YXQsIFNLX1BOTUlfSFJYX01VTFRJQ0FTVH0sCiAgICAgICAgezB4MDAw
MjAyMEMsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAg
ICAgIDAsCiAgICAgICAgICAgICAgICAwLCBNYWM4MDIzU3RhdCwgU0tfUE5NSV9IUlhfQlJPQURD
QVNUfSwKICAgICAgICB7MHgwMDAyMDIwRCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAg
ICAgICAwLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsIE1hYzgwMjNTdGF0
LCBTS19QTk1JX0hSWF9GQ1N9LAogICAgICAgIHsweDAwMDIwMjBFLAogICAgICAgICAgICAgICAg
MCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAg
MCwgR2VuZXJhbCwgMH0sCiAgICAgICAgezB4MDEwMTAxMDEsCiAgICAgICAgICAgICAgICAwLAog
ICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLCBN
YWM4MDIzU3RhdCwgMH0sCiAgICAgICAgezB4MDEwMTAxMDIsCiAgICAgICAgICAgICAgICAwLAog
ICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLCBN
YWM4MDIzU3RhdCwgMH0sCiAgICAgICAgezB4MDEwMjAxMDEsCiAgICAgICAgICAgICAgICAwLAog
ICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLCBN
YWM4MDIzU3RhdCwgU0tfUE5NSV9IUlhfRlJBTUlOR30sCiAgICAgICAgezB4MDEwMjAxMDIsCiAg
ICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsCiAg
ICAgICAgICAgICAgICAwLCBNYWM4MDIzU3RhdCwgU0tfUE5NSV9IVFhfU0lOR0xFX0NPTH0sCiAg
ICAgICAgezB4MDEwMjAxMDMsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwK
ICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLCBNYWM4MDIzU3RhdCwgU0tfUE5N
SV9IVFhfTVVMVElfQ09MfSwKICAgICAgICB7MHgwMTAyMDIwMSwKICAgICAgICAgICAgICAgIDAs
CiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAs
IE1hYzgwMjNTdGF0LCBTS19QTk1JX0hUWF9ERUZGRVJBTH0sCiAgICAgICAgezB4MDEwMjAyMDIs
CiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAs
CiAgICAgICAgICAgICAgICAwLCBNYWM4MDIzU3RhdCwgU0tfUE5NSV9IVFhfRVhDRVNTX0NPTH0s
CiAgICAgICAgezB4MDEwMjAyMDMsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAg
MCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLCBNYWM4MDIzU3RhdCwgU0tf
UE5NSV9IUlhfT1ZFUkZMT1d9LAogICAgICAgIHsweDAxMDIwMjA0LAogICAgICAgICAgICAgICAg
MCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAg
MCwgTWFjODAyM1N0YXQsIFNLX1BOTUlfSFRYX1VOREVSUlVOfSwKICAgICAgICB7MHgwMTAyMDIw
NiwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAg
MCwKICAgICAgICAgICAgICAgIDAsIE1hYzgwMjNTdGF0LCBTS19QTk1JX0hUWF9DQVJSSUVSfSwK
ICAgICAgICB7MHgwMTAyMDIwNywKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAw
LAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsIE1hYzgwMjNTdGF0LCBTS19Q
Tk1JX0hUWF9MQVRFX0NPTH0sCiMgMjcwICJza2dlbWliLmMiCiAgICAgICAgezB4RkYwMTAxMDAs
CiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICgo
dTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5NZ210REJWZXJzaW9uKSks
CiAgICAgICAgICAgICAgICAwLCBHZW5lcmFsLCAwfSwKICAgICAgICB7MHhGRjAxMDEwMSwKICAg
ICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwKICAg
ICAgICAgICAgICAgIDAsIEdlbmVyYWwsIDB9LAogICAgICAgIHsweEZGMDIwMTkwLAogICAgICAg
ICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAg
ICAgICAgICAgMSwgT2lkU3RydWN0LCAwfSwKICAgICAgICB7MHhGRjAxMDEwMiwKICAgICAgICAg
ICAgICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25n
KSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlZwZEZyZWVCeXRlcykpLAogICAgICAgICAg
ICAgICAgMCwgVnBkLCAwfSwKICAgICAgICB7MHhGRjAxMDEwMywKICAgICAgICAgICAgICAgIDEs
CiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19Q
Tk1JX1NUUlVDVF9EQVRBICopMCktPlZwZEVudHJpZXNMaXN0KSksCiAgICAgICAgICAgICAgICAw
LCBWcGQsIDB9LAogICAgICAgIHsweEZGMDEwMTA0LAogICAgICAgICAgICAgICAgMSwKICAgICAg
ICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RS
VUNUX0RBVEEgKikwKS0+VnBkRW50cmllc051bWJlcikpLAogICAgICAgICAgICAgICAgMCwgVnBk
LCAwfSwKICAgICAgICB7MHhGRjAxMDEwNSwKICAgICAgICAgICAgICAgICg1MTIgLyA0KSwKICAg
ICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1ZQRCksCiAgICAgICAgICAgICAgICAoKHUzMiko
dWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+VnBkKSkgKyAoKHUzMikodWxvbmcp
JigoKFNLX1BOTUlfVlBEICopMCktPlZwZEtleSkpLAogICAgICAgICAgICAgICAgMCwgVnBkLCAw
fSwKICAgICAgICB7MHhGRjAxMDEwNiwKICAgICAgICAgICAgICAgICg1MTIgLyA0KSwKICAgICAg
ICAgICAgICAgIHNpemVvZihTS19QTk1JX1ZQRCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxv
bmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+VnBkKSkgKyAoKHUzMikodWxvbmcpJigo
KFNLX1BOTUlfVlBEICopMCktPlZwZFZhbHVlKSksCiAgICAgICAgICAgICAgICAwLCBWcGQsIDB9
LAogICAgICAgIHsweEZGMDEwMTA3LAogICAgICAgICAgICAgICAgKDUxMiAvIDQpLAogICAgICAg
ICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfVlBEKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9u
ZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5WcGQpKSArICgodTMyKSh1bG9uZykmKCgo
U0tfUE5NSV9WUEQgKikwKS0+VnBkQWNjZXNzKSksCiAgICAgICAgICAgICAgICAwLCBWcGQsIDB9
LAogICAgICAgIHsweEZGMDEwMTA4LAogICAgICAgICAgICAgICAgKDUxMiAvIDQpLAogICAgICAg
ICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfVlBEKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9u
ZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5WcGQpKSArICgodTMyKSh1bG9uZykmKCgo
U0tfUE5NSV9WUEQgKikwKS0+VnBkQWN0aW9uKSksCiAgICAgICAgICAgICAgICAxLCBWcGQsIDB9
LAogICAgICAgIHsweEZGMDEwMTEwLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAg
IDAsCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEg
KikwKS0+UG9ydE51bWJlcikpLAogICAgICAgICAgICAgICAgMCwgR2VuZXJhbCwgMH0sCiAgICAg
ICAgezB4RkYwMTAxMTEsCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgMCwKICAg
ICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5E
ZXZpY2VUeXBlKSksCiAgICAgICAgICAgICAgICAwLCBHZW5lcmFsLCAwfSwKICAgICAgICB7MHhG
RjAxMDExMiwKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAg
ICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPkRyaXZlckRl
c2NyKSksCiAgICAgICAgICAgICAgICAwLCBHZW5lcmFsLCAwfSwKICAgICAgICB7MHhGRjAxMDEx
MywKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAg
KCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPkRyaXZlclZlcnNpb24p
KSwKICAgICAgICAgICAgICAgIDAsIEdlbmVyYWwsIDB9LAogICAgICAgIHsweEZGMDEwMTE0LAog
ICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAoKHUz
MikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+SHdEZXNjcikpLAogICAgICAg
ICAgICAgICAgMCwgR2VuZXJhbCwgMH0sCiAgICAgICAgezB4RkYwMTAxMTUsCiAgICAgICAgICAg
ICAgICAxLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykm
KCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5Id1ZlcnNpb24pKSwKICAgICAgICAgICAgICAg
IDAsIEdlbmVyYWwsIDB9LAogICAgICAgIHsweEZGMDEwMTE2LAogICAgICAgICAgICAgICAgMSwK
ICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BO
TUlfU1RSVUNUX0RBVEEgKikwKS0+Q2hpcHNldCkpLAogICAgICAgICAgICAgICAgMCwgR2VuZXJh
bCwgMH0sCiAgICAgICAgezB4RkYwMTAxMTcsCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAg
ICAgICAgMCwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1Rf
REFUQSAqKTApLT5BY3Rpb24pKSwKICAgICAgICAgICAgICAgIDEsIFBlcmZvcm0sIDB9LAogICAg
ICAgIHsweEZGMDEwMTE4LAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIDAsCiAg
ICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+
VGVzdFJlc3VsdCkpLAogICAgICAgICAgICAgICAgMCwgR2VuZXJhbCwgMH0sCiAgICAgICAgezB4
RkYwMTAxMTksCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAg
ICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5CdXNUeXBl
KSksCiAgICAgICAgICAgICAgICAwLCBHZW5lcmFsLCAwfSwKICAgICAgICB7MHhGRjAxMDExQSwK
ICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1
MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPkJ1c1NwZWVkKSksCiAgICAg
ICAgICAgICAgICAwLCBHZW5lcmFsLCAwfSwKICAgICAgICB7MHhGRjAxMDExQiwKICAgICAgICAg
ICAgICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25n
KSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPkJ1c1dpZHRoKSksCiAgICAgICAgICAgICAg
ICAwLCBHZW5lcmFsLCAwfSwKICAgICAgICB7MHhGRjAyMDE3MCwKICAgICAgICAgICAgICAgIDEs
CiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19Q
Tk1JX1NUUlVDVF9EQVRBICopMCktPlR4U3dRdWV1ZUxlbikpLAogICAgICAgICAgICAgICAgMCwg
R2VuZXJhbCwgMH0sCiAgICAgICAgezB4RkYwMjAxNzEsCiAgICAgICAgICAgICAgICAxLAogICAg
ICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9T
VFJVQ1RfREFUQSAqKTApLT5UeFN3UXVldWVNYXgpKSwKICAgICAgICAgICAgICAgIDAsIEdlbmVy
YWwsIDB9LAogICAgICAgIHsweEZGMDIwMTcyLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAg
ICAgICAgIDAsCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNU
X0RBVEEgKikwKS0+VHhSZXRyeUN0cykpLAogICAgICAgICAgICAgICAgMCwgR2VuZXJhbCwgMH0s
CiAgICAgICAgezB4RkYwMjAxNzMsCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAg
MCwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAq
KTApLT5SeEludHJDdHMpKSwKICAgICAgICAgICAgICAgIDAsIEdlbmVyYWwsIDB9LAogICAgICAg
IHsweEZGMDIwMTc0LAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIDAsCiAgICAg
ICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+VHhJ
bnRyQ3RzKSksCiAgICAgICAgICAgICAgICAwLCBHZW5lcmFsLCAwfSwKICAgICAgICB7MHhGRjAy
MDE3NSwKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAg
ICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlJ4Tm9CdWZDdHMp
KSwKICAgICAgICAgICAgICAgIDAsIEdlbmVyYWwsIDB9LAogICAgICAgIHsweEZGMDIwMTc2LAog
ICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAoKHUz
MikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+VHhOb0J1ZkN0cykpLAogICAg
ICAgICAgICAgICAgMCwgR2VuZXJhbCwgMH0sCiAgICAgICAgezB4RkYwMjAxNzcsCiAgICAgICAg
ICAgICAgICAxLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9u
ZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5UeFVzZWREZXNjck5vKSksCiAgICAgICAg
ICAgICAgICAwLCBHZW5lcmFsLCAwfSwKICAgICAgICB7MHhGRjAyMDE3OCwKICAgICAgICAgICAg
ICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYo
KChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlJ4RGVsaXZlcmVkQ3RzKSksCiAgICAgICAgICAg
ICAgICAwLCBHZW5lcmFsLCAwfSwKICAgICAgICB7MHhGRjAyMDE3OSwKICAgICAgICAgICAgICAg
IDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChT
S19QTk1JX1NUUlVDVF9EQVRBICopMCktPlJ4T2N0ZXRzRGVsaXZlcmVkQ3RzKSksCiAgICAgICAg
ICAgICAgICAwLCBHZW5lcmFsLCAwfSwKICAgICAgICB7MHhGRjAyMDE3QSwKICAgICAgICAgICAg
ICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYo
KChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlJ4SHdFcnJvcnNDdHMpKSwKICAgICAgICAgICAg
ICAgIDAsIEdlbmVyYWwsIDB9LAogICAgICAgIHsweEZGMDIwMTdCLAogICAgICAgICAgICAgICAg
MSwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNL
X1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+VHhId0Vycm9yc0N0cykpLAogICAgICAgICAgICAgICAg
MCwgR2VuZXJhbCwgMH0sCiAgICAgICAgezB4RkYwMjAxN0MsCiAgICAgICAgICAgICAgICAxLAog
ICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5N
SV9TVFJVQ1RfREFUQSAqKTApLT5JbkVycm9yc0N0cykpLAogICAgICAgICAgICAgICAgMCwgR2Vu
ZXJhbCwgMH0sCiAgICAgICAgezB4RkYwMjAxN0QsCiAgICAgICAgICAgICAgICAxLAogICAgICAg
ICAgICAgICAgMCwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJV
Q1RfREFUQSAqKTApLT5PdXRFcnJvcnNDdHMpKSwKICAgICAgICAgICAgICAgIDAsIEdlbmVyYWws
IDB9LAogICAgICAgIHsweEZGMDIwMTdFLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAg
ICAgIDAsCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RB
VEEgKikwKS0+RXJyUmVjb3ZlcnlDdHMpKSwKICAgICAgICAgICAgICAgIDAsIEdlbmVyYWwsIDB9
LAogICAgICAgIHsweEZGMDIwMTdGLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAg
IDAsCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEg
KikwKS0+U3lzVXBUaW1lKSksCiAgICAgICAgICAgICAgICAwLCBHZW5lcmFsLCAwfSwKICAgICAg
ICB7MHhGRjAyMDEwMCwKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAg
ICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlNl
bnNvck51bWJlcikpLAogICAgICAgICAgICAgICAgMCwgR2VuZXJhbCwgMH0sCiAgICAgICAgezB4
RkYwMjAxMDEsCiAgICAgICAgICAgICAgICAoOCksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tf
UE5NSV9TRU5TT1IpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NU
UlVDVF9EQVRBICopMCktPlNlbnNvcikpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NFTlNP
UiAqKTApLT5TZW5zb3JJbmRleCkpLAogICAgICAgICAgICAgICAgMCwgU2Vuc29yU3RhdCwgMH0s
CiAgICAgICAgezB4RkYwMjAxMDIsCiAgICAgICAgICAgICAgICAoOCksCiAgICAgICAgICAgICAg
ICBzaXplb2YoU0tfUE5NSV9TRU5TT1IpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYo
KChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlNlbnNvcikpICsgKCh1MzIpKHVsb25nKSYoKChT
S19QTk1JX1NFTlNPUiAqKTApLT5TZW5zb3JEZXNjcikpLAogICAgICAgICAgICAgICAgMCwgU2Vu
c29yU3RhdCwgMH0sCiAgICAgICAgezB4RkYwMjAxMDMsCiAgICAgICAgICAgICAgICAoOCksCiAg
ICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TRU5TT1IpLAogICAgICAgICAgICAgICAgKCh1
MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlNlbnNvcikpICsgKCh1MzIp
KHVsb25nKSYoKChTS19QTk1JX1NFTlNPUiAqKTApLT5TZW5zb3JUeXBlKSksCiAgICAgICAgICAg
ICAgICAwLCBTZW5zb3JTdGF0LCAwfSwKICAgICAgICB7MHhGRjAyMDEwNCwKICAgICAgICAgICAg
ICAgICg4KSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NFTlNPUiksCiAgICAgICAg
ICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U2Vuc29y
KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU0VOU09SICopMCktPlNlbnNvclZhbHVlKSks
CiAgICAgICAgICAgICAgICAwLCBTZW5zb3JTdGF0LCAwfSwKICAgICAgICB7MHhGRjAyMDEwNSwK
ICAgICAgICAgICAgICAgICg4KSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NFTlNP
UiksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEg
KikwKS0+U2Vuc29yKSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU0VOU09SICopMCktPlNl
bnNvcldhcm5pbmdUaHJlc2hvbGRMb3cpKSwKICAgICAgICAgICAgICAgIDAsIFNlbnNvclN0YXQs
IDB9LAogICAgICAgIHsweEZGMDIwMTA2LAogICAgICAgICAgICAgICAgKDgpLAogICAgICAgICAg
ICAgICAgc2l6ZW9mKFNLX1BOTUlfU0VOU09SKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9u
ZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TZW5zb3IpKSArICgodTMyKSh1bG9uZykm
KCgoU0tfUE5NSV9TRU5TT1IgKikwKS0+U2Vuc29yV2FybmluZ1RocmVzaG9sZEhpZ2gpKSwKICAg
ICAgICAgICAgICAgIDAsIFNlbnNvclN0YXQsIDB9LAogICAgICAgIHsweEZGMDIwMTA3LAogICAg
ICAgICAgICAgICAgKDgpLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfU0VOU09SKSwK
ICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTAp
LT5TZW5zb3IpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TRU5TT1IgKikwKS0+U2Vuc29y
RXJyb3JUaHJlc2hvbGRMb3cpKSwKICAgICAgICAgICAgICAgIDAsIFNlbnNvclN0YXQsIDB9LAog
ICAgICAgIHsweEZGMDIwMTA4LAogICAgICAgICAgICAgICAgKDgpLAogICAgICAgICAgICAgICAg
c2l6ZW9mKFNLX1BOTUlfU0VOU09SKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgo
U0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TZW5zb3IpKSArICgodTMyKSh1bG9uZykmKCgoU0tf
UE5NSV9TRU5TT1IgKikwKS0+U2Vuc29yRXJyb3JUaHJlc2hvbGRIaWdoKSksCiAgICAgICAgICAg
ICAgICAwLCBTZW5zb3JTdGF0LCAwfSwKICAgICAgICB7MHhGRjAyMDEwOSwKICAgICAgICAgICAg
ICAgICg4KSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NFTlNPUiksCiAgICAgICAg
ICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U2Vuc29y
KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU0VOU09SICopMCktPlNlbnNvclN0YXR1cykp
LAogICAgICAgICAgICAgICAgMCwgU2Vuc29yU3RhdCwgMH0sCiAgICAgICAgezB4RkYwMjAxMEEs
CiAgICAgICAgICAgICAgICAoOCksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TRU5T
T1IpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRB
ICopMCktPlNlbnNvcikpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NFTlNPUiAqKTApLT5T
ZW5zb3JXYXJuaW5nQ3RzKSksCiAgICAgICAgICAgICAgICAwLCBTZW5zb3JTdGF0LCAwfSwKICAg
ICAgICB7MHhGRjAyMDEwQiwKICAgICAgICAgICAgICAgICg4KSwKICAgICAgICAgICAgICAgIHNp
emVvZihTS19QTk1JX1NFTlNPUiksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNL
X1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U2Vuc29yKSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BO
TUlfU0VOU09SICopMCktPlNlbnNvckVycm9yQ3RzKSksCiAgICAgICAgICAgICAgICAwLCBTZW5z
b3JTdGF0LCAwfSwKICAgICAgICB7MHhGRjAyMDEwQywKICAgICAgICAgICAgICAgICg4KSwKICAg
ICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NFTlNPUiksCiAgICAgICAgICAgICAgICAoKHUz
MikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U2Vuc29yKSkgKyAoKHUzMiko
dWxvbmcpJigoKFNLX1BOTUlfU0VOU09SICopMCktPlNlbnNvcldhcm5pbmdUaW1lc3RhbXApKSwK
ICAgICAgICAgICAgICAgIDAsIFNlbnNvclN0YXQsIDB9LAogICAgICAgIHsweEZGMDIwMTBELAog
ICAgICAgICAgICAgICAgKDgpLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfU0VOU09S
KSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAq
KTApLT5TZW5zb3IpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TRU5TT1IgKikwKS0+U2Vu
c29yRXJyb3JUaW1lc3RhbXApKSwKICAgICAgICAgICAgICAgIDAsIFNlbnNvclN0YXQsIDB9LAog
ICAgICAgIHsweEZGMDIwMTEwLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIDAs
CiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikw
KS0+Q2hlY2tzdW1OdW1iZXIpKSwKICAgICAgICAgICAgICAgIDAsIEdlbmVyYWwsIDB9LAogICAg
ICAgIHsweEZGMDIwMTExLAogICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgIHNpemVv
ZihTS19QTk1JX0NIRUNLU1VNKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tf
UE5NSV9TVFJVQ1RfREFUQSAqKTApLT5DaGVja3N1bSkpICsgKCh1MzIpKHVsb25nKSYoKChTS19Q
Tk1JX0NIRUNLU1VNICopMCktPkNoZWNrc3VtUnhPa0N0cykpLAogICAgICAgICAgICAgICAgMCwg
Q3N1bVN0YXQsIDB9LAogICAgICAgIHsweEZGMDIwMTEyLAogICAgICAgICAgICAgICAgMywKICAg
ICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX0NIRUNLU1VNKSwKICAgICAgICAgICAgICAgICgo
dTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5DaGVja3N1bSkpICsgKCh1
MzIpKHVsb25nKSYoKChTS19QTk1JX0NIRUNLU1VNICopMCktPkNoZWNrc3VtUnhVbmFibGVDdHMp
KSwKICAgICAgICAgICAgICAgIDAsIENzdW1TdGF0LCAwfSwKICAgICAgICB7MHhGRjAyMDExMywK
ICAgICAgICAgICAgICAgIDMsCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9DSEVDS1NV
TSksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEg
KikwKS0+Q2hlY2tzdW0pKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9DSEVDS1NVTSAqKTAp
LT5DaGVja3N1bVJ4RXJyQ3RzKSksCiAgICAgICAgICAgICAgICAwLCBDc3VtU3RhdCwgMH0sCiAg
ICAgICAgezB4RkYwMjAxMTQsCiAgICAgICAgICAgICAgICAzLAogICAgICAgICAgICAgICAgc2l6
ZW9mKFNLX1BOTUlfQ0hFQ0tTVU0pLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChT
S19QTk1JX1NUUlVDVF9EQVRBICopMCktPkNoZWNrc3VtKSkgKyAoKHUzMikodWxvbmcpJigoKFNL
X1BOTUlfQ0hFQ0tTVU0gKikwKS0+Q2hlY2tzdW1UeE9rQ3RzKSksCiAgICAgICAgICAgICAgICAw
LCBDc3VtU3RhdCwgMH0sCiAgICAgICAgezB4RkYwMjAxMTUsCiAgICAgICAgICAgICAgICAzLAog
ICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfQ0hFQ0tTVU0pLAogICAgICAgICAgICAgICAg
KCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPkNoZWNrc3VtKSkgKyAo
KHUzMikodWxvbmcpJigoKFNLX1BOTUlfQ0hFQ0tTVU0gKikwKS0+Q2hlY2tzdW1UeFVuYWJsZUN0
cykpLAogICAgICAgICAgICAgICAgMCwgQ3N1bVN0YXQsIDB9LAogICAgICAgIHsweEZGMDIwMTIw
LAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1J
X1NUQVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9E
QVRBICopMCktPlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0
YXRUeE9rQ3RzKSksCiAgICAgICAgICAgICAgICAwLCBNYWNQcml2YXRlU3RhdCwgU0tfUE5NSV9I
VFh9LAogICAgICAgIHsweEZGMDIwMTIxLAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAg
ICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVs
b25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlN0YXQpKSArICgodTMyKSh1bG9uZykm
KCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRUeE9jdGV0c09rQ3RzKSksCiAgICAgICAgICAgICAg
ICAwLCBNYWNQcml2YXRlU3RhdCwgU0tfUE5NSV9IVFhfT0NURVR9LAogICAgICAgIHsweEZGMDIw
MTIyLAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19Q
Tk1JX1NUQVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVD
VF9EQVRBICopMCktPlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCkt
PlN0YXRUeEJyb2FkY2FzdE9rQ3RzKSksCiAgICAgICAgICAgICAgICAwLCBNYWNQcml2YXRlU3Rh
dCwgU0tfUE5NSV9IVFhfQlJPQURDQVNUfSwKICAgICAgICB7MHhGRjAyMDEyMywKICAgICAgICAg
ICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAg
ICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5T
dGF0KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RBVCAqKTApLT5TdGF0VHhNdWx0aWNh
c3RPa0N0cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFRY
X01VTFRJQ0FTVH0sCiAgICAgICAgezB4RkYwMjAxMjQsCiAgICAgICAgICAgICAgICAoMiArIDEp
LAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAo
KHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIp
KHVsb25nKSYoKChTS19QTk1JX1NUQVQgKikwKS0+U3RhdFR4VW5pY2FzdE9rQ3RzKSksCiAgICAg
ICAgICAgICAgICAwLCBNYWNQcml2YXRlU3RhdCwgU0tfUE5NSV9IVFhfVU5JQ0FTVH0sCiAgICAg
ICAgezB4RkYwMjAxMjUsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAgICAg
c2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNL
X1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1J
X1NUQVQgKikwKS0+U3RhdFR4TG9uZ0ZyYW1lc0N0cykpLAogICAgICAgICAgICAgICAgMCwgTWFj
UHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFRYX0xPTkdGUkFNRVN9LAogICAgICAgIHsweEZGMDIwMTI2
LAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1J
X1NUQVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9E
QVRBICopMCktPlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0
YXRUeEJ1cnN0Q3RzKSksCiAgICAgICAgICAgICAgICAwLCBNYWNQcml2YXRlU3RhdCwgU0tfUE5N
SV9IVFhfQlVSU1R9LAogICAgICAgIHsweEZGMDIwMTI3LAogICAgICAgICAgICAgICAgKDIgKyAx
KSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQpLAogICAgICAgICAgICAgICAg
KCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlN0YXQpKSArICgodTMy
KSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRUeFBhdXNlTWFjQ3RybEN0cykpLAog
ICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFRYX1BNQUNDfSwKICAg
ICAgICB7MHhGRjAyMDEyOCwKICAgICAgICAgICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAg
ICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgo
U0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BO
TUlfU1RBVCAqKTApLT5TdGF0VHhNYWNDdHJsQ3RzKSksCiAgICAgICAgICAgICAgICAwLCBNYWNQ
cml2YXRlU3RhdCwgU0tfUE5NSV9IVFhfTUFDQ30sCiAgICAgICAgezB4RkYwMjAxMjksCiAgICAg
ICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCks
CiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikw
KS0+U3RhdCkpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUQVQgKikwKS0+U3RhdFR4U2lu
Z2xlQ29sbGlzaW9uQ3RzKSksCiAgICAgICAgICAgICAgICAwLCBNYWNQcml2YXRlU3RhdCwgU0tf
UE5NSV9IVFhfU0lOR0xFX0NPTH0sCiAgICAgICAgezB4RkYwMjAxMkEsCiAgICAgICAgICAgICAg
ICAoMiArIDEpLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAg
ICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkp
ICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUQVQgKikwKS0+U3RhdFR4TXVsdGlwbGVDb2xs
aXNpb25DdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVTdGF0LCBTS19QTk1JX0hU
WF9NVUxUSV9DT0x9LAogICAgICAgIHsweEZGMDIwMTJCLAogICAgICAgICAgICAgICAgKDIgKyAx
KSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQpLAogICAgICAgICAgICAgICAg
KCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlN0YXQpKSArICgodTMy
KSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRUeEV4Y2Vzc2l2ZUNvbGxpc2lvbkN0
cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFRYX0VYQ0VT
U19DT0x9LAogICAgICAgIHsweEZGMDIwMTJDLAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAg
ICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQpLAogICAgICAgICAgICAgICAgKCh1MzIp
KHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlN0YXQpKSArICgodTMyKSh1bG9u
ZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRUeExhdGVDb2xsaXNpb25DdHMpKSwKICAgICAg
ICAgICAgICAgIDAsIE1hY1ByaXZhdGVTdGF0LCBTS19QTk1JX0hUWF9MQVRFX0NPTH0sCiAgICAg
ICAgezB4RkYwMjAxMkQsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAgICAg
c2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNL
X1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1J
X1NUQVQgKikwKS0+U3RhdFR4RGVmZXJyYWxDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1By
aXZhdGVTdGF0LCBTS19QTk1JX0hUWF9ERUZGRVJBTH0sCiAgICAgICAgezB4RkYwMjAxMkUsCiAg
ICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfU1RB
VCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEg
KikwKS0+U3RhdCkpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUQVQgKikwKS0+U3RhdFR4
RXhjZXNzaXZlRGVmZXJyYWxDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVTdGF0
LCBTS19QTk1JX0hUWF9FWENFU1NfREVGfSwKICAgICAgICB7MHhGRjAyMDEyRiwKICAgICAgICAg
ICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAg
ICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5T
dGF0KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RBVCAqKTApLT5TdGF0VHhGaWZvVW5k
ZXJydW5DdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVTdGF0LCBTS19QTk1JX0hU
WF9VTkRFUlJVTn0sCiAgICAgICAgezB4RkYwMjAxMzAsCiAgICAgICAgICAgICAgICAoMiArIDEp
LAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAo
KHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIp
KHVsb25nKSYoKChTS19QTk1JX1NUQVQgKikwKS0+U3RhdFR4Q2FycmllckN0cykpLAogICAgICAg
ICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFRYX0NBUlJJRVJ9LAoKCgoKCiAg
ICAgICAgezB4RkYwMjAxMzIsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAg
ICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigo
KFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIpKHVsb25nKSYoKChTS19Q
Tk1JX1NUQVQgKikwKS0+U3RhdFR4NjRDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZh
dGVTdGF0LCBTS19QTk1JX0hUWF82NH0sCiAgICAgICAgezB4RkYwMjAxMzMsCiAgICAgICAgICAg
ICAgICAoMiArIDEpLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAg
ICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3Rh
dCkpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUQVQgKikwKS0+U3RhdFR4MTI3Q3RzKSks
CiAgICAgICAgICAgICAgICAwLCBNYWNQcml2YXRlU3RhdCwgU0tfUE5NSV9IVFhfMTI3fSwKICAg
ICAgICB7MHhGRjAyMDEzNCwKICAgICAgICAgICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAg
ICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgo
U0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BO
TUlfU1RBVCAqKTApLT5TdGF0VHgyNTVDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZh
dGVTdGF0LCBTS19QTk1JX0hUWF8yNTV9LAogICAgICAgIHsweEZGMDIwMTM1LAogICAgICAgICAg
ICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQpLAogICAg
ICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlN0
YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRUeDUxMUN0cykp
LAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFRYXzUxMX0sCiAg
ICAgICAgezB4RkYwMjAxMzYsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAg
ICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigo
KFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIpKHVsb25nKSYoKChTS19Q
Tk1JX1NUQVQgKikwKS0+U3RhdFR4MTAyM0N0cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJp
dmF0ZVN0YXQsIFNLX1BOTUlfSFRYXzEwMjN9LAogICAgICAgIHsweEZGMDIwMTM3LAogICAgICAg
ICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQpLAog
ICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCkt
PlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRUeE1heEN0
cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFRYX01BWH0s
CiAgICAgICAgezB4RkYwMjAxMzgsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAg
ICAgICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcp
JigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIpKHVsb25nKSYoKChT
S19QTk1JX1NUQVQgKikwKS0+U3RhdFR4U3luY0N0cykpLAogICAgICAgICAgICAgICAgMCwgTWFj
UHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFRYX1NZTkN9LAogICAgICAgIHsweEZGMDIwMTM5LAogICAg
ICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQp
LAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICop
MCktPlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRUeFN5
bmNPY3RldHNDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVTdGF0LCBTS19QTk1J
X0hUWF9TWU5DX09DVEVUfSwKICAgICAgICB7MHhGRjAyMDEzQSwKICAgICAgICAgICAgICAgICgy
ICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAgICAgICAgICAg
ICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0KSkgKyAo
KHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RBVCAqKTApLT5TdGF0UnhPa0N0cykpLAogICAgICAg
ICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFJYfSwKICAgICAgICB7MHhGRjAy
MDEzQiwKICAgICAgICAgICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tf
UE5NSV9TVEFUKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJV
Q1RfREFUQSAqKTApLT5TdGF0KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RBVCAqKTAp
LT5TdGF0UnhPY3RldHNPa0N0cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQs
IFNLX1BOTUlfSFJYX09DVEVUfSwKICAgICAgICB7MHhGRjAyMDEzQywKICAgICAgICAgICAgICAg
ICgyICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAgICAgICAg
ICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0KSkg
KyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RBVCAqKTApLT5TdGF0UnhCcm9hZGNhc3RPa0N0
cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFJYX0JST0FE
Q0FTVH0sCiAgICAgICAgezB4RkYwMjAxM0QsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAg
ICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAoKHUzMiko
dWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIpKHVsb25n
KSYoKChTS19QTk1JX1NUQVQgKikwKS0+U3RhdFJ4TXVsdGljYXN0T2tDdHMpKSwKICAgICAgICAg
ICAgICAgIDAsIE1hY1ByaXZhdGVTdGF0LCBTS19QTk1JX0hSWF9NVUxUSUNBU1R9LAogICAgICAg
IHsweEZGMDIwMTNFLAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNp
emVvZihTS19QTk1JX1NUQVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19Q
Tk1JX1NUUlVDVF9EQVRBICopMCktPlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9T
VEFUICopMCktPlN0YXRSeFVuaWNhc3RPa0N0cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJp
dmF0ZVN0YXQsIFNLX1BOTUlfSFJYX1VOSUNBU1R9LAogICAgICAgIHsweEZGMDIwMTU3LAogICAg
ICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQp
LAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICop
MCktPlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRSeExv
bmdGcmFtZXNDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVTdGF0LCBTS19QTk1J
X0hSWF9MT05HRlJBTUVTfSwKICAgICAgICB7MHhGRjAyMDEzRiwKICAgICAgICAgICAgICAgICgy
ICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAgICAgICAgICAg
ICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0KSkgKyAo
KHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RBVCAqKTApLT5TdGF0UnhQYXVzZU1hY0N0cmxDdHMp
KSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVTdGF0LCBTS19QTk1JX0hSWF9QTUFDQ30s
CiAgICAgICAgezB4RkYwMjAxNDAsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAg
ICAgICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcp
JigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIpKHVsb25nKSYoKChT
S19QTk1JX1NUQVQgKikwKS0+U3RhdFJ4TWFjQ3RybEN0cykpLAogICAgICAgICAgICAgICAgMCwg
TWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFJYX01BQ0N9LAogICAgICAgIHsweEZGMDIwMTQxLAog
ICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NU
QVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRB
ICopMCktPlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRS
eFBhdXNlTWFjQ3RybEVycm9yQ3RzKSksCiAgICAgICAgICAgICAgICAwLCBNYWNQcml2YXRlU3Rh
dCwgU0tfUE5NSV9IUlhfUE1BQ0NfRVJSfSwKICAgICAgICB7MHhGRjAyMDE0MiwKICAgICAgICAg
ICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAg
ICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5T
dGF0KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RBVCAqKTApLT5TdGF0UnhNYWNDdHJs
VW5rbm93bkN0cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlf
SFJYX01BQ0NfVU5LV059LAogICAgICAgIHsweEZGMDIwMTQzLAogICAgICAgICAgICAgICAgKDIg
KyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQpLAogICAgICAgICAgICAg
ICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlN0YXQpKSArICgo
dTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRSeEJ1cnN0Q3RzKSksCiAgICAg
ICAgICAgICAgICAwLCBNYWNQcml2YXRlU3RhdCwgU0tfUE5NSV9IUlhfQlVSU1R9LAogICAgICAg
IHsweEZGMDIwMTQ0LAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNp
emVvZihTS19QTk1JX1NUQVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19Q
Tk1JX1NUUlVDVF9EQVRBICopMCktPlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9T
VEFUICopMCktPlN0YXRSeE1pc3NlZEN0cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0
ZVN0YXQsIFNLX1BOTUlfSFJYX01JU1NFRH0sCiAgICAgICAgezB4RkYwMjAxNDUsCiAgICAgICAg
ICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAg
ICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+
U3RhdCkpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUQVQgKikwKS0+U3RhdFJ4RnJhbWlu
Z0N0cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFJYX0ZS
QU1JTkd9LAogICAgICAgIHsweEZGMDIwMTQ2LAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAg
ICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQpLAogICAgICAgICAgICAgICAgKCh1MzIp
KHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlN0YXQpKSArICgodTMyKSh1bG9u
ZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRSeEZpZm9PdmVyZmxvd0N0cykpLAogICAgICAg
ICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFJYX09WRVJGTE9XfSwKICAgICAg
ICB7MHhGRjAyMDE0NywKICAgICAgICAgICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAgICBz
aXplb2YoU0tfUE5NSV9TVEFUKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tf
UE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlf
U1RBVCAqKTApLT5TdGF0UnhKYWJiZXJDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZh
dGVTdGF0LCBTS19QTk1JX0hSWF9KQUJCRVJ9LAogICAgICAgIHsweEZGMDIwMTQ4LAogICAgICAg
ICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQpLAog
ICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCkt
PlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRSeENhcnJp
ZXJDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVTdGF0LCBTS19QTk1JX0hSWF9D
QVJSSUVSfSwKICAgICAgICB7MHhGRjAyMDE0OSwKICAgICAgICAgICAgICAgICgyICsgMSksCiAg
ICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAgICAgICAgICAgICAgICgodTMy
KSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0KSkgKyAoKHUzMikodWxv
bmcpJigoKFNLX1BOTUlfU1RBVCAqKTApLT5TdGF0UnhJUkxlbmd0aEN0cykpLAogICAgICAgICAg
ICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFJYX0lSTEVOR1RIfSwKICAgICAgICB7
MHhGRjAyMDE0QSwKICAgICAgICAgICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAgICBzaXpl
b2YoU0tfUE5NSV9TVEFUKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5N
SV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RB
VCAqKTApLT5TdGF0UnhTeW1ib2xDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVT
dGF0LCBTS19QTk1JX0hSWF9TWU1CT0x9LAogICAgICAgIHsweEZGMDIwMTRCLAogICAgICAgICAg
ICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQpLAogICAg
ICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlN0
YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRSeFNob3J0c0N0
cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFJYX1NIT1JU
U30sCiAgICAgICAgezB4RkYwMjAxNEMsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAg
ICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxv
bmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIpKHVsb25nKSYo
KChTS19QTk1JX1NUQVQgKikwKS0+U3RhdFJ4UnVudEN0cykpLAogICAgICAgICAgICAgICAgMCwg
TWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFJYX1JVTlR9LAogICAgICAgIHsweEZGMDIwMTRELAog
ICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NU
QVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRB
ICopMCktPlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRS
eENleHRDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVTdGF0LCBTS19QTk1JX0hS
WF9DRVhUfSwKICAgICAgICB7MHhGRjAyMDE0RSwKICAgICAgICAgICAgICAgICgyICsgMSksCiAg
ICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAgICAgICAgICAgICAgICgodTMy
KSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0KSkgKyAoKHUzMikodWxv
bmcpJigoKFNLX1BOTUlfU1RBVCAqKTApLT5TdGF0UnhUb29Mb25nQ3RzKSksCiAgICAgICAgICAg
ICAgICAwLCBNYWNQcml2YXRlU3RhdCwgU0tfUE5NSV9IUlhfVE9PX0xPTkd9LAogICAgICAgIHsw
eEZGMDIwMTRGLAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVv
ZihTS19QTk1JX1NUQVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1J
X1NUUlVDVF9EQVRBICopMCktPlN0YXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFU
ICopMCktPlN0YXRSeEZjc0N0cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQs
IFNLX1BOTUlfSFJYX0ZDU30sCgoKCgoKICAgICAgICB7MHhGRjAyMDE1MSwKICAgICAgICAgICAg
ICAgICgyICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAgICAg
ICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0
KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RBVCAqKTApLT5TdGF0Ung2NEN0cykpLAog
ICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFJYXzY0fSwKICAgICAg
ICB7MHhGRjAyMDE1MiwKICAgICAgICAgICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAgICBz
aXplb2YoU0tfUE5NSV9TVEFUKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tf
UE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlf
U1RBVCAqKTApLT5TdGF0UngxMjdDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVT
dGF0LCBTS19QTk1JX0hSWF8xMjd9LAogICAgICAgIHsweEZGMDIwMTUzLAogICAgICAgICAgICAg
ICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1NUQVQpLAogICAgICAg
ICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlN0YXQp
KSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVEFUICopMCktPlN0YXRSeDI1NUN0cykpLAog
ICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZVN0YXQsIFNLX1BOTUlfSFJYXzI1NX0sCiAgICAg
ICAgezB4RkYwMjAxNTQsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAgICAg
c2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNL
X1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1J
X1NUQVQgKikwKS0+U3RhdFJ4NTExQ3RzKSksCiAgICAgICAgICAgICAgICAwLCBNYWNQcml2YXRl
U3RhdCwgU0tfUE5NSV9IUlhfNTExfSwKICAgICAgICB7MHhGRjAyMDE1NSwKICAgICAgICAgICAg
ICAgICgyICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9TVEFUKSwKICAgICAg
ICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5TdGF0
KSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RBVCAqKTApLT5TdGF0UngxMDIzQ3RzKSks
CiAgICAgICAgICAgICAgICAwLCBNYWNQcml2YXRlU3RhdCwgU0tfUE5NSV9IUlhfMTAyM30sCiAg
ICAgICAgezB4RkYwMjAxNTYsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAg
ICAgc2l6ZW9mKFNLX1BOTUlfU1RBVCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigo
KFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+U3RhdCkpICsgKCh1MzIpKHVsb25nKSYoKChTS19Q
Tk1JX1NUQVQgKikwKS0+U3RhdFJ4TWF4Q3RzKSksCiAgICAgICAgICAgICAgICAwLCBNYWNQcml2
YXRlU3RhdCwgU0tfUE5NSV9IUlhfTUFYfSwKICAgICAgICB7MHhGRjAxMDEyMCwKICAgICAgICAg
ICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9DT05GKSwKICAg
ICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5D
b25mKSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfQ09ORiAqKTApLT5Db25mTWFjQ3VycmVu
dEFkZHIpKSwKICAgICAgICAgICAgICAgIDEsIEFkZHIsIDB9LAogICAgICAgIHsweEZGMDEwMTIx
LAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1J
X0NPTkYpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9E
QVRBICopMCktPkNvbmYpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9DT05GICopMCktPkNv
bmZNYWNGYWN0b3J5QWRkcikpLAogICAgICAgICAgICAgICAgMCwgQWRkciwgMH0sCiAgICAgICAg
ezB4RkYwMTAxMjIsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAgICAgc2l6
ZW9mKFNLX1BOTUlfQ09ORiksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BO
TUlfU1RSVUNUX0RBVEEgKikwKS0+Q29uZikpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX0NP
TkYgKikwKS0+Q29uZlBNRCkpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZUNvbmYsIDB9
LAogICAgICAgIHsweEZGMDEwMTIzLAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAg
ICAgICAgIHNpemVvZihTS19QTk1JX0NPTkYpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25n
KSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPkNvbmYpKSArICgodTMyKSh1bG9uZykmKCgo
U0tfUE5NSV9DT05GICopMCktPkNvbmZDb25uZWN0b3IpKSwKICAgICAgICAgICAgICAgIDAsIE1h
Y1ByaXZhdGVDb25mLCAwfSwKICAgICAgICB7MHhGRjAxMDEyNCwKICAgICAgICAgICAgICAgICgy
ICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9DT05GKSwKICAgICAgICAgICAg
ICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5Db25mKSkgKyAo
KHUzMikodWxvbmcpJigoKFNLX1BOTUlfQ09ORiAqKTApLT5Db25mTGlua0NhcGFiaWxpdHkpKSwK
ICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVDb25mLCAwfSwKICAgICAgICB7MHhGRjAxMDEy
NSwKICAgICAgICAgICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5N
SV9DT05GKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1Rf
REFUQSAqKTApLT5Db25mKSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfQ09ORiAqKTApLT5D
b25mTGlua01vZGUpKSwKICAgICAgICAgICAgICAgIDEsIE1hY1ByaXZhdGVDb25mLCAwfSwKICAg
ICAgICB7MHhGRjAxMDEyNiwKICAgICAgICAgICAgICAgICgyICsgMSksCiAgICAgICAgICAgICAg
ICBzaXplb2YoU0tfUE5NSV9DT05GKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgo
U0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5Db25mKSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BO
TUlfQ09ORiAqKTApLT5Db25mTGlua01vZGVTdGF0dXMpKSwKICAgICAgICAgICAgICAgIDAsIE1h
Y1ByaXZhdGVDb25mLCAwfSwKICAgICAgICB7MHhGRjAxMDEyNywKICAgICAgICAgICAgICAgICgy
ICsgMSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9DT05GKSwKICAgICAgICAgICAg
ICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5Db25mKSkgKyAo
KHUzMikodWxvbmcpJigoKFNLX1BOTUlfQ09ORiAqKTApLT5Db25mTGlua1N0YXR1cykpLAogICAg
ICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZUNvbmYsIDB9LAogICAgICAgIHsweEZGMDEwMTI4LAog
ICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX0NP
TkYpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRB
ICopMCktPkNvbmYpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9DT05GICopMCktPkNvbmZG
bG93Q3RybENhcGFiaWxpdHkpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVDb25mLCAw
fSwKICAgICAgICB7MHhGRjAxMDEyOSwKICAgICAgICAgICAgICAgICgyICsgMSksCiAgICAgICAg
ICAgICAgICBzaXplb2YoU0tfUE5NSV9DT05GKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9u
ZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5Db25mKSkgKyAoKHUzMikodWxvbmcpJigo
KFNLX1BOTUlfQ09ORiAqKTApLT5Db25mRmxvd0N0cmxNb2RlKSksCiAgICAgICAgICAgICAgICAx
LCBNYWNQcml2YXRlQ29uZiwgMH0sCiAgICAgICAgezB4RkYwMTAxMkEsCiAgICAgICAgICAgICAg
ICAoMiArIDEpLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfQ09ORiksCiAgICAgICAg
ICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+Q29uZikp
ICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX0NPTkYgKikwKS0+Q29uZkZsb3dDdHJsU3RhdHVz
KSksCiAgICAgICAgICAgICAgICAwLCBNYWNQcml2YXRlQ29uZiwgMH0sCiAgICAgICAgezB4RkYw
MTAxMkIsCiAgICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNL
X1BOTUlfQ09ORiksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RS
VUNUX0RBVEEgKikwKS0+Q29uZikpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX0NPTkYgKikw
KS0+Q29uZlBoeU9wZXJhdGlvbkNhcGFiaWxpdHkpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1By
aXZhdGVDb25mLCAwfSwKICAgICAgICB7MHhGRjAxMDEyQywKICAgICAgICAgICAgICAgICgyICsg
MSksCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9DT05GKSwKICAgICAgICAgICAgICAg
ICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5Db25mKSkgKyAoKHUz
MikodWxvbmcpJigoKFNLX1BOTUlfQ09ORiAqKTApLT5Db25mUGh5T3BlcmF0aW9uTW9kZSkpLAog
ICAgICAgICAgICAgICAgMSwgTWFjUHJpdmF0ZUNvbmYsIDB9LAogICAgICAgIHsweEZGMDEwMTJE
LAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1J
X0NPTkYpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9E
QVRBICopMCktPkNvbmYpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9DT05GICopMCktPkNv
bmZQaHlPcGVyYXRpb25TdGF0dXMpKSwKICAgICAgICAgICAgICAgIDAsIE1hY1ByaXZhdGVDb25m
LCAwfSwKICAgICAgICB7MHhGRjAxMDE3MCwKICAgICAgICAgICAgICAgICgyICsgMSksCiAgICAg
ICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9DT05GKSwKICAgICAgICAgICAgICAgICgodTMyKSh1
bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5Db25mKSkgKyAoKHUzMikodWxvbmcp
JigoKFNLX1BOTUlfQ09ORiAqKTApLT5Db25mU3BlZWRDYXBhYmlsaXR5KSksCiAgICAgICAgICAg
ICAgICAwLCBNYWNQcml2YXRlQ29uZiwgMH0sCiAgICAgICAgezB4RkYwMTAxNzEsCiAgICAgICAg
ICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfQ09ORiksCiAg
ICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+
Q29uZikpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX0NPTkYgKikwKS0+Q29uZlNwZWVkTW9k
ZSkpLAogICAgICAgICAgICAgICAgMSwgTWFjUHJpdmF0ZUNvbmYsIDB9LAogICAgICAgIHsweEZG
MDEwMTcyLAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihT
S19QTk1JX0NPTkYpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NU
UlVDVF9EQVRBICopMCktPkNvbmYpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9DT05GICop
MCktPkNvbmZTcGVlZFN0YXR1cykpLAogICAgICAgICAgICAgICAgMCwgTWFjUHJpdmF0ZUNvbmYs
IDB9LAogICAgICAgIHsweEZGMDEwMTMwLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAg
ICAgIDAsCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RB
VEEgKikwKS0+VHJhcCkpLAogICAgICAgICAgICAgICAgMCwgR2VuZXJhbCwgMH0sCiAgICAgICAg
ezB4RkYwMTAxMzEsCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgMCwKICAgICAg
ICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5UcmFw
TnVtYmVyKSksCiAgICAgICAgICAgICAgICAwLCBHZW5lcmFsLCAwfSwKICAgICAgICB7MHhGRjAx
MDE0MCwKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAg
ICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlJsbXRNb2RlKSks
CiAgICAgICAgICAgICAgICAxLCBSbG10LCAwfSwKICAgICAgICB7MHhGRjAxMDE0MSwKICAgICAg
ICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVs
b25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlJsbXRQb3J0TnVtYmVyKSksCiAgICAg
ICAgICAgICAgICAwLCBSbG10LCAwfSwKICAgICAgICB7MHhGRjAxMDE0MiwKICAgICAgICAgICAg
ICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYo
KChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlJsbXRQb3J0QWN0aXZlKSksCiAgICAgICAgICAg
ICAgICAwLCBSbG10LCAwfSwKICAgICAgICB7MHhGRjAxMDE0MywKICAgICAgICAgICAgICAgIDEs
CiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19Q
Tk1JX1NUUlVDVF9EQVRBICopMCktPlJsbXRQb3J0UHJlZmVycmVkKSksCiAgICAgICAgICAgICAg
ICAxLCBSbG10LCAwfSwKICAgICAgICB7MHhGRjAyMDE2MCwKICAgICAgICAgICAgICAgIDEsCiAg
ICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1J
X1NUUlVDVF9EQVRBICopMCktPlJsbXRDaGFuZ2VDdHMpKSwKICAgICAgICAgICAgICAgIDAsIFJs
bXQsIDB9LAogICAgICAgIHsweEZGMDIwMTYxLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAg
ICAgICAgIDAsCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNU
X0RBVEEgKikwKS0+UmxtdENoYW5nZVRpbWUpKSwKICAgICAgICAgICAgICAgIDAsIFJsbXQsIDB9
LAogICAgICAgIHsweEZGMDIwMTYyLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAg
IDAsCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEg
KikwKS0+UmxtdENoYW5nZUVzdGltYXRlKSksCiAgICAgICAgICAgICAgICAwLCBSbG10LCAwfSwK
ICAgICAgICB7MHhGRjAyMDE2MywKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAw
LAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICop
MCktPlJsbXRDaGFuZ2VUaHJlc2hvbGQpKSwKICAgICAgICAgICAgICAgIDEsIFJsbXQsIDB9LAog
ICAgICAgIHsweEZGMDIwMTY0LAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAg
ICAgIHNpemVvZihTS19QTk1JX1JMTVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYo
KChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlJsbXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tf
UE5NSV9STE1UICopMCktPlJsbXRJbmRleCkpLAogICAgICAgICAgICAgICAgMCwgUmxtdFN0YXQs
IDB9LAogICAgICAgIHsweEZGMDIwMTY1LAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAg
ICAgICAgICAgIHNpemVvZihTS19QTk1JX1JMTVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVs
b25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlJsbXQpKSArICgodTMyKSh1bG9uZykm
KCgoU0tfUE5NSV9STE1UICopMCktPlJsbXRTdGF0dXMpKSwKICAgICAgICAgICAgICAgIDAsIFJs
bXRTdGF0LCAwfSwKICAgICAgICB7MHhGRjAyMDE2NiwKICAgICAgICAgICAgICAgICgyICsgMSks
CiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9STE1UKSwKICAgICAgICAgICAgICAgICgo
dTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5SbG10KSkgKyAoKHUzMiko
dWxvbmcpJigoKFNLX1BOTUlfUkxNVCAqKTApLT5SbG10VHhIZWxsb0N0cykpLAogICAgICAgICAg
ICAgICAgMCwgUmxtdFN0YXQsIDB9LAogICAgICAgIHsweEZGMDIwMTY3LAogICAgICAgICAgICAg
ICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNpemVvZihTS19QTk1JX1JMTVQpLAogICAgICAg
ICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlJsbXQp
KSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9STE1UICopMCktPlJsbXRSeEhlbGxvQ3RzKSks
CiAgICAgICAgICAgICAgICAwLCBSbG10U3RhdCwgMH0sCiAgICAgICAgezB4RkYwMjAxNjgsCiAg
ICAgICAgICAgICAgICAoMiArIDEpLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfUkxN
VCksCiAgICAgICAgICAgICAgICAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEg
KikwKS0+UmxtdCkpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1JMTVQgKikwKS0+UmxtdFR4
U3BIZWxsb1JlcUN0cykpLAogICAgICAgICAgICAgICAgMCwgUmxtdFN0YXQsIDB9LAogICAgICAg
IHsweEZGMDIwMTY5LAogICAgICAgICAgICAgICAgKDIgKyAxKSwKICAgICAgICAgICAgICAgIHNp
emVvZihTS19QTk1JX1JMTVQpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19Q
Tk1JX1NUUlVDVF9EQVRBICopMCktPlJsbXQpKSArICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9S
TE1UICopMCktPlJsbXRSeFNwSGVsbG9DdHMpKSwKICAgICAgICAgICAgICAgIDAsIFJsbXRTdGF0
LCAwfSwKICAgICAgICB7MHhGRjAxMDE1MCwKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAg
ICAgICAwLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9E
QVRBICopMCktPlJsbXRNb25pdG9yTnVtYmVyKSksCiAgICAgICAgICAgICAgICAwLCBHZW5lcmFs
LCAwfSwKICAgICAgICB7MHhGRjAxMDE1MSwKICAgICAgICAgICAgICAgIDIwLAogICAgICAgICAg
ICAgICAgc2l6ZW9mKFNLX1BOTUlfUkxNVF9NT05JVE9SKSwKICAgICAgICAgICAgICAgICgodTMy
KSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5SbG10TW9uaXRvcikpICsgKCh1
MzIpKHVsb25nKSYoKChTS19QTk1JX1JMTVRfTU9OSVRPUiAqKTApLT5SbG10TW9uaXRvckluZGV4
KSksCiAgICAgICAgICAgICAgICAwLCBNb25pdG9yLCAwfSwKICAgICAgICB7MHhGRjAxMDE1MiwK
ICAgICAgICAgICAgICAgIDIwLAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfUkxNVF9N
T05JVE9SKSwKICAgICAgICAgICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1Rf
REFUQSAqKTApLT5SbG10TW9uaXRvcikpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1JMTVRf
TU9OSVRPUiAqKTApLT5SbG10TW9uaXRvckFkZHIpKSwKICAgICAgICAgICAgICAgIDAsIE1vbml0
b3IsIDB9LAogICAgICAgIHsweEZGMDEwMTUzLAogICAgICAgICAgICAgICAgMjAsCiAgICAgICAg
ICAgICAgICBzaXplb2YoU0tfUE5NSV9STE1UX01PTklUT1IpLAogICAgICAgICAgICAgICAgKCh1
MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlJsbXRNb25pdG9yKSkgKyAo
KHUzMikodWxvbmcpJigoKFNLX1BOTUlfUkxNVF9NT05JVE9SICopMCktPlJsbXRNb25pdG9yRXJy
b3JDdHMpKSwKICAgICAgICAgICAgICAgIDAsIE1vbml0b3IsIDB9LAogICAgICAgIHsweEZGMDEw
MTU0LAogICAgICAgICAgICAgICAgMjAsCiAgICAgICAgICAgICAgICBzaXplb2YoU0tfUE5NSV9S
TE1UX01PTklUT1IpLAogICAgICAgICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NU
UlVDVF9EQVRBICopMCktPlJsbXRNb25pdG9yKSkgKyAoKHUzMikodWxvbmcpJigoKFNLX1BOTUlf
UkxNVF9NT05JVE9SICopMCktPlJsbXRNb25pdG9yVGltZXN0YW1wKSksCiAgICAgICAgICAgICAg
ICAwLCBNb25pdG9yLCAwfSwKICAgICAgICB7MHhGRjAxMDE1NSwKICAgICAgICAgICAgICAgIDIw
LAogICAgICAgICAgICAgICAgc2l6ZW9mKFNLX1BOTUlfUkxNVF9NT05JVE9SKSwKICAgICAgICAg
ICAgICAgICgodTMyKSh1bG9uZykmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5SbG10TW9u
aXRvcikpICsgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1JMTVRfTU9OSVRPUiAqKTApLT5SbG10
TW9uaXRvckFkbWluKSksCiAgICAgICAgICAgICAgICAxLCBNb25pdG9yLCAwfSwKICAgICAgICB7
MHhGRjAxMDExRiwKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAg
ICAgICAgICAgKCh1MzIpKHVsb25nKSYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPk10dVNp
emUpKSwKICAgICAgICAgICAgICAgIDEsIE1hY1ByaXZhdGVDb25mLCAwfSwKICAgICAgICB7MHhG
RjAyMDIwMCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAg
ICAgICAgMCwKICAgICAgICAgICAgICAgIDAsIFZjdCwgMH0sCiAgICAgICAgezB4RkYwMjAyMDEs
CiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAs
CiAgICAgICAgICAgICAgICAyLCBWY3QsIDB9LAogICAgICAgIHsweEZGMDIwMjAyLAogICAgICAg
ICAgICAgICAgMCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwLAogICAgICAg
ICAgICAgICAgMCwgVmN0LCAwfSwKfTsKIyA1MjcgInNrZ2Vwbm1pLmMiIDIKIyA1MzUgInNrZ2Vw
bm1pLmMiCnN0YXRpYyBjb25zdCB1MTYgU3RhdE92cmZsd0JpdFtdWygxICsgMSldID0gewogICAg
ICAgICAgICAgICAgeyBTS19QTk1JX0hUWCwgU0tfUE5NSV9IVFhfVU5JQ0FTVH0sCiAgICAgICAg
ICAgICAgICB7IFNLX1BOTUlfSFRYX09DVEVUSElHSCwgU0tfUE5NSV9IVFhfQlJPQURDQVNUfSwK
ICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IVFhfT0NURVRMT1csIFNLX1BOTUlfSFRYX1BNQUND
fSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IVFhfQlJPQURDQVNULCBTS19QTk1JX0hUWF9N
VUxUSUNBU1R9LAogICAgICAgICAgICAgICAgeyBTS19QTk1JX0hUWF9NVUxUSUNBU1QsIFNLX1BO
TUlfSFRYX09DVEVUTE9XfSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IVFhfVU5JQ0FTVCwg
U0tfUE5NSV9IVFhfT0NURVRISUdIfSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IVFhfTE9O
R0ZSQU1FUywgU0tfUE5NSV9IVFhfNjR9LAogICAgICAgICAgICAgICAgeyBTS19QTk1JX0hUWF9C
VVJTVCwgU0tfUE5NSV9IVFhfMTI3fSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IVFhfUE1B
Q0MsIFNLX1BOTUlfSFRYXzI1NX0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFRYX01BQ0Ms
IFNLX1BOTUlfSFRYXzUxMX0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFRYX1NJTkdMRV9D
T0wsIFNLX1BOTUlfSFRYXzEwMjN9LAogICAgICAgICAgICAgICAgeyBTS19QTk1JX0hUWF9NVUxU
SV9DT0wsIFNLX1BOTUlfSFRYX01BWH0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFRYX0VY
Q0VTU19DT0wsIFNLX1BOTUlfSFRYX0xPTkdGUkFNRVN9LAogICAgICAgICAgICAgICAgeyBTS19Q
Tk1JX0hUWF9MQVRFX0NPTCwgU0tfUE5NSV9IVFhfUkVTRVJWRUR9LAogICAgICAgICAgICAgICAg
eyBTS19QTk1JX0hUWF9ERUZGRVJBTCwgU0tfUE5NSV9IVFhfQ09MfSwKICAgICAgICAgICAgICAg
IHsgU0tfUE5NSV9IVFhfRVhDRVNTX0RFRiwgU0tfUE5NSV9IVFhfTEFURV9DT0x9LAogICAgICAg
ICAgICAgICAgeyBTS19QTk1JX0hUWF9VTkRFUlJVTiwgU0tfUE5NSV9IVFhfRVhDRVNTX0NPTH0s
CiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFRYX0NBUlJJRVIsIFNLX1BOTUlfSFRYX01VTFRJ
X0NPTH0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFRYX1VUSUxVTkRFUiwgU0tfUE5NSV9I
VFhfU0lOR0xFX0NPTH0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFRYX1VUSUxPVkVSLCBT
S19QTk1JX0hUWF9VTkRFUlJVTn0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFRYXzY0LCBT
S19QTk1JX0hUWF9SRVNFUlZFRH0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFRYXzEyNywg
U0tfUE5NSV9IVFhfUkVTRVJWRUR9LAogICAgICAgICAgICAgICAgeyBTS19QTk1JX0hUWF8yNTUs
IFNLX1BOTUlfSFRYX1JFU0VSVkVEfSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IVFhfNTEx
LCBTS19QTk1JX0hUWF9SRVNFUlZFRH0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFRYXzEw
MjMsIFNLX1BOTUlfSFRYX1JFU0VSVkVEfSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IVFhf
TUFYLCBTS19QTk1JX0hUWF9SRVNFUlZFRH0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFRY
X1JFU0VSVkVELCBTS19QTk1JX0hUWF9SRVNFUlZFRH0sCiAgICAgICAgICAgICAgICB7IFNLX1BO
TUlfSFRYX1JFU0VSVkVELCBTS19QTk1JX0hUWF9SRVNFUlZFRH0sCiAgICAgICAgICAgICAgICB7
IFNLX1BOTUlfSFRYX1JFU0VSVkVELCBTS19QTk1JX0hUWF9SRVNFUlZFRH0sCiAgICAgICAgICAg
ICAgICB7IFNLX1BOTUlfSFRYX1JFU0VSVkVELCBTS19QTk1JX0hUWF9SRVNFUlZFRH0sCiAgICAg
ICAgICAgICAgICB7IFNLX1BOTUlfSFRYX1JFU0VSVkVELCBTS19QTk1JX0hUWF9SRVNFUlZFRH0s
CiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFRYX1JFU0VSVkVELCBTS19QTk1JX0hUWF9SRVNF
UlZFRH0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFJYLCBTS19QTk1JX0hSWF9VTklDQVNU
fSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IUlhfT0NURVRISUdILCBTS19QTk1JX0hSWF9C
Uk9BRENBU1R9LAogICAgICAgICAgICAgICAgeyBTS19QTk1JX0hSWF9PQ1RFVExPVywgU0tfUE5N
SV9IUlhfUE1BQ0N9LAogICAgICAgICAgICAgICAgeyBTS19QTk1JX0hSWF9CUk9BRENBU1QsIFNL
X1BOTUlfSFJYX01VTFRJQ0FTVH0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFJYX01VTFRJ
Q0FTVCwgU0tfUE5NSV9IUlhfRkNTfSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IUlhfVU5J
Q0FTVCwgU0tfUE5NSV9IUlhfUkVTRVJWRUR9LAogICAgICAgICAgICAgICAgeyBTS19QTk1JX0hS
WF9QTUFDQywgU0tfUE5NSV9IUlhfT0NURVRMT1d9LAogICAgICAgICAgICAgICAgeyBTS19QTk1J
X0hSWF9NQUNDLCBTS19QTk1JX0hSWF9PQ1RFVEhJR0h9LAogICAgICAgICAgICAgICAgeyBTS19Q
Tk1JX0hSWF9QTUFDQ19FUlIsIFNLX1BOTUlfSFJYX0JBRE9DVEVUTE9XfSwKICAgICAgICAgICAg
ICAgIHsgU0tfUE5NSV9IUlhfTUFDQ19VTktXTiwgU0tfUE5NSV9IUlhfQkFET0NURVRISUdIfSwK
ICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IUlhfQlVSU1QsIFNLX1BOTUlfSFJYX1VOREVSU0la
RX0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFJYX01JU1NFRCwgU0tfUE5NSV9IUlhfUlVO
VH0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFJYX0ZSQU1JTkcsIFNLX1BOTUlfSFJYXzY0
fSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IUlhfT1ZFUkZMT1csIFNLX1BOTUlfSFJYXzEy
N30sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFJYX0pBQkJFUiwgU0tfUE5NSV9IUlhfMjU1
fSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IUlhfQ0FSUklFUiwgU0tfUE5NSV9IUlhfNTEx
fSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IUlhfSVJMRU5HVEgsIFNLX1BOTUlfSFJYXzEw
MjN9LAogICAgICAgICAgICAgICAgeyBTS19QTk1JX0hSWF9TWU1CT0wsIFNLX1BOTUlfSFJYX01B
WH0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFJYX1NIT1JUUywgU0tfUE5NSV9IUlhfTE9O
R0ZSQU1FU30sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFJYX1JVTlQsIFNLX1BOTUlfSFJY
X1RPT19MT05HfSwKICAgICAgICAgICAgICAgIHsgU0tfUE5NSV9IUlhfVE9PX0xPTkcsIFNLX1BO
TUlfSFJYX0pBQkJFUn0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFJYX0ZDUywgU0tfUE5N
SV9IUlhfUkVTRVJWRUR9LAogICAgICAgICAgICAgICAgeyBTS19QTk1JX0hSWF9SRVNFUlZFRCwg
U0tfUE5NSV9IUlhfT1ZFUkZMT1d9LAogICAgICAgICAgICAgICAgeyBTS19QTk1JX0hSWF9DRVhU
LCBTS19QTk1JX0hSWF9SRVNFUlZFRH0sCiAgICAgICAgICAgICAgICB7IFNLX1BOTUlfSFJYX1VU
SUxVTkRFUiwgU0tfUE5NSV9IUlhfUkVTRVJWRUR9LAogICAgICAgICAgICAgICAgeyBTS19QTk1J
X0hSWF9VVElMT1ZFUiwgU0tfUE5NSV9IUlhfUkVTRVJWRUR9LAogICAgICAgICAgICAgICAgeyBT
S19QTk1JX0hSWF82NCwgU0tfUE5NSV9IUlhfUkVTRVJWRUR9LAogICAgICAgICAgICAgICAgeyBT
S19QTk1JX0hSWF8xMjcsIFNLX1BOTUlfSFJYX1JFU0VSVkVEfSwKICAgICAgICAgICAgICAgIHsg
U0tfUE5NSV9IUlhfMjU1LCBTS19QTk1JX0hSWF9SRVNFUlZFRH0sCiAgICAgICAgICAgICAgICB7
IFNLX1BOTUlfSFJYXzUxMSwgU0tfUE5NSV9IUlhfUkVTRVJWRUR9LAogICAgICAgICAgICAgICAg
eyBTS19QTk1JX0hSWF8xMDIzLCBTS19QTk1JX0hSWF9SRVNFUlZFRH0sCiAgICAgICAgICAgICAg
ICB7IFNLX1BOTUlfSFJYX01BWCwgU0tfUE5NSV9IUlhfUkVTRVJWRUR9Cn07CgoKCgpzdGF0aWMg
Y29uc3QgU0tfUE5NSV9TVEFUQUREUiBTdGF0QWRkcltTS19QTk1JX01BWF9JRFhdWygxICsgMSld
ID0gewoKICAgICAgICB7ezB4MDI4MCwgKCEwKX0sIHswLCAwfX0sCgogICAgICAgIHt7MHgwMjg0
LCAoITApfSwgeygweDAxMDAgKyAyMzIpLCAoITApfX0sCgogICAgICAgIHt7MHgwMjg4LCAwfSwg
eygweDAxMDAgKyAyMjQpLCAwfX0sCgogICAgICAgIHt7MHgwMjhjLCAoITApfSwgeygweDAxMDAg
KyAyMDApLCAoITApfX0sCgogICAgICAgIHt7MHgwMjkwLCAoITApfSwgeygweDAxMDAgKyAyMTYp
LCAoITApfX0sCgogICAgICAgIHt7MHgwMjk0LCAoITApfSwgeygweDAxMDAgKyAxOTIpLCAoITAp
fX0sCgogICAgICAgIHt7MHgwMjljLCAoITApfSwgezAsIDB9fSwKCiAgICAgICAge3sweDAyYTAs
ICghMCl9LCB7KDB4MDEwMCArIDIwOCksICghMCl9fSwKCiAgICAgICAge3sweDAyYTQsICghMCl9
LCB7MCwgMH19LAoKICAgICAgICB7ezAsIDB9LCB7KDB4MDEwMCArIDMwNCksICghMCl9fSwKCiAg
ICAgICAge3sweDAyYTgsICghMCl9LCB7KDB4MDEwMCArIDMzNiksICghMCl9fSwKCiAgICAgICAg
e3sweDAyYWMsICghMCl9LCB7KDB4MDEwMCArIDMyOCksICghMCl9fSwKCiAgICAgICAge3sweDAy
YjAsICghMCl9LCB7KDB4MDEwMCArIDMyMCksICghMCl9fSwKCiAgICAgICAge3sweDAyYjQsICgh
MCl9LCB7KDB4MDEwMCArIDMxMiksICghMCl9fSwKCiAgICAgICAge3sweDAyYjgsICghMCl9LCB7
MCwgMH19LAoKICAgICAgICB7ezB4MDJiYywgKCEwKX0sIHswLCAwfX0sCgogICAgICAgIHt7MHgw
MmMwLCAoITApfSwgeygweDAxMDAgKyAzNDQpLCAoITApfX0sCgogICAgICAgIHt7MHgwMmM0LCAo
ITApfSwgezAsIDB9fSwKCiAgICAgICAge3swLCAwfSwgezAsIDB9fSwKCiAgICAgICAge3swLCAw
fSwgezAsIDB9fSwKCiAgICAgICAge3sweDAyZDAsICghMCl9LCB7KDB4MDEwMCArIDI0MCksICgh
MCl9fSwKCiAgICAgICAge3sweDAyZDQsICghMCl9LCB7KDB4MDEwMCArIDI0OCksICghMCl9fSwK
CiAgICAgICAge3sweDAyZDgsICghMCl9LCB7KDB4MDEwMCArIDI1NiksICghMCl9fSwKCiAgICAg
ICAge3sweDAyZGMsICghMCl9LCB7KDB4MDEwMCArIDI2NCksICghMCl9fSwKCiAgICAgICAge3sw
eDAyZTAsICghMCl9LCB7KDB4MDEwMCArIDI3MiksICghMCl9fSwKCiAgICAgICAge3sweDAyZTQs
ICghMCl9LCB7KDB4MDEwMCArIDI4MCksICghMCl9fSwKCiAgICAgICAge3sweDAyOTgsICghMCl9
LCB7KDB4MDEwMCArIDI4OCksICghMCl9fSwKCiAgICAgICAge3swLCAwfSwgezAsIDB9fSwKCiAg
ICAgICAge3swLCAwfSwgezAsIDB9fSwKCiAgICAgICAge3swLCAwfSwgezAsIDB9fSwKCiAgICAg
ICAge3sweDAzMDAsICghMCl9LCB7MCwgMH19LAoKICAgICAgICB7ezB4MDMwNCwgKCEwKX0sIHso
MHgwMTAwICsgNTYpLCAoITApfX0sCgogICAgICAgIHt7MHgwMzA4LCAwfSwgeygweDAxMDAgKyA0
OCksIDB9fSwKCiAgICAgICAge3swLCAwfSwgeygweDAxMDAgKyA3MiksICghMCl9fSwKCiAgICAg
ICAge3swLCAwfSwgeygweDAxMDAgKyA2NCksICghMCl9fSwKCiAgICAgICAge3sweDAzMGMsICgh
MCl9LCB7KDB4MDEwMCArIDgpLCAoITApfX0sCgogICAgICAgIHt7MHgwMzEwLCAoITApfSwgeygw
eDAxMDAgKyAyNCksICghMCl9fSwKCiAgICAgICAge3sweDAzMTQsICghMCl9LCB7KDB4MDEwMCAr
IDApLCAoITApfX0sCgogICAgICAgIHt7MHgwMzE4LCAoITApfSwgeygweDAxMDAgKyAxNiksICgh
MCl9fSwKCiAgICAgICAge3sweDAzMWMsICghMCl9LCB7MCwgMH19LAoKICAgICAgICB7ezB4MDMy
MCwgKCEwKX0sIHswLCAwfX0sCgogICAgICAgIHt7MHgwMzI0LCAoITApfSwgezAsIDB9fSwKCiAg
ICAgICAge3sweDAzMjgsICghMCl9LCB7MCwgMH19LAoKICAgICAgICB7ezB4MDMyYywgKCEwKX0s
IHswLCAwfX0sCgogICAgICAgIHt7MHgwMzMwLCAoITApfSwgezAsIDB9fSwKCiAgICAgICAge3sw
LCAwfSx7KDB4MDEwMCArIDgwKSwgKCEwKX19LAoKICAgICAgICB7ezB4MDMzNCwgKCEwKX0sIHso
MHgwMTAwICsgMTc2KSwgKCEwKX19LAoKICAgICAgICB7ezB4MDMzOCwgKCEwKX0sIHsoMHgwMTAw
ICsgMTYwKSwgKCEwKX19LAoKICAgICAgICB7ezB4MDMzYywgKCEwKX0sIHswLCAwfX0sCgogICAg
ICAgIHt7MHgwMzQwLCAoITApfSwgezAsIDB9fSwKCiAgICAgICAge3sweDAzNDQsICghMCl9LCB7
MCwgMH19LAoKICAgICAgICB7ezB4MDM0OCwgKCEwKX0sIHswLCAwfX0sCgogICAgICAgIHt7MHgw
MzRjLCAoITApfSwgeygweDAxMDAgKyA4OCksICghMCl9fSwKCiAgICAgICAge3sweDAzNTAsICgh
MCl9LCB7KDB4MDEwMCArIDE1MiksICghMCl9fSwKCiAgICAgICAge3sweDAzNTQsICghMCl9LCB7
KDB4MDEwMCArIDMyKSwgKCEwKX19LAoKICAgICAgICB7ezB4MDM1YywgKCEwKX0sIHswLCAwfX0s
CgogICAgICAgIHt7MCwgMH0sIHswLCAwfX0sCgogICAgICAgIHt7MCwgMH0sIHswLCAwfX0sCgog
ICAgICAgIHt7MHgwMzY4LCAoITApfSwgeygweDAxMDAgKyA5NiksICghMCl9fSwKCiAgICAgICAg
e3sweDAzNmMsICghMCl9LCB7KDB4MDEwMCArIDEwNCksICghMCl9fSwKCiAgICAgICAge3sweDAz
NzAsICghMCl9LCB7KDB4MDEwMCArIDExMiksICghMCl9fSwKCiAgICAgICAge3sweDAzNzQsICgh
MCl9LCB7KDB4MDEwMCArIDEyMCksICghMCl9fSwKCiAgICAgICAge3sweDAzNzgsICghMCl9LCB7
KDB4MDEwMCArIDEyOCksICghMCl9fSwKCiAgICAgICAge3sweDAzN2MsICghMCl9LCB7KDB4MDEw
MCArIDEzNiksICghMCl9fSwKCiAgICAgICAge3swLCAwfSwgeygweDAxMDAgKyAxNDQpLCAoITAp
fX0sCgogICAgICAgIHt7MCwgMH0sIHswLCAwfX0KfTsKIyA3NjEgInNrZ2Vwbm1pLmMiCmludCBT
a1BubWlJbml0KApTS19BQyAqcEFDLApjaGFyKiBJb0MsCmludCBMZXZlbCkKewogICAgICAgIHVu
c2lnbmVkIGludCBQb3J0TWF4OwogICAgICAgIHVuc2lnbmVkIGludCBQb3J0SW5kZXg7CiAgICAg
ICAgdTE2IFZhbDE2OwogICAgICAgIHU4IFZhbDg7CiAgICAgICAgU0tfRVZQQVJBIEV2ZW50UGFy
YW07CiAgICAgICAgU0tfR0VQT1JUICpwUHJ0OwogICAgICAgIFNLX1BOTUlfVkNUICpwVmN0QmFj
a3VwRGF0YTsKCgogICAgICAgIDsKCgogICAgICAgIHN3aXRjaCAoTGV2ZWwpIHsKCiAgICAgICAg
Y2FzZSAwOgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVp
bHRpbl9jb25zdGFudF9wKChzaXplb2YocEFDLT5Qbm1pKSkpID8gX19jb25zdGFudF9jX2FuZF9j
b3VudF9tZW1zZXQoKCgoY2hhciAqKSZwQUMtPlBubWkpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWdu
ZWQgY2hhcikoMCkpKSwoKHNpemVvZihwQUMtPlBubWkpKSkpIDogX19jb25zdGFudF9jX21lbXNl
dCgoKChjaGFyICopJnBBQy0+UG5taSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgw
KSkpLCgoc2l6ZW9mKHBBQy0+UG5taSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXpl
b2YocEFDLT5Qbm1pKSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgoY2hhciAqKSZwQUMtPlBubWkp
KSksKCgoMCkpKSwoKChzaXplb2YocEFDLT5Qbm1pKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgo
KGNoYXIgKikmcEFDLT5Qbm1pKSksKCgwKSksKChzaXplb2YocEFDLT5Qbm1pKSkpKSkpOwogICAg
ICAgICAgICAgICAgcEFDLT5Qbm1pLlRyYXBCdWZGcmVlID0gNTEyOwogICAgICAgICAgICAgICAg
cEFDLT5Qbm1pLlN0YXJ0VXBUaW1lID0gKFNrT3NHZXRUaW1lKHBBQykpOwogICAgICAgICAgICAg
ICAgcEFDLT5Qbm1pLlJsbXRDaGFuZ2VUaHJlc2hvbGQgPSAyNDA7CiAgICAgICAgICAgICAgICBm
b3IgKFBvcnRJbmRleCA9IDA7IFBvcnRJbmRleCA8IDI7IFBvcnRJbmRleCArKykgewoKICAgICAg
ICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLlBvcnRbUG9ydEluZGV4XS5BY3RpdmVGbGFnID0g
MDsKICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID0g
MDsKICAgICAgICAgICAgICAgIH0KIyA4MTcgInNrZ2Vwbm1pLmMiCiAgICAgICAgICAgICAgICBi
cmVhazsKCiAgICAgICAgY2FzZSAxOgoKCgogICAgICAgICAgICAgICAgUG9ydE1heCA9IHBBQy0+
R0luaS5HSU1hY3NGb3VuZDsKCiAgICAgICAgICAgICAgICBmb3IgKFBvcnRJbmRleCA9IDA7IFBv
cnRJbmRleCA8IFBvcnRNYXg7IFBvcnRJbmRleCArKykgewoKICAgICAgICAgICAgICAgICAgICAg
ICAgcEFDLT5HSW5pLkdJRnVuYy5wRm5NYWNSZXNldENvdW50ZXIocEFDLCBJb0MsIFBvcnRJbmRl
eCk7CiAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgIGZvciAoUG9ydEluZGV4ID0g
MDsgUG9ydEluZGV4IDwgUG9ydE1heDsgUG9ydEluZGV4ICsrKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHBQcnQgPSAmcEFDLT5HSW5pLkdQW1BvcnRJbmRleF07CiAgICAgICAgICAgICAgICAg
ICAgICAgIHBQcnQtPlBDYWJsZUxlbiA9MHhmZjsKICAgICAgICAgICAgICAgICAgICAgICAgcFZj
dEJhY2t1cERhdGEgPSAmcEFDLT5Qbm1pLlZjdEJhY2t1cFtQb3J0SW5kZXhdOwogICAgICAgICAg
ICAgICAgICAgICAgICBwVmN0QmFja3VwRGF0YS0+UENhYmxlTGVuID0gMHhmZjsKICAgICAgICAg
ICAgICAgIH0KCgoKCiAgICAgICAgICAgICAgICAoKigmVmFsMTYpID0gKCoodm9sYXRpbGUgdW5z
aWduZWQgc2hvcnQgKikgKCh2b2lkICopKChJb0MpKygweDAwMDQpKSkpKTsKICAgICAgICAgICAg
ICAgIGlmICgoVmFsMTYgJiAoMSA8PCA5KSkgPT0gMCkgewoKICAgICAgICAgICAgICAgICAgICAg
ICAgcEFDLT5Qbm1pLlBjaUJ1c1NwZWVkID0gMzM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLlBjaUJ1c1Nw
ZWVkID0gNjY7CiAgICAgICAgICAgICAgICB9CgoKCgogICAgICAgICAgICAgICAgKCooJlZhbDE2
KSA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKSgoSW9DKSsoMHgwMDA0
KSkpKSk7CiAgICAgICAgICAgICAgICBpZiAoKFZhbDE2ICYgKDEgPDwgOCkpID09IDApIHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5QY2lCdXNXaWR0aCA9IDMyOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHBBQy0+UG5taS5QY2lCdXNXaWR0aCA9IDY0OwogICAgICAgICAgICAgICAgfQoKCgoKICAgICAg
ICAgICAgICAgIHN3aXRjaCAocEFDLT5HSW5pLkdJQ2hpcElkKSB7CiAgICAgICAgICAgICAgICBj
YXNlIDB4MGE6CiAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5DaGlwc2V0ID0gMTsK
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAweGIw
OgogICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuQ2hpcHNldCA9IDI7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKCgoKICAgICAgICAgICAg
ICAgICgqKCZWYWw4KSA9ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKChJ
b0MpKygweDAxMTkpKSkpKTsKICAgICAgICAgICAgICAgIHN3aXRjaCAoVmFsOCkgewogICAgICAg
ICAgICAgICAgY2FzZSAnUyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5QTUQg
PSAzOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5HSW5pLkdJTWFjc0ZvdW5kID4g
MSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuRGV2aWNlVHlw
ZSA9IDB4MDAwMjAwMDI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1p
LkRldmljZVR5cGUgPSAweDAwMDIwMDAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ0wnOgogICAg
ICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuUE1EID0gMjsKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHBBQy0+R0luaS5HSU1hY3NGb3VuZCA+IDEpIHsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcEFDLT5Qbm1pLkRldmljZVR5cGUgPSAweDAwMDIwMDA0OwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5EZXZpY2VUeXBlID0gMHgwMDAyMDAw
MzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKCiAgICAgICAgICAgICAgICBjYXNlICdDJzoKICAgICAgICAgICAgICAgICAgICAgICAgcEFD
LT5Qbm1pLlBNRCA9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwQUMtPkdJbmkuR0lN
YWNzRm91bmQgPiAxKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5t
aS5EZXZpY2VUeXBlID0gMHgwMDAyMDAwNjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwQUMtPlBubWkuRGV2aWNlVHlwZSA9IDB4MDAwMjAwMDU7CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2Fz
ZSAnVCc6CiAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5QTUQgPSA1OwogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAocEFDLT5HSW5pLkdJTWFjc0ZvdW5kID4gMSkgewoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuRGV2aWNlVHlwZSA9IDB4MDAwMjAw
MDg7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLkRldmljZVR5cGUg
PSAweDAwMDIwMDA3OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQgOgogICAgICAgICAgICAgICAg
ICAgICAgICBwQUMtPlBubWkuUE1EID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Q
bm1pLkRldmljZVR5cGUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgIH0KCgoKCiAgICAgICAgICAgICAgICAoKigmVmFsOCkgPSAoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKSgoSW9DKSsoMHgwMTE4KSkpKSk7CiAgICAgICAgICAg
ICAgICBzd2l0Y2ggKFZhbDgpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ0MnOgogICAgICAgICAg
ICAgICAgICAgICAgICBwQUMtPlBubWkuQ29ubmVjdG9yID0gMjsKICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnRCc6CiAgICAgICAgICAgICAgICAg
ICAgICAgIHBBQy0+UG5taS5Db25uZWN0b3IgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICdGJzoKICAgICAgICAgICAgICAgICAgICAgICAg
cEFDLT5Qbm1pLkNvbm5lY3RvciA9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoK
ICAgICAgICAgICAgICAgIGNhc2UgJ0onOgogICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBu
bWkuQ29ubmVjdG9yID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAg
ICAgICAgICAgY2FzZSAnVic6CiAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5Db25u
ZWN0b3IgPSA2OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuQ29ubmVjdG9yID0g
MTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOgoKCgogICAgICAgICAgICAgICAgKF9f
YnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YoRXZl
bnRQYXJhbSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoKGNoYXIgKikgJkV2
ZW50UGFyYW0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihF
dmVudFBhcmFtKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCgoY2hhciAqKSAmRXZlbnRQYXJh
bSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKEV2ZW50UGFy
YW0pKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKEV2ZW50UGFyYW0pKSkgPyBf
X21lbXNldF9nZW5lcmljKCgoKChjaGFyICopICZFdmVudFBhcmFtKSkpLCgoKDApKSksKCgoc2l6
ZW9mKEV2ZW50UGFyYW0pKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgoY2hhciAqKSAmRXZlbnRQ
YXJhbSkpLCgoMCkpLCgoc2l6ZW9mKEV2ZW50UGFyYW0pKSkpKSk7CiAgICAgICAgICAgICAgICBT
a1RpbWVyU3RhcnQocEFDLCBJb0MsICZwQUMtPlBubWkuUmxtdENoYW5nZUVzdGltYXRlLkVzdFRp
bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAyODEyNTAwMCwgNCwgNiwKICAgICAgICAgICAg
ICAgICAgICAgICAgRXZlbnRQYXJhbSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJu
ICgwKTsKfQojIDEwMDAgInNrZ2Vwbm1pLmMiCmludCBTa1BubWlHZXRWYXIoClNLX0FDICpwQUMs
CmNoYXIqIElvQywKdTMyIElkLAp2b2lkICpwQnVmLAp1bnNpZ25lZCBpbnQgKnBMZW4sCnUzMiBJ
bnN0YW5jZSwKdTMyIE5ldEluZGV4KQp7CiAgICAgICAgOwoKCgogICAgICAgIHJldHVybiAoUG5t
aVZhcihwQUMsIElvQywgMCwgSWQsIChjaGFyICopcEJ1ZiwgcExlbiwKICAgICAgICAgICAgICAg
IEluc3RhbmNlLCBOZXRJbmRleCkpOwp9CiMgMTA0MiAic2tnZXBubWkuYyIKaW50IFNrUG5taVBy
ZVNldFZhcigKU0tfQUMgKnBBQywKY2hhciogSW9DLAp1MzIgSWQsCnZvaWQgKnBCdWYsCnVuc2ln
bmVkIGludCAqcExlbiwKdTMyIEluc3RhbmNlLAp1MzIgTmV0SW5kZXgpCnsKICAgICAgICA7CgoK
CgogICAgICAgIHJldHVybiAoUG5taVZhcihwQUMsIElvQywgMSwgSWQsIChjaGFyICopcEJ1Ziwg
cExlbiwKICAgICAgICAgICAgICAgIEluc3RhbmNlLCBOZXRJbmRleCkpOwp9CiMgMTA4NSAic2tn
ZXBubWkuYyIKaW50IFNrUG5taVNldFZhcigKU0tfQUMgKnBBQywKY2hhciogSW9DLAp1MzIgSWQs
CnZvaWQgKnBCdWYsCnVuc2lnbmVkIGludCAqcExlbiwKdTMyIEluc3RhbmNlLAp1MzIgTmV0SW5k
ZXgpCnsKICAgICAgICA7CgoKCiAgICAgICAgcmV0dXJuIChQbm1pVmFyKHBBQywgSW9DLCAyLCBJ
ZCwgKGNoYXIgKilwQnVmLCBwTGVuLAogICAgICAgICAgICAgICAgSW5zdGFuY2UsIE5ldEluZGV4
KSk7Cn0KIyAxMTIxICJza2dlcG5taS5jIgppbnQgU2tQbm1pR2V0U3RydWN0KApTS19BQyAqcEFD
LApjaGFyKiBJb0MsCnZvaWQgKnBCdWYsCnVuc2lnbmVkIGludCAqcExlbiwKdTMyIE5ldEluZGV4
KQp7CiAgICAgICAgaW50IFJldDsKICAgICAgICB1bnNpZ25lZCBpbnQgVGFibGVJbmRleDsKICAg
ICAgICB1bnNpZ25lZCBpbnQgRHN0T2Zmc2V0OwogICAgICAgIHVuc2lnbmVkIGludCBJbnN0YW5j
ZU5vOwogICAgICAgIHVuc2lnbmVkIGludCBJbnN0YW5jZUNudDsKICAgICAgICB1MzIgSW5zdGFu
Y2U7CiAgICAgICAgdW5zaWduZWQgaW50IFRtcExlbjsKICAgICAgICBjaGFyIEtleUFyclsoNTEy
IC8gNCldWzVdOwoKCiAgICAgICAgOwoKCgogICAgICAgIGlmICgqcExlbiA8IChzaXplb2YoU0tf
UE5NSV9TVFJVQ1RfREFUQSkpKSB7CgogICAgICAgICAgICAgICAgaWYgKCpwTGVuID49ICgodW5z
aWduZWQgaW50KSh1bG9uZykgJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+VnBkRnJlZUJ5
dGVzKSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHt1MzIgVmFsMzI7IGNoYXIgKnBWYWw7
IFZhbDMyID0gKDIpOyBwVmFsID0gKGNoYXIgKikocEJ1ZikgKyAoKHUzMikodWxvbmcpICYoKChT
S19QTk1JX1NUUlVDVF9EQVRBICopMCktPiBSZXR1cm5TdGF0dXMuRXJyb3JTdGF0dXMpKTsgKF9f
YnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocFZhbCkp
LCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFy
KikmKFZhbDMyKSksKDQpKSk7IFZhbDMyID0gKCh1MzIpKC0xKSk7IHBWYWwgPSAoY2hhciAqKShw
QnVmKSArICgodTMyKSh1bG9uZykgJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+IFJldHVy
blN0YXR1cy5FcnJvck9mZnNldCkpOyAoX19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0
YW50X21lbWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9fbWVt
Y3B5KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpKTt9OwoKICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICAqcExlbiA9IChzaXplb2YoU0tfUE5NSV9TVFJVQ1Rf
REFUQSkpOwogICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICB9CgoKCgogICAgICAg
IGlmIChOZXRJbmRleCA+PSBwQUMtPlJsbXQuTnVtTmV0cykgewogICAgICAgICAgICAgICAgcmV0
dXJuICg3KTsKICAgICAgICB9CgoKICAgICAgICA7CgogICAgICAgIGlmICgoUmV0ID0gTWFjVXBk
YXRlKHBBQywgSW9DLCAwLCBwQUMtPkdJbmkuR0lNYWNzRm91bmQgLSAxKSkgIT0KICAgICAgICAg
ICAgICAgIDApIHsKCiAgICAgICAgICAgICAgICB7dTMyIFZhbDMyOyBjaGFyICpwVmFsOyBWYWwz
MiA9IChSZXQpOyBwVmFsID0gKGNoYXIgKikocEJ1ZikgKyAoKHUzMikodWxvbmcpICYoKChTS19Q
Tk1JX1NUUlVDVF9EQVRBICopMCktPiBSZXR1cm5TdGF0dXMuRXJyb3JTdGF0dXMpKTsgKF9fYnVp
bHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocFZhbCkpLCgo
Y2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikm
KFZhbDMyKSksKDQpKSk7IFZhbDMyID0gKCh1MzIpKC0xKSk7IHBWYWwgPSAoY2hhciAqKShwQnVm
KSArICgodTMyKSh1bG9uZykgJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+IFJldHVyblN0
YXR1cy5FcnJvck9mZnNldCkpOyAoX19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50
X21lbWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9fbWVtY3B5
KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpKTt9OwogICAgICAgICAgICAg
ICAgKnBMZW4gPSAoKHVuc2lnbmVkIGludCkodWxvbmcpICYoKChTS19QTk1JX1NUUlVDVF9EQVRB
ICopMCktPlZwZEZyZWVCeXRlcykpOwogICAgICAgICAgICAgICAgcmV0dXJuIChSZXQpOwogICAg
ICAgIH0KCiAgICAgICAgaWYgKChSZXQgPSBSbG10VXBkYXRlKHBBQywgSW9DLCBOZXRJbmRleCkp
ICE9IDApIHsKCiAgICAgICAgICAgICAgICB7dTMyIFZhbDMyOyBjaGFyICpwVmFsOyBWYWwzMiA9
IChSZXQpOyBwVmFsID0gKGNoYXIgKikocEJ1ZikgKyAoKHUzMikodWxvbmcpICYoKChTS19QTk1J
X1NUUlVDVF9EQVRBICopMCktPiBSZXR1cm5TdGF0dXMuRXJyb3JTdGF0dXMpKTsgKF9fYnVpbHRp
bl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocFZhbCkpLCgoY2hh
ciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikmKFZh
bDMyKSksKDQpKSk7IFZhbDMyID0gKCh1MzIpKC0xKSk7IHBWYWwgPSAoY2hhciAqKShwQnVmKSAr
ICgodTMyKSh1bG9uZykgJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+IFJldHVyblN0YXR1
cy5FcnJvck9mZnNldCkpOyAoX19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21l
bWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9fbWVtY3B5KCgo
Y2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpKTt9OwogICAgICAgICAgICAgICAg
KnBMZW4gPSAoKHVuc2lnbmVkIGludCkodWxvbmcpICYoKChTS19QTk1JX1NUUlVDVF9EQVRBICop
MCktPlZwZEZyZWVCeXRlcykpOwogICAgICAgICAgICAgICAgcmV0dXJuIChSZXQpOwogICAgICAg
IH0KCiAgICAgICAgaWYgKChSZXQgPSBTaXJxVXBkYXRlKHBBQywgSW9DKSkgIT0gMCkgewoKICAg
ICAgICAgICAgICAgIHt1MzIgVmFsMzI7IGNoYXIgKnBWYWw7IFZhbDMyID0gKFJldCk7IHBWYWwg
PSAoY2hhciAqKShwQnVmKSArICgodTMyKSh1bG9uZykgJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEg
KikwKS0+IFJldHVyblN0YXR1cy5FcnJvclN0YXR1cykpOyAoX19idWlsdGluX2NvbnN0YW50X3Ao
NCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikmKFZhbDMyKSks
KDQpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpKTsg
VmFsMzIgPSAoKHUzMikoLTEpKTsgcFZhbCA9IChjaGFyICopKHBCdWYpICsgKCh1MzIpKHVsb25n
KSAmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT4gUmV0dXJuU3RhdHVzLkVycm9yT2Zmc2V0
KSk7IChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciop
KHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpIDogX19tZW1jcHkoKChjaGFyKikocFZhbCkp
LCgoY2hhciopJihWYWwzMikpLCg0KSkpO307CiAgICAgICAgICAgICAgICAqcExlbiA9ICgodW5z
aWduZWQgaW50KSh1bG9uZykgJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+VnBkRnJlZUJ5
dGVzKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gKFJldCk7CiAgICAgICAgfQoKCgoKCiAgICAg
ICAgcEFDLT5Qbm1pLk1hY1VwZGF0ZWRGbGFnICsrOwogICAgICAgIHBBQy0+UG5taS5SbG10VXBk
YXRlZEZsYWcgKys7CiAgICAgICAgcEFDLT5Qbm1pLlNpcnFVcGRhdGVkRmxhZyArKzsKCgogICAg
ICAgIFJldCA9IEdldFZwZEtleUFycihwQUMsIElvQywgJktleUFyclswXVswXSwgc2l6ZW9mKEtl
eUFyciksICZUbXBMZW4pOwogICAgICAgIGlmIChSZXQgIT0gMCkgewoKICAgICAgICAgICAgICAg
IHBBQy0+UG5taS5NYWNVcGRhdGVkRmxhZyAtLTsKICAgICAgICAgICAgICAgIHBBQy0+UG5taS5S
bG10VXBkYXRlZEZsYWcgLS07CiAgICAgICAgICAgICAgICBwQUMtPlBubWkuU2lycVVwZGF0ZWRG
bGFnIC0tOwoKICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIHt1MzIgVmFsMzI7IGNo
YXIgKnBWYWw7IFZhbDMyID0gKFJldCk7IHBWYWwgPSAoY2hhciAqKShwQnVmKSArICgodTMyKSh1
bG9uZykgJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+IFJldHVyblN0YXR1cy5FcnJvclN0
YXR1cykpOyAoX19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNo
YXIqKShwVmFsKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBW
YWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpKTsgVmFsMzIgPSAoKHUzMikoLTEpKTsgcFZhbCA9
IChjaGFyICopKHBCdWYpICsgKCh1MzIpKHVsb25nKSAmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAq
KTApLT4gUmV0dXJuU3RhdHVzLkVycm9yT2Zmc2V0KSk7IChfX2J1aWx0aW5fY29uc3RhbnRfcCg0
KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwo
NCkpIDogX19tZW1jcHkoKChjaGFyKikocFZhbCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkpO307
CiAgICAgICAgICAgICAgICAqcExlbiA9ICgodW5zaWduZWQgaW50KSh1bG9uZykgJigoKFNLX1BO
TUlfU1RSVUNUX0RBVEEgKikwKS0+VnBkRnJlZUJ5dGVzKSk7CiAgICAgICAgICAgICAgICByZXR1
cm4gKDEpOwogICAgICAgIH0KCgogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChf
X2J1aWx0aW5fY29uc3RhbnRfcCgoKHNpemVvZihTS19QTk1JX1NUUlVDVF9EQVRBKSkpKSA/IF9f
Y29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoKGNoYXIgKilwQnVmKSksKCgweDAxMDEwMTAx
VUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKCgoc2l6ZW9mKFNLX1BOTUlfU1RSVUNUX0RBVEEpKSkp
KSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCgoY2hhciAqKXBCdWYpKSwoKDB4MDEwMTAxMDFVTCoo
dW5zaWduZWQgY2hhcikoMCkpKSwoKChzaXplb2YoU0tfUE5NSV9TVFJVQ1RfREFUQSkpKSkpKSA6
IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoKHNpemVvZihTS19QTk1JX1NUUlVDVF9EQVRBKSkpKSA/
IF9fbWVtc2V0X2dlbmVyaWMoKCgoKGNoYXIgKilwQnVmKSkpLCgoKDApKSksKCgoKHNpemVvZihT
S19QTk1JX1NUUlVDVF9EQVRBKSkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKChjaGFyICopcEJ1
ZikpLCgoMCkpLCgoKHNpemVvZihTS19QTk1JX1NUUlVDVF9EQVRBKSkpKSkpKTsKICAgICAgICBm
b3IgKFRhYmxlSW5kZXggPSAwOyBUYWJsZUluZGV4IDwgKHNpemVvZihJZFRhYmxlKS9zaXplb2Yo
SWRUYWJsZVswXSkpOyBUYWJsZUluZGV4ICsrKSB7CgogICAgICAgICAgICAgICAgSW5zdGFuY2VO
byA9IElkVGFibGVbVGFibGVJbmRleF0uSW5zdGFuY2VObzsKICAgICAgICAgICAgICAgIGZvciAo
SW5zdGFuY2VDbnQgPSAxOyBJbnN0YW5jZUNudCA8PSBJbnN0YW5jZU5vOwogICAgICAgICAgICAg
ICAgICAgICAgICBJbnN0YW5jZUNudCArKykgewoKICAgICAgICAgICAgICAgICAgICAgICAgRHN0
T2Zmc2V0ID0gSWRUYWJsZVtUYWJsZUluZGV4XS5PZmZzZXQgKwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChJbnN0YW5jZUNudCAtIDEpICoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJZFRhYmxlW1RhYmxlSW5kZXhdLlN0cnVjdFNpemU7CgoKCgoKCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChJZFRhYmxlW1RhYmxlSW5kZXhdLklkID09IDB4RkYwMTAxMDUgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZFRhYmxlW1RhYmxlSW5kZXhdLklkID09
IDB4RkYwMTAxMDYgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZFRhYmxlW1Rh
YmxlSW5kZXhdLklkID09IDB4RkYwMTAxMDcgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJZFRhYmxlW1RhYmxlSW5kZXhdLklkID09IDB4RkYwMTAxMDgpIHsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RybmNweSgoY2hhciopKChjaGFyICopJkluc3RhbmNlKSwo
Y2hhciopKEtleUFycltJbnN0YW5jZUNudCAtIDFdKSw0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbnN0YW5jZSA9ICh1MzIpSW5zdGFuY2VDbnQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIFRtcExlbiA9ICpwTGVuIC0gRHN0T2Zm
c2V0OwogICAgICAgICAgICAgICAgICAgICAgICBSZXQgPSBJZFRhYmxlW1RhYmxlSW5kZXhdLkZ1
bmMocEFDLCBJb0MsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRUYWJsZVtU
YWJsZUluZGV4XS5JZCwgKGNoYXIgKilwQnVmICsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEc3RPZmZzZXQsICZUbXBMZW4sIEluc3RhbmNlLCBUYWJsZUluZGV4LCBOZXRJbmRleCk7
CgoKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmV0ID09IDYpIHsKCiAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKFJldCAhPSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBBQy0+UG5taS5NYWNVcGRhdGVkRmxhZyAtLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwQUMtPlBubWkuUmxtdFVwZGF0ZWRGbGFnIC0tOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBBQy0+UG5taS5TaXJxVXBkYXRlZEZsYWcgLS07CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dTMyIFZh
bDMyOyBjaGFyICpwVmFsOyBWYWwzMiA9IChSZXQpOyBwVmFsID0gKGNoYXIgKikocEJ1ZikgKyAo
KHUzMikodWxvbmcpICYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPiBSZXR1cm5TdGF0dXMu
RXJyb3JTdGF0dXMpKTsgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1j
cHkoKChjaGFyKikocFZhbCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNo
YXIqKShwVmFsKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7IFZhbDMyID0gKERzdE9mZnNldCk7
IHBWYWwgPSAoY2hhciAqKShwQnVmKSArICgodTMyKSh1bG9uZykgJigoKFNLX1BOTUlfU1RSVUNU
X0RBVEEgKikwKS0+IFJldHVyblN0YXR1cy5FcnJvck9mZnNldCkpOyAoX19idWlsdGluX2NvbnN0
YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikmKFZh
bDMyKSksKDQpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwo
NCkpKTt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gKCh1bnNpZ25l
ZCBpbnQpKHVsb25nKSAmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5WcGRGcmVlQnl0ZXMp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJldCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHBB
Qy0+UG5taS5NYWNVcGRhdGVkRmxhZyAtLTsKICAgICAgICBwQUMtPlBubWkuUmxtdFVwZGF0ZWRG
bGFnIC0tOwogICAgICAgIHBBQy0+UG5taS5TaXJxVXBkYXRlZEZsYWcgLS07CgogICAgICAgICpw
TGVuID0gKHNpemVvZihTS19QTk1JX1NUUlVDVF9EQVRBKSk7CiAgICAgICAgOwogICAgICAgIHt1
MzIgVmFsMzI7IGNoYXIgKnBWYWw7IFZhbDMyID0gKDApOyBwVmFsID0gKGNoYXIgKikocEJ1Zikg
KyAoKHUzMikodWxvbmcpICYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPiBSZXR1cm5TdGF0
dXMuRXJyb3JTdGF0dXMpKTsgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9t
ZW1jcHkoKChjaGFyKikocFZhbCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgo
KGNoYXIqKShwVmFsKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7IFZhbDMyID0gKCh1MzIpKC0x
KSk7IHBWYWwgPSAoY2hhciAqKShwQnVmKSArICgodTMyKSh1bG9uZykgJigoKFNLX1BOTUlfU1RS
VUNUX0RBVEEgKikwKS0+IFJldHVyblN0YXR1cy5FcnJvck9mZnNldCkpOyAoX19idWlsdGluX2Nv
bnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikm
KFZhbDMyKSksKDQpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIp
KSwoNCkpKTt9OwogICAgICAgIHJldHVybiAoMCk7Cn0KIyAxMjk5ICJza2dlcG5taS5jIgppbnQg
U2tQbm1pUHJlU2V0U3RydWN0KApTS19BQyAqcEFDLApjaGFyKiBJb0MsCnZvaWQgKnBCdWYsCnVu
c2lnbmVkIGludCAqcExlbiwKdTMyIE5ldEluZGV4KQp7CiAgICAgICAgOwoKCgogICAgICAgIHJl
dHVybiAoUG5taVN0cnVjdChwQUMsIElvQywgMSwgKGNoYXIgKilwQnVmLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcExlbiwgTmV0SW5kZXgpKTsKfQojIDEzMzcgInNr
Z2Vwbm1pLmMiCmludCBTa1BubWlTZXRTdHJ1Y3QoClNLX0FDICpwQUMsCmNoYXIqIElvQywKdm9p
ZCAqcEJ1ZiwKdW5zaWduZWQgaW50ICpwTGVuLAp1MzIgTmV0SW5kZXgpCnsKICAgICAgICA7CgoK
CiAgICAgICAgcmV0dXJuIChQbm1pU3RydWN0KHBBQywgSW9DLCAyLCAoY2hhciAqKXBCdWYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTGVuLCBOZXRJbmRleCkpOwp9
CiMgMTQwMiAic2tnZXBubWkuYyIKaW50IFNrUG5taUV2ZW50KApTS19BQyAqcEFDLApjaGFyKiBJ
b0MsCnUzMiBFdmVudCwKU0tfRVZQQVJBIFBhcmFtKQp7CiAgICAgICAgdW5zaWduZWQgaW50IFBo
eXNQb3J0SW5kZXg7CiAgICAgICAgdW5zaWduZWQgaW50IE1heE5ldE51bWJlcjsKICAgICAgICBp
bnQgQ291bnRlckluZGV4OwogICAgICAgIGludCBSZXQ7CiAgICAgICAgdTE2IE1hY1N0YXR1czsK
ICAgICAgICB1NjQgT3ZlcmZsb3dTdGF0dXM7CiAgICAgICAgdTY0IE1hc2s7CiAgICAgICAgaW50
IE1hY1R5cGU7CiAgICAgICAgdTY0IFZhbHVlOwogICAgICAgIHUzMiBWYWwzMjsKICAgICAgICB1
MTYgUmVnaXN0ZXI7CiAgICAgICAgU0tfRVZQQVJBIEV2ZW50UGFyYW07CiAgICAgICAgdTY0IE5l
d2VzdFZhbHVlOwogICAgICAgIHU2NCBPbGRlc3RWYWx1ZTsKICAgICAgICB1NjQgRGVsdGE7CiAg
ICAgICAgU0tfUE5NSV9FU1RJTUFURSAqcEVzdDsKICAgICAgICB1MzIgTmV0SW5kZXg7CiAgICAg
ICAgU0tfR0VQT1JUICpwUHJ0OwogICAgICAgIFNLX1BOTUlfVkNUICpwVmN0QmFja3VwRGF0YTsK
ICAgICAgICB1MzIgUmV0Q29kZTsKICAgICAgICBpbnQgaTsKICAgICAgICB1MzIgQ2FibGVMZW5n
dGg7CiMgMTQ0MCAic2tnZXBubWkuYyIKICAgICAgICA7CgogICAgICAgIE1hY1R5cGUgPSBwQUMt
PkdJbmkuR0lNYWNUeXBlOwoKICAgICAgICBzd2l0Y2ggKEV2ZW50KSB7CgogICAgICAgIGNhc2Ug
MToKICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggPSAoaW50KVBhcmFtLlBhcmEzMlswXTsK
ICAgICAgICAgICAgICAgIE1hY1N0YXR1cyA9ICh1MTYpUGFyYW0uUGFyYTMyWzFdOwojIDE0NTkg
InNrZ2Vwbm1pLmMiCiAgICAgICAgICAgICAgICBPdmVyZmxvd1N0YXR1cyA9IDA7CgoKCgogICAg
ICAgICAgICAgICAgaWYgKChwQUMtPkdJbmkuR0lGdW5jLnBGbk1hY092ZXJmbG93KAogICAgICAg
ICAgICAgICAgICAgICAgICAgcEFDLCBJb0MsIFBoeXNQb3J0SW5kZXgsIE1hY1N0YXR1cywgJk92
ZXJmbG93U3RhdHVzKSAhPSAwKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAoT3ZlcmZsb3dT
dGF0dXMgPT0gMCkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICgwKTsKICAgICAgICAgICAgICAgIH0KCgoKCgogICAgICAgICAgICAg
ICAgZm9yIChDb3VudGVySW5kZXggPSAwOyBDb3VudGVySW5kZXggPCBzaXplb2YoTWFzaykgKiA4
OwogICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVySW5kZXggKyspIHsKCiAgICAgICAgICAg
ICAgICAgICAgICAgIE1hc2sgPSAodTY0KTEgPDwgQ291bnRlckluZGV4OwogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKE92ZXJmbG93U3RhdHVzICYgTWFzaykgPT0gMCkgewoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChTdGF0T3ZyZmx3Qml0W0NvdW50ZXJJ
bmRleF1bTWFjVHlwZV0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgU0tfUE5NSV9I
VFhfVVRJTFVOREVSOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFNLX1BOTUlfSFRYX1VU
SUxPVkVSOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqKCgmUmVnaXN0ZXIpKSA9
ICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAqKSgoKElvQykpKygoKDB4MjAw
MCArICgoUGh5c1BvcnRJbmRleCkpICogKDB4MzAwMCAtIDB4MjAwMCkpIHwgKCgoMHgwMDIwKSkg
PDwgMSkpKSkpKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHw9
ICgxPDw0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNp
Z25lZCBzaG9ydCAqKSAoKHZvaWQgKikoKCgoSW9DKSkrKCgoMHgyMDAwICsgKChQaHlzUG9ydElu
ZGV4KSkgKiAoMHgzMDAwIC0gMHgyMDAwKSkgfCAoKCgweDAwMjApKSA8PCAxKSkpKSkpID0gKCgo
UmVnaXN0ZXIpKSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgU0tfUE5NSV9IUlhfVVRJTFVOREVSOgogICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIFNLX1BOTUlfSFJYX1VUSUxPVkVSOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgqKCgmUmVnaXN0ZXIpKSA9ICgqKHZvbGF0aWxlIHVuc2lnbmVk
IHNob3J0ICopICgodm9pZCAqKSgoKElvQykpKygoKDB4MjAwMCArICgoUGh5c1BvcnRJbmRleCkp
ICogKDB4MzAwMCAtIDB4MjAwMCkpIHwgKCgoMHgwMDMwKSkgPDwgMSkpKSkpKSk7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIHw9ICgxPDwyKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQg
KikoKCgoSW9DKSkrKCgoMHgyMDAwICsgKChQaHlzUG9ydEluZGV4KSkgKiAoMHgzMDAwIC0gMHgy
MDAwKSkgfCAoKCgweDAwMzApKSA8PCAxKSkpKSkpID0gKCgoUmVnaXN0ZXIpKSkpOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgU0tfUE5NSV9IVFhfT0NURVRISUdIOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IFNLX1BOTUlfSFRYX09DVEVUTE9XOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFNLX1BO
TUlfSFRYX1JFU0VSVkVEOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFNLX1BOTUlfSFJY
X09DVEVUSElHSDoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBTS19QTk1JX0hSWF9PQ1RF
VExPVzoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBTS19QTk1JX0hSWF9JUkxFTkdUSDoK
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBTS19QTk1JX0hSWF9SRVNFUlZFRDoKCgoKCiAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgU0tfUE5NSV9IVFhfU1lOQzoKICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBTS19QTk1JX0hUWF9TWU5DX09DVEVUOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBTS19Q
Tk1JX0hSWF9MT05HRlJBTUVTOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChN
YWNUeXBlID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBB
Qy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb3VudGVySGlnaFtDb3VudGVySW5kZXhdICsrOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVySGlnaFtDb3VudGVySW5kZXhd
ICsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOgojIDE1NDkgInNrZ2Vwbm1pLmMiCiAgICAg
ICAgICAgICAgICBRdWV1ZVNlbnNvclRyYXAocEFDLCA1MDAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICh1bnNpZ25lZCBpbnQpUGFyYW0uUGFyYTY0KTsKICAgICAgICAgICAgICAgICh2b2lkKTA7
CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAzOgojIDE1NjkgInNrZ2Vwbm1p
LmMiCiAgICAgICAgICAgICAgICBRdWV1ZVNlbnNvclRyYXAocEFDLCA1MDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpUGFyYW0uUGFyYTY0KTsKICAgICAgICAgICAgICAg
ICh2b2lkKTA7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA0OgojIDE1ODkg
InNrZ2Vwbm1pLmMiCiAgICAgICAgICAgICAgICBRdWV1ZVNlbnNvclRyYXAocEFDLCA1MDIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpUGFyYW0uUGFyYTY0KTsKICAgICAg
ICAgICAgICAgICh2b2lkKTA7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA1
OgojIDE2MDkgInNrZ2Vwbm1pLmMiCiAgICAgICAgICAgICAgICBRdWV1ZVNlbnNvclRyYXAocEFD
LCA1MDMsCiAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpUGFyYW0uUGFyYTY0
KTsKICAgICAgICAgICAgICAgICh2b2lkKTA7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAg
ICAgY2FzZSA2OgojIDE2MjggInNrZ2Vwbm1pLmMiCiAgICAgICAgICAgICAgICBwRXN0ID0gJnBB
Qy0+UG5taS5SbG10Q2hhbmdlRXN0aW1hdGU7CiAgICAgICAgICAgICAgICBDb3VudGVySW5kZXgg
PSBwRXN0LT5Fc3RWYWx1ZUluZGV4ICsgMTsKICAgICAgICAgICAgICAgIGlmIChDb3VudGVySW5k
ZXggPT0gNykgewoKICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlckluZGV4ID0gMDsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBFc3QtPkVzdFZhbHVlSW5kZXggPSBDb3Vu
dGVySW5kZXg7CgogICAgICAgICAgICAgICAgTmV3ZXN0VmFsdWUgPSBwQUMtPlBubWkuUmxtdENo
YW5nZUN0czsKICAgICAgICAgICAgICAgIE9sZGVzdFZhbHVlID0gcEVzdC0+RXN0VmFsdWVbQ291
bnRlckluZGV4XTsKICAgICAgICAgICAgICAgIHBFc3QtPkVzdFZhbHVlW0NvdW50ZXJJbmRleF0g
PSBOZXdlc3RWYWx1ZTsKCgoKCgogICAgICAgICAgICAgICAgaWYgKE5ld2VzdFZhbHVlID49IE9s
ZGVzdFZhbHVlKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBEZWx0YSA9IE5ld2VzdFZhbHVl
IC0gT2xkZXN0VmFsdWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsK
CiAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhID0gKHU2NCkoMCAtIE9sZGVzdFZhbHVlKSAr
IE5ld2VzdFZhbHVlOwogICAgICAgICAgICAgICAgfQoKCgoKCgoKICAgICAgICAgICAgICAgIHBB
Qy0+UG5taS5SbG10Q2hhbmdlRXN0aW1hdGUuRXN0aW1hdGUgPSBEZWx0YSA8PCA0OwoKCgoKCgog
ICAgICAgICAgICAgICAgaWYgKChwQUMtPlBubWkuUmxtdENoYW5nZVRocmVzaG9sZCAhPSAwKSAm
JgogICAgICAgICAgICAgICAgICAgICAgICAocEFDLT5Qbm1pLlJsbXRDaGFuZ2VFc3RpbWF0ZS5F
c3RpbWF0ZSA+PQogICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuUmxtdENoYW5nZVRo
cmVzaG9sZCkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXVlU2ltcGxlVHJhcChwQUMs
IDUyMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTA7CiAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wKChzaXplb2YoRXZlbnRQYXJhbSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRf
bWVtc2V0KCgoKGNoYXIgKikgJkV2ZW50UGFyYW0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQg
Y2hhcikoMCkpKSwoKHNpemVvZihFdmVudFBhcmFtKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQo
KCgoY2hhciAqKSAmRXZlbnRQYXJhbSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgw
KSkpLCgoc2l6ZW9mKEV2ZW50UGFyYW0pKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6
ZW9mKEV2ZW50UGFyYW0pKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKChjaGFyICopICZFdmVudFBh
cmFtKSkpLCgoKDApKSksKCgoc2l6ZW9mKEV2ZW50UGFyYW0pKSkpKSA6IF9fbWVtc2V0X2dlbmVy
aWMoKCgoY2hhciAqKSAmRXZlbnRQYXJhbSkpLCgoMCkpLCgoc2l6ZW9mKEV2ZW50UGFyYW0pKSkp
KSk7CiAgICAgICAgICAgICAgICBTa1RpbWVyU3RhcnQocEFDLCBJb0MsICZwQUMtPlBubWkuUmxt
dENoYW5nZUVzdGltYXRlLkVzdFRpbWVyLAogICAgICAgICAgICAgICAgICAgICAgICAyODEyNTAw
MCwgNCwgNiwKICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRQYXJhbSk7CiAgICAgICAgICAg
ICAgICBicmVhazsKCiAgICAgICAgY2FzZSA4OgoKCgoKICAgICAgICAgICAgICAgIE5ldEluZGV4
ID0gKHUzMilQYXJhbS5QYXJhMzJbMF07CiMgMTcwMSAic2tnZXBubWkuYyIKICAgICAgICAgICAg
ICAgIFJlc2V0Q291bnRlcihwQUMsIElvQywgTmV0SW5kZXgpOwoKICAgICAgICAgICAgICAgIGJy
ZWFrOwoKICAgICAgICBjYXNlIDk6CiMgMTcyMCAic2tnZXBubWkuYyIKICAgICAgICAgICAgICAg
IFBoeXNQb3J0SW5kZXggPSAodW5zaWduZWQgaW50KVBhcmFtLlBhcmE2NDsKCgoKCiAgICAgICAg
ICAgICAgICBSZXQgPSBNYWNVcGRhdGUocEFDLCBJb0MsIDAsIHBBQy0+R0luaS5HSU1hY3NGb3Vu
ZCAtIDEpOwogICAgICAgICAgICAgICAgaWYgKFJldCAhPSAwKSB7CgogICAgICAgICAgICAgICAg
ICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCk7CiAgICAgICAgICAg
ICAgICB9CgoKCgogICAgICAgICAgICAgICAgcEFDLT5Qbm1pLk1hY1VwZGF0ZWRGbGFnICsrOwoK
ICAgICAgICAgICAgICAgIGZvciAoQ291bnRlckluZGV4ID0gMDsgQ291bnRlckluZGV4IDwgU0tf
UE5NSV9NQVhfSURYOwogICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVySW5kZXggKyspIHsK
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghU3RhdEFkZHJbQ291bnRlckluZGV4XVtNYWNU
eXBlXS5HZXRPZmZzZXQpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHBB
Qy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENvdW50ZXJPZmZzZXRbQ291bnRlckluZGV4XSA9IEdldFBoeXNTdGF0VmFsKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBBQywgSW9DLCBQaHlzUG9ydEluZGV4LCBDb3VudGVy
SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuUG9ydFtQaHlzUG9ydElu
ZGV4XS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVySGlnaFtDb3VudGVy
SW5kZXhdID0gMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwQUMtPlBubWku
TWFjVXBkYXRlZEZsYWcgLS07CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAx
MDoKICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggPSAodW5zaWduZWQgaW50KVBhcmFtLlBh
cmEzMlswXTsKIyAxNzcxICJza2dlcG5taS5jIgogICAgICAgICAgICAgICAgUXVldWVSbG10UG9y
dFRyYXAocEFDLCA1MjMsIFBoeXNQb3J0SW5kZXgpOwogICAgICAgICAgICAgICAgKHZvaWQpMDsK
CgogICAgICAgICAgICAgICAgaWYgKHBBQy0+R0luaS5HSU1hY1R5cGUgPT0gMCl7CgoKICAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQpcEFDLT5HSW5pLkdJRnVuYy5wRm5NYWNTdGF0aXN0aWMo
cEFDLCBJb0MsIFBoeXNQb3J0SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHgwMzQ4LCAmVmFsMzIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPSAoKCh1NjQp
cEFDLT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENvdW50ZXJIaWdoW1NLX1BOTUlfSFJYX1NIT1JUU10gPDwgMzIpIHwgKHU2NClWYWwz
Mik7CiAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhd
LkNvdW50ZXJPZmZzZXRbU0tfUE5NSV9IUlhfU0hPUlRTXSArPQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbHVlIC0gcEFDLT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uUnhTaG9y
dFplcm9NYXJrOwogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICBwQUMtPlBubWku
VmN0U3RhdHVzW1BoeXNQb3J0SW5kZXhdIHw9IDEyODsKICAgICAgICAgICAgICAgIGJyZWFrOwoK
ICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICBQaHlzUG9ydEluZGV4ID0gKHVuc2lnbmVkIGlu
dClQYXJhbS5QYXJhMzJbMF07CiMgMTgwOCAic2tnZXBubWkuYyIKICAgICAgICAgICAgICAgIFF1
ZXVlUmxtdFBvcnRUcmFwKHBBQywgNTIyLCBQaHlzUG9ydEluZGV4KTsKICAgICAgICAgICAgICAg
ICh2b2lkKTA7CgoKICAgICAgICAgICAgICAgIGlmICgocEFDLT5HSW5pLkdJTWFjVHlwZSA9PSAw
KSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpcEFDLT5HSW5pLkdJRnVuYy5wRm5N
YWNTdGF0aXN0aWMocEFDLCBJb0MsIFBoeXNQb3J0SW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgwMzQ4LCAmVmFsMzIpOwogICAgICAgICAgICAgICAgICAgICAgICBwQUMt
PlBubWkuUG9ydFtQaHlzUG9ydEluZGV4XS5SeFNob3J0WmVyb01hcmsgPQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgoKHU2NClwQUMtPlBubWkuUG9ydFtQaHlzUG9ydEluZGV4XS4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlckhpZ2hbU0tfUE5NSV9IUlhf
U0hPUlRTXSA8PCAzMikgfCAodTY0KVZhbDMyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICAgICAgUGh5c1BvcnRJ
bmRleCA9ICh1bnNpZ25lZCBpbnQpUGFyYW0uUGFyYTMyWzBdOwogICAgICAgICAgICAgICAgTmV0
SW5kZXggPSAodTMyKVBhcmFtLlBhcmEzMlsxXTsKIyAxODQ0ICJza2dlcG5taS5jIgogICAgICAg
ICAgICAgICAgaWYgKFBhcmFtLlBhcmEzMlsxXSAhPSAwKSB7CgogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gKDApOwogICAgICAgICAgICAgICAgfQoKCgoKICAgICAgICAgICAgICAgIGlm
ICghcEFDLT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uQWN0aXZlRmxhZykgewoKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKICAgICAgICAgICAgICAgIH0KCgoKCgoKICAgICAg
ICAgICAgICAgIGlmIChNYWNVcGRhdGUocEFDLCBJb0MsIDAsIHBBQy0+R0luaS5HSU1hY3NGb3Vu
ZCAtIDEpICE9CiAgICAgICAgICAgICAgICAgICAgICAgIDApIHsKCiAgICAgICAgICAgICAgICAg
ICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIHBBQy0+UG5taS5NYWNVcGRhdGVkRmxhZyArKzsKIyAxODc4
ICJza2dlcG5taS5jIgogICAgICAgICAgICAgICAgZm9yIChDb3VudGVySW5kZXggPSAwOyBDb3Vu
dGVySW5kZXggPCBTS19QTk1JX01BWF9JRFg7CiAgICAgICAgICAgICAgICAgICAgICAgIENvdW50
ZXJJbmRleCArKykgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFTdGF0QWRkcltDb3Vu
dGVySW5kZXhdW01hY1R5cGVdLkdldE9mZnNldCkgewoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWUgPSBHZXRQaHlzU3RhdFZhbChwQUMsIElvQywgUGh5c1BvcnRJbmRl
eCwgQ291bnRlckluZGV4KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5WaXJ0
dWFsQ291bnRlck9mZnNldFtDb3VudGVySW5kZXhdICs9IFZhbHVlOwogICAgICAgICAgICAgICAg
fQoKCgoKICAgICAgICAgICAgICAgIHBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLkFjdGl2
ZUZsYWcgPSAwOwoKICAgICAgICAgICAgICAgIHBBQy0+UG5taS5NYWNVcGRhdGVkRmxhZyAtLTsK
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAg
UGh5c1BvcnRJbmRleCA9ICh1bnNpZ25lZCBpbnQpUGFyYW0uUGFyYTMyWzBdOwogICAgICAgICAg
ICAgICAgTmV0SW5kZXggPSAodTMyKVBhcmFtLlBhcmEzMlsxXTsKIyAxOTIxICJza2dlcG5taS5j
IgogICAgICAgICAgICAgICAgaWYgKFBhcmFtLlBhcmEzMlsxXSAhPSAwKSB7CgogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgICAgICAgICAgfQoKCgoKICAgICAgICAg
ICAgICAgIGlmIChwQUMtPlBubWkuUG9ydFtQaHlzUG9ydEluZGV4XS5BY3RpdmVGbGFnKSB7Cgog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgICAgICAgICAgfQoKCgoK
ICAgICAgICAgICAgICAgIHBBQy0+UG5taS5SbG10Q2hhbmdlQ3RzICsrOwogICAgICAgICAgICAg
ICAgcEFDLT5Qbm1pLlJsbXRDaGFuZ2VUaW1lID0gKFNrT3NHZXRUaW1lKHBBQykpOwoKCgoKCiAg
ICAgICAgICAgICAgICBRdWV1ZVJsbXROZXdNYWNUcmFwKHBBQywgUGh5c1BvcnRJbmRleCk7CiAg
ICAgICAgICAgICAgICAodm9pZCkwOwoKCgoKCgogICAgICAgICAgICAgICAgaWYgKE1hY1VwZGF0
ZShwQUMsIElvQywgMCwgcEFDLT5HSW5pLkdJTWFjc0ZvdW5kIC0gMSkgIT0KICAgICAgICAgICAg
ICAgICAgICAgICAgMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
cEFDLT5Qbm1pLk1hY1VwZGF0ZWRGbGFnICsrOwoKCgoKCgoKICAgICAgICAgICAgICAgIGZvciAo
Q291bnRlckluZGV4ID0gMDsgQ291bnRlckluZGV4IDwgU0tfUE5NSV9NQVhfSURYOwogICAgICAg
ICAgICAgICAgICAgICAgICBDb3VudGVySW5kZXggKyspIHsKCiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghU3RhdEFkZHJbQ291bnRlckluZGV4XVtNYWNUeXBlXS5HZXRPZmZzZXQpIHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gR2V0UGh5c1N0YXRWYWwo
cEFDLCBJb0MsIFBoeXNQb3J0SW5kZXgsIENvdW50ZXJJbmRleCk7CgogICAgICAgICAgICAgICAg
ICAgICAgICBwQUMtPlBubWkuVmlydHVhbENvdW50ZXJPZmZzZXRbQ291bnRlckluZGV4XSAtPSBW
YWx1ZTsKICAgICAgICAgICAgICAgIH0KCgoKCiAgICAgICAgICAgICAgICBwQUMtPlBubWkuUG9y
dFtQaHlzUG9ydEluZGV4XS5BY3RpdmVGbGFnID0gKCEwKTsKCiAgICAgICAgICAgICAgICBwQUMt
PlBubWkuTWFjVXBkYXRlZEZsYWcgLS07CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
Y2FzZSAxMzoKIyAxOTk2ICJza2dlcG5taS5jIgogICAgICAgICAgICAgICAgUXVldWVTaW1wbGVU
cmFwKHBBQywgNTI0KTsKICAgICAgICAgICAgICAgICh2b2lkKTA7CiAgICAgICAgICAgICAgICBi
cmVhazsKCiAgICBjYXNlIDE2OgoKCgoKCgoKICAgICAgICAgICAgICAgIE1heE5ldE51bWJlciA9
IHBBQy0+R0luaS5HSU1hY3NGb3VuZDsKICAgICAgICAgICAgICAgIGlmICgoKHVuc2lnbmVkIGlu
dClQYXJhbS5QYXJhMzJbMF0gPCAxKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAoKHVuc2ln
bmVkIGludClQYXJhbS5QYXJhMzJbMF0gPiBNYXhOZXROdW1iZXIpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAoNyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgIGlmICgodW5z
aWduZWQgaW50KVBhcmFtLlBhcmEzMlswXSA9PSAxKSB7CiAgICAgICAgICAgICAgICBwQUMtPlBu
bWkuRHVhbE5ldEFjdGl2ZUZsYWcgPSAwOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgIHBBQy0+UG5taS5EdWFsTmV0QWN0aXZlRmxhZyA9ICghMCk7CiAgICAgICAgfQog
ICAgICAgIGJyZWFrOwoKICAgIGNhc2UgMTc6CiAgICAgICAgUGh5c1BvcnRJbmRleCA9IFBhcmFt
LlBhcmEzMlswXTsKICAgICAgICBwUHJ0ID0gJnBBQy0+R0luaS5HUFtQaHlzUG9ydEluZGV4XTsK
ICAgICAgICBwVmN0QmFja3VwRGF0YSA9ICZwQUMtPlBubWkuVmN0QmFja3VwW1BoeXNQb3J0SW5k
ZXhdOwoKICAgICAgICBpZiAocEFDLT5Qbm1pLlZjdFN0YXR1c1tQaHlzUG9ydEluZGV4XSAmIDMy
KSB7CiAgICAgICAgICAgICAgICBSZXRDb2RlID0gU2tHbUNhYmxlRGlhZ1N0YXR1cyhwQUMsIElv
QywgUGh5c1BvcnRJbmRleCwgMCk7CiAgICAgICAgICAgICAgICBpZiAoUmV0Q29kZSA9PSAyKSB7
CgoKCgogICAgICAgICAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAo
X19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihQYXJhbSkpKSA/IF9fY29uc3RhbnRfY19hbmRf
Y291bnRfbWVtc2V0KCgoKGNoYXIgKikgJlBhcmFtKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVk
IGNoYXIpKDApKSksKChzaXplb2YoUGFyYW0pKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKChj
aGFyICopICZQYXJhbSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6
ZW9mKFBhcmFtKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihQYXJhbSkpKSA/
IF9fbWVtc2V0X2dlbmVyaWMoKCgoKGNoYXIgKikgJlBhcmFtKSkpLCgoKDApKSksKCgoc2l6ZW9m
KFBhcmFtKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoKGNoYXIgKikgJlBhcmFtKSksKCgwKSks
KChzaXplb2YoUGFyYW0pKSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtLlBhcmEz
MlswXSA9IFBoeXNQb3J0SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtLlBhcmEz
MlsxXSA9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICBTa1RpbWVyU3RhcnQocEFDLCBJb0Ms
ICZwQUMtPlBubWkuVmN0VGltZW91dFtQaHlzUG9ydEluZGV4XS5WY3RUaW1lciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0MDAwMDAwLCA0LCAxNywgUGFyYW0pOwogICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBB
Qy0+UG5taS5WY3RTdGF0dXNbUGh5c1BvcnRJbmRleF0gJj0gfjMyOwogICAgICAgICAgICAgICAg
cEFDLT5Qbm1pLlZjdFN0YXR1c1tQaHlzUG9ydEluZGV4XSB8PQogICAgICAgICAgICAgICAgICAg
ICAgICAoMiB8IDY0KTsKCgogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykg
ewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocFBydC0+UE1kaVBhaXJMZW5baV0gPiAzNSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhYmxlTGVuZ3RoID0gMTAwMCAqICgo
KDE3NSAqIHBQcnQtPlBNZGlQYWlyTGVuW2ldKSAvIDIxMCkgLSAyOCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ2FibGVMZW5ndGggPSAwOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHBWY3RCYWNrdXBEYXRhLT5QTWRpUGFpckxlbltp
XSA9IENhYmxlTGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICBwVmN0QmFja3VwRGF0YS0+
UE1kaVBhaXJTdHNbaV0gPSBwUHJ0LT5QTWRpUGFpclN0c1tpXTsKICAgICAgICAgICAgICAgIH0K
CiAgICAgICAgICAgICAgICBQYXJhbS5QYXJhMzJbMF0gPSBQaHlzUG9ydEluZGV4OwogICAgICAg
ICAgICAgICAgUGFyYW0uUGFyYTMyWzFdID0gLTE7CiAgICAgICAgICAgICAgICBTa0V2ZW50UXVl
dWUocEFDLCAxLCAxLCBQYXJhbSk7CiAgICAgICAgICAgICAgICBTa0V2ZW50RGlzcGF0Y2hlcihw
QUMsIElvQyk7CiAgICAgICAgfQoKICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgOwogICAgICAgIHJldHVybiAo
MCk7Cn0KIyAyMDk1ICJza2dlcG5taS5jIgpzdGF0aWMgaW50IFBubWlWYXIoClNLX0FDICpwQUMs
CmNoYXIqIElvQywKaW50IEFjdGlvbiwKdTMyIElkLApjaGFyICpwQnVmLAp1bnNpZ25lZCBpbnQg
KnBMZW4sCnUzMiBJbnN0YW5jZSwKdTMyIE5ldEluZGV4KQp7CiAgICAgICAgdW5zaWduZWQgaW50
IFRhYmxlSW5kZXg7CiAgICAgICAgaW50IFJldDsKCgogICAgICAgIGlmICgoVGFibGVJbmRleCA9
IExvb2t1cElkKElkKSkgPT0gKHVuc2lnbmVkIGludCkoLTEpKSB7CgogICAgICAgICAgICAgICAg
KnBMZW4gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICg1KTsKICAgICAgICB9CgoKCgogICAg
ICAgIGlmIChOZXRJbmRleCA+PSBwQUMtPlJsbXQuTnVtTmV0cykgewogICAgICAgICAgICAgICAg
cmV0dXJuICg3KTsKICAgICAgICB9CgogICAgICAgIDsKCiAgICAgICAgUmV0ID0gSWRUYWJsZVtU
YWJsZUluZGV4XS5GdW5jKHBBQywgSW9DLCBBY3Rpb24sIElkLCBwQnVmLCBwTGVuLAogICAgICAg
ICAgICAgICAgSW5zdGFuY2UsIFRhYmxlSW5kZXgsIE5ldEluZGV4KTsKCiAgICAgICAgOwoKICAg
ICAgICByZXR1cm4gKFJldCk7Cn0KIyAyMTUwICJza2dlcG5taS5jIgpzdGF0aWMgaW50IFBubWlT
dHJ1Y3QoClNLX0FDICpwQUMsCmNoYXIqIElvQywKaW50IEFjdGlvbiwKY2hhciAqcEJ1ZiwKdW5z
aWduZWQgaW50ICpwTGVuLAp1MzIgTmV0SW5kZXgpCnsKICAgICAgICBpbnQgUmV0OwogICAgICAg
IHVuc2lnbmVkIGludCBUYWJsZUluZGV4OwogICAgICAgIHVuc2lnbmVkIGludCBEc3RPZmZzZXQ7
CiAgICAgICAgdW5zaWduZWQgaW50IExlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgSW5zdGFuY2VO
bzsKICAgICAgICB1bnNpZ25lZCBpbnQgSW5zdGFuY2VDbnQ7CiAgICAgICAgdTMyIEluc3RhbmNl
OwogICAgICAgIHUzMiBJZDsKCgoKICAgICAgICBpZiAoKnBMZW4gPCAoc2l6ZW9mKFNLX1BOTUlf
U1RSVUNUX0RBVEEpKSkgewoKCiAgICAgICAgICAgICAgICBpZiAoKnBMZW4gPj0gKCh1bnNpZ25l
ZCBpbnQpKHVsb25nKSAmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT5WcGRGcmVlQnl0ZXMp
KSkgewoKICAgICAgICAgICAgICAgICAgICAgICAge3UzMiBWYWwzMjsgY2hhciAqcFZhbDsgVmFs
MzIgPSAoMik7IHBWYWwgPSAoY2hhciAqKShwQnVmKSArICgodTMyKSh1bG9uZykgJigoKFNLX1BO
TUlfU1RSVUNUX0RBVEEgKikwKS0+IFJldHVyblN0YXR1cy5FcnJvclN0YXR1cykpOyAoX19idWls
dGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwVmFsKSksKChj
aGFyKikmKFZhbDMyKSksKDQpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYo
VmFsMzIpKSwoNCkpKTsgVmFsMzIgPSAoKHUzMikoLTEpKTsgcFZhbCA9IChjaGFyICopKHBCdWYp
ICsgKCh1MzIpKHVsb25nKSAmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT4gUmV0dXJuU3Rh
dHVzLkVycm9yT2Zmc2V0KSk7IChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29uc3RhbnRf
bWVtY3B5KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpIDogX19tZW1jcHko
KChjaGFyKikocFZhbCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkpO307CgogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgICpwTGVuID0gKHNpemVvZihTS19QTk1JX1NUUlVDVF9EQVRB
KSk7CiAgICAgICAgICAgICAgICByZXR1cm4gKDIpOwogICAgICAgIH0KCgoKCiAgICAgICAgaWYg
KE5ldEluZGV4ID49IHBBQy0+UmxtdC5OdW1OZXRzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4g
KDcpOwogICAgICAgIH0KCiAgICAgICAgOwoKCgoKCiAgICAgICAgaWYgKChSZXQgPSBSbG10VXBk
YXRlKHBBQywgSW9DLCBOZXRJbmRleCkpICE9IDApIHsKCiAgICAgICAgICAgICAgICB7dTMyIFZh
bDMyOyBjaGFyICpwVmFsOyBWYWwzMiA9IChSZXQpOyBwVmFsID0gKGNoYXIgKikocEJ1ZikgKyAo
KHUzMikodWxvbmcpICYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPiBSZXR1cm5TdGF0dXMu
RXJyb3JTdGF0dXMpKTsgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1j
cHkoKChjaGFyKikocFZhbCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNo
YXIqKShwVmFsKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7IFZhbDMyID0gKCh1MzIpKC0xKSk7
IHBWYWwgPSAoY2hhciAqKShwQnVmKSArICgodTMyKSh1bG9uZykgJigoKFNLX1BOTUlfU1RSVUNU
X0RBVEEgKikwKS0+IFJldHVyblN0YXR1cy5FcnJvck9mZnNldCkpOyAoX19idWlsdGluX2NvbnN0
YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikmKFZh
bDMyKSksKDQpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwo
NCkpKTt9OwogICAgICAgICAgICAgICAgKnBMZW4gPSAoKHVuc2lnbmVkIGludCkodWxvbmcpICYo
KChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlZwZEZyZWVCeXRlcykpOwogICAgICAgICAgICAg
ICAgcmV0dXJuIChSZXQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKChSZXQgPSBTaXJxVXBkYXRl
KHBBQywgSW9DKSkgIT0gMCkgewoKICAgICAgICAgICAgICAgIHt1MzIgVmFsMzI7IGNoYXIgKnBW
YWw7IFZhbDMyID0gKFJldCk7IHBWYWwgPSAoY2hhciAqKShwQnVmKSArICgodTMyKSh1bG9uZykg
JigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+IFJldHVyblN0YXR1cy5FcnJvclN0YXR1cykp
OyAoX19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShw
VmFsKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBWYWwpKSwo
KGNoYXIqKSYoVmFsMzIpKSwoNCkpKTsgVmFsMzIgPSAoKHUzMikoLTEpKTsgcFZhbCA9IChjaGFy
ICopKHBCdWYpICsgKCh1MzIpKHVsb25nKSAmKCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT4g
UmV0dXJuU3RhdHVzLkVycm9yT2Zmc2V0KSk7IChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9f
Y29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpIDog
X19tZW1jcHkoKChjaGFyKikocFZhbCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkpO307CiAgICAg
ICAgICAgICAgICAqcExlbiA9ICgodW5zaWduZWQgaW50KSh1bG9uZykgJigoKFNLX1BOTUlfU1RS
VUNUX0RBVEEgKikwKS0+VnBkRnJlZUJ5dGVzKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gKFJl
dCk7CiAgICAgICAgfQoKICAgICAgICBwQUMtPlBubWkuUmxtdFVwZGF0ZWRGbGFnICsrOwogICAg
ICAgIHBBQy0+UG5taS5TaXJxVXBkYXRlZEZsYWcgKys7CgoKICAgICAgICBmb3IgKFRhYmxlSW5k
ZXggPSAwOyBUYWJsZUluZGV4IDwgKHNpemVvZihJZFRhYmxlKS9zaXplb2YoSWRUYWJsZVswXSkp
OyBUYWJsZUluZGV4ICsrKSB7CgogICAgICAgICAgICAgICAgaWYgKChJZFRhYmxlW1RhYmxlSW5k
ZXhdLkFjY2VzcyAhPSAxKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAoSWRUYWJsZVtUYWJs
ZUluZGV4XS5BY2Nlc3MgIT0gMikpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIEluc3RhbmNlTm8gPSBJZFRhYmxl
W1RhYmxlSW5kZXhdLkluc3RhbmNlTm87CiAgICAgICAgICAgICAgICBJZCA9IElkVGFibGVbVGFi
bGVJbmRleF0uSWQ7CgogICAgICAgICAgICAgICAgZm9yIChJbnN0YW5jZUNudCA9IDE7IEluc3Rh
bmNlQ250IDw9IEluc3RhbmNlTm87CiAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbmNlQ250
ICsrKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBEc3RPZmZzZXQgPSBJZFRhYmxlW1RhYmxl
SW5kZXhdLk9mZnNldCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEluc3RhbmNl
Q250IC0gMSkgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkVGFibGVbVGFibGVJ
bmRleF0uU3RydWN0U2l6ZTsKCgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbmNl
ID0gKHUzMilJbnN0YW5jZUNudDsKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgIExlbiA9IDA7
CiAgICAgICAgICAgICAgICAgICAgICAgIFJldCA9IElkVGFibGVbVGFibGVJbmRleF0uRnVuYyhw
QUMsIElvQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBJZFRhYmxlW1RhYmxl
SW5kZXhdLklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApLCAm
TGVuLCBJbnN0YW5jZSwgVGFibGVJbmRleCwgTmV0SW5kZXgpOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKFJldCA9PSA2KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChSZXQgIT0gMikgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWku
UmxtdFVwZGF0ZWRGbGFnIC0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+
UG5taS5TaXJxVXBkYXRlZEZsYWcgLS07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dTMyIFZhbDMyOyBjaGFyICpwVmFs
OyBWYWwzMiA9ICgxKTsgcFZhbCA9IChjaGFyICopKHBCdWYpICsgKCh1MzIpKHVsb25nKSAmKCgo
U0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT4gUmV0dXJuU3RhdHVzLkVycm9yU3RhdHVzKSk7IChf
X2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBWYWwp
KSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpIDogX19tZW1jcHkoKChjaGFyKikocFZhbCkpLCgoY2hh
ciopJihWYWwzMikpLCg0KSkpOyBWYWwzMiA9IChEc3RPZmZzZXQpOyBwVmFsID0gKGNoYXIgKiko
cEJ1ZikgKyAoKHUzMikodWxvbmcpICYoKChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPiBSZXR1
cm5TdGF0dXMuRXJyb3JPZmZzZXQpKTsgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25z
dGFudF9tZW1jcHkoKChjaGFyKikocFZhbCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21l
bWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7fTsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSAoKHVuc2lnbmVkIGludCkodWxvbmcpICYo
KChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPlZwZEZyZWVCeXRlcykpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElkID09IDB4RkYwMTAxMDgpIHsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgqKHBCdWYgKyBEc3RPZmZzZXQpKSB7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExlbiA9IDMgKyAqKHBCdWYgKyBEc3RPZmZzZXQgKyAzKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMZW4gPSAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW4gPSAxOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAg
ICAgICAgICAgUmV0ID0gSWRUYWJsZVtUYWJsZUluZGV4XS5GdW5jKHBBQywgSW9DLCBBY3Rpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRUYWJsZVtUYWJsZUluZGV4XS5JZCwg
cEJ1ZiArIERzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTGVuLCBJ
bnN0YW5jZSwgVGFibGVJbmRleCwgTmV0SW5kZXgpOwoKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKFJldCAhPSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5t
aS5SbG10VXBkYXRlZEZsYWcgLS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFD
LT5Qbm1pLlNpcnFVcGRhdGVkRmxhZyAtLTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt1MzIgVmFsMzI7IGNoYXIgKnBW
YWw7IFZhbDMyID0gKDMpOyBwVmFsID0gKGNoYXIgKikocEJ1ZikgKyAoKHUzMikodWxvbmcpICYo
KChTS19QTk1JX1NUUlVDVF9EQVRBICopMCktPiBSZXR1cm5TdGF0dXMuRXJyb3JTdGF0dXMpKTsg
KF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocFZh
bCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwVmFsKSksKChj
aGFyKikmKFZhbDMyKSksKDQpKSk7IFZhbDMyID0gKERzdE9mZnNldCk7IHBWYWwgPSAoY2hhciAq
KShwQnVmKSArICgodTMyKSh1bG9uZykgJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+IFJl
dHVyblN0YXR1cy5FcnJvck9mZnNldCkpOyAoX19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2Nv
bnN0YW50X21lbWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9f
bWVtY3B5KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpKTt9OwoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9ICgodW5zaWduZWQgaW50KSh1bG9uZykg
JigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikwKS0+VnBkRnJlZUJ5dGVzKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgzKTsKICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcEFDLT5Qbm1pLlJsbXRVcGRh
dGVkRmxhZyAtLTsKICAgICAgICBwQUMtPlBubWkuU2lycVVwZGF0ZWRGbGFnIC0tOwoKICAgICAg
ICA7CiAgICAgICAge3UzMiBWYWwzMjsgY2hhciAqcFZhbDsgVmFsMzIgPSAoMCk7IHBWYWwgPSAo
Y2hhciAqKShwQnVmKSArICgodTMyKSh1bG9uZykgJigoKFNLX1BOTUlfU1RSVUNUX0RBVEEgKikw
KS0+IFJldHVyblN0YXR1cy5FcnJvclN0YXR1cykpOyAoX19idWlsdGluX2NvbnN0YW50X3AoNCkg
PyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwVmFsKSksKChjaGFyKikmKFZhbDMyKSksKDQp
KSA6IF9fbWVtY3B5KCgoY2hhciopKHBWYWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpKTsgVmFs
MzIgPSAoKHUzMikoLTEpKTsgcFZhbCA9IChjaGFyICopKHBCdWYpICsgKCh1MzIpKHVsb25nKSAm
KCgoU0tfUE5NSV9TVFJVQ1RfREFUQSAqKTApLT4gUmV0dXJuU3RhdHVzLkVycm9yT2Zmc2V0KSk7
IChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBW
YWwpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpIDogX19tZW1jcHkoKChjaGFyKikocFZhbCkpLCgo
Y2hhciopJihWYWwzMikpLCg0KSkpO307CiAgICAgICAgcmV0dXJuICgwKTsKfQojIDIzMTcgInNr
Z2Vwbm1pLmMiCnN0YXRpYyBpbnQgTG9va3VwSWQoCnUzMiBJZCkKewogICAgICAgIGludCBpOwoK
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKHNpemVvZihJZFRhYmxlKS9zaXplb2YoSWRUYWJsZVsw
XSkpOyBpKyspIHsKCiAgICAgICAgICAgICAgICBpZiAoSWRUYWJsZVtpXS5JZCA9PSBJZCkgewoK
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgfQoKICAgICAgICByZXR1cm4gKC0xKTsKfQojIDIzNTQgInNrZ2Vwbm1pLmMiCnN0YXRpYyBp
bnQgT2lkU3RydWN0KApTS19BQyAqcEFDLApjaGFyKiBJb0MsCmludCBBY3Rpb24sCnUzMiBJZCwK
Y2hhciAqcEJ1ZiwKdW5zaWduZWQgaW50ICpwTGVuLAp1MzIgSW5zdGFuY2UsCnVuc2lnbmVkIGlu
dCBUYWJsZUluZGV4LAp1MzIgTmV0SW5kZXgpCnsKICAgICAgICBpZiAoSWQgIT0gMHhGRjAyMDE5
MCkgewoKICAgICAgICAgICAgICAgIFNrRXJyb3JMb2cocEFDLCAoMUw8PDMpLCAoNDAwICsgMyks
CiAgICAgICAgICAgICAgICAgICAgICAgICJPaWRTdHJ1Y3Q6IENhbGxlZCB3aXRoIHdyb25nIE9J
RCIpOwoKICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiAo
MSk7CiAgICAgICAgfQoKCgoKICAgICAgICBpZiAoSW5zdGFuY2UgIT0gKHUzMikoLTEpICYmIElu
c3RhbmNlICE9IDEpIHsKCiAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAg
ICByZXR1cm4gKDYpOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoIChBY3Rpb24pIHsKCiAgICAg
ICAgY2FzZSAwOgogICAgICAgICAgICAgICAgcmV0dXJuIChTa1BubWlHZXRTdHJ1Y3QocEFDLCBJ
b0MsIHBCdWYsIHBMZW4sIE5ldEluZGV4KSk7CgogICAgICAgIGNhc2UgMToKICAgICAgICAgICAg
ICAgIHJldHVybiAoU2tQbm1pUHJlU2V0U3RydWN0KHBBQywgSW9DLCBwQnVmLCBwTGVuLCBOZXRJ
bmRleCkpOwoKICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICByZXR1cm4gKFNrUG5taVNl
dFN0cnVjdChwQUMsIElvQywgcEJ1ZiwgcExlbiwgTmV0SW5kZXgpKTsKICAgICAgICB9CgogICAg
ICAgIFNrRXJyb3JMb2cocEFDLCAoMUw8PDMpLCAoNDAwICsgNCksICJPaWRTdHJ1Y3Q6IENhbGxl
ZCB3aXRoIHdyb25nIGFjdGlvbiIpOwoKICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgcmV0dXJu
ICgxKTsKfQojIDI0MjEgInNrZ2Vwbm1pLmMiCnN0YXRpYyBpbnQgUGVyZm9ybSgKU0tfQUMgKnBB
QywKY2hhciogSW9DLAppbnQgQWN0aW9uLAp1MzIgSWQsCmNoYXIgKnBCdWYsCnVuc2lnbmVkIGlu
dCAqcExlbiwKdTMyIEluc3RhbmNlLAp1bnNpZ25lZCBpbnQgVGFibGVJbmRleCwKdTMyIE5ldElu
ZGV4KQp7CiAgICAgICAgaW50IFJldDsKICAgICAgICB1MzIgQWN0aW9uT3A7CgoKCgoKICAgICAg
ICBpZiAoSW5zdGFuY2UgIT0gKHUzMikoLTEpICYmIEluc3RhbmNlICE9IDEpIHsKCiAgICAgICAg
ICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gKDYpOwogICAgICAgIH0K
CiAgICAgICAgaWYgKCpwTGVuIDwgc2l6ZW9mKHUzMikpIHsKCiAgICAgICAgICAgICAgICAqcExl
biA9IHNpemVvZih1MzIpOwogICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICB9CgoK
ICAgICAgICBpZiAoQWN0aW9uID09IDApIHsKCgogICAgICAgICAgICAgICAgQWN0aW9uT3AgPSAo
dTMyKTE7CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0
YW50X21lbWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKEFjdGlvbk9wKSksKDQpKSA6IF9f
bWVtY3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIqKSYoQWN0aW9uT3ApKSwoNCkpKTsKICAgICAg
ICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHUzMik7CgogICAgICAgICAgICAgICAgcmV0dXJuICgw
KTsKICAgICAgICB9CgoKICAgICAgICBpZiAoKnBMZW4gPiBzaXplb2YodTMyKSkgewoKICAgICAg
ICAgICAgICAgIHJldHVybiAoMyk7CiAgICAgICAgfQoKCiAgICAgICAgKF9fYnVpbHRpbl9jb25z
dGFudF9wKDIpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikmKEFjdGlvbk9wKSksKChjaGFy
KikocEJ1ZikpLCgyKSkgOiBfX21lbWNweSgoKGNoYXIqKSYoQWN0aW9uT3ApKSwoKGNoYXIqKShw
QnVmKSksKDIpKSk7CiAgICAgICAgaWYgKCpwTGVuID4gc2l6ZW9mKHUzMikgfHwKICAgICAgICAg
ICAgICAgIChBY3Rpb25PcCAhPSAxICYmCiAgICAgICAgICAgICAgICBBY3Rpb25PcCAhPSAyICYm
CiAgICAgICAgICAgICAgICBBY3Rpb25PcCAhPSAzICYmCiAgICAgICAgICAgICAgICBBY3Rpb25P
cCAhPSA0KSkgewoKICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgIHJl
dHVybiAoMyk7CiAgICAgICAgfQoKCiAgICAgICAgaWYgKEFjdGlvbiA9PSAxKSB7CgogICAgICAg
ICAgICAgICAgcmV0dXJuICgwKTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoQWN0aW9uT3Ap
IHsKCiAgICAgICAgY2FzZSAxOgoKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNl
IDI6CgoKCgogICAgICAgICAgICAgICAgUmV0ID0gMDsKICAgICAgICAgICAgICAgIGlmIChSZXQg
IT0gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgU2tFcnJvckxvZyhwQUMsICgxTDw8Myks
ICg0MDAgKyA1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGVyZm9ybTogQ2Fu
bm90IHJlc2V0IGRyaXZlciIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgxKTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDM6
CgoKCgoKICAgICAgICAgICAgICAgIFJldCA9IDA7CiAgICAgICAgICAgICAgICBwQUMtPlBubWku
VGVzdFJlc3VsdCA9IFJldDsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQ6
CgogICAgICAgICAgICAgICAgUmVzZXRDb3VudGVyKHBBQywgSW9DLCBOZXRJbmRleCk7CiAgICAg
ICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIFNrRXJy
b3JMb2cocEFDLCAoMUw8PDMpLCAoNDAwICsgNiksCiAgICAgICAgICAgICAgICAgICAgICAgICJQ
ZXJmb3JtOiBVbmtub3duIE9JRCBhY3Rpb24gY29tbWFuZCIpOwoKICAgICAgICAgICAgICAgIHJl
dHVybiAoMSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKDApOwp9CiMgMjU1MiAic2tnZXBu
bWkuYyIKc3RhdGljIGludCBNYWM4MDIzU3RhdCgKU0tfQUMgKnBBQywKY2hhciogSW9DLAppbnQg
QWN0aW9uLAp1MzIgSWQsCmNoYXIgKnBCdWYsCnVuc2lnbmVkIGludCAqcExlbiwKdTMyIEluc3Rh
bmNlLAp1bnNpZ25lZCBpbnQgVGFibGVJbmRleCwKdTMyIE5ldEluZGV4KQp7CiAgICAgICAgaW50
IFJldDsKICAgICAgICB1NjQgU3RhdFZhbDsKICAgICAgICB1MzIgU3RhdFZhbDMyOwogICAgICAg
IHU4IElzNjRCaXRSZXEgPSAwOwoKCgoKICAgICAgICBpZiAoSW5zdGFuY2UgIT0gKHUzMikoLTEp
ICYmIEluc3RhbmNlICE9IDEpIHsKCiAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAg
ICAgICAgICByZXR1cm4gKDYpOwogICAgICAgIH0KCgoKCiAgICAgICAgaWYgKEFjdGlvbiAhPSAw
KSB7CgogICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICg0
KTsKICAgICAgICB9CgoKCgogICAgICAgIHN3aXRjaCAoSWQpIHsKCiAgICAgICAgY2FzZSAweDAx
MDEwMTAxOgogICAgICAgIGNhc2UgMHgwMTAxMDEwMjoKICAgICAgICAgICAgICAgIGlmICgqcExl
biA8IHNpemVvZihTS19NQUNfQUREUikpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVu
ID0gc2l6ZW9mKFNLX01BQ19BRERSKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgy
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZh
dWx0OgoKICAgICAgICAgICAgICAgIGlmICgqcExlbiA8IHNpemVvZih1MzIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHUzMik7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAoMik7CiAgICAgICAgICAgICAgICB9CiMgMjYyMyAic2tnZXBubWkuYyIKICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCgoKCgoKICAgICAgICBSZXQgPSBNYWNVcGRh
dGUocEFDLCBJb0MsIDAsIHBBQy0+R0luaS5HSU1hY3NGb3VuZCAtIDEpOwogICAgICAgIGlmICgg
UmV0ICE9IDApIHsKCiAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICBy
ZXR1cm4gKFJldCk7CiAgICAgICAgfQogICAgICAgIHBBQy0+UG5taS5NYWNVcGRhdGVkRmxhZyAr
KzsKCgoKCiAgICAgICAgc3dpdGNoIChJZCkgewoKICAgICAgICBjYXNlIDB4MDEwMTAxMDE6CiAg
ICAgICAgICAgICAgICBDb3B5TWFjKHBCdWYsICZwQUMtPkFkZHIuTmV0W05ldEluZGV4XS5QZXJt
YW5lbnRNYWNBZGRyZXNzKTsKICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKFNLX01BQ19B
RERSKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4MDEwMTAxMDI6CiAg
ICAgICAgICAgICAgICBDb3B5TWFjKHBCdWYsICZwQUMtPkFkZHIuTmV0W05ldEluZGV4XS5DdXJy
ZW50TWFjQWRkcmVzcyk7CiAgICAgICAgICAgICAgICAqcExlbiA9IHNpemVvZihTS19NQUNfQURE
Uik7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
ICAgIFN0YXRWYWwgPSBHZXRTdGF0VmFsKHBBQywgSW9DLCAwLCBJZFRhYmxlW1RhYmxlSW5kZXhd
LlBhcmFtLCBOZXRJbmRleCk7CgoKCgogICAgICAgICAgICAgICAgaWYgKCFJczY0Qml0UmVxKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRWYWwzMiA9ICh1MzIpU3RhdFZhbDsKICAgICAg
ICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9t
ZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihTdGF0VmFsMzIpKSwoNCkpIDogX19tZW1j
cHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihTdGF0VmFsMzIpKSwoNCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgKnBMZW4gPSBzaXplb2YodTMyKTsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAoX19idWlsdGluX2Nv
bnN0YW50X3AoOCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikm
KFN0YXRWYWwpKSwoOCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihTdGF0
VmFsKSksKDgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHU2NCk7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAg
ICAgIHBBQy0+UG5taS5NYWNVcGRhdGVkRmxhZyAtLTsKCiAgICAgICAgcmV0dXJuICgwKTsKfQoj
IDI2OTQgInNrZ2Vwbm1pLmMiCnN0YXRpYyBpbnQgTWFjUHJpdmF0ZVN0YXQoClNLX0FDICpwQUMs
CmNoYXIqIElvQywKaW50IEFjdGlvbiwKdTMyIElkLApjaGFyICpwQnVmLAp1bnNpZ25lZCBpbnQg
KnBMZW4sCnUzMiBJbnN0YW5jZSwKdW5zaWduZWQgaW50IFRhYmxlSW5kZXgsCnUzMiBOZXRJbmRl
eCkKewogICAgICAgIHVuc2lnbmVkIGludCBMb2dQb3J0TWF4OwogICAgICAgIHVuc2lnbmVkIGlu
dCBMb2dQb3J0SW5kZXg7CiAgICAgICAgdW5zaWduZWQgaW50IFBoeXNQb3J0TWF4OwogICAgICAg
IHVuc2lnbmVkIGludCBMaW1pdDsKICAgICAgICB1bnNpZ25lZCBpbnQgT2Zmc2V0OwogICAgICAg
IGludCBSZXQ7CiAgICAgICAgdTY0IFN0YXRWYWw7CgoKCgoKCiAgICAgICAgUGh5c1BvcnRNYXgg
PSBwQUMtPkdJbmkuR0lNYWNzRm91bmQ7CiAgICAgICAgTG9nUG9ydE1heCA9ICgodW5zaWduZWQg
aW50KShQaHlzUG9ydE1heCkgKyAxKTsKCiAgICAgICAgaWYgKHBBQy0+UG5taS5EdWFsTmV0QWN0
aXZlRmxhZyA9PSAoITApKSB7CiAgICAgICAgICAgICAgICBMb2dQb3J0TWF4LS07CiAgICAgICAg
fQoKICAgICAgICBpZiAoKEluc3RhbmNlICE9ICh1MzIpKC0xKSkpIHsKCiAgICAgICAgICAgICAg
ICBpZiAoKEluc3RhbmNlIDwgMSkgfHwgKEluc3RhbmNlID4gTG9nUG9ydE1heCkpIHsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICg2KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIExvZ1BvcnRJbmRleCA9
ICgodW5zaWduZWQgaW50KShJbnN0YW5jZSkgLSAxKTsKICAgICAgICAgICAgICAgIExpbWl0ID0g
TG9nUG9ydEluZGV4ICsgMTsKICAgICAgICB9CgogICAgICAgIGVsc2UgewoKICAgICAgICAgICAg
ICAgIExvZ1BvcnRJbmRleCA9IDA7CiAgICAgICAgICAgICAgICBMaW1pdCA9IExvZ1BvcnRNYXg7
CiAgICAgICAgfQoKCgoKCiAgICAgICAgaWYgKEFjdGlvbiAhPSAwKSB7CgogICAgICAgICAgICAg
ICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICg0KTsKICAgICAgICB9CgoKCgog
ICAgICAgIGlmICgqcExlbiA8IChMaW1pdCAtIExvZ1BvcnRJbmRleCkgKiBzaXplb2YodTY0KSkg
ewoKICAgICAgICAgICAgICAgICpwTGVuID0gKExpbWl0IC0gTG9nUG9ydEluZGV4KSAqIHNpemVv
Zih1NjQpOwogICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICB9CgoKCgoKICAgICAg
ICBSZXQgPSBNYWNVcGRhdGUocEFDLCBJb0MsIDAsIHBBQy0+R0luaS5HSU1hY3NGb3VuZCAtIDEp
OwogICAgICAgIGlmIChSZXQgIT0gMCkgewoKICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAg
ICAgICAgICAgICAgIHJldHVybiAoUmV0KTsKICAgICAgICB9CiAgICAgICAgcEFDLT5Qbm1pLk1h
Y1VwZGF0ZWRGbGFnICsrOwoKCgoKICAgICAgICBPZmZzZXQgPSAwOwogICAgICAgIGZvciAoOyBM
b2dQb3J0SW5kZXggPCBMaW1pdDsgTG9nUG9ydEluZGV4ICsrKSB7CgogICAgICAgICAgICAgICAg
c3dpdGNoIChJZCkgewojIDI3ODkgInNrZ2Vwbm1pLmMiCiAgICAgICAgICAgICAgICBjYXNlIDB4
RkYwMjAxM0E6CiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAxMjA6CiAgICAgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAocEFDLT5HSW5pLkdJTWFjVHlwZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdFZhbCA9
IEdldFN0YXRWYWwocEFDLCBJb0MsIExvZ1BvcnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElkVGFibGVbVGFibGVJbmRleF0uUGFyYW0sIE5ldEluZGV4KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSWQgPT0g
MHhGRjAyMDEyMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0
YXRWYWwgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
ZXRTdGF0VmFsKHBBQywgSW9DLCBMb2dQb3J0SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTS19QTk1JX0hUWF9C
Uk9BRENBU1QsIE5ldEluZGV4KSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdldFN0YXRWYWwocEFDLCBJb0MsIExvZ1BvcnRJbmRleCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNLX1BOTUlfSFRYX01VTFRJQ0FTVCwgTmV0SW5kZXgpICsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0U3RhdFZhbChwQUMsIElvQywgTG9nUG9ydElu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU0tfUE5NSV9IVFhfVU5JQ0FTVCwgTmV0SW5kZXgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRWYWwgPQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRTdGF0VmFs
KHBBQywgSW9DLCBMb2dQb3J0SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTS19QTk1JX0hSWF9CUk9BRENBU1Qs
IE5ldEluZGV4KSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdldFN0YXRWYWwocEFDLCBJb0MsIExvZ1BvcnRJbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNLX1BOTUlf
SFJYX01VTFRJQ0FTVCwgTmV0SW5kZXgpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2V0U3RhdFZhbChwQUMsIElvQywgTG9nUG9ydEluZGV4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU0tfUE5NSV9IUlhfVU5JQ0FTVCwgTmV0SW5kZXgpICsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0U3RhdFZhbChwQUMsIElvQywgTG9nUG9y
dEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0tfUE5NSV9IUlhfVU5ERVJTSVpFLCBOZXRJbmRleCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTdGF0VmFsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
ICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChj
aGFyKikocEJ1ZiArIE9mZnNldCkpLCgoY2hhciopJihTdGF0VmFsKSksKDgpKSA6IF9fbWVtY3B5
KCgoY2hhciopKHBCdWYgKyBPZmZzZXQpKSwoKGNoYXIqKSYoU3RhdFZhbCkpLCg4KSkpOwogICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgICAgICAgICBTdGF0VmFsID0gR2V0U3RhdFZhbChwQUMsIElvQywgTG9nUG9y
dEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkVGFibGVbVGFibGVJbmRl
eF0uUGFyYW0sIE5ldEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9j
b25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkp
LCgoY2hhciopJihTdGF0VmFsKSksKDgpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBCdWYgKyBPZmZz
ZXQpKSwoKGNoYXIqKSYoU3RhdFZhbCkpLCg4KSkpOwogICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9m
KHU2NCk7CiAgICAgICAgfQogICAgICAgICpwTGVuID0gT2Zmc2V0OwoKICAgICAgICBwQUMtPlBu
bWkuTWFjVXBkYXRlZEZsYWcgLS07CgogICAgICAgIHJldHVybiAoMCk7Cn0KIyAyODY5ICJza2dl
cG5taS5jIgpzdGF0aWMgaW50IEFkZHIoClNLX0FDICpwQUMsCmNoYXIqIElvQywKaW50IEFjdGlv
biwKdTMyIElkLApjaGFyICpwQnVmLAp1bnNpZ25lZCBpbnQgKnBMZW4sCnUzMiBJbnN0YW5jZSwK
dW5zaWduZWQgaW50IFRhYmxlSW5kZXgsCnUzMiBOZXRJbmRleCkKewogICAgICAgIGludCBSZXQ7
CiAgICAgICAgdW5zaWduZWQgaW50IExvZ1BvcnRNYXg7CiAgICAgICAgdW5zaWduZWQgaW50IFBo
eXNQb3J0TWF4OwogICAgICAgIHVuc2lnbmVkIGludCBMb2dQb3J0SW5kZXg7CiAgICAgICAgdW5z
aWduZWQgaW50IFBoeXNQb3J0SW5kZXg7CiAgICAgICAgdW5zaWduZWQgaW50IExpbWl0OwogICAg
ICAgIHVuc2lnbmVkIGludCBPZmZzZXQgPSAwOwoKCgoKCiAgICAgICAgUGh5c1BvcnRNYXggPSBw
QUMtPkdJbmkuR0lNYWNzRm91bmQ7CiAgICAgICAgTG9nUG9ydE1heCA9ICgodW5zaWduZWQgaW50
KShQaHlzUG9ydE1heCkgKyAxKTsKCiAgICAgICAgaWYgKHBBQy0+UG5taS5EdWFsTmV0QWN0aXZl
RmxhZyA9PSAoITApKSB7CiAgICAgICAgICAgICAgICBMb2dQb3J0TWF4LS07CiAgICAgICAgfQoK
ICAgICAgICBpZiAoKEluc3RhbmNlICE9ICh1MzIpKC0xKSkpIHsKCiAgICAgICAgICAgICAgICBp
ZiAoKEluc3RhbmNlIDwgMSkgfHwgKEluc3RhbmNlID4gTG9nUG9ydE1heCkpIHsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICg2KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIExvZ1BvcnRJbmRleCA9ICgo
dW5zaWduZWQgaW50KShJbnN0YW5jZSkgLSAxKTsKICAgICAgICAgICAgICAgIExpbWl0ID0gTG9n
UG9ydEluZGV4ICsgMTsKICAgICAgICB9CgogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAg
IExvZ1BvcnRJbmRleCA9IDA7CiAgICAgICAgICAgICAgICBMaW1pdCA9IExvZ1BvcnRNYXg7CiAg
ICAgICAgfQoKCgoKICAgICAgICBpZiAoQWN0aW9uID09IDApIHsKCgoKCiAgICAgICAgICAgICAg
ICBpZiAoKnBMZW4gPCAoTGltaXQgLSBMb2dQb3J0SW5kZXgpICogNikgewoKICAgICAgICAgICAg
ICAgICAgICAgICAgKnBMZW4gPSAoTGltaXQgLSBMb2dQb3J0SW5kZXgpICogNjsKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAgICAgICAgIH0KCgoKCiAgICAgICAg
ICAgICAgICBmb3IgKDsgTG9nUG9ydEluZGV4IDwgTGltaXQ7IExvZ1BvcnRJbmRleCArKykgewoK
ICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChJZCkgewoKICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAweEZGMDEwMTIwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChMb2dQb3J0SW5kZXggPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ29weU1hYyhwQnVmICsgT2Zmc2V0LCAmcEFDLT5BZGRyLk5ldFtOZXRJbmRleF0uQ3Vy
cmVudE1hY0FkZHJlc3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggPSAoKHVuc2lnbmVkIGludCkoTG9nUG9ydElu
ZGV4KSAtIDEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlN
YWMocEJ1ZiArIE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnBBQy0+QWRkci5Qb3J0W1BoeXNQb3J0SW5kZXhdLkN1cnJlbnRNYWNBZGRyZXNz
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgT2Zmc2V0ICs9IDY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxMjE6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExvZ1BvcnRJbmRleCA9PSAwKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3B5TWFjKHBCdWYgKyBPZmZzZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwQUMtPkFkZHIu
TmV0W05ldEluZGV4XS5QZXJtYW5lbnRNYWNBZGRyZXNzKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaHlzUG9ydEluZGV4ID0gKCh1bnNp
Z25lZCBpbnQpKExvZ1BvcnRJbmRleCkgLSAxKTsKCgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29weU1hYyhwQnVmICsgT2Zmc2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcEFDLT5BZGRyLlBvcnRbUGh5c1BvcnRJbmRl
eF0uUGVybWFuZW50TWFjQWRkcmVzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCArPSA2OwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywgKDFM
PDwzKSwgKDQwMCArIDgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkFkZHI6IFRyaWVkIHRvIGdldCB1bmtub3duIE9JRCIpOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgICpwTGVuID0gT2Zmc2V0OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCgoK
CiAgICAgICAgICAgICAgICBpZiAoSWQgPT0gMHhGRjAxMDEyMSkgewoKICAgICAgICAgICAgICAg
ICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDQpOwog
ICAgICAgICAgICAgICAgfQoKCgoKICAgICAgICAgICAgICAgIGlmIChJZCAhPSAweEZGMDEwMTIw
KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywgKDFMPDwzKSwgKDQw
MCArIDkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBZGRyOiBVbmtub3duIE9J
RCIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAgICAgICAgfQoKCgoKICAgICAgICAgICAgICAg
IGlmICgqcExlbiA8IChMaW1pdCAtIExvZ1BvcnRJbmRleCkgKiA2KSB7CgogICAgICAgICAgICAg
ICAgICAgICAgICAqcExlbiA9IChMaW1pdCAtIExvZ1BvcnRJbmRleCkgKiA2OwogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKDIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgaWYgKCpwTGVuID4gKExpbWl0IC0gTG9nUG9ydEluZGV4KSAqIDYpIHsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgz
KTsKICAgICAgICAgICAgICAgIH0KCgoKCiAgICAgICAgICAgICAgICBpZiAoQWN0aW9uID09IDEp
IHsKCiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICgwKTsKICAgICAgICAgICAgICAgIH0KCgoKCiAgICAgICAgICAgICAgICBm
b3IgKDsgTG9nUG9ydEluZGV4IDwgTGltaXQ7IExvZ1BvcnRJbmRleCArKywgT2Zmc2V0ICs9IDYp
IHsKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoTG9nUG9ydEluZGV4ID09IDAgfHwg
X19idWlsdGluX21lbWNtcChwQnVmICsgT2Zmc2V0LCJceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYi
LDYpID09IDApIHsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBQaHlzUG9y
dEluZGV4ID0gKCh1bnNpZ25lZCBpbnQpKExvZ1BvcnRJbmRleCkgLSAxKTsKCgogICAgICAgICAg
ICAgICAgICAgICAgICBSZXQgPSBTa0FkZHJPdmVycmlkZShwQUMsIElvQywgUGh5c1BvcnRJbmRl
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0tfTUFDX0FERFIgKikocEJ1ZiAr
IE9mZnNldCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvZ1BvcnRJbmRleCA9
PSAwID8gKDApIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChSZXQgIT0gKDApKSB7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICpwTGVuID0gT2Zmc2V0OwogICAgICAgIH0KCiAgICAg
ICAgcmV0dXJuICgwKTsKfQojIDMwNzUgInNrZ2Vwbm1pLmMiCnN0YXRpYyBpbnQgQ3N1bVN0YXQo
ClNLX0FDICpwQUMsCmNoYXIqIElvQywKaW50IEFjdGlvbiwKdTMyIElkLApjaGFyICpwQnVmLAp1
bnNpZ25lZCBpbnQgKnBMZW4sCnUzMiBJbnN0YW5jZSwKdW5zaWduZWQgaW50IFRhYmxlSW5kZXgs
CnUzMiBOZXRJbmRleCkKewogICAgICAgIHVuc2lnbmVkIGludCBJbmRleDsKICAgICAgICB1bnNp
Z25lZCBpbnQgTGltaXQ7CiAgICAgICAgdW5zaWduZWQgaW50IE9mZnNldCA9IDA7CiAgICAgICAg
dTY0IFN0YXRWYWw7CgoKCgoKICAgICAgICBpZiAoSW5zdGFuY2UgIT0gKHUzMikoLTEpKSB7Cgog
ICAgICAgICAgICAgICAgaWYgKChJbnN0YW5jZSA8IDEpIHx8IChJbnN0YW5jZSA+IDMpKSB7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAoNik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBJbmRleCA9ICh1
bnNpZ25lZCBpbnQpSW5zdGFuY2UgLSAxOwogICAgICAgICAgICAgICAgTGltaXQgPSBJbmRleCAr
IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgSW5kZXggPSAwOwog
ICAgICAgICAgICAgICAgTGltaXQgPSAzOwogICAgICAgIH0KCgoKCiAgICAgICAgaWYgKEFjdGlv
biAhPSAwKSB7CgogICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgcmV0
dXJuICg0KTsKICAgICAgICB9CgoKCgogICAgICAgIGlmICgqcExlbiA8IChMaW1pdCAtIEluZGV4
KSAqIHNpemVvZih1NjQpKSB7CgogICAgICAgICAgICAgICAgKnBMZW4gPSAoTGltaXQgLSBJbmRl
eCkgKiBzaXplb2YodTY0KTsKICAgICAgICAgICAgICAgIHJldHVybiAoMik7CiAgICAgICAgfQoK
CgoKICAgICAgICBmb3IgKDsgSW5kZXggPCBMaW1pdDsgSW5kZXggKyspIHsKCiAgICAgICAgICAg
ICAgICBzd2l0Y2ggKElkKSB7CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDIwMTExOgogICAg
ICAgICAgICAgICAgICAgICAgICBTdGF0VmFsID0gcEFDLT5Dc3VtLlByb3RvU3RhdHNbTmV0SW5k
ZXhdW0luZGV4XS5SeE9rQ3RzOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAg
ICAgICAgICAgICBjYXNlIDB4RkYwMjAxMTI6CiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRW
YWwgPSBwQUMtPkNzdW0uUHJvdG9TdGF0c1tOZXRJbmRleF1bSW5kZXhdLlJ4VW5hYmxlQ3RzOwog
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYw
MjAxMTM6CiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRWYWwgPSBwQUMtPkNzdW0uUHJvdG9T
dGF0c1tOZXRJbmRleF1bSW5kZXhdLlJ4RXJyQ3RzOwogICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAxMTQ6CiAgICAgICAgICAgICAgICAg
ICAgICAgIFN0YXRWYWwgPSBwQUMtPkNzdW0uUHJvdG9TdGF0c1tOZXRJbmRleF1bSW5kZXhdLlR4
T2tDdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNh
c2UgMHhGRjAyMDExNToKICAgICAgICAgICAgICAgICAgICAgICAgU3RhdFZhbCA9IHBBQy0+Q3N1
bS5Qcm90b1N0YXRzW05ldEluZGV4XVtJbmRleF0uVHhVbmFibGVDdHM7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAg
ICAgICAgICAgIFNrRXJyb3JMb2cocEFDLCAoMUw8PDMpLCAoNDAwICsgMTApLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJDc3VtU3RhdDogVW5rbm93biBPSUQiKTsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICgxKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0
YW50X3AoOCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwQnVmICsgT2Zmc2V0KSksKChj
aGFyKikmKFN0YXRWYWwpKSwoOCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkp
LCgoY2hhciopJihTdGF0VmFsKSksKDgpKSk7CiAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6
ZW9mKHU2NCk7CiAgICAgICAgfQoKCgoKICAgICAgICAqcExlbiA9IE9mZnNldDsKCiAgICAgICAg
cmV0dXJuICgwKTsKfQojIDMxOTMgInNrZ2Vwbm1pLmMiCnN0YXRpYyBpbnQgU2Vuc29yU3RhdCgK
U0tfQUMgKnBBQywKY2hhciogSW9DLAppbnQgQWN0aW9uLAp1MzIgSWQsCmNoYXIgKnBCdWYsCnVu
c2lnbmVkIGludCAqcExlbiwKdTMyIEluc3RhbmNlLAp1bnNpZ25lZCBpbnQgVGFibGVJbmRleCwK
dTMyIE5ldEluZGV4KQp7CiAgICAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgICAgdW5zaWduZWQg
aW50IEluZGV4OwogICAgICAgIHVuc2lnbmVkIGludCBMaW1pdDsKICAgICAgICB1bnNpZ25lZCBp
bnQgT2Zmc2V0OwogICAgICAgIHVuc2lnbmVkIGludCBMZW47CiAgICAgICAgdTMyIFZhbDMyOwog
ICAgICAgIHU2NCBWYWw2NDsKCgoKCgogICAgICAgIGlmICgoSW5zdGFuY2UgIT0gKHUzMikoLTEp
KSkgewoKICAgICAgICAgICAgICAgIGlmICgoSW5zdGFuY2UgPCAxKSB8fCAoSW5zdGFuY2UgPiAo
dTMyKXBBQy0+STJjLk1heFNlbnMpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9
IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoNik7CiAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgSW5kZXggPSAodW5zaWduZWQgaW50KUluc3RhbmNlIC0xOwogICAg
ICAgICAgICAgICAgTGltaXQgPSAodW5zaWduZWQgaW50KUluc3RhbmNlOwogICAgICAgIH0KICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEluZGV4ID0gMDsKICAgICAgICAgICAgICAgIExp
bWl0ID0gKHVuc2lnbmVkIGludCkgcEFDLT5JMmMuTWF4U2VuczsKICAgICAgICB9CgoKCgogICAg
ICAgIGlmIChBY3Rpb24gIT0gMCkgewoKICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAg
ICAgICAgICAgIHJldHVybiAoNCk7CiAgICAgICAgfQoKCgoKICAgICAgICBzd2l0Y2ggKElkKSB7
CgogICAgICAgIGNhc2UgMHhGRjAyMDEwNDoKICAgICAgICBjYXNlIDB4RkYwMjAxMDU6CiAgICAg
ICAgY2FzZSAweEZGMDIwMTA2OgogICAgICAgIGNhc2UgMHhGRjAyMDEwNzoKICAgICAgICBjYXNl
IDB4RkYwMjAxMDg6CiAgICAgICAgICAgICAgICBpZiAoKnBMZW4gPCAoTGltaXQgLSBJbmRleCkg
KiBzaXplb2YodTMyKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSAoTGltaXQg
LSBJbmRleCkgKiBzaXplb2YodTMyKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgy
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNl
IDB4RkYwMjAxMDI6CiAgICAgICAgICAgICAgICBmb3IgKE9mZnNldCA9IDAsIGkgPSBJbmRleDsg
aSA8IExpbWl0OyBpICsrKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBMZW4gPSAodW5zaWdu
ZWQgaW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbigoY2hhciopKHBB
Qy0+STJjLlNlblRhYmxlW2ldLlNlbkRlc2MpKSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChMZW4gPj0gMjUpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tFcnJv
ckxvZyhwQUMsICgxTDw8MyksICg0MDAgKyAxMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiU2Vuc29yU3RhdDogU2Vuc29yIGRlc2NyIHN0cmluZyB0b28gbG9uZyIp
OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgxKTsKICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gTGVuOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgT2Zmc2V0KSB7CgogICAgICAgICAgICAgICAg
ICAgICAgICAqcExlbiA9IE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgy
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNl
IDB4RkYwMjAxMDE6CiAgICAgICAgY2FzZSAweEZGMDIwMTAzOgogICAgICAgIGNhc2UgMHhGRjAy
MDEwOToKICAgICAgICAgICAgICAgIGlmICgqcExlbiA8IExpbWl0IC0gSW5kZXgpIHsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICpwTGVuID0gTGltaXQgLSBJbmRleDsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJy
ZWFrOwoKICAgICAgICBjYXNlIDB4RkYwMjAxMEE6CiAgICAgICAgY2FzZSAweEZGMDIwMTBDOgog
ICAgICAgIGNhc2UgMHhGRjAyMDEwQjoKICAgICAgICBjYXNlIDB4RkYwMjAxMEQ6CiAgICAgICAg
ICAgICAgICBpZiAoKnBMZW4gPCAoTGltaXQgLSBJbmRleCkgKiBzaXplb2YodTY0KSkgewoKICAg
ICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSAoTGltaXQgLSBJbmRleCkgKiBzaXplb2YodTY0
KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
U2tFcnJvckxvZyhwQUMsICgxTDw8MyksICg0MDAgKyAxMiksCiAgICAgICAgICAgICAgICAgICAg
ICAgICJTZW5zb3JTdGF0OiBVbmtub3duIE9JRCIpOwoKICAgICAgICAgICAgICAgICpwTGVuID0g
MDsKICAgICAgICAgICAgICAgIHJldHVybiAoMSk7CgogICAgICAgIH0KCgoKCiAgICAgICAgZm9y
IChPZmZzZXQgPSAwOyBJbmRleCA8IExpbWl0OyBJbmRleCArKykgewoKICAgICAgICAgICAgICAg
IHN3aXRjaCAoSWQpIHsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAxMDE6CiAgICAgICAg
ICAgICAgICAgICAgICAgICoocEJ1ZiArIE9mZnNldCkgPSAoY2hhcilJbmRleDsKICAgICAgICAg
ICAgICAgICAgICAgICAgT2Zmc2V0ICs9IHNpemVvZihjaGFyKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDIwMTAyOgogICAgICAgICAg
ICAgICAgICAgICAgICBMZW4gPSBzdHJsZW4oKGNoYXIqKShwQUMtPkkyYy5TZW5UYWJsZVtJbmRl
eF0uU2VuRGVzYykpOwogICAgICAgICAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50
X3AoTGVuKSA/IF9fY29uc3RhbnRfbWVtY3B5KChwQnVmICsgT2Zmc2V0ICsgMSksKHBBQy0+STJj
LlNlblRhYmxlW0luZGV4XS5TZW5EZXNjKSwoTGVuKSkgOiBfX21lbWNweSgocEJ1ZiArIE9mZnNl
dCArIDEpLChwQUMtPkkyYy5TZW5UYWJsZVtJbmRleF0uU2VuRGVzYyksKExlbikpKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICoocEJ1ZiArIE9mZnNldCkgPSAoY2hhcilMZW47CiAgICAgICAg
ICAgICAgICAgICAgICAgIE9mZnNldCArPSBMZW4gKyAxOwogICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAxMDM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICoocEJ1ZiArIE9mZnNldCkgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChjaGFyKXBBQy0+STJjLlNlblRhYmxlW0luZGV4XS5TZW5UeXBlOwogICAgICAgICAgICAg
ICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKGNoYXIpOwogICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAxMDQ6CiAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbDMyID0gKHUzMilwQUMtPkkyYy5TZW5UYWJsZVtJbmRleF0uU2VuVmFsdWU7
CiAgICAgICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29u
c3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYgKyBPZmZzZXQpKSwoKGNoYXIqKSYoVmFsMzIpKSwo
NCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkpLCgoY2hhciopJihWYWwzMikp
LCg0KSkpOwogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKHUzMik7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAy
MDEwNToKICAgICAgICAgICAgICAgICAgICAgICAgVmFsMzIgPSAodTMyKXBBQy0+STJjLlNlblRh
YmxlW0luZGV4XS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5UaHJlV2Fybkxv
dzsKICAgICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19j
b25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkpLCgoY2hhciopJihWYWwzMikp
LCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmICsgT2Zmc2V0KSksKChjaGFyKikmKFZhbDMy
KSksKDQpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YodTMyKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAweEZG
MDIwMTA2OgogICAgICAgICAgICAgICAgICAgICAgICBWYWwzMiA9ICh1MzIpcEFDLT5JMmMuU2Vu
VGFibGVbSW5kZXhdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlblRocmVXYXJu
SGlnaDsKICAgICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8g
X19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkpLCgoY2hhciopJihWYWwz
MikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmICsgT2Zmc2V0KSksKChjaGFyKikmKFZh
bDMyKSksKDQpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YodTMy
KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAw
eEZGMDIwMTA3OgogICAgICAgICAgICAgICAgICAgICAgICBWYWwzMiA9ICh1MzIpcEFDLT5JMmMu
U2VuVGFibGVbSW5kZXhdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlblRocmVF
cnJMb3c7CiAgICAgICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/
IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYgKyBPZmZzZXQpKSwoKGNoYXIqKSYoVmFs
MzIpKSwoNCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkpLCgoY2hhciopJihW
YWwzMikpLCg0KSkpOwogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKHUz
Mik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2Ug
MHhGRjAyMDEwODoKICAgICAgICAgICAgICAgICAgICAgICAgVmFsMzIgPSBwQUMtPkkyYy5TZW5U
YWJsZVtJbmRleF0uU2VuVGhyZUVyckhpZ2g7CiAgICAgICAgICAgICAgICAgICAgICAgIChfX2J1
aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYgKyBP
ZmZzZXQpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1ZiAr
IE9mZnNldCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICBPZmZzZXQgKz0gc2l6ZW9mKHUzMik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoK
ICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAyMDEwOToKICAgICAgICAgICAgICAgICAgICAgICAg
KihwQnVmICsgT2Zmc2V0KSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIp
cEFDLT5JMmMuU2VuVGFibGVbSW5kZXhdLlNlbkVyckZsYWc7CiAgICAgICAgICAgICAgICAgICAg
ICAgIE9mZnNldCArPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAyMDEwQToKICAgICAgICAgICAgICAgICAgICAg
ICAgVmFsNjQgPSBwQUMtPkkyYy5TZW5UYWJsZVtJbmRleF0uU2VuV2FybkN0czsKICAgICAgICAg
ICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1j
cHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21l
bWNweSgoKGNoYXIqKShwQnVmICsgT2Zmc2V0KSksKChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YodTY0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDIwMTBCOgogICAg
ICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+STJjLlNlblRhYmxlW0luZGV4XS5TZW5F
cnJDdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg4KSA/
IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYgKyBPZmZzZXQpKSwoKGNoYXIqKSYoVmFs
NjQpKSwoOCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkpLCgoY2hhciopJihW
YWw2NCkpLCg4KSkpOwogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKHU2
NCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2Ug
MHhGRjAyMDEwQzoKICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSAocEFDLT5JMmMuU2Vu
VGFibGVbSW5kZXhdLiBTZW5CZWdXYXJuVFMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgKF9f
YnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZiAr
IE9mZnNldCkpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVm
ICsgT2Zmc2V0KSksKChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIE9mZnNldCArPSBzaXplb2YodTY0KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDIwMTBEOgogICAgICAgICAgICAgICAgICAgICAg
ICBWYWw2NCA9IChwQUMtPkkyYy5TZW5UYWJsZVtJbmRleF0uIFNlbkJlZ0VyclRTKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg4KSA/IF9fY29uc3RhbnRf
bWVtY3B5KCgoY2hhciopKHBCdWYgKyBPZmZzZXQpKSwoKGNoYXIqKSYoVmFsNjQpKSwoOCkpIDog
X19tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkpLCgoY2hhciopJihWYWw2NCkpLCg4KSkp
OwogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKHU2NCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAgICAgICAgICAgIDsKCgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDEpOwog
ICAgICAgICAgICAgICAgfQogICAgICAgIH0KCgoKCiAgICAgICAgKnBMZW4gPSBPZmZzZXQ7Cgog
ICAgICAgIHJldHVybiAoMCk7Cn0KIyAzNDQwICJza2dlcG5taS5jIgpzdGF0aWMgaW50IFZwZCgK
U0tfQUMgKnBBQywKY2hhciogSW9DLAppbnQgQWN0aW9uLAp1MzIgSWQsCmNoYXIgKnBCdWYsCnVu
c2lnbmVkIGludCAqcExlbiwKdTMyIEluc3RhbmNlLAp1bnNpZ25lZCBpbnQgVGFibGVJbmRleCwK
dTMyIE5ldEluZGV4KQp7CiAgICAgICAgU0tfVlBEX1NUQVRVUyAqcFZwZFN0YXR1czsKICAgICAg
ICB1bnNpZ25lZCBpbnQgQnVmTGVuOwogICAgICAgIGNoYXIgQnVmWzI1Nl07CiAgICAgICAgY2hh
ciBLZXlBcnJbKDUxMiAvIDQpXVs1XTsKICAgICAgICBjaGFyIEtleVN0cls1XTsKICAgICAgICB1
bnNpZ25lZCBpbnQgS2V5Tm87CiAgICAgICAgdW5zaWduZWQgaW50IE9mZnNldDsKICAgICAgICB1
bnNpZ25lZCBpbnQgSW5kZXg7CiAgICAgICAgdW5zaWduZWQgaW50IEZpcnN0SW5kZXg7CiAgICAg
ICAgdW5zaWduZWQgaW50IExhc3RJbmRleDsKICAgICAgICB1bnNpZ25lZCBpbnQgTGVuOwogICAg
ICAgIGludCBSZXQ7CiAgICAgICAgdTMyIFZhbDMyOwoKCgoKICAgICAgICBSZXQgPSBHZXRWcGRL
ZXlBcnIocEFDLCBJb0MsICZLZXlBcnJbMF1bMF0sIHNpemVvZihLZXlBcnIpLAogICAgICAgICAg
ICAgICAgJktleU5vKTsKICAgICAgICBpZiAoUmV0ICE9IDApIHsKICAgICAgICAgICAgICAgICpw
TGVuID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiAoUmV0KTsKICAgICAgICB9CgoKCgoKCgog
ICAgICAgIEZpcnN0SW5kZXggPSAwOwogICAgICAgIExhc3RJbmRleCA9IEtleU5vOwoKICAgICAg
ICBpZiAoKEluc3RhbmNlICE9ICh1MzIpKC0xKSkpIHsKCiAgICAgICAgICAgICAgICBpZiAoSWQg
PT0gMHhGRjAxMDEwNSB8fCBJZCA9PSAweEZGMDEwMTA2IHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgIElkID09IDB4RkYwMTAxMDcpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm5jcHko
KGNoYXIqKShLZXlTdHIpLChjaGFyKikoKGNoYXIgKikmSW5zdGFuY2UpLDQpOwogICAgICAgICAg
ICAgICAgICAgICAgICBLZXlTdHJbNF0gPSAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IChJbmRleCA9IDA7IEluZGV4IDwgS2V5Tm87IEluZGV4ICsrKSB7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzdHJjbXAoKGNoYXIqKShLZXlTdHIpLChjaGFyKikoS2V5QXJy
W0luZGV4XSkpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZpcnN0SW5kZXggPSBJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExhc3RJbmRleCA9IEluZGV4KzE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEluZGV4ID09IEtl
eU5vKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDYpOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChJbnN0YW5j
ZSAhPSAxKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoNik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKCgoK
ICAgICAgICBpZiAoQWN0aW9uID09IDApIHsKCiAgICAgICAgICAgICAgICBzd2l0Y2ggKElkKSB7
CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDEwMTAyOgoKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCpwTGVuIDwgc2l6ZW9mKHUzMikpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnBMZW4gPSBzaXplb2YodTMyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gKDIpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
ICAgICAgICBwVnBkU3RhdHVzID0gVnBkU3RhdChwQUMsIElvQyk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChwVnBkU3RhdHVzID09ICgodm9pZCAqKTApKSB7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNrRXJyb3JMb2cocEFDLCAoMUw8PDMpLCAoNDAwICsgMTcpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZwZDogSW52YWxpZCBWUEQgc3Rh
dHVzIHBvaW50ZXIiKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSAw
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwVnBkU3RhdHVzLT52
cGRfc3RhdHVzICYgKDE8PDApKSA9PSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNrRXJyb3JMb2cocEFDLCAoMUw8PDMpLCAoNDAwICsgMTgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlZwZDogVlBEIGRhdGEgbm90IHZhbGlkIik7CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAg
ICAgICAgICAgICAgICAgICAgICBWYWwzMiA9ICh1MzIpcFZwZFN0YXR1cy0+dnBkX2ZyZWVfcnc7
CiAgICAgICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29u
c3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpIDogX19t
ZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWwzMikpLCg0KSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAqcExlbiA9IHNpemVvZih1MzIpOwogICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxMDM6CgogICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKExlbiA9IDAsIEluZGV4ID0gMDsgSW5kZXggPCBLZXlObzsgSW5kZXgg
KyspIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuICs9IHN0cmxlbigoY2hh
ciopKEtleUFycltJbmRleF0pKSArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgTGVuKSB7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpwTGVuID0gTGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAoMik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAg
ICAgICAgICAqKHBCdWYpID0gKGNoYXIpTGVuIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIChPZmZzZXQgPSAxLCBJbmRleCA9IDA7IEluZGV4IDwgS2V5Tm87IEluZGV4ICsrKSB7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbiA9IHN0cmxlbigoY2hhciopKEtleUFy
cltJbmRleF0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19idWlsdGluX2Nv
bnN0YW50X3AoTGVuKSA/IF9fY29uc3RhbnRfbWVtY3B5KChwQnVmICsgT2Zmc2V0KSwoS2V5QXJy
W0luZGV4XSksKExlbikpIDogX19tZW1jcHkoKHBCdWYgKyBPZmZzZXQpLChLZXlBcnJbSW5kZXhd
KSwoTGVuKSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gTGVu
OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSW5kZXggPCBLZXlObyAtIDEp
IHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKHBCdWYgKyBPZmZz
ZXQpID0gJyAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0
ICsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IE9mZnNldDsKICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDEwMTA0OgoK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgc2l6ZW9mKHUzMikpIHsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSBzaXplb2YodTMyKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDIpOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgICAgICAgICBWYWwzMiA9ICh1MzIpS2V5Tm87CiAgICAgICAg
ICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29uc3RhbnRfbWVt
Y3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpIDogX19tZW1jcHkoKChj
aGFyKikocEJ1ZikpLCgoY2hhciopJihWYWwzMikpLCg0KSkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAqcExlbiA9IHNpemVvZih1MzIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
CiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxMDU6CgogICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKExlbiA9IDAsIEluZGV4ID0gRmlyc3RJbmRleDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbmRleCA8IExhc3RJbmRleDsgSW5kZXggKyspIHsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTGVuICs9IHN0cmxlbigoY2hhciopKEtleUFycltJbmRleF0pKSAr
IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCpwTGVuIDwgTGVuKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0g
TGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMik7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KCgoKCgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKE9mZnNl
dCA9IDAsIEluZGV4ID0gRmlyc3RJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbmRleCA8IExhc3RJbmRleDsgSW5kZXggKyspIHsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTGVuID0gc3RybGVuKChjaGFyKikoS2V5QXJyW0luZGV4XSkpOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqKHBCdWYgKyBPZmZzZXQpID0gKGNoYXIpTGVuOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChMZW4pID8g
X19jb25zdGFudF9tZW1jcHkoKHBCdWYgKyBPZmZzZXQgKyAxKSwoS2V5QXJyW0luZGV4XSksKExl
bikpIDogX19tZW1jcHkoKHBCdWYgKyBPZmZzZXQgKyAxKSwoS2V5QXJyW0luZGV4XSksKExlbikp
KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICs9IExlbiArIDE7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSBP
ZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNh
c2UgMHhGRjAxMDEwNjoKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoT2Zmc2V0ID0gMCwg
SW5kZXggPSBGaXJzdEluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4
IDwgTGFzdEluZGV4OyBJbmRleCArKykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWZMZW4gPSAyNTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFZwZFJl
YWQocEFDLCBJb0MsIEtleUFycltJbmRleF0sIEJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChpbnQgKikmQnVmTGVuKSA+IDAgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJ1ZkxlbiA+PSAxMjgpIHsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywgKDFMPDwzKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDQwMCArIDIxKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZwZDogVlBEIGRhdGEg
c3RyaW5nIHRvbyBsb25nIik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuICgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICs9IEJ1ZkxlbiArIDE7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgT2Zmc2V0
KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gT2Zmc2V0OwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMik7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KCgoKCgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKE9mZnNldCA9IDAsIElu
ZGV4ID0gRmlyc3RJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCA8
IExhc3RJbmRleDsgSW5kZXggKyspIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QnVmTGVuID0gMjU2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWcGRSZWFk
KHBBQywgSW9DLCBLZXlBcnJbSW5kZXhdLCBCdWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoaW50ICopJkJ1ZkxlbikgPiAwIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCdWZMZW4gPj0gMTI4KSB7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2tFcnJvckxvZyhwQUMsICgxTDw8MyksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg0MDAgKyAyMiksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWcGQ6IFZQRCBkYXRhIHN0
cmluZyB0b28gbG9uZyBzaG91bGQgYmUgZXJyb3JlZCBiZWZvcmUiKTsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihwQnVmICsgT2Zmc2V0
KSA9IChjaGFyKUJ1ZkxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19idWls
dGluX2NvbnN0YW50X3AoQnVmTGVuKSA/IF9fY29uc3RhbnRfbWVtY3B5KChwQnVmICsgT2Zmc2V0
ICsgMSksKEJ1ZiksKEJ1ZkxlbikpIDogX19tZW1jcHkoKHBCdWYgKyBPZmZzZXQgKyAxKSwoQnVm
KSwoQnVmTGVuKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCArPSBC
dWZMZW4gKyAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICpwTGVuID0gT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAg
ICAgICAgICAgICBjYXNlIDB4RkYwMTAxMDc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgq
cExlbiA8IExhc3RJbmRleCAtIEZpcnN0SW5kZXgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnBMZW4gPSBMYXN0SW5kZXggLSBGaXJzdEluZGV4OwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAoMik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoT2Zmc2V0ID0gMCwgSW5kZXggPSBGaXJzdEluZGV4
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IDwgTGFzdEluZGV4OyBJbmRl
eCArKykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVnBkTWF5V3JpdGUo
S2V5QXJyW0luZGV4XSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqKHBCdWYgKyBPZmZzZXQpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqKHBCdWYgKyBPZmZzZXQpID0gMjsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Zm
c2V0ICsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICpwTGVuID0gT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgICAgICBjYXNlIDB4RkYwMTAxMDg6CiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCA9
IExhc3RJbmRleCAtIEZpcnN0SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqcExl
biA8IE9mZnNldCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IE9m
ZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDIpOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29u
c3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoT2Zmc2V0KSkgPyBfX2NvbnN0YW50
X2NfYW5kX2NvdW50X21lbXNldCgoKHBCdWYpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh
cikoMCkpKSwoKE9mZnNldCkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKChwQnVmKSksKCgweDAx
MDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChPZmZzZXQpKSkpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wKChPZmZzZXQpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgocEJ1ZikpKSwoKCgwKSkp
LCgoKE9mZnNldCkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgocEJ1ZikpLCgoMCkpLCgoT2Zmc2V0
KSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gT2Zmc2V0OwogICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywgKDFMPDwzKSwgKDQwMCArIDIzKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiVnBkOiBVbmtub3duIE9JRCBpbiBnZXQgYWN0aW9u
Iik7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAoMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVs
c2UgewoKICAgICAgICAgICAgICAgIGlmIChJZCAhPSAweEZGMDEwMTA4KSB7CgogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoSWQgPT0gMHhGRjAxMDEwMiB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIElkID09IDB4RkYwMTAxMDMgfHwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJZCA9PSAweEZGMDEwMTA0IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSWQgPT0gMHhGRjAxMDEwNSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElk
ID09IDB4RkYwMTAxMDYgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZCA9PSAw
eEZGMDEwMTA3KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDQpOwogICAgICAgICAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywgKDFM
PDwzKSwgKDQwMCArIDI0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVnBkOiBV
bmtub3duIE9JRCBpbiBwcmVzZXQvc2V0IGFjdGlvbiIpOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAg
ICAgICAgICAgfQoKCgoKCiAgICAgICAgICAgICAgICBpZiAoKnBMZW4gPCAxKSB7CgogICAgICAg
ICAgICAgICAgICAgICAgICAqcExlbiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAoMik7CiAgICAgICAgICAgICAgICB9CgoKCgoKICAgICAgICAgICAgICAgIHN3aXRjaCAoKnBC
dWYpIHsKCiAgICAgICAgICAgICAgICBjYXNlIDA6CgogICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDE6CgoKCgogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoKnBMZW4gPCA0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVu
ID0gNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDIpOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEtleVN0clswXSA9IHBC
dWZbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIEtleVN0clsxXSA9IHBCdWZbMl07CiAgICAg
ICAgICAgICAgICAgICAgICAgIEtleVN0clsyXSA9IDA7CgoKCgoKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFWcGRNYXlXcml0ZShLZXlTdHIpKSB7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKDMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAg
ICBPZmZzZXQgPSAoaW50KXBCdWZbM10gJiAweEZGOwoKICAgICAgICAgICAgICAgICAgICAgICAg
KF9fYnVpbHRpbl9jb25zdGFudF9wKE9mZnNldCkgPyBfX2NvbnN0YW50X21lbWNweSgoQnVmKSwo
cEJ1ZiArIDQpLChPZmZzZXQpKSA6IF9fbWVtY3B5KChCdWYpLChwQnVmICsgNCksKE9mZnNldCkp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgQnVmW09mZnNldF0gPSAwOwoKCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChBY3Rpb24gPT0gMSkgewoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gKDApOwogICAgICAgICAgICAgICAgICAgICAgICB9CgoKICAgICAgICAg
ICAgICAgICAgICAgICAgUmV0ID0gVnBkV3JpdGUocEFDLCBJb0MsIEtleVN0ciwgQnVmKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFJldCA9PSA1ICkgewoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICgzKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmIChSZXQgIT0gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTa0Vycm9yTG9nKHBBQywgKDFMPDwzKSwgKDQwMCArIDI1KSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJWcGQ6IENhbm5vdCB3cml0ZSBWUEQgYWZ0ZXIgbW9kaWZ5
IGVudHJ5Iik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAgICAgICAg
ICAgICAgICB9CgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgUmV0ID0gVnBkVXBkYXRlKHBB
QywgSW9DKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJldCAhPSAwKSB7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNrRXJyb3JMb2cocEFDLCAoMUw8PDMpLCAoNDAwICsg
MjYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZwZDogQ2Fubm90
IHVwZGF0ZSBWUEQiKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSAw
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAg
ICAgICAgY2FzZSAyOgoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgMykgewoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDM7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBMZW4gPiAzKSB7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gKDMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgIEtleVN0clswXSA9IHBCdWZbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIEtleVN0
clsxXSA9IHBCdWZbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIEtleVN0clsyXSA9IDA7CgoK
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgS2V5Tm87IElu
ZGV4ICsrKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJjbXAoKGNo
YXIqKShLZXlTdHIpLChjaGFyKikoS2V5QXJyW0luZGV4XSkpID09IDApIHsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCgoKCiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChJbmRleCA9PSBLZXlObykgewoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICgzKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEFjdGlvbiA9PSAxKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgICAg
ICBSZXQgPSBWcGREZWxldGUocEFDLCBJb0MsIEtleVN0cik7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChSZXQgIT0gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0Vy
cm9yTG9nKHBBQywgKDFMPDwzKSwgKDQwMCArIDI3KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJWcGQ6IENhbm5vdCBkZWxldGUgVlBEIGVudHJ5Iik7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgoKCgoKICAg
ICAgICAgICAgICAgICAgICAgICAgUmV0ID0gVnBkVXBkYXRlKHBBQywgSW9DKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKFJldCAhPSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNrRXJyb3JMb2cocEFDLCAoMUw8PDMpLCAoNDAwICsgMjgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZwZDogQ2Fubm90IHVwZGF0ZSBWUEQgYWZ0ZXIg
ZGVsZXRlIGVudHJ5Iik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0g
MDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICgzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9
CgogICAgICAgIHJldHVybiAoMCk7Cn0KIyAzOTE1ICJza2dlcG5taS5jIgpzdGF0aWMgaW50IEdl
bmVyYWwoClNLX0FDICpwQUMsCmNoYXIqIElvQywKaW50IEFjdGlvbiwKdTMyIElkLApjaGFyICpw
QnVmLAp1bnNpZ25lZCBpbnQgKnBMZW4sCnUzMiBJbnN0YW5jZSwKdW5zaWduZWQgaW50IFRhYmxl
SW5kZXgsCnUzMiBOZXRJbmRleCkKewogICAgICAgIGludCBSZXQ7CiAgICAgICAgdW5zaWduZWQg
aW50IEluZGV4OwogICAgICAgIHVuc2lnbmVkIGludCBMZW47CiAgICAgICAgdW5zaWduZWQgaW50
IE9mZnNldDsKICAgICAgICB1bnNpZ25lZCBpbnQgVmFsOwogICAgICAgIHU4IFZhbDg7CiAgICAg
ICAgdTE2IFZhbDE2OwogICAgICAgIHUzMiBWYWwzMjsKICAgICAgICB1NjQgVmFsNjQ7CiAgICAg
ICAgdTY0IFZhbDY0UnhId0VycnMgPSAwOwogICAgICAgIHU2NCBWYWw2NFR4SHdFcnJzID0gMDsK
ICAgICAgICB1OCBJczY0Qml0UmVxID0gMDsKICAgICAgICBjaGFyIEJ1ZlsyNTZdOwogICAgICAg
IGludCBNYWNUeXBlOwoKCgoKICAgICAgICBpZiAoSW5zdGFuY2UgIT0gKHUzMikoLTEpICYmIElu
c3RhbmNlICE9IDEpIHsKCiAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAg
ICByZXR1cm4gKDYpOwogICAgICAgIH0KCgoKCiAgICAgICAgaWYgKEFjdGlvbiAhPSAwKSB7Cgog
ICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICg0KTsKICAg
ICAgICB9CgogICAgICAgIE1hY1R5cGUgPSBwQUMtPkdJbmkuR0lNYWNUeXBlOwoKCgoKICAgICAg
ICBzd2l0Y2ggKElkKSB7CgogICAgICAgIGNhc2UgMHgwMDAyMDEwMzoKICAgICAgICBjYXNlIDB4
MDAwMjAxMDQ6CiAgICAgICAgY2FzZSAweDAwMDIwMTA1OgoKICAgICAgICAgICAgICAgIGlmICgq
cExlbiA8IHNpemVvZih1MzIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gc2l6
ZW9mKHUzMik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMik7CiAgICAgICAgICAg
ICAgICB9CiMgMzk5MSAic2tnZXBubWkuYyIKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlIDB4RkYwMTAxMTA6CiAgICAgICAgY2FzZSAweEZGMDEwMTExOgogICAgICAgIGNhc2Ug
MHhGRjAxMDExODoKICAgICAgICBjYXNlIDB4RkYwMTAxNTA6CiAgICAgICAgY2FzZSAweDAwMDIw
MjBFOgogICAgICAgIGNhc2UgMHhGRjAxMDEzMToKICAgICAgICBjYXNlIDB4RkYwMTAxMDA6CiAg
ICAgICAgICAgICAgICBpZiAoKnBMZW4gPCBzaXplb2YodTMyKSkgewoKICAgICAgICAgICAgICAg
ICAgICAgICAgKnBMZW4gPSBzaXplb2YodTMyKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICgyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlIDB4RkYwMTAxMTY6CiAgICAgICAgICAgICAgICBpZiAoKnBMZW4gPCBzaXplb2YodTE2
KSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSBzaXplb2YodTE2KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4RkYwMTAxMTk6CiAgICAgICAgY2FzZSAweEZG
MDEwMTFBOgogICAgICAgIGNhc2UgMHhGRjAxMDExQjoKICAgICAgICBjYXNlIDB4RkYwMjAxMDA6
CiAgICAgICAgY2FzZSAweEZGMDIwMTEwOgogICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgc2l6
ZW9mKHU4KSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSBzaXplb2YodTgpOwog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDIpOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhGRjAyMDE3MDoKICAgICAgICBjYXNl
IDB4RkYwMjAxNzE6CiAgICAgICAgY2FzZSAweEZGMDIwMTcyOgogICAgICAgIGNhc2UgMHhGRjAy
MDE3MzoKICAgICAgICBjYXNlIDB4RkYwMjAxNzQ6CiAgICAgICAgY2FzZSAweEZGMDIwMTc1Ogog
ICAgICAgIGNhc2UgMHhGRjAyMDE3NjoKICAgICAgICBjYXNlIDB4RkYwMjAxNzc6CiAgICAgICAg
Y2FzZSAweEZGMDIwMTc4OgogICAgICAgIGNhc2UgMHhGRjAyMDE3OToKICAgICAgICBjYXNlIDB4
RkYwMjAxN0E6CiAgICAgICAgY2FzZSAweEZGMDIwMTdCOgogICAgICAgIGNhc2UgMHhGRjAyMDE3
QzoKICAgICAgICBjYXNlIDB4RkYwMjAxN0Q6CiAgICAgICAgY2FzZSAweEZGMDIwMTdFOgogICAg
ICAgIGNhc2UgMHhGRjAyMDE3RjoKICAgICAgICAgICAgICAgIGlmICgqcExlbiA8IHNpemVvZih1
NjQpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IHNpemVvZih1NjQpOwogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDIpOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CgogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgfQoKCiAgICAgICAgaWYgKElkID09IDB4RkYwMjAxN0EgfHwKICAgICAgICAgICAg
ICAgIElkID09IDB4RkYwMjAxN0IgfHwKICAgICAgICAgICAgICAgIElkID09IDB4RkYwMjAxN0Mg
fHwKICAgICAgICAgICAgICAgIElkID09IDB4RkYwMjAxN0QgfHwKICAgICAgICAgICAgICAgIElk
ID09IDB4MDAwMjAxMDMgfHwKICAgICAgICAgICAgICAgIElkID09IDB4MDAwMjAxMDQpIHsKCgoK
CgogICAgICAgICAgICAgICAgUmV0ID0gTWFjVXBkYXRlKHBBQywgSW9DLCAwLCBwQUMtPkdJbmku
R0lNYWNzRm91bmQgLSAxKTsKICAgICAgICAgICAgICAgIGlmIChSZXQgIT0gMCkgewoKICAgICAg
ICAgICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKFJldCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwQUMtPlBubWkuTWFj
VXBkYXRlZEZsYWcgKys7CgoKCgoKCiAgICAgICAgICAgICAgICBzd2l0Y2ggKElkKSB7CgogICAg
ICAgICAgICAgICAgY2FzZSAweEZGMDIwMTdBOgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDIw
MTdDOgogICAgICAgICAgICAgICAgY2FzZSAweDAwMDIwMTA0OgogICAgICAgICAgICAgICAgICAg
ICAgICBWYWw2NFJ4SHdFcnJzID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRT
dGF0VmFsKHBBQywgSW9DLCAwLCBTS19QTk1JX0hSWF9NSVNTRUQsIE5ldEluZGV4KSArCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0U3RhdFZhbChwQUMsIElvQywgMCwgU0tfUE5N
SV9IUlhfRlJBTUlORywgTmV0SW5kZXgpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHZXRTdGF0VmFsKHBBQywgSW9DLCAwLCBTS19QTk1JX0hSWF9PVkVSRkxPVywgTmV0SW5kZXgp
KwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFN0YXRWYWwocEFDLCBJb0MsIDAs
IFNLX1BOTUlfSFJYX0pBQkJFUiwgTmV0SW5kZXgpICsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZXRTdGF0VmFsKHBBQywgSW9DLCAwLCBTS19QTk1JX0hSWF9DQVJSSUVSLCBOZXRJ
bmRleCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFN0YXRWYWwocEFDLCBJ
b0MsIDAsIFNLX1BOTUlfSFJYX0lSTEVOR1RILCBOZXRJbmRleCkrCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2V0U3RhdFZhbChwQUMsIElvQywgMCwgU0tfUE5NSV9IUlhfU1lNQk9M
LCBOZXRJbmRleCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFN0YXRWYWwo
cEFDLCBJb0MsIDAsIFNLX1BOTUlfSFJYX1NIT1JUUywgTmV0SW5kZXgpICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZXRTdGF0VmFsKHBBQywgSW9DLCAwLCBTS19QTk1JX0hSWF9S
VU5ULCBOZXRJbmRleCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFN0YXRW
YWwocEFDLCBJb0MsIDAsIFNLX1BOTUlfSFJYX1RPT19MT05HLCBOZXRJbmRleCkgKwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdldFN0YXRWYWwocEFDLCBJb0MsIDAsIFNLX1BOTUlf
SFJYX0ZDUywgTmV0SW5kZXgpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRT
dGF0VmFsKHBBQywgSW9DLCAwLCBTS19QTk1JX0hSWF9DRVhULCBOZXRJbmRleCk7CiAgICAgICAg
ICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAxN0I6CiAgICAgICAg
ICAgICAgICBjYXNlIDB4RkYwMjAxN0Q6CiAgICAgICAgICAgICAgICBjYXNlIDB4MDAwMjAxMDM6
CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbDY0VHhId0VycnMgPQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdldFN0YXRWYWwocEFDLCBJb0MsIDAsIFNLX1BOTUlfSFRYX0VYQ0VT
U19DT0wsIE5ldEluZGV4KSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0U3Rh
dFZhbChwQUMsIElvQywgMCwgU0tfUE5NSV9IVFhfTEFURV9DT0wsIE5ldEluZGV4KSsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRTdGF0VmFsKHBBQywgSW9DLCAwLCBTS19QTk1J
X0hUWF9VTkRFUlJVTiwgTmV0SW5kZXgpKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdldFN0YXRWYWwocEFDLCBJb0MsIDAsIFNLX1BOTUlfSFRYX0NBUlJJRVIsIE5ldEluZGV4KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
fQoKCgoKICAgICAgICBzd2l0Y2ggKElkKSB7CgogICAgICAgIGNhc2UgMHhGRjAxMDEwMToKICAg
ICAgICAgICAgICAgIExlbiA9IChzaXplb2YoSWRUYWJsZSkvc2l6ZW9mKElkVGFibGVbMF0pKSAq
IHNpemVvZih1MzIpOwogICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgTGVuKSB7CgogICAgICAg
ICAgICAgICAgICAgICAgICAqcExlbiA9IExlbjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICgyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAoT2Zmc2V0ID0g
MCwgSW5kZXggPSAwOyBPZmZzZXQgPCBMZW47CiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNl
dCArPSBzaXplb2YodTMyKSwgSW5kZXggKyspIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIFZh
bDMyID0gKHUzMilJZFRhYmxlW0luZGV4XS5JZDsKICAgICAgICAgICAgICAgICAgICAgICAgKF9f
YnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZiAr
IE9mZnNldCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVm
ICsgT2Zmc2V0KSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAqcExlbiA9IExlbjsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlIDB4RkYwMTAxMTA6CiAgICAgICAgICAgICAgICBWYWwzMiA9ICh1MzIpcEFDLT5HSW5p
LkdJTWFjc0ZvdW5kOwogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8g
X19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWwzMikpLCg0KSkg
OiBfX21lbWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7CiAgICAg
ICAgICAgICAgICAqcExlbiA9IHNpemVvZih1MzIpOwogICAgICAgICAgICAgICAgYnJlYWs7Cgog
ICAgICAgIGNhc2UgMHhGRjAxMDExMToKICAgICAgICAgICAgICAgIFZhbDMyID0gKHUzMilwQUMt
PlBubWkuRGV2aWNlVHlwZTsKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg0
KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIqKSYoVmFsMzIpKSwo
NCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWwzMikpLCg0KSkpOwog
ICAgICAgICAgICAgICAgKnBMZW4gPSBzaXplb2YodTMyKTsKICAgICAgICAgICAgICAgIGJyZWFr
OwoKICAgICAgICBjYXNlIDB4RkYwMTAxMTI6CiAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1p
LnBEcml2ZXJEZXNjcmlwdGlvbiA9PSAoKHZvaWQgKikwKSkgewoKICAgICAgICAgICAgICAgICAg
ICAgICAgU2tFcnJvckxvZyhwQUMsICgxTDw8MyksICg0MDAgKyA3KSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiR2VuZXJhbDogRHJpdmVyIGRlc2NyaXB0aW9uIG5vdCBpbml0aWFs
aXplZCIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
IExlbiA9IHN0cmxlbigoY2hhciopKHBBQy0+UG5taS5wRHJpdmVyRGVzY3JpcHRpb24pKSArIDE7
CiAgICAgICAgICAgICAgICBpZiAoTGVuID4gODApIHsKCiAgICAgICAgICAgICAgICAgICAgICAg
IFNrRXJyb3JMb2cocEFDLCAoMUw8PDMpLCAoNDAwICsgMjkpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJHZW5lcmFsOiBEcml2ZXIgZGVzY3JpcHRpb24gc3RyaW5nIHRvbyBsb25n
Iik7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAoMSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYg
KCpwTGVuIDwgTGVuKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IExlbjsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICpwQnVmID0gKGNoYXIpKExlbiAtIDEpOwogICAgICAgICAgICAgICAgKF9fYnVp
bHRpbl9jb25zdGFudF9wKExlbiAtIDEpID8gX19jb25zdGFudF9tZW1jcHkoKHBCdWYgKyAxKSwo
cEFDLT5Qbm1pLnBEcml2ZXJEZXNjcmlwdGlvbiksKExlbiAtIDEpKSA6IF9fbWVtY3B5KChwQnVm
ICsgMSksKHBBQy0+UG5taS5wRHJpdmVyRGVzY3JpcHRpb24pLChMZW4gLSAxKSkpOwogICAgICAg
ICAgICAgICAgKnBMZW4gPSBMZW47CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2Fz
ZSAweEZGMDEwMTEzOgogICAgICAgICAgICAgICAgaWYgKHBBQy0+UG5taS5wRHJpdmVyVmVyc2lv
biA9PSAoKHZvaWQgKikwKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgU2tFcnJvckxvZyhw
QUMsICgxTDw8MyksICg0MDAgKyAzMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkdlbmVyYWw6IERyaXZlciB2ZXJzaW9uIG5vdCBpbml0aWFsaXplZCIpOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDEp
OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIExlbiA9IHN0cmxlbigoY2hhciop
KHBBQy0+UG5taS5wRHJpdmVyVmVyc2lvbikpICsgMTsKICAgICAgICAgICAgICAgIGlmIChMZW4g
PiA4MCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgU2tFcnJvckxvZyhwQUMsICgxTDw8Myks
ICg0MDAgKyAzMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdlbmVyYWw6IERy
aXZlciB2ZXJzaW9uIHN0cmluZyB0b28gbG9uZyIpOwoKICAgICAgICAgICAgICAgICAgICAgICAg
KnBMZW4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgqcExlbiA8IExlbikgewoKICAgICAgICAgICAg
ICAgICAgICAgICAgKnBMZW4gPSBMZW47CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAo
Mik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAqcEJ1ZiA9IChjaGFyKShMZW4g
LSAxKTsKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcChMZW4gLSAxKSA/IF9f
Y29uc3RhbnRfbWVtY3B5KChwQnVmICsgMSksKHBBQy0+UG5taS5wRHJpdmVyVmVyc2lvbiksKExl
biAtIDEpKSA6IF9fbWVtY3B5KChwQnVmICsgMSksKHBBQy0+UG5taS5wRHJpdmVyVmVyc2lvbiks
KExlbiAtIDEpKSk7CiAgICAgICAgICAgICAgICAqcExlbiA9IExlbjsKICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICBjYXNlIDB4RkYwMTAxMTQ6CgoKCgoKCiAgICAgICAgICAgICAgICBM
ZW4gPSAyNTY7CiAgICAgICAgICAgICAgICBpZiAoVnBkUmVhZChwQUMsIElvQywgIk5hbWUiLCBC
dWYsIChpbnQgKikmTGVuKSA+IDApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIFNrRXJyb3JM
b2cocEFDLCAoMUw8PDMpLCAoNDAwICsgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJHZW5lcmFsOiBDYW5ub3QgcmVhZCBWUEQgTmFtZSBmb3IgSFcgZGVzY3IiKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICgxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIExlbiArKzsKICAgICAg
ICAgICAgICAgIGlmIChMZW4gPiA4MCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgU2tFcnJv
ckxvZyhwQUMsICgxTDw8MyksICg0MDAgKyAzMyksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkdlbmVyYWw6IEhXIGRlc2NyaXB0aW9uIHN0cmluZyB0b28gbG9uZyIpOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKDEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgTGVu
KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IExlbjsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICpw
QnVmID0gKGNoYXIpKExlbiAtIDEpOwogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFu
dF9wKExlbiAtIDEpID8gX19jb25zdGFudF9tZW1jcHkoKHBCdWYgKyAxKSwoQnVmKSwoTGVuIC0g
MSkpIDogX19tZW1jcHkoKHBCdWYgKyAxKSwoQnVmKSwoTGVuIC0gMSkpKTsKICAgICAgICAgICAg
ICAgICpwTGVuID0gTGVuOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhG
RjAxMDExNToKCiAgICAgICAgICAgICAgICBpZiAoKnBMZW4gPCA1KSB7CgogICAgICAgICAgICAg
ICAgICAgICAgICAqcExlbiA9IDU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMik7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBWYWw4ID0gKHU4KXBBQy0+R0luaS5H
SVBjaUh3UmV2OwogICAgICAgICAgICAgICAgcEJ1ZlswXSA9IDQ7CiAgICAgICAgICAgICAgICBw
QnVmWzFdID0gJ3YnOwogICAgICAgICAgICAgICAgcEJ1ZlsyXSA9IChjaGFyKSgweDMwIHwgKChW
YWw4ID4+IDQpICYgMHgwRikpOwogICAgICAgICAgICAgICAgcEJ1ZlszXSA9ICcuJzsKICAgICAg
ICAgICAgICAgIHBCdWZbNF0gPSAoY2hhcikoMHgzMCB8IChWYWw4ICYgMHgwRikpOwogICAgICAg
ICAgICAgICAgKnBMZW4gPSA1OwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2Ug
MHhGRjAxMDExNjoKICAgICAgICAgICAgICAgIFZhbDE2ID0gcEFDLT5Qbm1pLkNoaXBzZXQ7CiAg
ICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMikgPyBfX2NvbnN0YW50X21lbWNw
eSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDE2KSksKDIpKSA6IF9fbWVtY3B5KCgoY2hh
ciopKHBCdWYpKSwoKGNoYXIqKSYoVmFsMTYpKSwoMikpKTsKICAgICAgICAgICAgICAgICpwTGVu
ID0gc2l6ZW9mKHUxNik7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweEZG
MDEwMTE5OgogICAgICAgICAgICAgICAgKnBCdWYgPSAoY2hhcikxOwogICAgICAgICAgICAgICAg
KnBMZW4gPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2Fz
ZSAweEZGMDEwMTFBOgogICAgICAgICAgICAgICAgKnBCdWYgPSBwQUMtPlBubWkuUGNpQnVzU3Bl
ZWQ7CiAgICAgICAgICAgICAgICAqcExlbiA9IHNpemVvZihjaGFyKTsKICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICBjYXNlIDB4RkYwMTAxMUI6CiAgICAgICAgICAgICAgICAqcEJ1ZiA9
IHBBQy0+UG5taS5QY2lCdXNXaWR0aDsKICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKGNo
YXIpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhGRjAxMDExODoKICAg
ICAgICAgICAgICAgIFZhbDMyID0gcEFDLT5Qbm1pLlRlc3RSZXN1bHQ7CiAgICAgICAgICAgICAg
ICAoX19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShw
QnVmKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBCdWYpKSwo
KGNoYXIqKSYoVmFsMzIpKSwoNCkpKTsKICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHUz
Mik7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweEZGMDIwMTAwOgogICAg
ICAgICAgICAgICAgKnBCdWYgPSAoY2hhcilwQUMtPkkyYy5NYXhTZW5zOwogICAgICAgICAgICAg
ICAgKnBMZW4gPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
Y2FzZSAweEZGMDIwMTEwOgogICAgICAgICAgICAgICAgKnBCdWYgPSAzOwogICAgICAgICAgICAg
ICAgKnBMZW4gPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
Y2FzZSAweEZGMDEwMTMxOgogICAgICAgICAgICAgICAgR2V0VHJhcFF1ZXVlTGVuKHBBQywgJkxl
biwgJlZhbCk7CiAgICAgICAgICAgICAgICBWYWwzMiA9ICh1MzIpVmFsOwogICAgICAgICAgICAg
ICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKiko
cEJ1ZikpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmKSks
KChjaGFyKikmKFZhbDMyKSksKDQpKSk7CiAgICAgICAgICAgICAgICAqcExlbiA9IHNpemVvZih1
MzIpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhGRjAxMDEzMDoKICAg
ICAgICAgICAgICAgIEdldFRyYXBRdWV1ZUxlbihwQUMsICZMZW4sICZWYWwpOwogICAgICAgICAg
ICAgICAgaWYgKCpwTGVuIDwgTGVuKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9
IExlbjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIENvcHlUcmFwUXVldWUocEFDLCBwQnVmKTsKICAgICAgICAgICAg
ICAgICpwTGVuID0gTGVuOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhG
RjAxMDE1MDoKCiAgICAgICAgICAgICAgICBWYWwzMiA9IDA7CiAgICAgICAgICAgICAgICAoX19i
dWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwQnVmKSks
KChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIq
KSYoVmFsMzIpKSwoNCkpKTsKICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHUzMik7CiAg
ICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweEZGMDIwMTcwOgoKICAgICAgICAg
ICAgICAgIGlmIChNYWNUeXBlID09IDApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChw
QUMtPlBubWkuRHVhbE5ldEFjdGl2ZUZsYWcgPT0gKCEwKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbDY0ID0gcEFDLT5Qbm1pLkJ1ZlBvcnRbTmV0SW5kZXhdLlR4U3dRdWV1
ZUxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBwQUMtPlBubWku
QnVmUG9ydFswXS5UeFN3UXVldWVMZW4gKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcEFDLT5Qbm1pLkJ1ZlBvcnRbMV0uVHhTd1F1ZXVlTGVuOwogICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChwQUMtPlBubWkuRHVhbE5ldEFjdGl2ZUZsYWcgPT0g
KCEwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbDY0ID0gcEFDLT5Qbm1p
LlBvcnRbTmV0SW5kZXhdLlR4U3dRdWV1ZUxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmFsNjQgPSBwQUMtPlBubWkuUG9ydFswXS5UeFN3UXVldWVMZW4gKwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLlBvcnRbMV0uVHhTd1F1ZXVl
TGVuOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoOCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNo
YXIqKShwQnVmKSksKChjaGFyKikmKFZhbDY0KSksKDgpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBC
dWYpKSwoKGNoYXIqKSYoVmFsNjQpKSwoOCkpKTsKICAgICAgICAgICAgICAgICpwTGVuID0gc2l6
ZW9mKHU2NCk7CiAgICAgICAgICAgICAgICBicmVhazsKCgogICAgICAgIGNhc2UgMHhGRjAyMDE3
MToKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAwKSB7CgogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5CdWZQb3J0W05ldElu
ZGV4XS5UeFN3UXVldWVNYXg7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbDY0
ID0gcEFDLT5Qbm1pLkJ1ZlBvcnRbMF0uVHhTd1F1ZXVlTWF4ICsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5CdWZQb3J0WzFdLlR4U3dRdWV1ZU1heDsK
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRB
Y3RpdmVGbGFnID09ICghMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2
NCA9IHBBQy0+UG5taS5Qb3J0W05ldEluZGV4XS5UeFN3UXVldWVNYXg7CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbDY0ID0gcEFDLT5Qbm1pLlBvcnRbMF0uVHhTd1F1ZXVlTWF4
ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5Qb3J0
WzFdLlR4U3dRdWV1ZU1heDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFu
dF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNw
eSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAg
ICAqcExlbiA9IHNpemVvZih1NjQpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgMHhGRjAyMDE3MjoKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAwKSB7CgogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID09ICgh
MCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5C
dWZQb3J0W05ldEluZGV4XS5UeFJldHJ5Q3RzOwogICAgICAgICAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWw2NCA9IHBBQy0+UG5taS5CdWZQb3J0WzBdLlR4UmV0cnlDdHMgKwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLkJ1ZlBvcnRbMV0uVHhSZXRy
eUN0czsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1
YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWYWw2NCA9IHBBQy0+UG5taS5Qb3J0W05ldEluZGV4XS5UeFJldHJ5Q3RzOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5Qb3J0WzBdLlR4UmV0cnlD
dHMgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLlBv
cnRbMV0uVHhSZXRyeUN0czsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFu
dF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNw
eSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAg
ICAqcExlbiA9IHNpemVvZih1NjQpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgMHhGRjAyMDE3MzoKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAwKSB7CgogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID09ICgh
MCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5C
dWZQb3J0W05ldEluZGV4XS5SeEludHJDdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbDY0ID0gcEFDLT5Qbm1pLkJ1ZlBvcnRbMF0uUnhJbnRyQ3RzICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5CdWZQb3J0WzFdLlJ4SW50ckN0
czsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxO
ZXRBY3RpdmVGbGFnID09ICghMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWw2NCA9IHBBQy0+UG5taS5Qb3J0W05ldEluZGV4XS5SeEludHJDdHM7CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhbDY0ID0gcEFDLT5Qbm1pLlBvcnRbMF0uUnhJbnRyQ3RzICsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5Qb3J0WzFd
LlJ4SW50ckN0czsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1j
cHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNweSgoKGNo
YXIqKShwQnVmKSksKChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAgICAqcExl
biA9IHNpemVvZih1NjQpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhG
RjAyMDE3NDoKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAwKSB7CgogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5CdWZQb3J0
W05ldEluZGV4XS5UeEludHJDdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bDY0ID0gcEFDLT5Qbm1pLkJ1ZlBvcnRbMF0uVHhJbnRyQ3RzICsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5CdWZQb3J0WzFdLlR4SW50ckN0czsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3Rp
dmVGbGFnID09ICghMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9
IHBBQy0+UG5taS5Qb3J0W05ldEluZGV4XS5UeEludHJDdHM7CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbDY0ID0gcEFDLT5Qbm1pLlBvcnRbMF0uVHhJbnRyQ3RzICsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5Qb3J0WzFdLlR4SW50
ckN0czsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChj
aGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNweSgoKGNoYXIqKShw
QnVmKSksKChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAgICAqcExlbiA9IHNp
emVvZih1NjQpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhGRjAyMDE3
NToKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAwKSB7CgogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5CdWZQb3J0W05ldElu
ZGV4XS5SeE5vQnVmQ3RzOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9
IHBBQy0+UG5taS5CdWZQb3J0WzBdLlJ4Tm9CdWZDdHMgKwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLkJ1ZlBvcnRbMV0uUnhOb0J1ZkN0czsKICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxz
ZSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVG
bGFnID09ICghMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBB
Qy0+UG5taS5Qb3J0W05ldEluZGV4XS5SeE5vQnVmQ3RzOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5Qb3J0WzBdLlJ4Tm9CdWZDdHMgKwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLlBvcnRbMV0uUnhOb0J1
ZkN0czsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChj
aGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNweSgoKGNoYXIqKShw
QnVmKSksKChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAgICAqcExlbiA9IHNp
emVvZih1NjQpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhGRjAyMDE3
NjoKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAwKSB7CgogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5CdWZQb3J0W05ldElu
ZGV4XS5UeE5vQnVmQ3RzOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9
IHBBQy0+UG5taS5CdWZQb3J0WzBdLlR4Tm9CdWZDdHMgKwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLkJ1ZlBvcnRbMV0uVHhOb0J1ZkN0czsKICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxz
ZSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVG
bGFnID09ICghMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBB
Qy0+UG5taS5Qb3J0W05ldEluZGV4XS5UeE5vQnVmQ3RzOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5Qb3J0WzBdLlR4Tm9CdWZDdHMgKwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLlBvcnRbMV0uVHhOb0J1
ZkN0czsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChj
aGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNweSgoKGNoYXIqKShw
QnVmKSksKChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAgICAqcExlbiA9IHNp
emVvZih1NjQpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhGRjAyMDE3
NzoKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAwKSB7CgogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5CdWZQb3J0W05ldElu
ZGV4XS5UeFVzZWREZXNjck5vOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2
NCA9IHBBQy0+UG5taS5CdWZQb3J0WzBdLlR4VXNlZERlc2NyTm8gKwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLkJ1ZlBvcnRbMV0uVHhVc2VkRGVzY3JO
bzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxO
ZXRBY3RpdmVGbGFnID09ICghMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
YWw2NCA9IHBBQy0+UG5taS5Qb3J0W05ldEluZGV4XS5UeFVzZWREZXNjck5vOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5Qb3J0WzBdLlR4VXNlZERl
c2NyTm8gKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1p
LlBvcnRbMV0uVHhVc2VkRGVzY3JObzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19j
b25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBf
X21lbWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAg
ICAgICAgICAqcExlbiA9IHNpemVvZih1NjQpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgIGNhc2UgMHhGRjAyMDE3ODoKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAwKSB7
CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFn
ID09ICghMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+
UG5taS5CdWZQb3J0W05ldEluZGV4XS5SeERlbGl2ZXJlZEN0czsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsNjQgPSBwQUMtPlBubWkuQnVmUG9ydFswXS5SeERlbGl2ZXJlZEN0
cyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuQnVm
UG9ydFsxXS5SeERlbGl2ZXJlZEN0czsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5Qb3J0W05ldEluZGV4XS5SeERl
bGl2ZXJlZEN0czsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBwQUMt
PlBubWkuUG9ydFswXS5SeERlbGl2ZXJlZEN0cyArCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwQUMtPlBubWkuUG9ydFsxXS5SeERlbGl2ZXJlZEN0czsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKF9fYnVp
bHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgo
Y2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikm
KFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAgICAqcExlbiA9IHNpemVvZih1NjQpOwogICAg
ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhGRjAyMDE3OToKCiAgICAgICAgICAg
ICAgICBpZiAoTWFjVHlwZSA9PSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFD
LT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5CdWZQb3J0W05ldEluZGV4XS5SeE9jdGV0c0Rl
bGl2ZXJlZEN0czsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBwQUMt
PlBubWkuQnVmUG9ydFswXS5SeE9jdGV0c0RlbGl2ZXJlZEN0cyArCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuQnVmUG9ydFsxXS5SeE9jdGV0c0RlbGl2
ZXJlZEN0czsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1p
LkR1YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWw2NCA9IHBBQy0+UG5taS5Qb3J0W05ldEluZGV4XS5SeE9jdGV0c0RlbGl2ZXJlZEN0
czsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBwQUMtPlBubWkuUG9y
dFswXS5SeE9jdGV0c0RlbGl2ZXJlZEN0cyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwQUMtPlBubWkuUG9ydFsxXS5SeE9jdGV0c0RlbGl2ZXJlZEN0czsKICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKF9f
YnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1Zikp
LCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFy
KikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAgICAqcExlbiA9IHNpemVvZih1NjQpOwog
ICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhGRjAyMDE3QToKICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg4KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hh
ciopKHBCdWYpKSwoKGNoYXIqKSYoVmFsNjRSeEh3RXJycykpLCg4KSkgOiBfX21lbWNweSgoKGNo
YXIqKShwQnVmKSksKChjaGFyKikmKFZhbDY0UnhId0VycnMpKSwoOCkpKTsKICAgICAgICAgICAg
ICAgICpwTGVuID0gc2l6ZW9mKHU2NCk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
Y2FzZSAweEZGMDIwMTdCOgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgp
ID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NFR4SHdF
cnJzKSksKDgpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIqKSYoVmFsNjRUeEh3
RXJycykpLCg4KSkpOwogICAgICAgICAgICAgICAgKnBMZW4gPSBzaXplb2YodTY0KTsKICAgICAg
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4RkYwMjAxN0M6CgogICAgICAgICAgICAg
ICAgaWYgKE1hY1R5cGUgPT0gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBBQy0+
UG5taS5EdWFsTmV0QWN0aXZlRmxhZyA9PSAoITApKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsNjQgPSBWYWw2NFJ4SHdFcnJzICsgcEFDLT5Qbm1pLkJ1ZlBvcnRbTmV0SW5k
ZXhdLlJ4Tm9CdWZDdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbDY0ID0g
VmFsNjRSeEh3RXJycyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
QUMtPlBubWkuQnVmUG9ydFswXS5SeE5vQnVmQ3RzICsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBBQy0+UG5taS5CdWZQb3J0WzFdLlJ4Tm9CdWZDdHM7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2Ug
ewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBBQy0+UG5taS5EdWFsTmV0QWN0aXZlRmxh
ZyA9PSAoITApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBWYWw2
NFJ4SHdFcnJzICsgcEFDLT5Qbm1pLlBvcnRbTmV0SW5kZXhdLlJ4Tm9CdWZDdHM7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZhbDY0ID0gVmFsNjRSeEh3RXJycyArCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuUG9ydFswXS5SeE5vQnVm
Q3RzICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5Q
b3J0WzFdLlJ4Tm9CdWZDdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg4KSA/IF9fY29uc3Rh
bnRfbWVtY3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIqKSYoVmFsNjQpKSwoOCkpIDogX19tZW1j
cHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkpOwogICAgICAgICAgICAg
ICAgKnBMZW4gPSBzaXplb2YodTY0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBj
YXNlIDB4RkYwMjAxN0Q6CgogICAgICAgICAgICAgICAgaWYgKE1hY1R5cGUgPT0gMCkgewoKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHBBQy0+UG5taS5EdWFsTmV0QWN0aXZlRmxhZyA9PSAo
ITApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBWYWw2NFR4SHdF
cnJzICsgcEFDLT5Qbm1pLkJ1ZlBvcnRbTmV0SW5kZXhdLlR4Tm9CdWZDdHM7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZhbDY0ID0gVmFsNjRUeEh3RXJycyArCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuQnVmUG9ydFswXS5UeE5vQnVm
Q3RzICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5C
dWZQb3J0WzFdLlR4Tm9CdWZDdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHBBQy0+UG5taS5EdWFsTmV0QWN0aXZlRmxhZyA9PSAoITApKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsNjQgPSBWYWw2NFR4SHdFcnJzICsgcEFDLT5Qbm1pLlBvcnRb
TmV0SW5kZXhdLlR4Tm9CdWZDdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZh
bDY0ID0gVmFsNjRUeEh3RXJycyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwQUMtPlBubWkuUG9ydFswXS5UeE5vQnVmQ3RzICsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5Qb3J0WzFdLlR4Tm9CdWZDdHM7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIChfX2J1
aWx0aW5fY29uc3RhbnRfcCg4KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYpKSwo
KGNoYXIqKSYoVmFsNjQpKSwoOCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciop
JihWYWw2NCkpLCg4KSkpOwogICAgICAgICAgICAgICAgKnBMZW4gPSBzaXplb2YodTY0KTsKICAg
ICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4RkYwMjAxN0U6CgogICAgICAgICAg
ICAgICAgaWYgKE1hY1R5cGUgPT0gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBB
Qy0+UG5taS5EdWFsTmV0QWN0aXZlRmxhZyA9PSAoITApKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsNjQgPSBwQUMtPlBubWkuQnVmUG9ydFtOZXRJbmRleF0uRXJyUmVjb3Zl
cnlDdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbDY0ID0gcEFDLT5Qbm1p
LkJ1ZlBvcnRbMF0uRXJyUmVjb3ZlcnlDdHMgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcEFDLT5Qbm1pLkJ1ZlBvcnRbMV0uRXJyUmVjb3ZlcnlDdHM7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2Ug
ewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBBQy0+UG5taS5EdWFsTmV0QWN0aXZlRmxh
ZyA9PSAoITApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBwQUMt
PlBubWkuUG9ydFtOZXRJbmRleF0uRXJyUmVjb3ZlcnlDdHM7CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZhbDY0ID0gcEFDLT5Qbm1pLlBvcnRbMF0uRXJyUmVjb3ZlcnlDdHMgKwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLlBvcnRbMV0u
RXJyUmVjb3ZlcnlDdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg4KSA/IF9fY29uc3RhbnRf
bWVtY3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIqKSYoVmFsNjQpKSwoOCkpIDogX19tZW1jcHko
KChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkpOwogICAgICAgICAgICAgICAg
KnBMZW4gPSBzaXplb2YodTY0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNl
IDB4RkYwMjAxN0Y6CiAgICAgICAgICAgICAgICBWYWw2NCA9IChTa09zR2V0VGltZShwQUMpKTsK
ICAgICAgICAgICAgICAgIFZhbDY0IC09IHBBQy0+UG5taS5TdGFydFVwVGltZTsKICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg4KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hh
ciopKHBCdWYpKSwoKGNoYXIqKSYoVmFsNjQpKSwoOCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1
ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkpOwogICAgICAgICAgICAgICAgKnBMZW4gPSBzaXpl
b2YodTY0KTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4RkYwMTAxMDA6
CiAgICAgICAgICAgICAgICBWYWwzMiA9IDB4MDAwMzAwMDE7CiAgICAgICAgICAgICAgICAoX19i
dWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwQnVmKSks
KChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIq
KSYoVmFsMzIpKSwoNCkpKTsKICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHUzMik7CiAg
ICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDAwMDIwMTA0OgoKICAgICAgICAg
ICAgICAgIGlmIChNYWNUeXBlID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQg
PSBWYWw2NFJ4SHdFcnJzICsgcEFDLT5Qbm1pLkJ1ZlBvcnRbTmV0SW5kZXhdLlJ4Tm9CdWZDdHM7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsNjQgPSBWYWw2NFJ4SHdFcnJzICsgcEFDLT5Qbm1pLlBvcnRbTmV0SW5kZXhd
LlJ4Tm9CdWZDdHM7CiAgICAgICAgICAgICAgICB9CgoKCgogICAgICAgICAgICAgICAgaWYgKCFJ
czY0Qml0UmVxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbDMyID0gKHUzMilWYWw2NDsK
ICAgICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25z
dGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21l
bWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHUzMik7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25z
dGFudF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihW
YWw2NCkpLCg4KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDY0KSks
KDgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHU2NCk7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDAwMDIw
MTAzOgoKICAgICAgICAgICAgICAgIGlmIChNYWNUeXBlID09IDApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsNjQgPSBWYWw2NFR4SHdFcnJzICsgcEFDLT5Qbm1pLkJ1ZlBvcnRbTmV0SW5k
ZXhdLlR4Tm9CdWZDdHM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBWYWw2NFR4SHdFcnJzICsgcEFDLT5Qbm1p
LlBvcnRbTmV0SW5kZXhdLlR4Tm9CdWZDdHM7CiAgICAgICAgICAgICAgICB9CgoKCgogICAgICAg
ICAgICAgICAgaWYgKCFJczY0Qml0UmVxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbDMy
ID0gKHUzMilWYWw2NDsKICAgICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFu
dF9wKDQpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWwz
MikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDMyKSksKDQp
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHUzMik7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
KF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1
ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmKSksKChj
aGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gc2l6
ZW9mKHU2NCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAg
ICAgY2FzZSAweDAwMDIwMTA1OgoKICAgICAgICAgICAgICAgIGlmIChNYWNUeXBlID09IDApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBwQUMtPlBubWkuQnVmUG9ydFtOZXRJbmRl
eF0uUnhOb0J1ZkN0czsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBBQy0+UG5taS5Qb3J0W05ldEluZGV4XS5S
eE5vQnVmQ3RzOwogICAgICAgICAgICAgICAgfQoKCgoKICAgICAgICAgICAgICAgIGlmICghSXM2
NEJpdFJlcSkgewogICAgICAgICAgICAgICAgICAgICAgICBWYWwzMiA9ICh1MzIpVmFsNjQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29uc3Rh
bnRfbWVtY3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpIDogX19tZW1j
cHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWwzMikpLCg0KSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAqcExlbiA9IHNpemVvZih1MzIpOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3Rh
bnRfcCg4KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIqKSYoVmFs
NjQpKSwoOCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4
KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IHNpemVvZih1NjQpOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHgwMDAyMDIw
RToKICAgICAgICAgICAgICAgIFZhbDMyID0gKHUzMilwQUMtPlBubWkuUG9ydFtOZXRJbmRleF0u
VHhTd1F1ZXVlTGVuOwogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8g
X19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWwzMikpLCg0KSkg
OiBfX21lbWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7CiAgICAg
ICAgICAgICAgICAqcExlbiA9IHNpemVvZih1MzIpOwogICAgICAgICAgICAgICAgYnJlYWs7Cgog
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywgKDFMPDwzKSwg
KDQwMCArIDM0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIkdlbmVyYWw6IFVua25vd24gT0lE
Iik7CgogICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICgx
KTsKICAgICAgICB9CgogICAgICAgIGlmIChJZCA9PSAweEZGMDIwMTdBIHx8CiAgICAgICAgICAg
ICAgICBJZCA9PSAweEZGMDIwMTdCIHx8CiAgICAgICAgICAgICAgICBJZCA9PSAweEZGMDIwMTdD
IHx8CiAgICAgICAgICAgICAgICBJZCA9PSAweEZGMDIwMTdEIHx8CiAgICAgICAgICAgICAgICBJ
ZCA9PSAweDAwMDIwMTAzIHx8CiAgICAgICAgICAgICAgICBJZCA9PSAweDAwMDIwMTA0KSB7Cgog
ICAgICAgICAgICAgICAgcEFDLT5Qbm1pLk1hY1VwZGF0ZWRGbGFnIC0tOwogICAgICAgIH0KCiAg
ICAgICAgcmV0dXJuICgwKTsKfQojIDQ4MjYgInNrZ2Vwbm1pLmMiCnN0YXRpYyBpbnQgUmxtdCgK
U0tfQUMgKnBBQywKY2hhciogSW9DLAppbnQgQWN0aW9uLAp1MzIgSWQsCmNoYXIgKnBCdWYsCnVu
c2lnbmVkIGludCAqcExlbiwKdTMyIEluc3RhbmNlLAp1bnNpZ25lZCBpbnQgVGFibGVJbmRleCwK
dTMyIE5ldEluZGV4KQp7CiAgICAgICAgaW50IFJldDsKICAgICAgICB1bnNpZ25lZCBpbnQgUGh5
c1BvcnRJbmRleDsKICAgICAgICB1bnNpZ25lZCBpbnQgUGh5c1BvcnRNYXg7CiAgICAgICAgU0tf
RVZQQVJBIEV2ZW50UGFyYW07CiAgICAgICAgdTMyIFZhbDMyOwogICAgICAgIHU2NCBWYWw2NDsK
CgoKCgogICAgICAgIGlmIChJbnN0YW5jZSAhPSAodTMyKSgtMSkgJiYgSW5zdGFuY2UgIT0gMSkg
ewoKICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiAoNik7
CiAgICAgICAgfQoKCgoKICAgICAgICBpZiAoQWN0aW9uID09IDApIHsKCgoKCgogICAgICAgICAg
ICAgICAgc3dpdGNoIChJZCkgewoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE0MDoKICAg
ICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE0MjoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAx
MDE0MzoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgc2l6ZW9mKHU4KSkgewoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IHNpemVvZih1OCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBj
YXNlIDB4RkYwMTAxNDE6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqcExlbiA8IHNpemVv
Zih1MzIpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9m
KHUzMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAg
ICAgICAgICAgICBjYXNlIDB4RkYwMjAxNjA6CiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAx
NjE6CiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAxNjI6CiAgICAgICAgICAgICAgICBjYXNl
IDB4RkYwMjAxNjM6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqcExlbiA8IHNpemVvZih1
NjQpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHU2
NCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywg
KDFMPDwzKSwgKDQwMCArIDM1KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmxt
dDogVW5rbm93biBPSUQiKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgxKTsKICAgICAgICAgICAgICAgIH0KCgoKCgoK
CiAgICAgICAgICAgICAgICBpZiAoKFJldCA9IFJsbXRVcGRhdGUocEFDLCBJb0MsIE5ldEluZGV4
KSkgIT0gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKFJldCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBwQUMtPlBubWkuUmxtdFVwZGF0ZWRGbGFnICsrOwoKCgoKICAgICAgICAgICAgICAgIHN3
aXRjaCAoSWQpIHsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxNDA6CiAgICAgICAgICAg
ICAgICAgICAgICAgICpwQnVmID0gKGNoYXIpcEFDLT5SbG10Lk5ldFswXS5SbG10TW9kZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE0MToKICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsMzIgPSAodTMyKXBBQy0+R0luaS5HSU1hY3NGb3VuZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFu
dF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNw
eSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHUzMik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE0MjoKICAgICAgICAgICAgICAgICAg
ICAgICAgKnBCdWYgPSAwOwoKCgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgUGh5c1BvcnRN
YXggPSBwQUMtPkdJbmkuR0lNYWNzRm91bmQ7CgogICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KFBoeXNQb3J0SW5kZXggPSAwOyBQaHlzUG9ydEluZGV4IDwgUGh5c1BvcnRNYXg7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGh5c1BvcnRJbmRleCArKykgewoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uQWN0
aXZlRmxhZykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwQnVm
ID0gKGNoYXIpKCh1bnNpZ25lZCBpbnQpKFBoeXNQb3J0SW5kZXgpICsgMSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgKnBMZW4gPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE0MzoKICAgICAgICAgICAgICAgICAgICAg
ICAgKnBCdWYgPSAoY2hhcikoKHVuc2lnbmVkIGludCkocEFDLT5SbG10Lk5ldFtOZXRJbmRleF0u
UHJlZmVyZW5jZSkgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSBzaXplb2Yo
Y2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNh
c2UgMHhGRjAyMDE2MDoKICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBwQUMtPlBubWku
UmxtdENoYW5nZUN0czsKICAgICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFu
dF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2
NCkpLCg4KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDY0KSksKDgp
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHU2NCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAyMDE2MToK
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBwQUMtPlBubWkuUmxtdENoYW5nZVRpbWU7
CiAgICAgICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg4KSA/IF9fY29u
c3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYpKSwoKGNoYXIqKSYoVmFsNjQpKSwoOCkpIDogX19t
ZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAqcExlbiA9IHNpemVvZih1NjQpOwogICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAxNjI6CiAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbDY0ID0gcEFDLT5Qbm1pLlJsbXRDaGFuZ2VFc3RpbWF0ZS5Fc3RpbWF0ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25z
dGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21l
bWNweSgoKGNoYXIqKShwQnVmKSksKChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICpwTGVuID0gc2l6ZW9mKHU2NCk7CiAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAyMDE2MzoKICAgICAgICAgICAgICAg
ICAgICAgICAgVmFsNjQgPSBwQUMtPlBubWkuUmxtdENoYW5nZVRocmVzaG9sZDsKICAgICAgICAg
ICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDgpID8gX19jb25zdGFudF9tZW1j
cHkoKChjaGFyKikocEJ1ZikpLCgoY2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNweSgoKGNo
YXIqKShwQnVmKSksKChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICpwTGVuID0gc2l6ZW9mKHU2NCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoK
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIDsKCgogICAg
ICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuUmxtdFVwZGF0ZWRGbGFnIC0tOwogICAgICAg
ICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAoMSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcEFDLT5Qbm1pLlJsbXRV
cGRhdGVkRmxhZyAtLTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAg
c3dpdGNoIChJZCkgewoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE0MDoKCiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgqcExlbiA8IHNpemVvZihjaGFyKSkgewoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqcExlbiA9IHNpemVvZihjaGFyKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKDIpOwogICAgICAgICAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBMZW4gIT0gc2l6ZW9mKGNoYXIpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpwQnVmICYgKDEpKSA9PSAwIHx8CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKih1OCAqKXBCdWYgPiAxNSkgewoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICgzKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEFjdGlvbiA9PSAxKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KDApOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAo
X19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihF
dmVudFBhcmFtKSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCgoY2hhciAqKSZF
dmVudFBhcmFtKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2Yo
RXZlbnRQYXJhbSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoKGNoYXIgKikmRXZlbnRQYXJh
bSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKEV2ZW50UGFy
YW0pKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKEV2ZW50UGFyYW0pKSkgPyBf
X21lbXNldF9nZW5lcmljKCgoKChjaGFyICopJkV2ZW50UGFyYW0pKSksKCgoMCkpKSwoKChzaXpl
b2YoRXZlbnRQYXJhbSkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKChjaGFyICopJkV2ZW50UGFy
YW0pKSwoKDApKSwoKHNpemVvZihFdmVudFBhcmFtKSkpKSkpOwogICAgICAgICAgICAgICAgICAg
ICAgICBFdmVudFBhcmFtLlBhcmEzMlswXSB8PSAodTMyKSgqcEJ1Zik7CiAgICAgICAgICAgICAg
ICAgICAgICAgIEV2ZW50UGFyYW0uUGFyYTMyWzFdID0gMDsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKFNrUmxtdEV2ZW50KHBBQywgSW9DLCAyMDA3LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEV2ZW50UGFyYW0pID4gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTa0Vycm9yTG9nKHBBQywgKDFMPDwzKSwgKDQwMCArIDM3KSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJSbG10OiBTS19STE1UX01PREVfQ0hBTkdFIGV2ZW50
IHJldHVybiBub3QgMCIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9
IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgxKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgICAgICBjYXNlIDB4RkYwMTAxNDM6CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBM
ZW4gPCBzaXplb2YoY2hhcikpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBM
ZW4gPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICgyKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCpwTGVuICE9IHNpemVvZihjaGFyKSB8fCAqKHU4ICopcEJ1ZiA+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHU4KXBBQy0+R0luaS5HSU1hY3NGb3VuZCkgewoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICgzKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKEFjdGlvbiA9PSAxKSB7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKDApOwogICAgICAgICAgICAgICAgICAgICAgICB9CgoKCgoKCiAgICAgICAgICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
c2l6ZW9mKEV2ZW50UGFyYW0pKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKChj
aGFyICopJkV2ZW50UGFyYW0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwo
KHNpemVvZihFdmVudFBhcmFtKSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKCgoY2hhciAqKSZF
dmVudFBhcmFtKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2Yo
RXZlbnRQYXJhbSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YoRXZlbnRQYXJh
bSkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoKGNoYXIgKikmRXZlbnRQYXJhbSkpKSwoKCgwKSkp
LCgoKHNpemVvZihFdmVudFBhcmFtKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoKGNoYXIgKikm
RXZlbnRQYXJhbSkpLCgoMCkpLCgoc2l6ZW9mKEV2ZW50UGFyYW0pKSkpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIEV2ZW50UGFyYW0uUGFyYTMyWzBdID0gKHUzMikoKnBCdWYpIC0gMTsKICAg
ICAgICAgICAgICAgICAgICAgICAgRXZlbnRQYXJhbS5QYXJhMzJbMV0gPSBOZXRJbmRleDsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFNrUmxtdEV2ZW50KHBBQywgSW9DLCAyMDA2LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50UGFyYW0pID4gMCkgewoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywgKDFMPDwzKSwgKDQwMCArIDM4
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSbG10OiBTS19STE1U
X1BSRUZQT1JUX0NIQU5HRSBldmVudCByZXR1cm4gbm90IDAiKTsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDIwMTYzOgoKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgc2l6ZW9mKHU2NCkpIHsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnBMZW4gPSBzaXplb2YodTY0KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKDIpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgoKCgog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBMZW4gIT0gc2l6ZW9mKHU2NCkpIHsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoMyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChBY3Rpb24gPT0gMSkgewoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKCgoKICAgICAgICAgICAgICAg
ICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDIpID8gX19jb25zdGFudF9tZW1jcHkoKChj
aGFyKikmKFZhbDY0KSksKChjaGFyKikocEJ1ZikpLCgyKSkgOiBfX21lbWNweSgoKGNoYXIqKSYo
VmFsNjQpKSwoKGNoYXIqKShwQnVmKSksKDIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBB
Qy0+UG5taS5SbG10Q2hhbmdlVGhyZXNob2xkID0gVmFsNjQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CgogICAgICAgICAgICAgICAgICAg
ICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoNCk7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKDApOwp9CiMgNTEzMSAic2tn
ZXBubWkuYyIKc3RhdGljIGludCBSbG10U3RhdCgKU0tfQUMgKnBBQywKY2hhciogSW9DLAppbnQg
QWN0aW9uLAp1MzIgSWQsCmNoYXIgKnBCdWYsCnVuc2lnbmVkIGludCAqcExlbiwKdTMyIEluc3Rh
bmNlLAp1bnNpZ25lZCBpbnQgVGFibGVJbmRleCwKdTMyIE5ldEluZGV4KQp7CiAgICAgICAgdW5z
aWduZWQgaW50IFBoeXNQb3J0TWF4OwogICAgICAgIHVuc2lnbmVkIGludCBQaHlzUG9ydEluZGV4
OwogICAgICAgIHVuc2lnbmVkIGludCBMaW1pdDsKICAgICAgICB1bnNpZ25lZCBpbnQgT2Zmc2V0
OwogICAgICAgIGludCBSZXQ7CiAgICAgICAgdTMyIFZhbDMyOwogICAgICAgIHU2NCBWYWw2NDsK
CgoKCiAgICAgICAgUGh5c1BvcnRNYXggPSBwQUMtPkdJbmkuR0lNYWNzRm91bmQ7CgogICAgICAg
IGlmICgoSW5zdGFuY2UgIT0gKHUzMikoLTEpKSkgewoKICAgICAgICAgICAgICAgIGlmICgoSW5z
dGFuY2UgPCAxKSB8fCAoSW5zdGFuY2UgPiBQaHlzUG9ydE1heCkpIHsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICg2KTsK
ICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgUGh5c1BvcnRJbmRleCA9IEluc3Rh
bmNlIC0gMTsKCgogICAgICAgICAgICAgICAgaWYgKHBBQy0+UG5taS5EdWFsTmV0QWN0aXZlRmxh
ZyA9PSAoITApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggPSBOZXRJ
bmRleDsKICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgTGltaXQgPSBQaHlzUG9y
dEluZGV4ICsgMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgUGh5
c1BvcnRJbmRleCA9IDA7CiAgICAgICAgICAgICAgICBMaW1pdCA9IFBoeXNQb3J0TWF4OwoKCiAg
ICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgUGh5c1BvcnRJbmRleCA9IE5ldEluZGV4OwogICAgICAg
ICAgICAgICAgICAgICAgICBMaW1pdCA9IFBoeXNQb3J0SW5kZXggKyAxOwogICAgICAgICAgICAg
ICAgfQogICAgICAgIH0KCgoKCiAgICAgICAgaWYgKEFjdGlvbiAhPSAwKSB7CgogICAgICAgICAg
ICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICg0KTsKICAgICAgICB9CgoK
CgogICAgICAgIHN3aXRjaCAoSWQpIHsKCiAgICAgICAgY2FzZSAweEZGMDIwMTY0OgogICAgICAg
IGNhc2UgMHhGRjAyMDE2NToKICAgICAgICAgICAgICAgIGlmICgqcExlbiA8IChMaW1pdCAtIFBo
eXNQb3J0SW5kZXgpICogc2l6ZW9mKHUzMikpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICpw
TGVuID0gKExpbWl0IC0gUGh5c1BvcnRJbmRleCkgKiBzaXplb2YodTMyKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICBjYXNlIDB4RkYwMjAxNjY6CiAgICAgICAgY2FzZSAweEZGMDIwMTY3
OgogICAgICAgIGNhc2UgMHhGRjAyMDE2ODoKICAgICAgICBjYXNlIDB4RkYwMjAxNjk6CiAgICAg
ICAgICAgICAgICBpZiAoKnBMZW4gPCAoTGltaXQgLSBQaHlzUG9ydEluZGV4KSAqIHNpemVvZih1
NjQpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IChMaW1pdCAtIFBoeXNQb3J0
SW5kZXgpICogc2l6ZW9mKHU2NCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMik7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgIFNrRXJyb3JMb2cocEFDLCAoMUw8PDMpLCAoNDAwICsgMzkpLAog
ICAgICAgICAgICAgICAgICAgICAgICAiUmxtdFN0YXQ6IFVua25vd24gT0lEIik7CgogICAgICAg
ICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICgxKTsKCiAgICAgICAg
fQoKCgoKCiAgICAgICAgaWYgKChSZXQgPSBSbG10VXBkYXRlKHBBQywgSW9DLCBOZXRJbmRleCkp
ICE9IDApIHsKCiAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICByZXR1
cm4gKFJldCk7CiAgICAgICAgfQogICAgICAgIHBBQy0+UG5taS5SbG10VXBkYXRlZEZsYWcgKys7
CgoKCgogICAgICAgIE9mZnNldCA9IDA7CiAgICAgICAgZm9yICg7IFBoeXNQb3J0SW5kZXggPCBM
aW1pdDsgUGh5c1BvcnRJbmRleCArKykgewoKICAgICAgICAgICAgICAgIHN3aXRjaCAoSWQpIHsK
CiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAxNjQ6CiAgICAgICAgICAgICAgICAgICAgICAg
IFZhbDMyID0gUGh5c1BvcnRJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRp
bl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNl
dCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmICsgT2Zm
c2V0KSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9m
ZnNldCArPSBzaXplb2YodTMyKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgICAgICAgICAgY2FzZSAweEZGMDIwMTY1OgogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cEFDLT5SbG10LlBvcnRbUGh5c1BvcnRJbmRleF0uUG9ydFN0YXRlID09CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBB
Qy0+UmxtdC5Qb3J0W1BoeXNQb3J0SW5kZXhdLlBvcnRTdGF0ZSA9PQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs
MzIgPSAzOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLkFjdGl2ZUZsYWcpIHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsMzIgPSAyOwogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbDMyID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50
X21lbWNweSgoKGNoYXIqKShwQnVmICsgT2Zmc2V0KSksKChjaGFyKikmKFZhbDMyKSksKDQpKSA6
IF9fbWVtY3B5KCgoY2hhciopKHBCdWYgKyBPZmZzZXQpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICs9IHNpemVvZih1MzIpOwogICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAxNjY6
CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbDY0ID0gcEFDLT5SbG10LlBvcnRbUGh5c1BvcnRJ
bmRleF0uVHhIZWxsb0N0czsKICAgICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25z
dGFudF9wKDgpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkpLCgo
Y2hhciopJihWYWw2NCkpLCg4KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmICsgT2Zmc2V0KSks
KChjaGFyKikmKFZhbDY0KSksKDgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAr
PSBzaXplb2YodTY0KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAg
ICAgICAgY2FzZSAweEZGMDIwMTY3OgogICAgICAgICAgICAgICAgICAgICAgICBWYWw2NCA9IHBB
Qy0+UmxtdC5Qb3J0W1BoeXNQb3J0SW5kZXhdLlJ4SGVsbG9DdHM7CiAgICAgICAgICAgICAgICAg
ICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg4KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hh
ciopKHBCdWYgKyBPZmZzZXQpKSwoKGNoYXIqKSYoVmFsNjQpKSwoOCkpIDogX19tZW1jcHkoKChj
aGFyKikocEJ1ZiArIE9mZnNldCkpLCgoY2hhciopJihWYWw2NCkpLCg4KSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKHU2NCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAyMDE2ODoKICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsNjQgPSBwQUMtPlJsbXQuUG9ydFtQaHlzUG9ydEluZGV4XS5UeFNwSGVs
bG9SZXFDdHM7CiAgICAgICAgICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg4
KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYgKyBPZmZzZXQpKSwoKGNoYXIqKSYo
VmFsNjQpKSwoOCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkpLCgoY2hhciop
JihWYWw2NCkpLCg4KSkpOwogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9m
KHU2NCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNh
c2UgMHhGRjAyMDE2OToKICAgICAgICAgICAgICAgICAgICAgICAgVmFsNjQgPSBwQUMtPlJsbXQu
UG9ydFtQaHlzUG9ydEluZGV4XS5SeFNwSGVsbG9DdHM7CiAgICAgICAgICAgICAgICAgICAgICAg
IChfX2J1aWx0aW5fY29uc3RhbnRfcCg4KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBC
dWYgKyBPZmZzZXQpKSwoKGNoYXIqKSYoVmFsNjQpKSwoOCkpIDogX19tZW1jcHkoKChjaGFyKiko
cEJ1ZiArIE9mZnNldCkpLCgoY2hhciopJihWYWw2NCkpLCg4KSkpOwogICAgICAgICAgICAgICAg
ICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKHU2NCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIDsK
CgogICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBubWkuUmxtdFVwZGF0ZWRGbGFnIC0tOwog
ICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAoMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICpwTGVuID0g
T2Zmc2V0OwoKICAgICAgICBwQUMtPlBubWkuUmxtdFVwZGF0ZWRGbGFnIC0tOwoKICAgICAgICBy
ZXR1cm4gKDApOwp9CiMgNTMzMyAic2tnZXBubWkuYyIKc3RhdGljIGludCBNYWNQcml2YXRlQ29u
ZigKU0tfQUMgKnBBQywKY2hhciogSW9DLAppbnQgQWN0aW9uLAp1MzIgSWQsCmNoYXIgKnBCdWYs
CnVuc2lnbmVkIGludCAqcExlbiwKdTMyIEluc3RhbmNlLAp1bnNpZ25lZCBpbnQgVGFibGVJbmRl
eCwKdTMyIE5ldEluZGV4KQp7CiAgICAgICAgdW5zaWduZWQgaW50IFBoeXNQb3J0TWF4OwogICAg
ICAgIHVuc2lnbmVkIGludCBQaHlzUG9ydEluZGV4OwogICAgICAgIHVuc2lnbmVkIGludCBMb2dQ
b3J0TWF4OwogICAgICAgIHVuc2lnbmVkIGludCBMb2dQb3J0SW5kZXg7CiAgICAgICAgdW5zaWdu
ZWQgaW50IExpbWl0OwogICAgICAgIHVuc2lnbmVkIGludCBPZmZzZXQ7CiAgICAgICAgY2hhciBW
YWw4OwogICAgICAgIGludCBSZXQ7CiAgICAgICAgU0tfRVZQQVJBIEV2ZW50UGFyYW07CiAgICAg
ICAgdTMyIFZhbDMyOwoKCgoKCgogICAgICAgIFBoeXNQb3J0TWF4ID0gcEFDLT5HSW5pLkdJTWFj
c0ZvdW5kOwogICAgICAgIExvZ1BvcnRNYXggPSAoKHVuc2lnbmVkIGludCkoUGh5c1BvcnRNYXgp
ICsgMSk7CgogICAgICAgIGlmIChwQUMtPlBubWkuRHVhbE5ldEFjdGl2ZUZsYWcgPT0gKCEwKSkg
ewogICAgICAgICAgICAgICAgTG9nUG9ydE1heC0tOwogICAgICAgIH0KCiAgICAgICAgaWYgKChJ
bnN0YW5jZSAhPSAodTMyKSgtMSkpKSB7CgogICAgICAgICAgICAgICAgaWYgKChJbnN0YW5jZSA8
IDEpIHx8IChJbnN0YW5jZSA+IExvZ1BvcnRNYXgpKSB7CgogICAgICAgICAgICAgICAgICAgICAg
ICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoNik7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBMb2dQb3J0SW5kZXggPSAoKHVuc2lnbmVkIGludCko
SW5zdGFuY2UpIC0gMSk7CiAgICAgICAgICAgICAgICBMaW1pdCA9IExvZ1BvcnRJbmRleCArIDE7
CiAgICAgICAgfQoKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICBMb2dQb3J0SW5kZXgg
PSAwOwogICAgICAgICAgICAgICAgTGltaXQgPSBMb2dQb3J0TWF4OwogICAgICAgIH0KCgoKCiAg
ICAgICAgaWYgKEFjdGlvbiA9PSAwKSB7CgoKCgogICAgICAgICAgICAgICAgc3dpdGNoIChJZCkg
ewoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyMjoKICAgICAgICAgICAgICAgIGNhc2Ug
MHhGRjAxMDEyMzoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyNDoKICAgICAgICAgICAg
ICAgIGNhc2UgMHhGRjAxMDEyNToKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyNjoKICAg
ICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyNzoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAx
MDEyODoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyOToKICAgICAgICAgICAgICAgIGNh
c2UgMHhGRjAxMDEyQToKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyQjoKICAgICAgICAg
ICAgICAgIGNhc2UgMHhGRjAxMDEyQzoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyRDoK
ICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE3MDoKICAgICAgICAgICAgICAgIGNhc2UgMHhG
RjAxMDE3MToKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE3MjoKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCpwTGVuIDwgKExpbWl0IC0gTG9nUG9ydEluZGV4KSAqIHNpemVvZih1OCkp
IHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4gPSAoTGltaXQgLSBMb2dQ
b3J0SW5kZXgpICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVv
Zih1OCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAg
ICAgY2FzZSAweEZGMDEwMTFGOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBMZW4gPCBz
aXplb2YodTMyKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IHNp
emVvZih1MzIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMik7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cgog
ICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgU2tFcnJvckxv
ZyhwQUMsICgxTDw8MyksICg0MDAgKyA0MSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1hY1ByaXZhdGVDb25mOiBVbmtub3duIE9JRCIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMSk7CiAgICAgICAg
ICAgICAgICB9CgoKCgoKICAgICAgICAgICAgICAgIGlmICgoUmV0ID0gU2lycVVwZGF0ZShwQUMs
IElvQykpICE9IDApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZXQpOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgcEFDLT5Qbm1pLlNpcnFVcGRhdGVkRmxhZyArKzsKCgoKCiAgICAgICAgICAgICAg
ICBPZmZzZXQgPSAwOwogICAgICAgICAgICAgICAgZm9yICg7IExvZ1BvcnRJbmRleCA8IExpbWl0
OyBMb2dQb3J0SW5kZXggKyspIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoSWQp
IHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyMjoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqKHBCdWYgKyBPZmZzZXQpID0gcEFDLT5Qbm1pLlBNRDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKGNoYXIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAweEZGMDEwMTIzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoocEJ1
ZiArIE9mZnNldCkgPSBwQUMtPlBubWkuQ29ubmVjdG9yOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE9mZnNldCArPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxMjQ6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwQUMtPlBubWkuRHVhbE5ldEFj
dGl2ZUZsYWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChM
b2dQb3J0SW5kZXggPT0gMCkgewoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZpcnR1YWxDb25mKHBBQywgSW9DLCBJZCwgcEJ1ZiArCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGh5c1BvcnRJbmRleCA9ICgodW5zaWduZWQgaW50KShMb2dQ
b3J0SW5kZXgpIC0gMSk7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKihwQnVmICsgT2Zmc2V0KSA9IHBBQy0+R0luaS5HUFsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaHlzUG9ydEluZGV4XS5Q
TGlua0NhcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YoY2hhcik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICoocEJ1ZiArIE9mZnNldCkgPSBwQUMtPkdJbmkuR1BbTmV0SW5kZXhdLlBMaW5rQ2FwOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICs9IHNpemVvZihjaGFy
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAx
MjU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwQUMtPlBubWkuRHVhbE5l
dEFjdGl2ZUZsYWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChMb2dQb3J0SW5kZXggPT0gMCkgewoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZpcnR1YWxDb25mKHBBQywgSW9DLCBJZCwgcEJ1ZiArCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggPSAoKHVuc2lnbmVkIGludCkoTG9nUG9ydElu
ZGV4KSAtIDEpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICoocEJ1ZiArIE9mZnNldCkgPSBwQUMtPkdJbmkuR1BbCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGh5c1BvcnRJbmRleF0uUExpbmtN
b2RlQ29uZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YoY2hhcik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICoocEJ1ZiArIE9mZnNldCkgPSBwQUMtPkdJbmkuR1BbTmV0SW5kZXhdLlBMaW5rTW9kZUNvbmY7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9m
KGNoYXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHhG
RjAxMDEyNjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBBQy0+UG5taS5E
dWFsTmV0QWN0aXZlRmxhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKExvZ1BvcnRJbmRleCA9PSAwKSB7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmlydHVhbENvbmYocEFDLCBJb0MsIElkLCBwQnVmICsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZz
ZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaHlzUG9ydEluZGV4ID0gKCh1bnNpZ25lZCBp
bnQpKExvZ1BvcnRJbmRleCkgLSAxKTsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqKHBCdWYgKyBPZmZzZXQpID0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxhdGVMaW5rTW9kZVN0YXR1
cyhwQUMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJb0MsIFBoeXNQb3J0SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgT2Zmc2V0ICs9IHNpemVvZihjaGFyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqKHBCdWYgKyBPZmZzZXQpID0gQ2FsY3VsYXRlTGlu
a01vZGVTdGF0dXMocEFDLCBJb0MsIE5ldEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoK
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAweEZGMDEwMTI3OgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghcEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTG9nUG9ydEluZGV4ID09IDAp
IHsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0
dWFsQ29uZihwQUMsIElvQywgSWQsIHBCdWYgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBoeXNQb3J0SW5kZXggPSAoKHVuc2lnbmVkIGludCkoTG9nUG9ydEluZGV4KSAtIDEpOwoK
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoocEJ1ZiAr
IE9mZnNldCkgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENhbGN1bGF0ZUxpbmtTdGF0dXMocEFDLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW9DLCBQaHlzUG9ydElu
ZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YoY2hhcik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoo
cEJ1ZiArIE9mZnNldCkgPSBDYWxjdWxhdGVMaW5rU3RhdHVzKHBBQywgSW9DLCBOZXRJbmRleCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9m
KGNoYXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHhG
RjAxMDEyODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBBQy0+UG5taS5E
dWFsTmV0QWN0aXZlRmxhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKExvZ1BvcnRJbmRleCA9PSAwKSB7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmlydHVhbENvbmYocEFDLCBJb0MsIElkLCBwQnVmICsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZz
ZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaHlzUG9ydEluZGV4ID0gKCh1bnNpZ25lZCBp
bnQpKExvZ1BvcnRJbmRleCkgLSAxKTsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqKHBCdWYgKyBPZmZzZXQpID0gcEFDLT5HSW5pLkdQWwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBoeXNQb3J0
SW5kZXhdLlBGbG93Q3RybENhcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCArPSBz
aXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICoocEJ1ZiArIE9mZnNldCkgPSBwQUMtPkdJbmkuR1BbTmV0SW5kZXhdLlBG
bG93Q3RybENhcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNl
dCArPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAweEZGMDEwMTI5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
cEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoTG9nUG9ydEluZGV4ID09IDApIHsKCgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsQ29uZihwQUMsIElvQywgSWQs
IHBCdWYgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggPSAo
KHVuc2lnbmVkIGludCkoTG9nUG9ydEluZGV4KSAtIDEpOwoKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoocEJ1ZiArIE9mZnNldCkgPSBwQUMtPkdJbmku
R1BbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGh5c1BvcnRJbmRleF0uUEZsb3dDdHJsTW9kZTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE9mZnNldCArPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICoocEJ1ZiArIE9mZnNldCkgPSBwQUMtPkdJbmkuR1Bb
TmV0SW5kZXhdLlBGbG93Q3RybE1vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKGNoYXIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyQToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIXBBQy0+UG5taS5EdWFsTmV0QWN0aXZlRmxhZykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExvZ1BvcnRJbmRleCA9PSAwKSB7CgoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbENvbmYo
cEFDLCBJb0MsIElkLCBwQnVmICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaHlz
UG9ydEluZGV4ID0gKCh1bnNpZ25lZCBpbnQpKExvZ1BvcnRJbmRleCkgLSAxKTsKCgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKHBCdWYgKyBPZmZzZXQp
ID0gcEFDLT5HSW5pLkdQWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXhdLlBGbG93Q3RybFN0YXR1czsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoocEJ1ZiArIE9mZnNldCkg
PSBwQUMtPkdJbmkuR1BbTmV0SW5kZXhdLlBGbG93Q3RybFN0YXR1czsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YoY2hhcik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAweEZGMDEwMTJCOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFn
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTG9nUG9ydElu
ZGV4ID09IDApIHsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWaXJ0dWFsQ29uZihwQUMsIElvQywgSWQsIHBCdWYgKwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggPSAoKHVuc2lnbmVkIGludCkoTG9nUG9ydEluZGV4
KSAtIDEpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICoocEJ1ZiArIE9mZnNldCkgPSBwQUMtPkdJbmkuR1BbCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGh5c1BvcnRJbmRleF0uUE1TQ2FwOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICs9IHNpemVvZihjaGFyKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihwQnVmICsg
T2Zmc2V0KSA9IHBBQy0+R0luaS5HUFtOZXRJbmRleF0uUE1TQ2FwOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICs9IHNpemVvZihjaGFyKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxMkM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwQUMtPlBubWkuRHVhbE5ldEFjdGl2ZUZsYWcp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMb2dQb3J0SW5k
ZXggPT0gMCkgewoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZpcnR1YWxDb25mKHBBQywgSW9DLCBJZCwgcEJ1ZiArIE9mZnNldCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggPSAoKHVuc2lnbmVkIGludCkoTG9nUG9ydEluZGV4
KSAtIDEpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICoocEJ1ZiArIE9mZnNldCkgPSBwQUMtPkdJbmkuR1BbCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGh5c1BvcnRJbmRleF0uUE1TTW9kZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YoY2hhcik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoocEJ1ZiAr
IE9mZnNldCkgPSBwQUMtPkdJbmkuR1BbTmV0SW5kZXhdLlBNU01vZGU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKGNoYXIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyRDoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBBQy0+UG5taS5EdWFsTmV0QWN0aXZlRmxh
ZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExvZ1BvcnRJ
bmRleCA9PSAwKSB7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmlydHVhbENvbmYocEFDLCBJb0MsIElkLCBwQnVmICsgT2Zmc2V0KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGh5c1BvcnRJbmRleCA9ICgodW5zaWduZWQgaW50KShMb2dQb3J0SW5k
ZXgpIC0gMSk7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKihwQnVmICsgT2Zmc2V0KSA9IHBBQy0+R0luaS5HUFsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaHlzUG9ydEluZGV4XS5QTVNTdGF0
dXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKGNoYXIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKHBC
dWYgKyBPZmZzZXQpID0gcEFDLT5HSW5pLkdQW05ldEluZGV4XS5QTVNTdGF0dXM7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKGNoYXIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE3MDoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBBQy0+UG5taS5EdWFsTmV0QWN0
aXZlRmxhZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExv
Z1BvcnRJbmRleCA9PSAwKSB7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmlydHVhbENvbmYocEFDLCBJb0MsIElkLCBwQnVmICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQaHlzUG9ydEluZGV4ID0gKCh1bnNpZ25lZCBpbnQpKExvZ1Bv
cnRJbmRleCkgLSAxKTsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqKHBCdWYgKyBPZmZzZXQpID0gcEFDLT5HSW5pLkdQWwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXhdLlBM
aW5rU3BlZWRDYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKGNo
YXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqKHBCdWYgKyBPZmZzZXQpID0gcEFDLT5HSW5pLkdQW05ldEluZGV4XS5QTGlua1NwZWVk
Q2FwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICs9IHNp
emVvZihjaGFyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IDB4RkYwMTAxNzE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwQUMtPlBu
bWkuRHVhbE5ldEFjdGl2ZUZsYWcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChMb2dQb3J0SW5kZXggPT0gMCkgewoKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxDb25mKHBBQywgSW9DLCBJZCwgcEJ1ZiAr
IE9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggPSAoKHVuc2ln
bmVkIGludCkoTG9nUG9ydEluZGV4KSAtIDEpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICoocEJ1ZiArIE9mZnNldCkgPSBwQUMtPkdJbmkuR1BbCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGh5
c1BvcnRJbmRleF0uUExpbmtTcGVlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAr
PSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICoocEJ1ZiArIE9mZnNldCkgPSBwQUMtPkdJbmkuR1BbTmV0SW5kZXhd
LlBMaW5rU3BlZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZz
ZXQgKz0gc2l6ZW9mKGNoYXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMHhGRjAxMDE3MjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXBBQy0+UG5taS5EdWFsTmV0QWN0aXZlRmxhZykgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKExvZ1BvcnRJbmRleCA9PSAwKSB7CgoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbENvbmYocEFDLCBJb0MsIElk
LCBwQnVmICsgT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGh5c1BvcnRJbmRleCA9
ICgodW5zaWduZWQgaW50KShMb2dQb3J0SW5kZXgpIC0gMSk7CgoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihwQnVmICsgT2Zmc2V0KSA9IHBBQy0+R0lu
aS5HUFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQaHlzUG9ydEluZGV4XS5QTGlua1NwZWVkVXNlZDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE9mZnNldCArPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoocEJ1ZiArIE9mZnNldCkgPSBwQUMtPkdJbmku
R1BbTmV0SW5kZXhdLlBMaW5rU3BlZWRVc2VkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgT2Zmc2V0ICs9IHNpemVvZihjaGFyKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxMUY6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsMzIgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChf
X2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYg
KyBPZmZzZXQpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1
ZiArIE9mZnNldCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YodTMyKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcEFDLT5Qbm1pLlNpcnFVcGRhdGVkRmxhZyAtLTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAqcExlbiA9IE9mZnNldDsKICAgICAgICAgICAgICAg
IHBBQy0+UG5taS5TaXJxVXBkYXRlZEZsYWcgLS07CgogICAgICAgICAgICAgICAgcmV0dXJuICgw
KTsKICAgICAgICB9CgoKCgoKICAgICAgICBzd2l0Y2ggKElkKSB7CgogICAgICAgIGNhc2UgMHhG
RjAxMDEyNToKICAgICAgICBjYXNlIDB4RkYwMTAxMjk6CiAgICAgICAgY2FzZSAweEZGMDEwMTJD
OgogICAgICAgIGNhc2UgMHhGRjAxMDE3MToKICAgICAgICAgICAgICAgIGlmICgqcExlbiA8IExp
bWl0IC0gTG9nUG9ydEluZGV4KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IExp
bWl0IC0gTG9nUG9ydEluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDIpOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCpwTGVuICE9IExpbWl0IC0gTG9n
UG9ydEluZGV4KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAoMyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweEZGMDEwMTFGOgogICAgICAgICAgICAgICAgaWYg
KCpwTGVuIDwgc2l6ZW9mKHUzMikpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0g
c2l6ZW9mKHUzMik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMik7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKnBMZW4gIT0gc2l6ZW9mKHUzMikpIHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICgzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICByZXR1
cm4gKDQpOwogICAgICAgIH0KCgoKCiAgICAgICAgT2Zmc2V0ID0gMDsKICAgICAgICBmb3IgKDsg
TG9nUG9ydEluZGV4IDwgTGltaXQ7IExvZ1BvcnRJbmRleCArKykgewoKICAgICAgICAgICAgICAg
IHN3aXRjaCAoSWQpIHsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxMjU6CgogICAgICAg
ICAgICAgICAgICAgICAgICBWYWw4ID0gKihwQnVmICsgT2Zmc2V0KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKFZhbDggPT0gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBPZmZzZXQgKz0gc2l6ZW9mKGNoYXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChWYWw4IDwgMSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2dQb3J0
SW5kZXggIT0gMCAmJiBWYWw4ID4gNikgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoTG9nUG9ydEluZGV4ID09IDAgJiYgVmFsOCA+IDcpKSB7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKDMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKEFjdGlvbiA9PSAxKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChMb2dQb3J0SW5kZXggPT0gMCkgewoKCgoKCgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAoUGh5c1BvcnRJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQaHlzUG9ydEluZGV4IDwgUGh5c1BvcnRNYXg7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaHlzUG9ydEluZGV4ICsrKSB7CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwQUMtPlBubWkuUG9ydFtQ
aHlzUG9ydEluZGV4XS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWN0aXZlRmxhZykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRQYXJh
bS5QYXJhMzJbMF0gPSBQaHlzUG9ydEluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRXZlbnRQYXJhbS5QYXJhMzJbMV0gPSAodTMyKVZhbDg7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU2tHZVNpcnFFdmVudChwQUMsIElvQywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRQYXJhbSkgPiAw
KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0Vy
cm9yTG9nKHBBQywgKDFMPDwzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoNDAwICsgNDMpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWNQcml2YXRlQ29uZjogU0tfSFdFVl9T
RVRfTE1PREUgcmV0dXJuZWQgbm90IDAiKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgxKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgoKCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50UGFyYW0uUGFyYTMyWzBdID0gKCh1
bnNpZ25lZCBpbnQpKExvZ1BvcnRJbmRleCkgLSAxKTsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRXZlbnRQYXJhbS5QYXJhMzJbMV0gPSAodTMyKVZhbDg7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKFNrR2VTaXJxRXZlbnQocEFDLCBJb0MsIDYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudFBhcmFtKSA+IDApIHsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywgKDFMPDwz
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDQwMCAr
IDQzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1h
Y1ByaXZhdGVDb25mOiBTS19IV0VWX1NFVF9MTU9ERSByZXR1cm5lZCBub3QgMCIpOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgIE9mZnNldCArPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyOToKCiAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbDggPSAqKHBCdWYgKyBPZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoVmFsOCA9PSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNl
dCArPSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFZh
bDggPCAxIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvZ1BvcnRJbmRleCAh
PSAwICYmIFZhbDggPiA0KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2dQ
b3J0SW5kZXggPT0gMCAmJiBWYWw4ID4gNSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAo
Myk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoQWN0aW9uID09IDEpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKExvZ1BvcnRJbmRleCA9PSAwKSB7CgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIChQaHlzUG9ydEluZGV4ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggPCBQaHlzUG9ydE1heDsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggKyspIHsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0
SW5kZXhdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
Y3RpdmVGbGFnKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudFBhcmFtLlBhcmEz
MlswXSA9IFBoeXNQb3J0SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFdmVudFBhcmFtLlBhcmEzMlsxXSA9ICh1MzIpVmFsODsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChTa0dlU2lycUV2ZW50KHBBQywgSW9DLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudFBhcmFtKSA+IDApIHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrRXJyb3JMb2co
cEFDLCAoMUw8PDMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICg0MDAgKyA0NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1hY1ByaXZhdGVDb25mOiBTS19IV0VWX1NFVF9GTE9X
TU9ERSByZXR1cm5lZCBub3QgMCIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCgoKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRQYXJhbS5QYXJhMzJbMF0gPSAoKHVuc2ln
bmVkIGludCkoTG9nUG9ydEluZGV4KSAtIDEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFdmVudFBhcmFtLlBhcmEzMlsxXSA9ICh1MzIpVmFsODsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoU2tHZVNpcnFFdmVudChwQUMsIElvQywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDcsIEV2ZW50UGFyYW0pCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA+IDApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywgKDFMPDwzKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDQwMCArIDQ0KSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1hY1ByaXZhdGVDb25mOiBTS19IV0VW
X1NFVF9GTE9XTU9ERSByZXR1cm5lZCBub3QgMCIpOwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldCAr
PSBzaXplb2YoY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgICAgIGNhc2UgMHhGRjAxMDEyQyA6CgogICAgICAgICAgICAgICAgICAgICAgICBWYWw4ID0g
KihwQnVmICsgT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFZhbDggPT0gMCkg
ewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKGNoYXIp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWYWw4IDwgMSB8fAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChMb2dQb3J0SW5kZXggIT0gMCAmJiBWYWw4ID4gMykg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9nUG9ydEluZGV4ID09IDAgJiYg
VmFsOCA+IDQpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDMpOwogICAgICAgICAgICAg
ICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFjdGlvbiA9PSAxKSB7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMb2dQb3J0SW5kZXgg
PT0gMCkgewoKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoUGh5c1Bv
cnRJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaHlz
UG9ydEluZGV4IDwgUGh5c1BvcnRNYXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQaHlzUG9ydEluZGV4ICsrKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwQUMtPlBubWkuUG9ydFtQaHlzUG9ydEluZGV4XS4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZlRmxhZykgewoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRQYXJhbS5QYXJhMzJbMF0gPSBQaHlzUG9ydElu
ZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRQYXJhbS5Q
YXJhMzJbMV0gPSAodTMyKVZhbDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoU2tHZVNpcnFFdmVudChwQUMsIElvQywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRXZlbnRQYXJhbSkgPiAwKSB7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywgKDFMPDwzKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNDAw
ICsgNDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNYWNQcml2YXRlQ29uZjogU0tfSFdFVl9TRVRfUk9MRSByZXR1cm5lZCBub3QgMCIp
OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBMZW4g
PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRXZlbnRQYXJhbS5QYXJhMzJbMF0gPSAoKHVuc2lnbmVkIGludCkoTG9nUG9ydEluZGV4
KSAtIDEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudFBhcmFtLlBhcmEz
MlsxXSA9ICh1MzIpVmFsODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU2tH
ZVNpcnFFdmVudChwQUMsIElvQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDgsIEV2ZW50UGFyYW0pID4gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNrRXJyb3JMb2cocEFDLCAoMUw8PDMpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoNDAwICsgNDIpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFjUHJpdmF0ZUNvbmY6IFNLX0hXRVZfU0VU
X1JPTEUgcmV0dXJuZWQgbm90IDAiKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gKDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICs9IHNpemVv
ZihjaGFyKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAg
Y2FzZSAweEZGMDEwMTcxOgoKICAgICAgICAgICAgICAgICAgICAgICAgVmFsOCA9ICoocEJ1ZiAr
IE9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWYWw4ID09IDApIHsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICs9IHNpemVvZihjaGFyKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoVmFsOCA8ICgxKSB8fAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChMb2dQb3J0SW5kZXggIT0gMCAmJiBWYWw4ID4gKDQpKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2dQb3J0SW5kZXggPT0gMCAmJiBWYWw4
ID4gKDUpKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgzKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBY3Rpb24gPT0gMSkgewoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgICAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoTG9nUG9ydEluZGV4ID09
IDApIHsKCgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFBoeXNQb3J0
SW5kZXggPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGh5c1Bv
cnRJbmRleCA8IFBoeXNQb3J0TWF4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGh5c1BvcnRJbmRleCArKykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICghcEFDLT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uQWN0aXZlRmxhZykg
ewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRQYXJhbS5QYXJhMzJbMF0gPSBQaHlz
UG9ydEluZGV4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRQ
YXJhbS5QYXJhMzJbMV0gPSAodTMyKVZhbDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoU2tHZVNpcnFFdmVudChwQUMsIElvQywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRQYXJhbSkgPiAwKSB7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0Vycm9yTG9nKHBBQywgKDFMPDwz
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoNDAwICsgNDUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJNYWNQcml2YXRlQ29uZjogU0tfSFdFVl9TRVRfU1BFRUQgcmV0dXJuZWQg
bm90IDAiKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuICgxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgoKCgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV2ZW50UGFyYW0uUGFyYTMyWzBdID0gKCh1bnNpZ25lZCBpbnQpKExvZ1Bv
cnRJbmRleCkgLSAxKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRQYXJh
bS5QYXJhMzJbMV0gPSAodTMyKVZhbDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKFNrR2VTaXJxRXZlbnQocEFDLCBJb0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZl
bnRQYXJhbSkgPiAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2tFcnJvckxvZyhwQUMsICgxTDw8MyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICg0MDAgKyA0NSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNYWNQcml2YXRlQ29uZjogU0tfSFdFVl9TRVRfU1BFRUQgcmV0
dXJuZWQgbm90IDAiKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
cExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKGNoYXIpOwog
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYw
MTAxMUYgOgoKICAgICAgICAgICAgICAgICAgICAgICAgVmFsMzIgPSAqKHUzMiopKHBCdWYgKyBP
ZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoVmFsMzIgPT0gMCkgewoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKHUzMik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgIT0gMCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKDMpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKEFjdGlvbiA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKDAgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAoMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAg
IE9mZnNldCArPSBzaXplb2YodTMyKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cgog
ICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgOwoKCiAgICAgICAgICAgICAgICAg
ICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgxKTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAoMCk7Cn0KIyA2MjE1ICJz
a2dlcG5taS5jIgpzdGF0aWMgaW50IE1vbml0b3IoClNLX0FDICpwQUMsCmNoYXIqIElvQywKaW50
IEFjdGlvbiwKdTMyIElkLApjaGFyICpwQnVmLAp1bnNpZ25lZCBpbnQgKnBMZW4sCnUzMiBJbnN0
YW5jZSwKdW5zaWduZWQgaW50IFRhYmxlSW5kZXgsCnUzMiBOZXRJbmRleCkKewogICAgICAgIHVu
c2lnbmVkIGludCBJbmRleDsKICAgICAgICB1bnNpZ25lZCBpbnQgTGltaXQ7CiAgICAgICAgdW5z
aWduZWQgaW50IE9mZnNldDsKICAgICAgICB1bnNpZ25lZCBpbnQgRW50cmllczsKCgoKCgoKICAg
ICAgICBFbnRyaWVzID0gMDsKCiAgICAgICAgaWYgKChJbnN0YW5jZSAhPSAodTMyKSgtMSkpKSB7
CgogICAgICAgICAgICAgICAgaWYgKChJbnN0YW5jZSA8IDEpIHx8IChJbnN0YW5jZSA+IEVudHJp
ZXMpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAoNik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
SW5kZXggPSAodW5zaWduZWQgaW50KUluc3RhbmNlIC0gMTsKICAgICAgICAgICAgICAgIExpbWl0
ID0gKHVuc2lnbmVkIGludClJbnN0YW5jZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICBJbmRleCA9IDA7CiAgICAgICAgICAgICAgICBMaW1pdCA9IEVudHJpZXM7CiAg
ICAgICAgfQoKCgoKICAgICAgICBpZiAoQWN0aW9uID09IDApIHsKCiAgICAgICAgICAgICAgICBm
b3IgKE9mZnNldD0wOyBJbmRleCA8IExpbWl0OyBJbmRleCArKykgewoKICAgICAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChJZCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAweEZG
MDEwMTUxOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxNTI6CiAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE1MzoKICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAweEZGMDEwMTU0OgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxNTU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrRXJyb3JM
b2cocEFDLCAoMUw8PDMpLCAoNDAwICsgNDYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIk1vbml0b3I6IFVua25vd24gT0lEIik7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKDEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAqcExlbiA9IE9mZnNldDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7Cgog
ICAgICAgICAgICAgICAgaWYgKElkICE9IDB4RkYwMTAxNTUpIHsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICg0KTsKICAg
ICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgKExpbWl0IC0gSW5k
ZXgpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDIpOwogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIGlmICgqcExlbiAhPSAoTGltaXQgLSBJbmRleCkpIHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICgzKTsKICAgICAgICAgICAgICAgIH0KIyA2MzA3ICJza2dlcG5taS5jIgogICAgICAg
ICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICgzKTsKICAgICAgICB9
CgogICAgICAgIHJldHVybiAoMCk7Cn0KIyA2MzMwICJza2dlcG5taS5jIgpzdGF0aWMgdm9pZCBW
aXJ0dWFsQ29uZigKU0tfQUMgKnBBQywKY2hhciogSW9DLAp1MzIgSWQsCmNoYXIgKnBCdWYpCnsK
ICAgICAgICB1bnNpZ25lZCBpbnQgUGh5c1BvcnRNYXg7CiAgICAgICAgdW5zaWduZWQgaW50IFBo
eXNQb3J0SW5kZXg7CiAgICAgICAgdTggVmFsODsKICAgICAgICB1OCBQb3J0QWN0aXZlRmxhZzsK
CgogICAgICAgICpwQnVmID0gMDsKICAgICAgICBQb3J0QWN0aXZlRmxhZyA9IDA7CiAgICAgICAg
UGh5c1BvcnRNYXggPSBwQUMtPkdJbmkuR0lNYWNzRm91bmQ7CgogICAgICAgIGZvciAoUGh5c1Bv
cnRJbmRleCA9IDA7IFBoeXNQb3J0SW5kZXggPCBQaHlzUG9ydE1heDsKICAgICAgICAgICAgICAg
IFBoeXNQb3J0SW5kZXggKyspIHsKCgogICAgICAgICAgICAgICAgaWYgKCFwQUMtPlBubWkuUG9y
dFtQaHlzUG9ydEluZGV4XS5BY3RpdmVGbGFnKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBQb3J0QWN0aXZlRmxh
ZyA9ICghMCk7CgogICAgICAgICAgICAgICAgc3dpdGNoIChJZCkgewoKICAgICAgICAgICAgICAg
IGNhc2UgMHhGRjAxMDEyNDoKCgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICpwQnVmIHw9
IHBBQy0+R0luaS5HUFtQaHlzUG9ydEluZGV4XS5QTGlua0NhcDsKICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDEwMTI1OgoKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCpwQnVmID09IDApIHsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnBCdWYgPSBwQUMtPkdJbmkuR1BbUGh5c1BvcnRJbmRleF0uUExpbmtNb2RlQ29u
ZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgfQoKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBCdWYgIT0g
cEFDLT5HSW5pLkdQW1BoeXNQb3J0SW5kZXhdLlBMaW5rTW9kZUNvbmYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBC
dWYgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyNjoKCiAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbDggPSBDYWxjdWxhdGVMaW5rTW9kZVN0YXR1cyhwQUMsIElvQywgUGh5c1Bv
cnRJbmRleCk7CgoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwQnVmID09IDApIHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBCdWYgPSBWYWw4OwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgoK
CgoKCgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBCdWYgIT0gVmFsOCkgewoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqcEJ1ZiA9IDY7CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2Fz
ZSAweEZGMDEwMTI3OgoKICAgICAgICAgICAgICAgICAgICAgICAgVmFsOCA9IENhbGN1bGF0ZUxp
bmtTdGF0dXMocEFDLCBJb0MsIFBoeXNQb3J0SW5kZXgpOwoKCiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgqcEJ1ZiA9PSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpw
QnVmID0gVmFsODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQoKCgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCpwQnVmICE9IFZhbDgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBCdWYg
PSA1OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyODoKCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgqcEJ1ZiA9PSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpwQnVmID0gcEFDLT5HSW5pLkdQW1BoeXNQb3J0SW5kZXhdLlBGbG93Q3RybENhcDsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICpwQnVmIHw9IHBBQy0+R0luaS5HUFtQ
aHlzUG9ydEluZGV4XS5QRmxvd0N0cmxDYXA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDEyOToKCiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgqcEJ1ZiA9PSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpw
QnVmID0gcEFDLT5HSW5pLkdQW1BoeXNQb3J0SW5kZXhdLlBGbG93Q3RybE1vZGU7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KCgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwQnVmICE9IHBBQy0+R0luaS5H
UFtQaHlzUG9ydEluZGV4XS5QRmxvd0N0cmxNb2RlKSB7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICpwQnVmID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxMkE6Cgog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBCdWYgPT0gMCkgewoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqcEJ1ZiA9IHBBQy0+R0luaS5HUFtQaHlzUG9ydEluZGV4XS5QRmxv
d0N0cmxTdGF0dXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KCgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgqcEJ1ZiAhPSBwQUMtPkdJbmkuR1BbUGh5c1BvcnRJbmRleF0uUEZsb3dDdHJsU3RhdHVzKSB7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwQnVmID0gNTsKICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAg
ICAgICBjYXNlIDB4RkYwMTAxMkI6CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBCdWYg
PT0gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcEJ1ZiA9IHBBQy0+R0lu
aS5HUFtQaHlzUG9ydEluZGV4XS5QTVNDYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCgoKCgogICAgICAgICAgICAg
ICAgICAgICAgICAqcEJ1ZiB8PSBwQUMtPkdJbmkuR1BbUGh5c1BvcnRJbmRleF0uUE1TQ2FwOwog
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYw
MTAxMkM6CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBCdWYgPT0gMCkgewoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqcEJ1ZiA9IHBBQy0+R0luaS5HUFtQaHlzUG9ydElu
ZGV4XS5QTVNNb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICB9CgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgqcEJ1ZiAhPSBwQUMtPkdJbmkuR1BbUGh5c1BvcnRJbmRleF0uUE1TTW9kZSkgewoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqcEJ1ZiA9IDQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2Fz
ZSAweEZGMDEwMTJEOgoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwQnVmID09IDApIHsK
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBCdWYgPSBwQUMtPkdJbmkuR1BbUGh5
c1BvcnRJbmRleF0uUE1TU3RhdHVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgoKCgoKCgogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKnBCdWYgIT0gcEFDLT5HSW5pLkdQW1BoeXNQb3J0SW5kZXhdLlBNU1N0YXR1
cykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcEJ1ZiA9IDU7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAg
ICAgICAgICAgY2FzZSAweEZGMDEwMTcxOgoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpw
QnVmID09IDApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBCdWYgPSBwQUMt
PkdJbmkuR1BbUGh5c1BvcnRJbmRleF0uUExpbmtTcGVlZDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKCgoKCgogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKnBCdWYgIT0gcEFDLT5HSW5pLkdQW1BoeXNQb3J0SW5k
ZXhdLlBMaW5rU3BlZWQpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBCdWYg
PSA1OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE3MjoKCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgqcEJ1ZiA9PSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpwQnVmID0gcEFDLT5HSW5pLkdQW1BoeXNQb3J0SW5kZXhdLlBMaW5rU3BlZWRVc2VkOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CgoKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBCdWYgIT0gcEFDLT5H
SW5pLkdQW1BoeXNQb3J0SW5kZXhdLlBMaW5rU3BlZWRVc2VkKSB7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpwQnVmID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgoK
CgogICAgICAgIGlmICghUG9ydEFjdGl2ZUZsYWcpIHsKCiAgICAgICAgICAgICAgICBzd2l0Y2gg
KElkKSB7CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDEwMTI0OgogICAgICAgICAgICAgICAg
ICAgICAgICAqcEJ1ZiA9ICgxPDw0KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cgog
ICAgICAgICAgICAgICAgY2FzZSAweEZGMDEwMTI1OgogICAgICAgICAgICAgICAgICAgICAgICAq
cEJ1ZiA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAg
IGNhc2UgMHhGRjAxMDEyNjoKICAgICAgICAgICAgICAgICAgICAgICAgKnBCdWYgPSA2OwogICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAx
Mjc6CiAgICAgICAgICAgICAgICAgICAgICAgICpwQnVmID0gNTsKICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDEwMTI4OgogICAgICAgICAg
ICAgICAgY2FzZSAweEZGMDEwMTI5OgogICAgICAgICAgICAgICAgICAgICAgICAqcEJ1ZiA9IDU7
CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhG
RjAxMDEyQToKICAgICAgICAgICAgICAgICAgICAgICAgKnBCdWYgPSA1OwogICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxMkI6CiAgICAg
ICAgICAgICAgICAgICAgICAgICpwQnVmID0gKDE8PDMpOwogICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMTAxMkM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICpwQnVmID0gNDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgICAgICAgICAgY2FzZSAweEZGMDEwMTJEOgogICAgICAgICAgICAgICAgICAgICAgICAqcEJ1
ZiA9IDU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2Fz
ZSAweEZGMDEwMTcwOgogICAgICAgICAgICAgICAgICAgICAgICAqcEJ1ZiA9ICgxPDw0KTsKICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDEw
MTcxOgogICAgICAgICAgICAgICAgICAgICAgICAqcEJ1ZiA9IDU7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAxMDE3MjoKICAgICAgICAg
ICAgICAgICAgICAgICAgKnBCdWYgPSA1OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICB9Cn0KIyA2NjU4ICJza2dlcG5taS5jIgpzdGF0aWMg
dTggQ2FsY3VsYXRlTGlua1N0YXR1cygKU0tfQUMgKnBBQywKY2hhciogSW9DLAp1bnNpZ25lZCBp
bnQgUGh5c1BvcnRJbmRleCkKewogICAgICAgIHU4IFJlc3VsdDsKCgogICAgICAgIGlmICghcEFD
LT5HSW5pLkdQW1BoeXNQb3J0SW5kZXhdLlBIV0xpbmtVcCkgewoKICAgICAgICAgICAgICAgIFJl
c3VsdCA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHBBQy0+R0luaS5HUFtQaHlzUG9y
dEluZGV4XS5QQXV0b05lZ0ZhaWwgPiAwKSB7CgogICAgICAgICAgICAgICAgUmVzdWx0ID0gMjsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoIXBBQy0+
UmxtdC5Qb3J0W1BoeXNQb3J0SW5kZXhdLlBvcnREb3duKSB7CgogICAgICAgICAgICAgICAgUmVz
dWx0ID0gNDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBSZXN1bHQg
PSAzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChSZXN1bHQpOwp9CiMgNjY5OCAic2tnZXBu
bWkuYyIKc3RhdGljIHU4IENhbGN1bGF0ZUxpbmtNb2RlU3RhdHVzKApTS19BQyAqcEFDLApjaGFy
KiBJb0MsCnVuc2lnbmVkIGludCBQaHlzUG9ydEluZGV4KQp7CiAgICAgICAgdTggUmVzdWx0OwoK
CgogICAgICAgIFJlc3VsdCA9IHBBQy0+R0luaS5HUFtQaHlzUG9ydEluZGV4XS5QTGlua01vZGVT
dGF0dXM7CgoKICAgICAgICBpZiAoUmVzdWx0IDwgMikgewoKICAgICAgICAgICAgICAgIFJlc3Vs
dCA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHBBQy0+R0luaS5HUFtQaHlzUG9ydElu
ZGV4XS5QTGlua01vZGUgPj0gMykgewoKCgoKCgogICAgICAgICAgICAgICAgaWYgKFJlc3VsdCA9
PSAyKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPSA0OwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoUmVzdWx0ID09IDMpIHsKCiAgICAgICAgICAg
ICAgICAgICAgICAgIFJlc3VsdCA9IDU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAg
ICAgICByZXR1cm4gKFJlc3VsdCk7Cn0KIyA2NzQ2ICJza2dlcG5taS5jIgpzdGF0aWMgaW50IEdl
dFZwZEtleUFycigKU0tfQUMgKnBBQywKY2hhciogSW9DLApjaGFyICpwS2V5QXJyLAp1bnNpZ25l
ZCBpbnQgS2V5QXJyTGVuLAp1bnNpZ25lZCBpbnQgKnBLZXlObykKewogICAgICAgIHVuc2lnbmVk
IGludCBCdWZLZXlzTGVuID0gKDUxMik7CiAgICAgICAgY2hhciBCdWZLZXlzWyg1MTIpXTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgU3RhcnRPZmZzZXQ7CiAgICAgICAgdW5zaWduZWQgaW50IE9mZnNl
dDsKICAgICAgICBpbnQgSW5kZXg7CiAgICAgICAgaW50IFJldDsKCgogICAgICAgIChfX2J1aWx0
aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoS2V5QXJyTGVuKSkgPyBf
X2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKHBLZXlBcnIpKSwoKDB4MDEwMTAxMDFVTCoo
dW5zaWduZWQgY2hhcikoMCkpKSwoKEtleUFyckxlbikpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQo
KChwS2V5QXJyKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChLZXlBcnJM
ZW4pKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChLZXlBcnJMZW4pKSA/IF9fbWVtc2V0X2dl
bmVyaWMoKCgocEtleUFycikpKSwoKCgwKSkpLCgoKEtleUFyckxlbikpKSkgOiBfX21lbXNldF9n
ZW5lcmljKCgocEtleUFycikpLCgoMCkpLCgoS2V5QXJyTGVuKSkpKSk7CgoKCgogICAgICAgIFJl
dCA9IFZwZEtleXMocEFDLCBJb0MsIChjaGFyICopJkJ1ZktleXMsIChpbnQgKikmQnVmS2V5c0xl
biwKICAgICAgICAgICAgICAgIChpbnQgKilwS2V5Tm8pOwogICAgICAgIGlmIChSZXQgPiAwKSB7
CgogICAgICAgICAgICAgICAgU2tFcnJvckxvZyhwQUMsICgxTDw8MyksICg0MDAgKyAxNCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICJWcGQ6IENhbm5vdCByZWFkIFZQRCBrZXlzIik7CgogICAg
ICAgICAgICAgICAgcmV0dXJuICgxKTsKICAgICAgICB9CgogICAgICAgIGlmICgqcEtleU5vID09
IDAgfHwgQnVmS2V5c0xlbiA9PSAwKSB7CgogICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKICAg
ICAgICB9CgoKCgoKICAgICAgICBpZiAoKnBLZXlObyA+ICg1MTIgLyA0KSkgewoKICAgICAgICAg
ICAgICAgIFNrRXJyb3JMb2cocEFDLCAoMUw8PDMpLCAoNDAwICsgMTUpLAogICAgICAgICAgICAg
ICAgICAgICAgICAiVnBkOiBJbnRlcm5hbCBhcnJheSBmb3IgVlBEIGtleXMgdG8gc21hbGwiKTsK
CiAgICAgICAgICAgICAgICAqcEtleU5vID0gKDUxMiAvIDQpOwogICAgICAgIH0KCgoKCgogICAg
ICAgIGZvciAoSW5kZXggPSAwLCBTdGFydE9mZnNldCA9IDAsIE9mZnNldCA9IDA7IE9mZnNldCA8
IEJ1ZktleXNMZW47CiAgICAgICAgICAgICAgICBPZmZzZXQgKyspIHsKCiAgICAgICAgICAgICAg
ICBpZiAoQnVmS2V5c1tPZmZzZXRdICE9IDApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChPZmZzZXQgLSBT
dGFydE9mZnNldCA+IDUpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIFNrRXJyb3JMb2cocEFD
LCAoMUw8PDMpLCAoNDAwICsgMTYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJW
cGQ6IEtleSBzdHJpbmcgdG9vIGxvbmciKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICgxKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBzdHJuY3B5KChjaGFyKiko
cEtleUFyciArIEluZGV4ICogNSksKGNoYXIqKSgmQnVmS2V5c1tTdGFydE9mZnNldF0pLDUpOwoK
CiAgICAgICAgICAgICAgICBJbmRleCArKzsKICAgICAgICAgICAgICAgIFN0YXJ0T2Zmc2V0ID0g
T2Zmc2V0ICsgMTsKICAgICAgICB9CgoKICAgICAgICBpZiAoU3RhcnRPZmZzZXQgPCBPZmZzZXQp
IHsKCiAgICAgICAgICAgICAgICBzdHJuY3B5KChjaGFyKikocEtleUFyciArIEluZGV4ICogNSks
KGNoYXIqKSgmQnVmS2V5c1tTdGFydE9mZnNldF0pLDUpOwoKICAgICAgICB9CgogICAgICAgIHJl
dHVybiAoMCk7Cn0KIyA2ODQyICJza2dlcG5taS5jIgpzdGF0aWMgaW50IFNpcnFVcGRhdGUoClNL
X0FDICpwQUMsCmNoYXIqIElvQykKewogICAgICAgIFNLX0VWUEFSQSBFdmVudFBhcmFtOwoKCgog
ICAgICAgIGlmIChwQUMtPlBubWkuU2lycVVwZGF0ZWRGbGFnID4gMCkgewoKICAgICAgICAgICAg
ICAgIHJldHVybiAoMCk7CiAgICAgICAgfQoKCiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9w
KDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YoRXZlbnRQYXJhbSkpKSA/IF9fY29u
c3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoKGNoYXIgKikmRXZlbnRQYXJhbSkpLCgoMHgwMTAx
MDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKEV2ZW50UGFyYW0pKSkpIDogX19j
b25zdGFudF9jX21lbXNldCgoKChjaGFyICopJkV2ZW50UGFyYW0pKSwoKDB4MDEwMTAxMDFVTCoo
dW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihFdmVudFBhcmFtKSkpKSkgOiAoX19idWlsdGlu
X2NvbnN0YW50X3AoKHNpemVvZihFdmVudFBhcmFtKSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgo
Y2hhciAqKSZFdmVudFBhcmFtKSkpLCgoKDApKSksKCgoc2l6ZW9mKEV2ZW50UGFyYW0pKSkpKSA6
IF9fbWVtc2V0X2dlbmVyaWMoKCgoY2hhciAqKSZFdmVudFBhcmFtKSksKCgwKSksKChzaXplb2Yo
RXZlbnRQYXJhbSkpKSkpKTsKICAgICAgICBpZiAoU2tHZVNpcnFFdmVudChwQUMsIElvQywgNSwg
RXZlbnRQYXJhbSkgPiAwKSB7CgogICAgICAgICAgICAgICAgU2tFcnJvckxvZyhwQUMsICgxTDw8
MyksICg0MDAgKyA0NyksCiAgICAgICAgICAgICAgICAgICAgICAgICJTaXJxVXBkYXRlOiBFdmVu
dCBmdW5jdGlvbiByZXR1cm5zIG5vdCAwIik7CgogICAgICAgICAgICAgICAgcmV0dXJuICgxKTsK
ICAgICAgICB9CgogICAgICAgIHJldHVybiAoMCk7Cn0KIyA2ODgxICJza2dlcG5taS5jIgpzdGF0
aWMgaW50IFJsbXRVcGRhdGUoClNLX0FDICpwQUMsCmNoYXIqIElvQywKdTMyIE5ldEluZGV4KQp7
CiAgICAgICAgU0tfRVZQQVJBIEV2ZW50UGFyYW07CgoKCiAgICAgICAgaWYgKHBBQy0+UG5taS5S
bG10VXBkYXRlZEZsYWcgPiAwKSB7CgogICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKICAgICAg
ICB9CgoKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0
YW50X3AoKHNpemVvZihFdmVudFBhcmFtKSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1z
ZXQoKCgoY2hhciAqKSZFdmVudFBhcmFtKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIp
KDApKSksKChzaXplb2YoRXZlbnRQYXJhbSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoKGNo
YXIgKikmRXZlbnRQYXJhbSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgo
c2l6ZW9mKEV2ZW50UGFyYW0pKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKEV2
ZW50UGFyYW0pKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKChjaGFyICopJkV2ZW50UGFyYW0pKSks
KCgoMCkpKSwoKChzaXplb2YoRXZlbnRQYXJhbSkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKChj
aGFyICopJkV2ZW50UGFyYW0pKSwoKDApKSwoKHNpemVvZihFdmVudFBhcmFtKSkpKSkpOwogICAg
ICAgIEV2ZW50UGFyYW0uUGFyYTMyWzBdID0gTmV0SW5kZXg7CiAgICAgICAgRXZlbnRQYXJhbS5Q
YXJhMzJbMV0gPSAodTMyKS0xOwogICAgICAgIGlmIChTa1JsbXRFdmVudChwQUMsIElvQywgMjAw
NSwgRXZlbnRQYXJhbSkgPiAwKSB7CgogICAgICAgICAgICAgICAgU2tFcnJvckxvZyhwQUMsICgx
TDw8MyksICg0MDAgKyA0OCksCiAgICAgICAgICAgICAgICAgICAgICAgICJSbG10VXBkYXRlOiBF
dmVudCBmdW5jdGlvbiByZXR1cm5zIG5vdCAwIik7CgogICAgICAgICAgICAgICAgcmV0dXJuICgx
KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAoMCk7Cn0KIyA2OTIzICJza2dlcG5taS5jIgpz
dGF0aWMgaW50IE1hY1VwZGF0ZSgKU0tfQUMgKnBBQywKY2hhciogSW9DLAp1bnNpZ25lZCBpbnQg
Rmlyc3RNYWMsCnVuc2lnbmVkIGludCBMYXN0TWFjKQp7CiAgICAgICAgdW5zaWduZWQgaW50IE1h
Y0luZGV4OwoKCgoKCiAgICAgICAgaWYgKHBBQy0+UG5taS5NYWNVcGRhdGVkRmxhZyA+IDApIHsK
CiAgICAgICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgIH0KCgogICAgICAgIGZvciAoTWFj
SW5kZXggPSBGaXJzdE1hYzsgTWFjSW5kZXggPD0gTGFzdE1hYzsgTWFjSW5kZXggKyspIHsKCgoK
CgoKCiAgICAgICAgICAgICAgICBpZiAocEFDLT5HSW5pLkdJTWFjVHlwZSA9PSAwKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHBBQy0+UG5taS5CdWZQb3J0W01hY0luZGV4XSA9IHBBQy0+UG5t
aS5Qb3J0W01hY0luZGV4XTsKICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgaWYg
KHBBQy0+R0luaS5HSUZ1bmMucEZuTWFjVXBkYXRlU3RhdHMocEFDLCBJb0MsIE1hY0luZGV4KSAh
PSAwKSB7CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAgICAg
ICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgwKTsKfQojIDY5NzkgInNrZ2Vwbm1pLmMi
CnN0YXRpYyB1NjQgR2V0U3RhdFZhbCgKU0tfQUMgKnBBQywKY2hhciogSW9DLAp1bnNpZ25lZCBp
bnQgTG9nUG9ydEluZGV4LAp1bnNpZ25lZCBpbnQgU3RhdEluZGV4LAp1MzIgTmV0SW5kZXgpCnsK
ICAgICAgICB1bnNpZ25lZCBpbnQgUGh5c1BvcnRJbmRleDsKICAgICAgICB1bnNpZ25lZCBpbnQg
UGh5c1BvcnRNYXg7CiAgICAgICAgdTY0IFZhbCA9IDA7CgoKICAgICAgICBpZiAocEFDLT5Qbm1p
LkR1YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsKCiAgICAgICAgICAgICAgICBQaHlzUG9ydElu
ZGV4ID0gTmV0SW5kZXg7CiAgICAgICAgICAgICAgICBWYWwgPSBHZXRQaHlzU3RhdFZhbChwQUMs
IElvQywgUGh5c1BvcnRJbmRleCwgU3RhdEluZGV4KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7
CgogICAgICAgICAgICAgICAgaWYgKExvZ1BvcnRJbmRleCA9PSAwKSB7CgogICAgICAgICAgICAg
ICAgICAgICAgICBQaHlzUG9ydE1heCA9IHBBQy0+R0luaS5HSU1hY3NGb3VuZDsKCgogICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKFBoeXNQb3J0SW5kZXggPSAwOyBQaHlzUG9ydEluZGV4IDwg
UGh5c1BvcnRNYXg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGh5c1BvcnRJbmRl
eCArKykgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5Qbm1pLlBv
cnRbUGh5c1BvcnRJbmRleF0uQWN0aXZlRmxhZykgewoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbCArPSBHZXRQaHlzU3RhdFZhbChwQUMsIElvQywgUGh5c1BvcnRJ
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Rh
dEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgICAgICBWYWwgKz0gcEFDLT5Qbm1pLlZp
cnR1YWxDb3VudGVyT2Zmc2V0W1N0YXRJbmRleF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXggPSAo
KHVuc2lnbmVkIGludCkoTG9nUG9ydEluZGV4KSAtIDEpOwogICAgICAgICAgICAgICAgICAgICAg
ICBWYWwgPSBHZXRQaHlzU3RhdFZhbChwQUMsIElvQywgUGh5c1BvcnRJbmRleCwgU3RhdEluZGV4
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIChWYWwpOwp9CiMg
NzA0MSAic2tnZXBubWkuYyIKc3RhdGljIHU2NCBHZXRQaHlzU3RhdFZhbCgKU0tfQUMgKnBBQywK
Y2hhciogSW9DLAp1bnNpZ25lZCBpbnQgUGh5c1BvcnRJbmRleCwKdW5zaWduZWQgaW50IFN0YXRJ
bmRleCkKewogICAgICAgIHU2NCBWYWwgPSAwOwogICAgICAgIHUzMiBMb3dWYWwgPSAwOwogICAg
ICAgIHUzMiBIaWdoVmFsID0gMDsKICAgICAgICB1MTYgV29yZDsKICAgICAgICBpbnQgTWFjVHlw
ZTsKCiAgICAgICAgU0tfUE5NSV9QT1JUICpwUG5taVBydDsKICAgICAgICBTS19HRU1BQ0ZVTkMg
KnBGbk1hYzsKCiAgICAgICAgTWFjVHlwZSA9IHBBQy0+R0luaS5HSU1hY1R5cGU7CgoKICAgICAg
ICBpZiAocEFDLT5HSW5pLkdJTWFjVHlwZSA9PSAwKSB7CiAgICAgICAgICAgICAgICBwUG5taVBy
dCA9ICZwQUMtPlBubWkuQnVmUG9ydFtQaHlzUG9ydEluZGV4XTsKICAgICAgICB9CiAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICBwUG5taVBydCA9ICZwQUMtPlBubWkuUG9ydFtQaHlzUG9y
dEluZGV4XTsKICAgICAgICB9CgogICAgICAgIHBGbk1hYyA9ICZwQUMtPkdJbmkuR0lGdW5jOwoK
ICAgICAgICBzd2l0Y2ggKFN0YXRJbmRleCkgewogICAgICAgIGNhc2UgU0tfUE5NSV9IVFg6CiAg
ICAgICAgY2FzZSBTS19QTk1JX0hSWDoKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAx
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoVmFsKTsKICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAodm9pZClwRm5NYWMtPnBGbk1hY1N0YXRpc3RpYyhwQUMsIElv
QywgUGh5c1BvcnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0QWRkcltTdGF0SW5kZXhdW01h
Y1R5cGVdLlJlZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTG93VmFsKTsKICAgICAgICAgICAgICAgIEhp
Z2hWYWwgPSBwUG5taVBydC0+Q291bnRlckhpZ2hbU3RhdEluZGV4XTsKICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICBjYXNlIFNLX1BOTUlfSFRYX09DVEVUOgogICAgICAgIGNhc2UgU0tf
UE5NSV9IUlhfT0NURVQ6CiAgICAgICAgICAgICAgICAodm9pZClwRm5NYWMtPnBGbk1hY1N0YXRp
c3RpYyhwQUMsIElvQywgUGh5c1BvcnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0QWRkcltT
dGF0SW5kZXhdW01hY1R5cGVdLlJlZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmSGlnaFZhbCk7CiAgICAg
ICAgICAgICAgICAodm9pZClwRm5NYWMtPnBGbk1hY1N0YXRpc3RpYyhwQUMsIElvQywgUGh5c1Bv
cnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0QWRkcltTdGF0SW5kZXggKyAxXVtNYWNUeXBl
XS5SZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJkxvd1ZhbCk7CiAgICAgICAgICAgICAgICBicmVhazsK
CiAgICAgICAgY2FzZSBTS19QTk1JX0hUWF9CVVJTVDoKICAgICAgICBjYXNlIFNLX1BOTUlfSFRY
X0VYQ0VTU19ERUY6CiAgICAgICAgY2FzZSBTS19QTk1JX0hUWF9DQVJSSUVSOgoKICAgICAgICAg
ICAgICAgIGlmIChNYWNUeXBlID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IChWYWwpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICh2b2lkKXBGbk1hYy0+
cEZuTWFjU3RhdGlzdGljKHBBQywgSW9DLCBQaHlzUG9ydEluZGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0YXRBZGRyW1N0YXRJbmRleF1bTWFjVHlwZV0uUmVnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZMb3dW
YWwpOwogICAgICAgICAgICAgICAgSGlnaFZhbCA9IHBQbm1pUHJ0LT5Db3VudGVySGlnaFtTdGF0
SW5kZXhdOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgU0tfUE5NSV9IVFhf
TUFDQzoKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAxKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIFZhbCA9IEdldFBoeXNTdGF0VmFsKHBBQywgSW9DLCBQaHlzUG9ydEluZGV4LCBT
S19QTk1JX0hUWF9QTUFDQyk7CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFZhbCk7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgKHZvaWQpcEZuTWFjLT5wRm5NYWNT
dGF0aXN0aWMocEFDLCBJb0MsIFBoeXNQb3J0SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdEFk
ZHJbU3RhdEluZGV4XVtNYWNUeXBlXS5SZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkxvd1ZhbCk7CiAg
ICAgICAgICAgICAgICBIaWdoVmFsID0gcFBubWlQcnQtPkNvdW50ZXJIaWdoW1N0YXRJbmRleF07
CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBTS19QTk1JX0hUWF9DT0w6CiAg
ICAgICAgY2FzZSBTS19QTk1JX0hSWF9VTkRFUlNJWkU6CgogICAgICAgICAgICAgICAgaWYgKE1h
Y1R5cGUgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFZhbCk7CiAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgKHZvaWQpcEZuTWFjLT5wRm5NYWNTdGF0aXN0
aWMocEFDLCBJb0MsIFBoeXNQb3J0SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdEFkZHJbU3Rh
dEluZGV4XVtNYWNUeXBlXS5SZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkxvd1ZhbCk7CiAgICAgICAg
ICAgICAgICBIaWdoVmFsID0gcFBubWlQcnQtPkNvdW50ZXJIaWdoW1N0YXRJbmRleF07CiAgICAg
ICAgICAgICAgICBicmVhazsKCgoKICAgICAgICBjYXNlIFNLX1BOTUlfSFRYX0RFRkZFUkFMOgoK
ICAgICAgICAgICAgICAgIGlmIChNYWNUeXBlID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIChWYWwpOwogICAgICAgICAgICAgICAgfQoKCgoKCgoKICAgICAgICAgICAgICAg
IGlmICgocEFDLT5HSW5pLkdQW1BoeXNQb3J0SW5kZXhdLlBMaW5rTW9kZVN0YXR1cyA9PSA1KSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAocEFDLT5HSW5pLkdQW1BoeXNQb3J0SW5kZXhdLlBM
aW5rTW9kZVN0YXR1cyA9PSAzKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgTG93VmFsID0g
MDsKICAgICAgICAgICAgICAgICAgICAgICAgSGlnaFZhbCA9IDA7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKXBG
bk1hYy0+cEZuTWFjU3RhdGlzdGljKHBBQywgSW9DLCBQaHlzUG9ydEluZGV4LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU3RhdEFkZHJbU0tfUE5NSV9IVFhfREVGRkVSQUxdW01hY1R5cGVdLlJl
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZMb3dWYWwpOwogICAgICAgICAgICAgICAgICAg
ICAgICBIaWdoVmFsID0gcFBubWlQcnQtPkNvdW50ZXJIaWdoW1N0YXRJbmRleF07CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBTS19QTk1JX0hS
WF9CQURPQ1RFVDoKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAwKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAoVmFsKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICAodm9pZClwRm5NYWMtPnBGbk1hY1N0YXRpc3RpYyhwQUMsIElvQywgUGh5c1BvcnRJ
bmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTdGF0QWRkcltTdGF0SW5kZXhdW01hY1R5cGVdLlJlZywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmSGlnaFZhbCk7CiAgICAgICAgICAgICAgICAodm9pZClwRm5NYWMt
PnBGbk1hY1N0YXRpc3RpYyhwQUMsIElvQywgUGh5c1BvcnRJbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTdGF0QWRkcltTdGF0SW5kZXggKyAxXVtNYWNUeXBlXS5SZWcsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkxvd1ZhbCk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAg
ICAgICAgY2FzZSBTS19QTk1JX0hUWF9PQ1RFVExPVzoKICAgICAgICBjYXNlIFNLX1BOTUlfSFJY
X09DVEVUTE9XOgogICAgICAgIGNhc2UgU0tfUE5NSV9IUlhfQkFET0NURVRMT1c6CiAgICAgICAg
ICAgICAgICByZXR1cm4gKFZhbCk7CgogICAgICAgIGNhc2UgU0tfUE5NSV9IUlhfTE9OR0ZSQU1F
UzoKCiAgICAgICAgICAgICAgICBpZiAoTWFjVHlwZSA9PSAwKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAocFBubWlQcnQtPlN0YXRSeExvbmdGcmFtZUN0cyk7CiAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgKHZvaWQpcEZuTWFjLT5wRm5NYWNTdGF0aXN0aWMocEFD
LCBJb0MsIFBoeXNQb3J0SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdEFkZHJbU3RhdEluZGV4
XVtNYWNUeXBlXS5SZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkxvd1ZhbCk7CiAgICAgICAgICAgICAg
ICBIaWdoVmFsID0gcFBubWlQcnQtPkNvdW50ZXJIaWdoW1N0YXRJbmRleF07CiAgICAgICAgICAg
ICAgICBicmVhazsKCiAgICAgICAgY2FzZSBTS19QTk1JX0hSWF9UT09fTE9ORzoKICAgICAgICAg
ICAgICAgICh2b2lkKXBGbk1hYy0+cEZuTWFjU3RhdGlzdGljKHBBQywgSW9DLCBQaHlzUG9ydElu
ZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0
QWRkcltTdGF0SW5kZXhdW01hY1R5cGVdLlJlZywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZMb3dWYWwpOwogICAgICAgICAg
ICAgICAgSGlnaFZhbCA9IHBQbm1pUHJ0LT5Db3VudGVySGlnaFtTdGF0SW5kZXhdOwoKICAgICAg
ICAgICAgICAgIFZhbCA9ICgoKHU2NClIaWdoVmFsIDw8IDMyKSB8ICh1NjQpTG93VmFsKTsKCiAg
ICAgICAgICAgICAgICBzd2l0Y2ggKE1hY1R5cGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToK
CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbCArPSBwUG5taVBydC0+U3RhdFJ4RnJhbWVUb29M
b25nQ3RzOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBj
YXNlIDA6CgoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbCAtPSBwUG5taVBydC0+U3Rh
dFJ4TG9uZ0ZyYW1lQ3RzOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICBMb3dWYWwgPSAodTMyKVZhbDsKICAgICAgICAgICAg
ICAgIEhpZ2hWYWwgPSAodTMyKShWYWwgPj4gMzIpOwogICAgICAgICAgICAgICAgYnJlYWs7Cgog
ICAgICAgIGNhc2UgU0tfUE5NSV9IUlhfU0hPUlRTOgoKICAgICAgICAgICAgICAgIGlmIChNYWNU
eXBlID09IDEpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoVmFsKTsKICAgICAg
ICAgICAgICAgIH0KCgoKCgoKICAgICAgICAgICAgICAgIGlmIChwQUMtPkdJbmkuR1BbUGh5c1Bv
cnRJbmRleF0uUExpbmtNb2RlU3RhdHVzICE9IDEpIHsKCgogICAgICAgICAgICAgICAgICAgICAg
ICAodm9pZClwRm5NYWMtPnBGbk1hY1N0YXRpc3RpYyhwQUMsIElvQywgUGh5c1BvcnRJbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRBZGRyW1N0YXRJbmRleF1bTWFjVHlwZV0uUmVn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJkxvd1ZhbCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIEhpZ2hWYWwgPSBwUG5taVBydC0+Q291bnRlckhpZ2hbU3RhdEluZGV4XTsKCiAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbCA9ICgoKHU2NClIaWdoVmFsIDw8IDMyKSB8ICh1NjQpTG93VmFs
KTsKICAgICAgICAgICAgICAgICAgICAgICAgVmFsIC09IHBQbm1pUHJ0LT5SeFNob3J0WmVyb01h
cms7CgogICAgICAgICAgICAgICAgICAgICAgICBMb3dWYWwgPSAodTMyKVZhbDsKICAgICAgICAg
ICAgICAgICAgICAgICAgSGlnaFZhbCA9ICh1MzIpKFZhbCA+PiAzMik7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBTS19QTk1JX0hSWF9NQUND
OgogICAgICAgIGNhc2UgU0tfUE5NSV9IUlhfTUFDQ19VTktXTjoKICAgICAgICBjYXNlIFNLX1BO
TUlfSFJYX0JVUlNUOgogICAgICAgIGNhc2UgU0tfUE5NSV9IUlhfTUlTU0VEOgogICAgICAgIGNh
c2UgU0tfUE5NSV9IUlhfRlJBTUlORzoKICAgICAgICBjYXNlIFNLX1BOTUlfSFJYX0NBUlJJRVI6
CiAgICAgICAgY2FzZSBTS19QTk1JX0hSWF9JUkxFTkdUSDoKICAgICAgICBjYXNlIFNLX1BOTUlf
SFJYX1NZTUJPTDoKICAgICAgICBjYXNlIFNLX1BOTUlfSFJYX0NFWFQ6CgogICAgICAgICAgICAg
ICAgaWYgKE1hY1R5cGUgPT0gMSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChW
YWwpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICh2b2lkKXBGbk1hYy0+cEZu
TWFjU3RhdGlzdGljKHBBQywgSW9DLCBQaHlzUG9ydEluZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0
YXRBZGRyW1N0YXRJbmRleF1bTWFjVHlwZV0uUmVnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZMb3dWYWwp
OwogICAgICAgICAgICAgICAgSGlnaFZhbCA9IHBQbm1pUHJ0LT5Db3VudGVySGlnaFtTdGF0SW5k
ZXhdOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgU0tfUE5NSV9IUlhfUE1B
Q0NfRVJSOgoKICAgICAgICAgICAgICAgIGlmIChNYWNUeXBlID09IDEpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIChwUG5taVBydC0+U3RhdFJ4UE1hY2NFcnIpOwogICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgICh2b2lkKXBGbk1hYy0+cEZuTWFjU3RhdGlzdGljKHBB
QywgSW9DLCBQaHlzUG9ydEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRBZGRyW1N0YXRJbmRl
eF1bTWFjVHlwZV0uUmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZMb3dWYWwpOwogICAgICAgICAgICAg
ICAgSGlnaFZhbCA9IHBQbm1pUHJ0LT5Db3VudGVySGlnaFtTdGF0SW5kZXhdOwogICAgICAgICAg
ICAgICAgYnJlYWs7CgoKICAgICAgICBjYXNlIFNLX1BOTUlfSFRYX1NZTkM6CiAgICAgICAgICAg
ICAgICBMb3dWYWwgPSAodTMyKXBQbm1pUHJ0LT5TdGF0U3luY0N0czsKICAgICAgICAgICAgICAg
IEhpZ2hWYWwgPSAodTMyKShwUG5taVBydC0+U3RhdFN5bmNDdHMgPj4gMzIpOwogICAgICAgICAg
ICAgICAgYnJlYWs7CgoKICAgICAgICBjYXNlIFNLX1BOTUlfSFRYX1NZTkNfT0NURVQ6CiAgICAg
ICAgICAgICAgICBMb3dWYWwgPSAodTMyKXBQbm1pUHJ0LT5TdGF0U3luY09jdGV0c0N0czsKICAg
ICAgICAgICAgICAgIEhpZ2hWYWwgPSAodTMyKShwUG5taVBydC0+U3RhdFN5bmNPY3RldHNDdHMg
Pj4gMzIpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgU0tfUE5NSV9IUlhf
RkNTOgoKCgoKICAgICAgICAgICAgICAgIGlmIChwQUMtPkdJbmkuR1BbUGh5c1BvcnRJbmRleF0u
UGh5VHlwZSA9PSAxKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocEFDLT5HSW5pLkdQ
W1BoeXNQb3J0SW5kZXhdLlBTdGF0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsgdTE2IE1tdTsgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKCgoKChJ
b0MpKSkrKCgoMHgyMDAwICsgKCgoUGh5c1BvcnRJbmRleCkpKSAqICgweDMwMDAgLSAweDIwMDAp
KSB8ICgoKDB4MDAzNCkpIDw8IDEpKSkpKSkgPSAoKCgoMHgxMikgfCAoJnBBQy0+R0luaS5HUFtQ
aHlzUG9ydEluZGV4XSktPlBoeUFkZHIpKSkpOyAoKigoKCZXb3JkKSkpID0gKCoodm9sYXRpbGUg
dW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKCgoKElvQykpKSsoKCgweDIwMDAgKyAoKChQaHlz
UG9ydEluZGV4KSkpICogKDB4MzAwMCAtIDB4MjAwMCkpIHwgKCgoMHgwMDM4KSkgPDwgMSkpKSkp
KSk7IGlmICgoJnBBQy0+R0luaS5HUFtQaHlzUG9ydEluZGV4XSktPlBoeVR5cGUgIT0gMCkgeyBk
byB7ICgqKCgmTW11KSkgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKiko
KCgoSW9DKSkpKygoKDB4MjAwMCArICgoKFBoeXNQb3J0SW5kZXgpKSkgKiAoMHgzMDAwIC0gMHgy
MDAwKSkgfCAoKCgweDAwMDApKSA8PCAxKSkpKSkpKTsgfSB3aGlsZSAoKE1tdSAmICgxPDwxMikp
ID09IDApOyAoKigoKCZXb3JkKSkpID0gKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2
b2lkICopKCgoKElvQykpKSsoKCgweDIwMDAgKyAoKChQaHlzUG9ydEluZGV4KSkpICogKDB4MzAw
MCAtIDB4MjAwMCkpIHwgKCgoMHgwMDM4KSkgPDwgMSkpKSkpKSk7IH0gfTsKCgoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMb3dWYWwgPSBXb3JkOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEhpZ2hWYWwgPSBwUG5taVBydC0+Q291bnRl
ckhpZ2hbU3RhdEluZGV4XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAodm9pZClwRm5NYWMtPnBGbk1hY1N0YXRpc3RpYyhw
QUMsIElvQywgUGh5c1BvcnRJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRBZGRy
W1N0YXRJbmRleF1bTWFjVHlwZV0uUmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkxvd1Zh
bCk7CiAgICAgICAgICAgICAgICAgICAgICAgIEhpZ2hWYWwgPSBwUG5taVBydC0+Q291bnRlckhp
Z2hbU3RhdEluZGV4XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoK
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKHZvaWQpcEZuTWFjLT5wRm5NYWNTdGF0
aXN0aWMocEFDLCBJb0MsIFBoeXNQb3J0SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdEFkZHJb
U3RhdEluZGV4XVtNYWNUeXBlXS5SZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkxvd1ZhbCk7CiAgICAg
ICAgICAgICAgICBIaWdoVmFsID0gcFBubWlQcnQtPkNvdW50ZXJIaWdoW1N0YXRJbmRleF07CiAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIFZhbCA9ICgoKHU2NClIaWdo
VmFsIDw8IDMyKSB8ICh1NjQpTG93VmFsKTsKCgogICAgICAgIFZhbCArPSBwUG5taVBydC0+Q291
bnRlck9mZnNldFtTdGF0SW5kZXhdOwoKICAgICAgICByZXR1cm4gKFZhbCk7Cn0KIyA3MzQ5ICJz
a2dlcG5taS5jIgpzdGF0aWMgdm9pZCBSZXNldENvdW50ZXIoClNLX0FDICpwQUMsCmNoYXIqIElv
QywKdTMyIE5ldEluZGV4KQp7CiAgICAgICAgdW5zaWduZWQgaW50IFBoeXNQb3J0SW5kZXg7CiAg
ICAgICAgU0tfRVZQQVJBIEV2ZW50UGFyYW07CgoKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50
X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihFdmVudFBhcmFtKSkpID8gX19j
b25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCgoY2hhciAqKSZFdmVudFBhcmFtKSksKCgweDAx
MDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YoRXZlbnRQYXJhbSkpKSkgOiBf
X2NvbnN0YW50X2NfbWVtc2V0KCgoKGNoYXIgKikmRXZlbnRQYXJhbSkpLCgoMHgwMTAxMDEwMVVM
Kih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKEV2ZW50UGFyYW0pKSkpKSA6IChfX2J1aWx0
aW5fY29uc3RhbnRfcCgoc2l6ZW9mKEV2ZW50UGFyYW0pKSkgPyBfX21lbXNldF9nZW5lcmljKCgo
KChjaGFyICopJkV2ZW50UGFyYW0pKSksKCgoMCkpKSwoKChzaXplb2YoRXZlbnRQYXJhbSkpKSkp
IDogX19tZW1zZXRfZ2VuZXJpYygoKChjaGFyICopJkV2ZW50UGFyYW0pKSwoKDApKSwoKHNpemVv
ZihFdmVudFBhcmFtKSkpKSkpOwoKCiAgICAgICAgU2tFdmVudFF1ZXVlKHBBQywgMywgMywgRXZl
bnRQYXJhbSk7CgoKICAgICAgICBFdmVudFBhcmFtLlBhcmEzMlswXSA9IE5ldEluZGV4OwogICAg
ICAgIEV2ZW50UGFyYW0uUGFyYTMyWzFdID0gKHUzMiktMTsKICAgICAgICBTa0V2ZW50UXVldWUo
cEFDLCAyLCAyMDA0LCBFdmVudFBhcmFtKTsKICAgICAgICBFdmVudFBhcmFtLlBhcmEzMlsxXSA9
IDA7CgoKICAgICAgICBTa0V2ZW50UXVldWUocEFDLCA2LCA0LCBFdmVudFBhcmFtKTsKCgoKICAg
ICAgICBFdmVudFBhcmFtLlBhcmEzMlswXSA9IE5ldEluZGV4OwogICAgICAgIEV2ZW50UGFyYW0u
UGFyYTMyWzFdID0gKHUzMiktMTsKICAgICAgICBTa0V2ZW50UXVldWUocEFDLCA1LCAxLAogICAg
ICAgICAgICAgICAgRXZlbnRQYXJhbSk7CgoKCiAgICAgICAgZm9yIChQaHlzUG9ydEluZGV4ID0g
MDsgUGh5c1BvcnRJbmRleCA8CiAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KXBBQy0+R0lu
aS5HSU1hY3NGb3VuZDsgUGh5c1BvcnRJbmRleCArKykgewoKICAgICAgICAgICAgICAgICh2b2lk
KXBBQy0+R0luaS5HSUZ1bmMucEZuTWFjUmVzZXRDb3VudGVyKHBBQywgSW9DLCBQaHlzUG9ydElu
ZGV4KTsKCiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWls
dGluX2NvbnN0YW50X3AoKHNpemVvZihwQUMtPlBubWkuUG9ydFtQaHlzUG9ydEluZGV4XS5Db3Vu
dGVySGlnaCkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoKGNoYXIgKikmcEFD
LT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uQ291bnRlckhpZ2gpKSwoKDB4MDEwMTAxMDFVTCoo
dW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihwQUMtPlBubWkuUG9ydFtQaHlzUG9ydEluZGV4
XS5Db3VudGVySGlnaCkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoKGNoYXIgKikmcEFDLT5Q
bm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uQ291bnRlckhpZ2gpKSwoKDB4MDEwMTAxMDFVTCoodW5z
aWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihwQUMtPlBubWkuUG9ydFtQaHlzUG9ydEluZGV4XS5D
b3VudGVySGlnaCkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YocEFDLT5Qbm1p
LlBvcnRbUGh5c1BvcnRJbmRleF0uQ291bnRlckhpZ2gpKSkgPyBfX21lbXNldF9nZW5lcmljKCgo
KChjaGFyICopJnBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLkNvdW50ZXJIaWdoKSkpLCgo
KDApKSksKCgoc2l6ZW9mKHBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLkNvdW50ZXJIaWdo
KSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoKGNoYXIgKikmcEFDLT5Qbm1pLlBvcnRbUGh5c1Bv
cnRJbmRleF0uQ291bnRlckhpZ2gpKSwoKDApKSwoKHNpemVvZihwQUMtPlBubWkuUG9ydFtQaHlz
UG9ydEluZGV4XS5Db3VudGVySGlnaCkpKSkpKTsKCiAgICAgICAgICAgICAgICAoX19idWlsdGlu
X2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihwQUMtPlBubWku
UG9ydFsgUGh5c1BvcnRJbmRleF0uQ291bnRlck9mZnNldCkpKSA/IF9fY29uc3RhbnRfY19hbmRf
Y291bnRfbWVtc2V0KCgoKGNoYXIgKikmcEFDLT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uIENv
dW50ZXJPZmZzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVv
ZihwQUMtPlBubWkuUG9ydFsgUGh5c1BvcnRJbmRleF0uQ291bnRlck9mZnNldCkpKSkgOiBfX2Nv
bnN0YW50X2NfbWVtc2V0KCgoKGNoYXIgKikmcEFDLT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0u
IENvdW50ZXJPZmZzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNp
emVvZihwQUMtPlBubWkuUG9ydFsgUGh5c1BvcnRJbmRleF0uQ291bnRlck9mZnNldCkpKSkpIDog
KF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YocEFDLT5Qbm1pLlBvcnRbIFBoeXNQb3J0SW5k
ZXhdLkNvdW50ZXJPZmZzZXQpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKChjaGFyICopJnBBQy0+
UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLiBDb3VudGVyT2Zmc2V0KSkpLCgoKDApKSksKCgoc2l6
ZW9mKHBBQy0+UG5taS5Qb3J0WyBQaHlzUG9ydEluZGV4XS5Db3VudGVyT2Zmc2V0KSkpKSkgOiBf
X21lbXNldF9nZW5lcmljKCgoKGNoYXIgKikmcEFDLT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0u
IENvdW50ZXJPZmZzZXQpKSwoKDApKSwoKHNpemVvZihwQUMtPlBubWkuUG9ydFsgUGh5c1BvcnRJ
bmRleF0uQ291bnRlck9mZnNldCkpKSkpKTsKCgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9j
b25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YocEFDLT5Qbm1pLlBv
cnRbUGh5c1BvcnRJbmRleF0uU3RhdFN5bmNDdHMpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50
X21lbXNldCgoKChjaGFyICopJnBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLlN0YXRTeW5j
Q3RzKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YocEFDLT5Q
bm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uU3RhdFN5bmNDdHMpKSkpIDogX19jb25zdGFudF9jX21l
bXNldCgoKChjaGFyICopJnBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLlN0YXRTeW5jQ3Rz
KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2YocEFDLT5Qbm1p
LlBvcnRbUGh5c1BvcnRJbmRleF0uU3RhdFN5bmNDdHMpKSkpKSA6IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgoc2l6ZW9mKHBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLlN0YXRTeW5jQ3RzKSkp
ID8gX19tZW1zZXRfZ2VuZXJpYygoKCgoY2hhciAqKSZwQUMtPlBubWkuUG9ydFtQaHlzUG9ydElu
ZGV4XS5TdGF0U3luY0N0cykpKSwoKCgwKSkpLCgoKHNpemVvZihwQUMtPlBubWkuUG9ydFtQaHlz
UG9ydEluZGV4XS5TdGF0U3luY0N0cykpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKChjaGFyICop
JnBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLlN0YXRTeW5jQ3RzKSksKCgwKSksKChzaXpl
b2YocEFDLT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uU3RhdFN5bmNDdHMpKSkpKSk7CgogICAg
ICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFu
dF9wKChzaXplb2YocEFDLT5Qbm1pLlBvcnRbIFBoeXNQb3J0SW5kZXhdLlN0YXRTeW5jT2N0ZXRz
Q3RzKSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCgoY2hhciAqKSZwQUMtPlBu
bWkuUG9ydFtQaHlzUG9ydEluZGV4XS4gU3RhdFN5bmNPY3RldHNDdHMpKSwoKDB4MDEwMTAxMDFV
TCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihwQUMtPlBubWkuUG9ydFsgUGh5c1BvcnRJ
bmRleF0uU3RhdFN5bmNPY3RldHNDdHMpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKChjaGFy
ICopJnBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLiBTdGF0U3luY09jdGV0c0N0cykpLCgo
MHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKHBBQy0+UG5taS5Qb3J0
WyBQaHlzUG9ydEluZGV4XS5TdGF0U3luY09jdGV0c0N0cykpKSkpIDogKF9fYnVpbHRpbl9jb25z
dGFudF9wKChzaXplb2YocEFDLT5Qbm1pLlBvcnRbIFBoeXNQb3J0SW5kZXhdLlN0YXRTeW5jT2N0
ZXRzQ3RzKSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgoY2hhciAqKSZwQUMtPlBubWkuUG9ydFtQ
aHlzUG9ydEluZGV4XS4gU3RhdFN5bmNPY3RldHNDdHMpKSksKCgoMCkpKSwoKChzaXplb2YocEFD
LT5Qbm1pLlBvcnRbIFBoeXNQb3J0SW5kZXhdLlN0YXRTeW5jT2N0ZXRzQ3RzKSkpKSkgOiBfX21l
bXNldF9nZW5lcmljKCgoKGNoYXIgKikmcEFDLT5Qbm1pLlBvcnRbUGh5c1BvcnRJbmRleF0uIFN0
YXRTeW5jT2N0ZXRzQ3RzKSksKCgwKSksKChzaXplb2YocEFDLT5Qbm1pLlBvcnRbIFBoeXNQb3J0
SW5kZXhdLlN0YXRTeW5jT2N0ZXRzQ3RzKSkpKSkpOwoKCiAgICAgICAgICAgICAgICAoX19idWls
dGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihwQUMtPlBu
bWkuUG9ydFsgUGh5c1BvcnRJbmRleF0uU3RhdFJ4TG9uZ0ZyYW1lQ3RzKSkpID8gX19jb25zdGFu
dF9jX2FuZF9jb3VudF9tZW1zZXQoKCgoY2hhciAqKSZwQUMtPlBubWkuUG9ydFtQaHlzUG9ydElu
ZGV4XS4gU3RhdFJ4TG9uZ0ZyYW1lQ3RzKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIp
KDApKSksKChzaXplb2YocEFDLT5Qbm1pLlBvcnRbIFBoeXNQb3J0SW5kZXhdLlN0YXRSeExvbmdG
cmFtZUN0cykpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoKGNoYXIgKikmcEFDLT5Qbm1pLlBv
cnRbUGh5c1BvcnRJbmRleF0uIFN0YXRSeExvbmdGcmFtZUN0cykpLCgoMHgwMTAxMDEwMVVMKih1
bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKHBBQy0+UG5taS5Qb3J0WyBQaHlzUG9ydEluZGV4
XS5TdGF0UnhMb25nRnJhbWVDdHMpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9m
KHBBQy0+UG5taS5Qb3J0WyBQaHlzUG9ydEluZGV4XS5TdGF0UnhMb25nRnJhbWVDdHMpKSkgPyBf
X21lbXNldF9nZW5lcmljKCgoKChjaGFyICopJnBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhd
LiBTdGF0UnhMb25nRnJhbWVDdHMpKSksKCgoMCkpKSwoKChzaXplb2YocEFDLT5Qbm1pLlBvcnRb
IFBoeXNQb3J0SW5kZXhdLlN0YXRSeExvbmdGcmFtZUN0cykpKSkpIDogX19tZW1zZXRfZ2VuZXJp
YygoKChjaGFyICopJnBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLiBTdGF0UnhMb25nRnJh
bWVDdHMpKSwoKDApKSwoKHNpemVvZihwQUMtPlBubWkuUG9ydFsgUGh5c1BvcnRJbmRleF0uU3Rh
dFJ4TG9uZ0ZyYW1lQ3RzKSkpKSkpOwoKCiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0
YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihwQUMtPlBubWkuUG9ydFsg
UGh5c1BvcnRJbmRleF0uU3RhdFJ4RnJhbWVUb29Mb25nQ3RzKSkpID8gX19jb25zdGFudF9jX2Fu
ZF9jb3VudF9tZW1zZXQoKCgoY2hhciAqKSZwQUMtPlBubWkuUG9ydFtQaHlzUG9ydEluZGV4XS4g
U3RhdFJ4RnJhbWVUb29Mb25nQ3RzKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDAp
KSksKChzaXplb2YocEFDLT5Qbm1pLlBvcnRbIFBoeXNQb3J0SW5kZXhdLlN0YXRSeEZyYW1lVG9v
TG9uZ0N0cykpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoKGNoYXIgKikmcEFDLT5Qbm1pLlBv
cnRbUGh5c1BvcnRJbmRleF0uIFN0YXRSeEZyYW1lVG9vTG9uZ0N0cykpLCgoMHgwMTAxMDEwMVVM
Kih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKHBBQy0+UG5taS5Qb3J0WyBQaHlzUG9ydElu
ZGV4XS5TdGF0UnhGcmFtZVRvb0xvbmdDdHMpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgo
c2l6ZW9mKHBBQy0+UG5taS5Qb3J0WyBQaHlzUG9ydEluZGV4XS5TdGF0UnhGcmFtZVRvb0xvbmdD
dHMpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKChjaGFyICopJnBBQy0+UG5taS5Qb3J0W1BoeXNQ
b3J0SW5kZXhdLiBTdGF0UnhGcmFtZVRvb0xvbmdDdHMpKSksKCgoMCkpKSwoKChzaXplb2YocEFD
LT5Qbm1pLlBvcnRbIFBoeXNQb3J0SW5kZXhdLlN0YXRSeEZyYW1lVG9vTG9uZ0N0cykpKSkpIDog
X19tZW1zZXRfZ2VuZXJpYygoKChjaGFyICopJnBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhd
LiBTdGF0UnhGcmFtZVRvb0xvbmdDdHMpKSwoKDApKSwoKHNpemVvZihwQUMtPlBubWkuUG9ydFsg
UGh5c1BvcnRJbmRleF0uU3RhdFJ4RnJhbWVUb29Mb25nQ3RzKSkpKSkpOwoKCiAgICAgICAgICAg
ICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNp
emVvZihwQUMtPlBubWkuUG9ydFsgUGh5c1BvcnRJbmRleF0uU3RhdFJ4UE1hY2NFcnIpKSkgPyBf
X2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKChjaGFyICopJnBBQy0+UG5taS5Qb3J0W1Bo
eXNQb3J0SW5kZXhdLiBTdGF0UnhQTWFjY0VycikpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBj
aGFyKSgwKSkpLCgoc2l6ZW9mKHBBQy0+UG5taS5Qb3J0WyBQaHlzUG9ydEluZGV4XS5TdGF0UnhQ
TWFjY0VycikpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoKGNoYXIgKikmcEFDLT5Qbm1pLlBv
cnRbUGh5c1BvcnRJbmRleF0uIFN0YXRSeFBNYWNjRXJyKSksKCgweDAxMDEwMTAxVUwqKHVuc2ln
bmVkIGNoYXIpKDApKSksKChzaXplb2YocEFDLT5Qbm1pLlBvcnRbIFBoeXNQb3J0SW5kZXhdLlN0
YXRSeFBNYWNjRXJyKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihwQUMtPlBu
bWkuUG9ydFsgUGh5c1BvcnRJbmRleF0uU3RhdFJ4UE1hY2NFcnIpKSkgPyBfX21lbXNldF9nZW5l
cmljKCgoKChjaGFyICopJnBBQy0+UG5taS5Qb3J0W1BoeXNQb3J0SW5kZXhdLiBTdGF0UnhQTWFj
Y0VycikpKSwoKCgwKSkpLCgoKHNpemVvZihwQUMtPlBubWkuUG9ydFsgUGh5c1BvcnRJbmRleF0u
U3RhdFJ4UE1hY2NFcnIpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgoY2hhciAqKSZwQUMtPlBu
bWkuUG9ydFtQaHlzUG9ydEluZGV4XS4gU3RhdFJ4UE1hY2NFcnIpKSwoKDApKSwoKHNpemVvZihw
QUMtPlBubWkuUG9ydFsgUGh5c1BvcnRJbmRleF0uU3RhdFJ4UE1hY2NFcnIpKSkpKSk7CgoKICAg
ICAgICB9CgoKCgogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCgoc2l6ZW9mKHBBQy0+UG5taS5WaXJ0dWFsQ291bnRlck9mZnNldCkpKSA/IF9f
Y29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoKGNoYXIgKikmcEFDLT5Qbm1pLlZpcnR1YWxD
b3VudGVyT2Zmc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXpl
b2YocEFDLT5Qbm1pLlZpcnR1YWxDb3VudGVyT2Zmc2V0KSkpKSA6IF9fY29uc3RhbnRfY19tZW1z
ZXQoKCgoY2hhciAqKSZwQUMtPlBubWkuVmlydHVhbENvdW50ZXJPZmZzZXQpKSwoKDB4MDEwMTAx
MDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihwQUMtPlBubWkuVmlydHVhbENvdW50
ZXJPZmZzZXQpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHBBQy0+UG5taS5W
aXJ0dWFsQ291bnRlck9mZnNldCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoKGNoYXIgKikmcEFD
LT5Qbm1pLlZpcnR1YWxDb3VudGVyT2Zmc2V0KSkpLCgoKDApKSksKCgoc2l6ZW9mKHBBQy0+UG5t
aS5WaXJ0dWFsQ291bnRlck9mZnNldCkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKChjaGFyICop
JnBBQy0+UG5taS5WaXJ0dWFsQ291bnRlck9mZnNldCkpLCgoMCkpLCgoc2l6ZW9mKHBBQy0+UG5t
aS5WaXJ0dWFsQ291bnRlck9mZnNldCkpKSkpKTsKCiAgICAgICAgcEFDLT5Qbm1pLlJsbXRDaGFu
Z2VDdHMgPSAwOwogICAgICAgIHBBQy0+UG5taS5SbG10Q2hhbmdlVGltZSA9IDA7CiAgICAgICAg
KF9fYnVpbHRpbl9jb25zdGFudF9wKDApID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2Yo
cEFDLT5Qbm1pLlJsbXRDaGFuZ2VFc3RpbWF0ZS5Fc3RWYWx1ZSkpKSA/IF9fY29uc3RhbnRfY19h
bmRfY291bnRfbWVtc2V0KCgoKGNoYXIgKikmcEFDLT5Qbm1pLlJsbXRDaGFuZ2VFc3RpbWF0ZS5F
c3RWYWx1ZVswXSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9m
KHBBQy0+UG5taS5SbG10Q2hhbmdlRXN0aW1hdGUuRXN0VmFsdWUpKSkpIDogX19jb25zdGFudF9j
X21lbXNldCgoKChjaGFyICopJnBBQy0+UG5taS5SbG10Q2hhbmdlRXN0aW1hdGUuRXN0VmFsdWVb
MF0pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihwQUMtPlBu
bWkuUmxtdENoYW5nZUVzdGltYXRlLkVzdFZhbHVlKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50
X3AoKHNpemVvZihwQUMtPlBubWkuUmxtdENoYW5nZUVzdGltYXRlLkVzdFZhbHVlKSkpID8gX19t
ZW1zZXRfZ2VuZXJpYygoKCgoY2hhciAqKSZwQUMtPlBubWkuUmxtdENoYW5nZUVzdGltYXRlLkVz
dFZhbHVlWzBdKSkpLCgoKDApKSksKCgoc2l6ZW9mKHBBQy0+UG5taS5SbG10Q2hhbmdlRXN0aW1h
dGUuRXN0VmFsdWUpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgoY2hhciAqKSZwQUMtPlBubWku
UmxtdENoYW5nZUVzdGltYXRlLkVzdFZhbHVlWzBdKSksKCgwKSksKChzaXplb2YocEFDLT5Qbm1p
LlJsbXRDaGFuZ2VFc3RpbWF0ZS5Fc3RWYWx1ZSkpKSkpKTsKCiAgICAgICAgcEFDLT5Qbm1pLlJs
bXRDaGFuZ2VFc3RpbWF0ZS5Fc3RWYWx1ZUluZGV4ID0gMDsKICAgICAgICBwQUMtPlBubWkuUmxt
dENoYW5nZUVzdGltYXRlLkVzdGltYXRlID0gMDsKICAgICAgICBwQUMtPlBubWkuUG9ydFtOZXRJ
bmRleF0uVHhTd1F1ZXVlTWF4ID0gMDsKICAgICAgICBwQUMtPlBubWkuUG9ydFtOZXRJbmRleF0u
VHhSZXRyeUN0cyA9IDA7CiAgICAgICAgcEFDLT5Qbm1pLlBvcnRbTmV0SW5kZXhdLlJ4SW50ckN0
cyA9IDA7CiAgICAgICAgcEFDLT5Qbm1pLlBvcnRbTmV0SW5kZXhdLlR4SW50ckN0cyA9IDA7CiAg
ICAgICAgcEFDLT5Qbm1pLlBvcnRbTmV0SW5kZXhdLlJ4Tm9CdWZDdHMgPSAwOwogICAgICAgIHBB
Qy0+UG5taS5Qb3J0W05ldEluZGV4XS5UeE5vQnVmQ3RzID0gMDsKICAgICAgICBwQUMtPlBubWku
UG9ydFtOZXRJbmRleF0uVHhVc2VkRGVzY3JObyA9IDA7CiAgICAgICAgcEFDLT5Qbm1pLlBvcnRb
TmV0SW5kZXhdLlJ4RGVsaXZlcmVkQ3RzID0gMDsKICAgICAgICBwQUMtPlBubWkuUG9ydFtOZXRJ
bmRleF0uUnhPY3RldHNEZWxpdmVyZWRDdHMgPSAwOwogICAgICAgIHBBQy0+UG5taS5Qb3J0W05l
dEluZGV4XS5FcnJSZWNvdmVyeUN0cyA9IDA7Cn0KIyA3NDQ1ICJza2dlcG5taS5jIgpzdGF0aWMg
Y2hhciogR2V0VHJhcEVudHJ5KApTS19BQyAqcEFDLAp1MzIgVHJhcElkLAp1bnNpZ25lZCBpbnQg
U2l6ZSkKewogICAgICAgIHVuc2lnbmVkIGludCBCdWZQYWQgPSBwQUMtPlBubWkuVHJhcEJ1ZlBh
ZDsKICAgICAgICB1bnNpZ25lZCBpbnQgQnVmRnJlZSA9IHBBQy0+UG5taS5UcmFwQnVmRnJlZTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgQmVnID0gcEFDLT5Qbm1pLlRyYXBRdWV1ZUJlZzsKICAgICAg
ICB1bnNpZ25lZCBpbnQgRW5kID0gcEFDLT5Qbm1pLlRyYXBRdWV1ZUVuZDsKICAgICAgICBjaGFy
ICpwQnVmID0gJnBBQy0+UG5taS5UcmFwQnVmWzBdOwogICAgICAgIGludCBXcmFwOwogICAgICAg
IHVuc2lnbmVkIGludCBOZWVkZWRTcGFjZTsKICAgICAgICB1bnNpZ25lZCBpbnQgRW50cnlTaXpl
OwogICAgICAgIHUzMiBWYWwzMjsKICAgICAgICB1NjQgVmFsNjQ7CgoKCiAgICAgICAgU2l6ZSAr
KzsKCgoKICAgICAgICBpZiAoQmVnID49IFNpemUpIHsKCiAgICAgICAgICAgICAgICBOZWVkZWRT
cGFjZSA9IFNpemU7CiAgICAgICAgICAgICAgICBXcmFwID0gMDsKICAgICAgICB9CiAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICBOZWVkZWRTcGFjZSA9IEJlZyArIFNpemU7CiAgICAgICAg
ICAgICAgICBXcmFwID0gKCEwKTsKICAgICAgICB9CgoKCgoKCgogICAgICAgIHdoaWxlIChCdWZG
cmVlIDwgTmVlZGVkU3BhY2UgKyAxKSB7CgogICAgICAgICAgICAgICAgaWYgKEVuZCA9PSAwKSB7
CgogICAgICAgICAgICAgICAgICAgICAgICBFbmQgPSA1MTI7CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgRW50cnlTaXplID0gKHVuc2lnbmVkIGludCkqKCh1bnNpZ25lZCBjaGFy
ICopcEJ1ZiArIEVuZCAtIDEpOwogICAgICAgICAgICAgICAgQnVmRnJlZSArPSBFbnRyeVNpemU7
CiAgICAgICAgICAgICAgICBFbmQgLT0gRW50cnlTaXplOwoKCgogICAgICAgICAgICAgICAgaWYg
KEVuZCA9PSBCdWZQYWQpIHsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgQnVmRnJlZSArPSBF
bmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIEVuZCA9IDA7CiAgICAgICAgICAgICAgICAgICAg
ICAgIEJ1ZlBhZCA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKCgoKCiAgICAgICAg
aWYgKFdyYXApIHsKCiAgICAgICAgICAgICAgICBCdWZQYWQgPSBCZWc7CiAgICAgICAgICAgICAg
ICBCZWcgPSA1MTIgLSBTaXplOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgIEJlZyA9IEJlZyAtIFNpemU7CiAgICAgICAgfQogICAgICAgIEJ1ZkZyZWUgLT0gTmVlZGVk
U3BhY2U7CgoKICAgICAgICBwQUMtPlBubWkuVHJhcFF1ZXVlQmVnID0gQmVnOwogICAgICAgIHBB
Qy0+UG5taS5UcmFwUXVldWVFbmQgPSBFbmQ7CiAgICAgICAgcEFDLT5Qbm1pLlRyYXBCdWZQYWQg
PSBCdWZQYWQ7CiAgICAgICAgcEFDLT5Qbm1pLlRyYXBCdWZGcmVlID0gQnVmRnJlZTsKCgogICAg
ICAgICoocEJ1ZiArIEJlZyArIFNpemUgLSAxKSA9IChjaGFyKVNpemU7CiAgICAgICAgKihwQnVm
ICsgQmVnKSA9IChjaGFyKVNpemU7CiAgICAgICAgVmFsMzIgPSAocEFDLT5Qbm1pLlRyYXBVbmlx
dWUpICsrOwogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29uc3RhbnRfbWVt
Y3B5KCgoY2hhciopKHBCdWYgKyBCZWcgKyAxKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9f
bWVtY3B5KCgoY2hhciopKHBCdWYgKyBCZWcgKyAxKSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7
CiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1jcHkoKChj
aGFyKikocEJ1ZiArIEJlZyArIDEgKyBzaXplb2YodTMyKSkpLCgoY2hhciopJihUcmFwSWQpKSwo
NCkpIDogX19tZW1jcHkoKChjaGFyKikocEJ1ZiArIEJlZyArIDEgKyBzaXplb2YodTMyKSkpLCgo
Y2hhciopJihUcmFwSWQpKSwoNCkpKTsKICAgICAgICBWYWw2NCA9IChTa09zR2V0VGltZShwQUMp
KTsKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoOCkgPyBfX2NvbnN0YW50X21lbWNweSgo
KGNoYXIqKShwQnVmICsgQmVnICsgMSArIDIgKiBzaXplb2YodTMyKSkpLCgoY2hhciopJihWYWw2
NCkpLCg4KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmICsgQmVnICsgMSArIDIgKiBzaXplb2Yo
dTMyKSkpLCgoY2hhciopJihWYWw2NCkpLCg4KSkpOwoKICAgICAgICByZXR1cm4gKHBCdWYgKyBC
ZWcpOwp9CiMgNzU1MCAic2tnZXBubWkuYyIKc3RhdGljIHZvaWQgQ29weVRyYXBRdWV1ZSgKU0tf
QUMgKnBBQywKY2hhciAqcERzdEJ1ZikKewogICAgICAgIHVuc2lnbmVkIGludCBCdWZQYWQgPSBw
QUMtPlBubWkuVHJhcEJ1ZlBhZDsKICAgICAgICB1bnNpZ25lZCBpbnQgVHJhcCA9IHBBQy0+UG5t
aS5UcmFwUXVldWVCZWc7CiAgICAgICAgdW5zaWduZWQgaW50IEVuZCA9IHBBQy0+UG5taS5UcmFw
UXVldWVFbmQ7CiAgICAgICAgY2hhciAqcEJ1ZiA9ICZwQUMtPlBubWkuVHJhcEJ1ZlswXTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgTGVuOwogICAgICAgIHVuc2lnbmVkIGludCBEc3RPZmYgPSAwOwoK
CiAgICAgICAgd2hpbGUgKFRyYXAgIT0gRW5kKSB7CgogICAgICAgICAgICAgICAgTGVuID0gKHVu
c2lnbmVkIGludCkqKHBCdWYgKyBUcmFwKTsKCgoKCgogICAgICAgICAgICAgICAgKihwRHN0QnVm
ICsgRHN0T2ZmKSA9IChjaGFyKShMZW4gLSAxKTsKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5f
Y29uc3RhbnRfcChMZW4gLSAyKSA/IF9fY29uc3RhbnRfbWVtY3B5KChwRHN0QnVmICsgRHN0T2Zm
ICsgMSksKHBCdWYgKyBUcmFwICsgMSksKExlbiAtIDIpKSA6IF9fbWVtY3B5KChwRHN0QnVmICsg
RHN0T2ZmICsgMSksKHBCdWYgKyBUcmFwICsgMSksKExlbiAtIDIpKSk7CiAgICAgICAgICAgICAg
ICBEc3RPZmYgKz0gTGVuIC0gMTsKCiAgICAgICAgICAgICAgICBUcmFwICs9IExlbjsKICAgICAg
ICAgICAgICAgIGlmIChUcmFwID09IDUxMikgewoKICAgICAgICAgICAgICAgICAgICAgICAgVHJh
cCA9IEJ1ZlBhZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9Cn0KIyA3NTkzICJza2dlcG5t
aS5jIgpzdGF0aWMgdm9pZCBHZXRUcmFwUXVldWVMZW4oClNLX0FDICpwQUMsCnVuc2lnbmVkIGlu
dCAqcExlbiwKdW5zaWduZWQgaW50ICpwRW50cmllcykKewogICAgICAgIHVuc2lnbmVkIGludCBC
dWZQYWQgPSBwQUMtPlBubWkuVHJhcEJ1ZlBhZDsKICAgICAgICB1bnNpZ25lZCBpbnQgVHJhcCA9
IHBBQy0+UG5taS5UcmFwUXVldWVCZWc7CiAgICAgICAgdW5zaWduZWQgaW50IEVuZCA9IHBBQy0+
UG5taS5UcmFwUXVldWVFbmQ7CiAgICAgICAgY2hhciAqcEJ1ZiA9ICZwQUMtPlBubWkuVHJhcEJ1
ZlswXTsKICAgICAgICB1bnNpZ25lZCBpbnQgTGVuOwogICAgICAgIHVuc2lnbmVkIGludCBFbnRy
aWVzID0gMDsKICAgICAgICB1bnNpZ25lZCBpbnQgVG90YWxMZW4gPSAwOwoKCiAgICAgICAgd2hp
bGUgKFRyYXAgIT0gRW5kKSB7CgogICAgICAgICAgICAgICAgTGVuID0gKHVuc2lnbmVkIGludCkq
KHBCdWYgKyBUcmFwKTsKICAgICAgICAgICAgICAgIFRvdGFsTGVuICs9IExlbiAtIDE7CiAgICAg
ICAgICAgICAgICBFbnRyaWVzICsrOwoKICAgICAgICAgICAgICAgIFRyYXAgKz0gTGVuOwogICAg
ICAgICAgICAgICAgaWYgKFRyYXAgPT0gNTEyKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBU
cmFwID0gQnVmUGFkOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgKnBFbnRy
aWVzID0gRW50cmllczsKICAgICAgICAqcExlbiA9IFRvdGFsTGVuOwp9CiMgNzYzNSAic2tnZXBu
bWkuYyIKc3RhdGljIHZvaWQgUXVldWVTaW1wbGVUcmFwKApTS19BQyAqcEFDLAp1MzIgVHJhcElk
KQp7CiAgICAgICAgR2V0VHJhcEVudHJ5KHBBQywgVHJhcElkLCAxNyk7Cn0KIyA3NjUzICJza2dl
cG5taS5jIgpzdGF0aWMgdm9pZCBRdWV1ZVNlbnNvclRyYXAoClNLX0FDICpwQUMsCnUzMiBUcmFw
SWQsCnVuc2lnbmVkIGludCBTZW5zb3JJbmRleCkKewogICAgICAgIGNoYXIgKnBCdWY7CiAgICAg
ICAgdW5zaWduZWQgaW50IE9mZnNldDsKICAgICAgICB1bnNpZ25lZCBpbnQgRGVzY3JMZW47CiAg
ICAgICAgdTMyIFZhbDMyOwoKCgogICAgICAgIERlc2NyTGVuID0gc3RybGVuKChjaGFyKikocEFD
LT5JMmMuU2VuVGFibGVbU2Vuc29ySW5kZXhdLlNlbkRlc2MpKTsKICAgICAgICBwQnVmID0gR2V0
VHJhcEVudHJ5KHBBQywgVHJhcElkLAogICAgICAgICAgICAgICAgNDYgKyBEZXNjckxlbik7CiAg
ICAgICAgT2Zmc2V0ID0gMTc7CgoKICAgICAgICBWYWwzMiA9IDB4RkYwMjAxMDE7CiAgICAgICAg
KF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1
ZiArIE9mZnNldCkpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShw
QnVmICsgT2Zmc2V0KSksKChjaGFyKikmKFZhbDMyKSksKDQpKSk7CiAgICAgICAgKihwQnVmICsg
T2Zmc2V0ICsgNCkgPSA0OwogICAgICAgIFZhbDMyID0gKHUzMilTZW5zb3JJbmRleDsKICAgICAg
ICAoX19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShw
QnVmICsgT2Zmc2V0ICsgNSkpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNo
YXIqKShwQnVmICsgT2Zmc2V0ICsgNSkpLCgoY2hhciopJihWYWwzMikpLCg0KSkpOwogICAgICAg
IE9mZnNldCArPSA5OwoKICAgICAgICBWYWwzMiA9ICh1MzIpMHhGRjAyMDEwMjsKICAgICAgICAo
X19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwQnVm
ICsgT2Zmc2V0KSksKChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9fbWVtY3B5KCgoY2hhciopKHBC
dWYgKyBPZmZzZXQpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpKTsKICAgICAgICAqKHBCdWYgKyBP
ZmZzZXQgKyA0KSA9IChjaGFyKURlc2NyTGVuOwogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRf
cChEZXNjckxlbikgPyBfX2NvbnN0YW50X21lbWNweSgocEJ1ZiArIE9mZnNldCArIDUpLChwQUMt
PkkyYy5TZW5UYWJsZVtTZW5zb3JJbmRleF0uU2VuRGVzYyksKERlc2NyTGVuKSkgOiBfX21lbWNw
eSgocEJ1ZiArIE9mZnNldCArIDUpLChwQUMtPkkyYy5TZW5UYWJsZVtTZW5zb3JJbmRleF0uU2Vu
RGVzYyksKERlc2NyTGVuKSkpOwoKICAgICAgICBPZmZzZXQgKz0gRGVzY3JMZW4gKyA1OwoKICAg
ICAgICBWYWwzMiA9IDB4RkYwMjAxMDM7CiAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQp
ID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikocEJ1ZiArIE9mZnNldCkpLCgoY2hhciopJihW
YWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmICsgT2Zmc2V0KSksKChjaGFyKikm
KFZhbDMyKSksKDQpKSk7CiAgICAgICAgKihwQnVmICsgT2Zmc2V0ICsgNCkgPSAxOwogICAgICAg
ICoocEJ1ZiArIE9mZnNldCArIDUpID0gKGNoYXIpcEFDLT5JMmMuU2VuVGFibGVbU2Vuc29ySW5k
ZXhdLlNlblR5cGU7CiAgICAgICAgT2Zmc2V0ICs9IDY7CgogICAgICAgIFZhbDMyID0gMHhGRjAy
MDEwNDsKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNw
eSgoKGNoYXIqKShwQnVmICsgT2Zmc2V0KSksKChjaGFyKikmKFZhbDMyKSksKDQpKSA6IF9fbWVt
Y3B5KCgoY2hhciopKHBCdWYgKyBPZmZzZXQpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkpKTsKICAg
ICAgICAqKHBCdWYgKyBPZmZzZXQgKyA0KSA9IDQ7CiAgICAgICAgVmFsMzIgPSAodTMyKXBBQy0+
STJjLlNlblRhYmxlW1NlbnNvckluZGV4XS5TZW5WYWx1ZTsKICAgICAgICAoX19idWlsdGluX2Nv
bnN0YW50X3AoNCkgPyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKShwQnVmICsgT2Zmc2V0ICsg
NSkpLCgoY2hhciopJihWYWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmICsgT2Zm
c2V0ICsgNSkpLCgoY2hhciopJihWYWwzMikpLCg0KSkpOwp9CiMgNzcwOCAic2tnZXBubWkuYyIK
c3RhdGljIHZvaWQgUXVldWVSbG10TmV3TWFjVHJhcCgKU0tfQUMgKnBBQywKdW5zaWduZWQgaW50
IEFjdGl2ZU1hYykKewogICAgICAgIGNoYXIgKnBCdWY7CiAgICAgICAgdTMyIFZhbDMyOwoKCiAg
ICAgICAgcEJ1ZiA9IEdldFRyYXBFbnRyeShwQUMsIDUyMSwKICAgICAgICAgICAgICAgIDIzKTsK
CiAgICAgICAgVmFsMzIgPSAweEZGMDEwMTQyOwogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRf
cCg0KSA/IF9fY29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYgKyAxNykpLCgoY2hhciopJihW
YWwzMikpLCg0KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmICsgMTcpKSwoKGNoYXIqKSYoVmFs
MzIpKSwoNCkpKTsKICAgICAgICAqKHBCdWYgKyAxNyArIDQpID0gMTsKICAgICAgICAqKHBCdWYg
KyAxNyArIDUpID0gKGNoYXIpQWN0aXZlTWFjOwp9CiMgNzczNSAic2tnZXBubWkuYyIKc3RhdGlj
IHZvaWQgUXVldWVSbG10UG9ydFRyYXAoClNLX0FDICpwQUMsCnUzMiBUcmFwSWQsCnVuc2lnbmVk
IGludCBQb3J0SW5kZXgpCnsKICAgICAgICBjaGFyICpwQnVmOwogICAgICAgIHUzMiBWYWwzMjsK
CgogICAgICAgIHBCdWYgPSBHZXRUcmFwRW50cnkocEFDLCBUcmFwSWQsIDIzKTsKCiAgICAgICAg
VmFsMzIgPSAweEZGMDIwMTY0OwogICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9f
Y29uc3RhbnRfbWVtY3B5KCgoY2hhciopKHBCdWYgKyAxNykpLCgoY2hhciopJihWYWwzMikpLCg0
KSkgOiBfX21lbWNweSgoKGNoYXIqKShwQnVmICsgMTcpKSwoKGNoYXIqKSYoVmFsMzIpKSwoNCkp
KTsKICAgICAgICAqKHBCdWYgKyAxNyArIDQpID0gMTsKICAgICAgICAqKHBCdWYgKyAxNyArIDUp
ID0gKGNoYXIpUG9ydEluZGV4Owp9CiMgNzc2MiAic2tnZXBubWkuYyIKc3RhdGljIHZvaWQgQ29w
eU1hYygKY2hhciAqcERzdCwKU0tfTUFDX0FERFIgKnBNYWMpCnsKICAgICAgICBpbnQgaTsKCgog
ICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YoU0tfTUFDX0FERFIpOyBpICsrKSB7CgogICAg
ICAgICAgICAgICAgKihwRHN0ICsgaSkgPSBwTWFjLT5hW2ldOwogICAgICAgIH0KfQojIDc5ODYg
InNrZ2Vwbm1pLmMiCnN0YXRpYyBpbnQgVmN0KApTS19BQyAqcEFDLApjaGFyKiBJb0MsCmludCBB
Y3Rpb24sCnUzMiBJZCwKY2hhciAqcEJ1ZiwKdW5zaWduZWQgaW50ICpwTGVuLAp1MzIgSW5zdGFu
Y2UsCnVuc2lnbmVkIGludCBUYWJsZUluZGV4LAp1MzIgTmV0SW5kZXgpCnsKICAgICAgICBTS19H
RVBPUlQgKnBQcnQ7CiAgICAgICAgU0tfUE5NSV9WQ1QgKnBWY3RCYWNrdXBEYXRhOwogICAgICAg
IHUzMiBMb2dQb3J0TWF4OwogICAgICAgIHUzMiBQaHlzUG9ydE1heDsKICAgICAgICB1MzIgUGh5
c1BvcnRJbmRleDsKICAgICAgICB1MzIgTGltaXQ7CiAgICAgICAgdTMyIE9mZnNldDsKCiAgICAg
ICAgdTggTGluazsKICAgICAgICB1MzIgUmV0Q29kZSA9IDE7CiAgICAgICAgaW50IGk7CiAgICAg
ICAgU0tfRVZQQVJBIFBhcmE7CiAgICAgICAgdTMyIENhYmxlTGVuZ3RoOwoKCgoKICAgICAgICBQ
aHlzUG9ydE1heCA9IHBBQy0+R0luaS5HSU1hY3NGb3VuZDsKICAgICAgICBMb2dQb3J0TWF4ID0g
KCh1bnNpZ25lZCBpbnQpKFBoeXNQb3J0TWF4KSArIDEpOwoKCiAgICAgICAgaWYgKHBBQy0+UG5t
aS5EdWFsTmV0QWN0aXZlRmxhZyA9PSAoITApKSB7CiAgICAgICAgICAgICAgICBMb2dQb3J0TWF4
LS07CiAgICAgICAgfQoKICAgICAgICBpZiAoKEluc3RhbmNlICE9ICh1MzIpICgtMSkpKSB7Cgog
ICAgICAgICAgICAgICAgaWYgKChJbnN0YW5jZSA8IDIpIHx8IChJbnN0YW5jZSA+IExvZ1BvcnRN
YXgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICg2KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBp
ZiAocEFDLT5Qbm1pLkR1YWxOZXRBY3RpdmVGbGFnID09ICghMCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgUGh5c1BvcnRJbmRleCA9IE5ldEluZGV4OwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBoeXNQb3J0SW5kZXgg
PSBJbnN0YW5jZSAtIDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBMaW1pdCA9
IFBoeXNQb3J0SW5kZXggKyAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCgoKCiAgICAgICAg
ICAgICAgICBQaHlzUG9ydEluZGV4ID0gMDsKICAgICAgICAgICAgICAgIExpbWl0ID0gUGh5c1Bv
cnRNYXg7CiAgICAgICAgfQoKICAgICAgICBwUHJ0ID0gJnBBQy0+R0luaS5HUFtQaHlzUG9ydElu
ZGV4XTsKICAgICAgICBpZiAocFBydC0+UEhXTGlua1VwKSB7CiAgICAgICAgICAgICAgICBMaW5r
ID0gKCEwKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBMaW5rID0g
MDsKICAgICAgICB9CgoKCgogICAgICAgIGlmIChwUHJ0LT5QaHlUeXBlICE9IDQpIHsKICAgICAg
ICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiAoMSk7CiAgICAgICAg
fQoKCiAgICAgICAgcFZjdEJhY2t1cERhdGEgPSAmcEFDLT5Qbm1pLlZjdEJhY2t1cFtQaHlzUG9y
dEluZGV4XTsKCgoKCiAgICAgICAgaWYgKEFjdGlvbiA9PSAwKSB7CgoKCiAgICAgICAgICAgICAg
ICBzd2l0Y2ggKElkKSB7CgogICAgICAgICAgICAgICAgY2FzZSAweEZGMDIwMjAwOgogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKnBMZW4gPCAoTGltaXQgLSBQaHlzUG9ydEluZGV4KSAqIHNp
emVvZihTS19QTk1JX1ZDVCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcExl
biA9IChMaW1pdCAtIFBoeXNQb3J0SW5kZXgpICogc2l6ZW9mKFNLX1BOTUlfVkNUKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDIpOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNh
c2UgMHhGRjAyMDIwMjoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwTGVuIDwgKExpbWl0
IC0gUGh5c1BvcnRJbmRleCkgKiBzaXplb2YodTgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnBMZW4gPSAoTGltaXQgLSBQaHlzUG9ydEluZGV4KSAqIHNpemVvZih1OCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAqcExlbiA9IDA7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoMSk7CiAgICAgICAgICAgICAgICB9CgoKCgogICAgICAgICAg
ICAgICAgT2Zmc2V0ID0gMDsKICAgICAgICAgICAgICAgIGZvciAoOyBQaHlzUG9ydEluZGV4IDwg
TGltaXQ7IFBoeXNQb3J0SW5kZXgrKykgewogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KElkKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDB4RkYwMjAyMDA6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChMaW5rID09IDApICYmCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAocEFDLT5Qbm1pLlZjdFN0YXR1c1tQaHlzUG9ydElu
ZGV4XSAmIDMyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0
Q29kZSA9IFNrR21DYWJsZURpYWdTdGF0dXMocEFDLCBJb0MsIFBoeXNQb3J0SW5kZXgsIDApOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJldENvZGUgPT0gMCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQUMtPlBu
bWkuVmN0U3RhdHVzW1BoeXNQb3J0SW5kZXhdICY9IH4zMjsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLlZjdFN0YXR1c1tQaHlzUG9ydElu
ZGV4XSB8PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICgyIHwgNjQpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFBydC0+UE1kaVBhaXJTdHNb
aV0gPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKChwUHJ0LT5QTWRpUGFpckxlbltpXSA+IDM1KSAmJiAocFBy
dC0+UE1kaVBhaXJMZW5baV0gPCAweGZmKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUHJ0LT5QTWRpUGFp
clN0c1tpXSA9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgocFBydC0+UE1kaVBhaXJMZW5baV0gPiAzNSkgJiYg
KHBQcnQtPlBNZGlQYWlyTGVuW2ldICE9IDB4ZmYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWJsZUxlbmd0aCA9IDEw
MDAgKiAoKCgxNzUgKiBwUHJ0LT5QTWRpUGFpckxlbltpXSkgLyAyMTApIC0gMjgpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENhYmxlTGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcFZjdEJhY2t1cERhdGEtPlBNZGlQYWlyTGVuW2ldID0g
Q2FibGVMZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcFZjdEJhY2t1cERhdGEtPlBNZGlQYWlyU3RzW2ldID0gcFBydC0+UE1kaVBh
aXJTdHNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmEu
UGFyYTMyWzBdID0gUGh5c1BvcnRJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGFyYS5QYXJhMzJbMV0gPSAtMTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tFdmVudFF1ZXVlKHBBQywgMSwgMSwgUGFy
YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrRXZl
bnREaXNwYXRjaGVyKHBBQywgSW9DKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tWY3RTdGF0
dXMocEFDLCBJb0MsIHBCdWYsIE9mZnNldCwgUGh5c1BvcnRJbmRleCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgT2Zmc2V0ICs9IHNpemVvZih1OCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKihwQnVmICsgT2Zmc2V0KSA9IHBQcnQtPlBDYWJsZUxlbjsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKHU4KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoNCkg
PyBfX2NvbnN0YW50X21lbWNweSgoKGNoYXIqKSgocEJ1ZiArIE9mZnNldCkpKSwoKGNoYXIqKSYo
cFZjdEJhY2t1cERhdGEtPlBNZGlQYWlyTGVuW2ldKSksKDQpKSA6IF9fbWVtY3B5KCgoY2hhciop
KChwQnVmICsgT2Zmc2V0KSkpLCgoY2hhciopJihwVmN0QmFja3VwRGF0YS0+UE1kaVBhaXJMZW5b
aV0pKSwoNCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNl
dCArPSBzaXplb2YodTMyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihwQnVmICsgT2Zmc2V0KSA9IHBW
Y3RCYWNrdXBEYXRhLT5QTWRpUGFpclN0c1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE9mZnNldCArPSBzaXplb2YodTgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0Q29kZSA9IDA7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIDB4RkYwMjAyMDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q2hlY2tWY3RTdGF0dXMocEFDLCBJb0MsIHBCdWYsIE9mZnNldCwgUGh5c1BvcnRJbmRleCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ICs9IHNpemVvZih1OCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0Q29kZSA9IDA7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKDEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAqcExlbiA9IE9mZnNldDsKICAgICAgICAg
ICAgICAgIHJldHVybiAoUmV0Q29kZSk7CgogICAgICAgIH0KIyA4MTc3ICJza2dlcG5taS5jIgog
ICAgICAgIHN3aXRjaCAoSWQpIHsKICAgICAgICBjYXNlIDB4RkYwMjAyMDE6CiAgICAgICAgICAg
ICAgICBpZiAoKnBMZW4gPCAoTGltaXQgLSBQaHlzUG9ydEluZGV4KSAqIHNpemVvZih1MzIpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICpwTGVuID0gKExpbWl0IC0gUGh5c1BvcnRJbmRleCkg
KiBzaXplb2YodTMyKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgyKTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgKnBMZW4gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuICgxKTsKICAgICAg
ICB9CgoKCgoKCiAgICAgICAgaWYgKEFjdGlvbiA9PSAxKSB7CiAgICAgICAgICAgICAgICByZXR1
cm4gKDApOwogICAgICAgIH0KCiAgICAgICAgT2Zmc2V0ID0gMDsKICAgICAgICBmb3IgKDsgUGh5
c1BvcnRJbmRleCA8IExpbWl0OyBQaHlzUG9ydEluZGV4KyspIHsKICAgICAgICAgICAgICAgIHN3
aXRjaCAoSWQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMHhGRjAyMDIwMToKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKExpbmsgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNrR2VTdG9wUG9ydChwQUMsIElvQywgUGh5c1BvcnRJbmRleCwgMywgMSk7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJldENvZGUgPSBTa0dtQ2FibGVEaWFnU3RhdHVzKHBB
QywgSW9DLCBQaHlzUG9ydEluZGV4LCAoITApKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoUmV0Q29kZSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwQUMtPlBubWkuVmN0U3RhdHVzW1BoeXNQb3J0SW5kZXhdIHw9IDMyOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEFDLT5Qbm1pLlZjdFN0YXR1c1tQaHlz
UG9ydEluZGV4XSAmPSB+MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBBQy0+UG5taS5WY3RTdGF0dXNbUGh5c1BvcnRJbmRleF0gJj0gfjEyODsKCgoKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkg
PyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihQYXJhKSkpID8gX19jb25zdGFudF9jX2Fu
ZF9jb3VudF9tZW1zZXQoKCgoY2hhciAqKSAmUGFyYSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25l
ZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKFBhcmEpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKChj
aGFyICopICZQYXJhKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXpl
b2YoUGFyYSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YoUGFyYSkpKSA/IF9f
bWVtc2V0X2dlbmVyaWMoKCgoKGNoYXIgKikgJlBhcmEpKSksKCgoMCkpKSwoKChzaXplb2YoUGFy
YSkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKChjaGFyICopICZQYXJhKSksKCgwKSksKChzaXpl
b2YoUGFyYSkpKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
cmEuUGFyYTMyWzBdID0gUGh5c1BvcnRJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhcmEuUGFyYTMyWzFdID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTa1RpbWVyU3RhcnQocEFDLCBJb0MsICZwQUMtPlBubWkuVmN0VGlt
ZW91dFtQaHlzUG9ydEluZGV4XS5WY3RUaW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNDAwMDAwMCwgNCwgMTcsIFBhcmEpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19j
b25zdGFudF9tZW1jcHkoKChjaGFyKikoKHBCdWYgKyBPZmZzZXQpKSksKChjaGFyKikmKFJldENv
ZGUpKSwoNCkpIDogX19tZW1jcHkoKChjaGFyKikoKHBCdWYgKyBPZmZzZXQpKSksKChjaGFyKikm
KFJldENvZGUpKSwoNCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJldENvZGUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCg0KSA/IF9fY29uc3RhbnRfbWVtY3B5
KCgoY2hhciopKChwQnVmICsgT2Zmc2V0KSkpLCgoY2hhciopJihSZXRDb2RlKSksKDQpKSA6IF9f
bWVtY3B5KCgoY2hhciopKChwQnVmICsgT2Zmc2V0KSkpLCgoY2hhciopJihSZXRDb2RlKSksKDQp
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXRDb2RlID0gMDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmV0Q29kZSA9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9f
YnVpbHRpbl9jb25zdGFudF9wKDQpID8gX19jb25zdGFudF9tZW1jcHkoKChjaGFyKikoKHBCdWYg
KyBPZmZzZXQpKSksKChjaGFyKikmKFJldENvZGUpKSwoNCkpIDogX19tZW1jcHkoKChjaGFyKiko
KHBCdWYgKyBPZmZzZXQpKSksKChjaGFyKikmKFJldENvZGUpKSwoNCkpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZXRDb2RlID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXQgKz0gc2l6ZW9mKHUzMik7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAgICAgICAgICAgICpwTGVuID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICgxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgKnBMZW4gPSBPZmZzZXQ7
CiAgICAgICAgcmV0dXJuIChSZXRDb2RlKTsKCn0KCgpzdGF0aWMgdm9pZCBDaGVja1ZjdFN0YXR1
cygKU0tfQUMgKnBBQywKY2hhciogSW9DLApjaGFyICpwQnVmLAp1MzIgT2Zmc2V0LAp1MzIgUGh5
c1BvcnRJbmRleCkKewogICAgICAgIFNLX0dFUE9SVCAqcFBydDsKICAgICAgICBTS19QTk1JX1ZD
VCAqcFZjdERhdGE7CiAgICAgICAgdTMyIFJldENvZGU7CiAgICAgICAgdTggTGlua1NwZWVkVXNl
ZDsKCiAgICAgICAgcFBydCA9ICZwQUMtPkdJbmkuR1BbUGh5c1BvcnRJbmRleF07CgogICAgICAg
IHBWY3REYXRhID0gKFNLX1BOTUlfVkNUICopIChwQnVmICsgT2Zmc2V0KTsKICAgICAgICBwVmN0
RGF0YS0+VmN0U3RhdHVzID0gMDsKCiAgICAgICAgaWYgKCFwUHJ0LT5QSFdMaW5rVXApIHsKCgog
ICAgICAgICAgICAgICAgaWYgKHBBQy0+UG5taS5WY3RTdGF0dXNbUGh5c1BvcnRJbmRleF0gJiA2
NCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBBQy0+UG5taS5WY3RTdGF0dXNbUGh5
c1BvcnRJbmRleF0gJiAxMjgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFZj
dERhdGEtPlZjdFN0YXR1cyB8PSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBW
Y3REYXRhLT5WY3RTdGF0dXMgfD0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICBSZXRDb2RlID0gU2tHbUNhYmxlRGlhZ1N0YXR1
cyhwQUMsSW9DLCBQaHlzUG9ydEluZGV4LCAwKTsKICAgICAgICAgICAgICAgIGlmIChSZXRDb2Rl
ID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcFZjdERhdGEtPlZjdFN0YXR1cyB8PSAx
NjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocEFDLT5Qbm1pLlZjdFN0YXR1c1tQaHlzUG9ydEluZGV4XSAmIDMyKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFZjdERhdGEtPlZjdFN0YXR1cyB8PSAy
OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgaWYgKHBQcnQtPlBDYWJsZUxlbiAhPSAweGZmKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHBWY3REYXRhLT5WY3RTdGF0dXMgfD0gNDsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9
CiAgICAgICAgZWxzZSB7CgoKICAgICAgICAgICAgICAgIGlmIChwQUMtPlBubWkuVmN0U3RhdHVz
W1BoeXNQb3J0SW5kZXhdICYgNjQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcFZjdERhdGEt
PlZjdFN0YXR1cyAmPSB+MjsKICAgICAgICAgICAgICAgICAgICAgICAgcFZjdERhdGEtPlZjdFN0
YXR1cyB8PSAxOwogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICBMaW5rU3BlZWRV
c2VkID0gcEFDLT5HSW5pLkdQW1BoeXNQb3J0SW5kZXhdLlBMaW5rU3BlZWRVc2VkOwogICAgICAg
ICAgICAgICAgaWYgKExpbmtTcGVlZFVzZWQgIT0gMikgewogICAgICAgICAgICAgICAgICAgICAg
ICBwVmN0RGF0YS0+VmN0U3RhdHVzIHw9IDg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoK
fQo=


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

end of thread, other threads:[~2003-05-14 19:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-05-14 10:48 optimization/10752: -O2 generates loop assembly instruction with label too far away giovannibajo
  -- strict thread matches above, loose matches on Subject: below --
2003-05-14 19:16 Enrique Perez-Terron
2003-05-14 13:56 ebotcazou
2003-05-12 17:16 Dara Hazeghi
2003-05-12 15:26 enrio

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