<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>114745</bug_id>
          
          <creation_ts>2005-12-07 06:37 0000</creation_ts>
          <short_desc>sci-biology/t-coffee: util_dp_sim.c:1016: internal compiler error</short_desc>
          <delta_ts>2006-03-16 13:45:18 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>Applications</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>UPSTREAM</resolution>
          <bug_file_loc>http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16876</bug_file_loc>
          
          
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mmokrejs@ribosome.natur.cuni.cz</reporter>
          <assigned_to>sci@gentoo.org</assigned_to>
          <cc>ribosome@gentoo.org</cc>
    
    <cc>toolchain@gentoo.org</cc>

      

      
          <long_desc isprivate="0">
            <who>mmokrejs@ribosome.natur.cuni.cz</who>
            <bug_when>2005-12-07 06:37:48 0000</bug_when>
            <thetext>cc -O3 -march=pentium4 -mmmx -msse -msse2 -msse3 -pipe   -c -o util_dp_sim.o
util_dp_sim.c
util_dp_sim.c: In function `sim_pair_wise_lalign&apos;:
util_dp_sim.c:1016: internal compiler error: in simplify_gen_subreg, at
simplify-rtx.c:3558
Please submit a full bug report,
with preprocessed source if appropriate.
See &lt;URL:http://bugs.gentoo.org/&gt; for instructions.
Preprocessed source stored into /var/tmp/portage/t-coffee-3.18/temp/ccFN9EEB.out
file, please attach this to your bugreport.
make: *** [util_dp_sim.o] Error 1

!!! ERROR: sci-biology/t-coffee-3.18 failed.
!!! Function src_compile, Line 31, Exitcode 2


!!! ERROR: sci-biology/t-coffee-3.18 failed.

# emerge info
Portage 2.0.53 (default-linux/x86/2005.1, gcc-3.4.4, glibc-2.3.5-r3, 2.6.13.2 i686)
=================================================================
System uname: 2.6.13.2 i686 Intel(R) Pentium(R) 4 CPU 3.00GHz
Gentoo Base System version 1.12.0_pre11
dev-lang/python:     2.3.5, 2.4.2
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1
sys-devel/binutils:  2.16.1-r1
sys-devel/libtool:   1.5.20-r1
virtual/os-headers:  2.6.11-r3
ACCEPT_KEYWORDS=&quot;x86 ~x86&quot;
AUTOCLEAN=&quot;yes&quot;
CBUILD=&quot;i686-pc-linux-gnu&quot;
CFLAGS=&quot;-O3 -march=pentium4 -mmmx -msse -msse2 -msse3 -pipe&quot;
CHOST=&quot;i686-pc-linux-gnu&quot;
CONFIG_PROTECT=&quot;/etc /usr/kde/2/share/config /usr/kde/3/share/config
/usr/lib/X11/xkb /usr/lib/mozilla/defaults/pref /usr/share/config /usr/spool/PBS
/var/qmail/control&quot;
CONFIG_PROTECT_MASK=&quot;/etc/gconf /etc/terminfo /etc/texmf/web2c /etc/env.d&quot;
CXXFLAGS=&quot;-O2 -mcpu=i686 -pipe&quot;
DISTDIR=&quot;/usr/portage/distfiles&quot;
FEATURES=&quot;autoconfig distlocks sandbox sfperms strict&quot;
GENTOO_MIRRORS=&quot;ftp://ftp.muni.cz/pub/linux/gentoo&quot;
PKGDIR=&quot;/usr/portage/packages&quot;
PORTAGE_TMPDIR=&quot;/var/tmp&quot;
PORTDIR=&quot;/usr/portage&quot;
SYNC=&quot;rsync://rsync.gentoo.org/gentoo-portage&quot;
USE=&quot;x86 FFmpeg X Xaw3d aalib acpi alsa apache2 apm avi berkdb bidi bitmap-fonts
bzip2 caca cdr crypt cscope curl dba divx divx4 divx4linux divx5 divx5linux dvd
dvdr dvdread eds emacs emacs-w3 emboss encode exif expat f77 faad faad2 fam fame
ffmpeg flash foomaticdb fortran fvwm fvwm2 gb gd gdbm ggi gif glut gpm gstreamer
gtk gtk2 gtkhtml i8x0 icc imagemagick imlib imlib2 innodb ipv6 ithreads java
javascript jpeg lcms leim libg++ libwww live lzo mad mcal mesa mikmod mmx mmx2
mng motif mozilla mp3 mpeg mule mysql ncurses network nls nptl ogg opengl oss
pam pda pdflib perl plotutils png ppds pthread pthreads python qt qtx quicktime
readline rtc samba sdl slang slp spell sse sse2 sse3 ssl tcltk tcpd tetex theora
thread threads tiff truetype truetype-fonts type1-fonts udev unicode usb v4l
v4l2 vorbis win32 winvidix wmf xml xml2 xmms xosd xv xvid xvmc zeo zlib
video_cards_radeon userland_GNU kernel_linux elibc_glibc&quot;
Unset:  ASFLAGS, CTARGET, LANG, LC_ALL, LDFLAGS, LINGUAS, MAKEOPTS, PORTDIR_OVERLAY

#

Using -O2 does not help.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>mmokrejs@ribosome.natur.cuni.cz</who>
            <bug_when>2005-12-07 06:39:00 0000</bug_when>
            <thetext>Created an attachment (id=74230)
ccFN9EEB.out
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ribosome@gentoo.org</who>
            <bug_when>2005-12-08 11:33:40 0000</bug_when>
            <thetext>Thanks for reporting. Using -O2 will not solve the problem, but -O0 actually    
will. (I have not benchmarked how slow t-coffee actually is when not optimised    
at all, but it might be a problem when extracting the aligned sequences and    
iterating the alignment multiple times.)    
    
Since this is a reproducable GCC 3.4 specific compiler error, I am CCing the    
toolchain team. It is not specific to version 3.18. (The latest version,   
3.27, is also affected.)   </thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ribosome@gentoo.org</who>
            <bug_when>2005-12-08 12:08:08 0000</bug_when>
            <thetext>I have added a warning message to the ebuild for version 3.27. I checked   
different CFLAGS combinations, and it seems users of the stable version (2.66)   
are not affected at all. Unfortunately, this version is now masked since the  
archive may no longer be downloaded. Curse restricting downloading for grant 
purposes. :\ </thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>mmokrejs@ribosome.natur.cuni.cz</who>
            <bug_when>2005-12-08 12:18:57 0000</bug_when>
            <thetext>Yeah, I had to use CFLAGS=&quot;&quot; emerge -u t-coffee

:(

This bug should be really filed to gcc guys. The preprocessed file should make
them able to fix it in a moment.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>sgagne@rsvs.ulaval.ca</who>
            <bug_when>2005-12-08 19:50:14 0000</bug_when>
            <thetext>(In reply to comment #2)
&gt; Thanks for reporting. Using -O2 will not solve the problem, but -O0 actually    
&gt; will.  

Please note that &quot;-O1&quot; also works fine. &quot;-O1 -funit-at-a-time&quot; fails however.

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>halcy0n@gentoo.org</who>
            <bug_when>2005-12-15 14:10:28 0000</bug_when>
            <thetext>This is a problem in gcc-3.4 all the way up to mainline.  Putting to
reso-&gt;upstream until we get a patch.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dberkholz@gentoo.org</who>
            <bug_when>2006-02-01 01:27:47 0000</bug_when>
            <thetext>ribosome, can you make it strip all -O[123] flags in the meanwhile? It&apos;s a bit annoying to just have the compile be broken.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>mmokrejs@ribosome.natur.cuni.cz</who>
            <bug_when>2006-03-06 10:02:00 0000</bug_when>
            <thetext>Anything new on this? I am still getting this problem with gcc-3.4.5 but not with gcc-3.3.6. Maybe running temporarily gcc-config(1) would be a better temporary fix for this.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>kevquinn@gentoo.org</who>
            <bug_when>2006-03-06 10:46:35 0000</bug_when>
            <thetext>ribosome - I suggest adding -fno-unit-at-a-time with gcc-3.4.x; e.g. adding:

[[ $(gcc-version) == &quot;3.4&quot; ]] &amp;&amp; append-flags -fno-unit-at-a-time

in src_compile() prior to the make.  This gets it to compile at -O2 for me; you may also want to try -O3 and -Os as they&apos;re popular.  Since I&apos;m not a biologist I have no idea what the application does so can&apos;t check that it actually works 8-)
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>ribosome@gentoo.org</who>
            <bug_when>2006-03-16 13:45:18 0000</bug_when>
            <thetext>(In reply to comment #9)
&gt; ribosome - I suggest adding -fno-unit-at-a-time with gcc-3.4.x; e.g. adding:
&gt; 
&gt; [[ $(gcc-version) == &quot;3.4&quot; ]] &amp;&amp; append-flags -fno-unit-at-a-time
&gt; 
&gt; in src_compile() prior to the make.  This gets it to compile at -O2 for me; you
&gt; may also want to try -O3 and -Os as they&apos;re popular.  Since I&apos;m not a biologist
&gt; I have no idea what the application does so can&apos;t check that it actually works
&gt; 8-)
&gt; 

Added to the ebuild. Thanks for the suggestion.</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>74230</attachid>
            <date>2005-12-07 06:39 0000</date>
            <desc>ccFN9EEB.out</desc>
            <filename>ccFN9EEB.out</filename>
            <type>text/plain</type>
            <data encoding="base64">Ly8gL3Vzci9saWJleGVjL2djYy9pNjg2LXBjLWxpbnV4LWdudS8zLjQuNC9jYzEgLXF1aWV0IHV0
aWxfZHBfc2ltLmMgLXF1aWV0IC1kdW1wYmFzZSB1dGlsX2RwX3NpbS5jIC1tYXJjaD1wZW50aXVt
NCAtbW1teCAtbXNzZSAtbXNzZTIgLW1zc2UzIC1hdXhiYXNlLXN0cmlwIHV0aWxfZHBfc2ltLm8g
LU8zIC1vIC0gLWZyYW5kb20tc2VlZD0wCiMgMSAidXRpbF9kcF9zaW0uYyIKIyAxICI8YnVpbHQt
aW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgInV0aWxfZHBfc2ltLmMiCiMgMSAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKIyAx
ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzIDQKIyAzMDkgIi91c3IvaW5jbHVkZS9mZWF0
dXJlcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMyA0CiMgMzEwICIv
dXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzIDQKIyAzMzIgIi91c3IvaW5jbHVkZS9mZWF0dXJl
cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMyA0CiMgMzMzICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzIDQKIyAyOSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIg
MyA0CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1wYy1saW51eC1nbnUvMy40LjQvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzIDQKIyAyMTMgIi91c3IvbGliL2djYy9pNjg2LXBjLWxpbnV4LWdudS8z
LjQuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90Owoj
IDM1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
dHlwZXMuaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMyA0CiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAyOSAiL3Vzci9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMiAzIDQKCgojIDEgIi91c3IvbGliL2djYy9pNjg2LXBjLWxpbnV4LWdudS8z
LjQuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDMyICIvdXNyL2luY2x1ZGUvYml0cy90eXBl
cy5oIiAyIDMgNAoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBpbnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdV9sb25nOwoKCnR5cGVkZWYgc2lnbmVkIGNoYXIg
X19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVk
IHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2
X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9f
dWludDMyX3Q7CgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQg
X19pbnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBf
X3VpbnQ2NF90OwoKCgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19x
dWFkX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9x
dWFkX3Q7CiMgMTI5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzIDQKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlc2l6ZXMuaCIgMSAzIDQKIyAxMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDIgMyA0CgoKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2
X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aWRfdDsKX19leHRlbnNp
b25fXyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX2dpZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYg
dW5zaWduZWQgbG9uZyBpbnQgX19pbm9fdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFk
X3QgX19pbm82NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fbW9kZV90
OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9fbmxpbmtfdDsKX19leHRlbnNp
b25fXyB0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX3F1
YWRfdCBfX29mZjY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19waWRfdDsKX19leHRl
bnNpb25fXyB0eXBlZGVmIHN0cnVjdCB7IGludCBfX3ZhbFsyXTsgfSBfX2ZzaWRfdDsKX19leHRl
bnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKX19leHRlbnNpb25fXyB0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgaW50IF9fcmxpbV90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX191X3F1
YWRfdCBfX3JsaW02NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9faWRf
dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90OwpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNfdDsKX19leHRlbnNpb25fXyB0eXBlZGVm
IGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9fZGFk
ZHJfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKX19leHRlbnNp
b25fXyB0eXBlZGVmIGludCBfX2tleV90OwoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19j
bG9ja2lkX3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKX19leHRl
bnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKX19leHRlbnNpb25fXyB0
eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX3F1YWRf
dCBfX2Jsa2NudDY0X3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50
IF9fZnNibGtjbnRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2Nu
dDY0X3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZnNmaWxj
bnRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7Cgpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9fc3NpemVfdDsKCgoKdHlwZWRlZiBfX29mZjY0X3Qg
X19sb2ZmX3Q7CnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKdHlwZWRlZiBjaGFyICpfX2Nh
ZGRyX3Q7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCl9fZXh0ZW5z
aW9uX18gdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CiMgMzcgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAyIDMgNAoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwoK
CgoKCiMgNjIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJ
TEUgX19GSUxFOwojIDcyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL3Vzci9pbmNs
dWRlL2xpYmlvLmgiIDEgMyA0CiMgMzIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKIyAxICIv
dXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMyA0CiMgMTQgIi91c3IvaW5jbHVkZS9fR19jb25m
aWcuaCIgMyA0CiMgMSAiL3Vzci9saWIvZ2NjL2k2ODYtcGMtbGludXgtZ251LzMuNC40L2luY2x1
ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzI1ICIvdXNyL2xpYi9nY2MvaTY4Ni1wYy1saW51eC1nbnUv
My40LjQvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKIyAz
NTQgIi91c3IvbGliL2djYy9pNjg2LXBjLWxpbnV4LWdudS8zLjQuNC9pbmNsdWRlL3N0ZGRlZi5o
IiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1ZGUvX0df
Y29uZmlnLmgiIDIgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMyA0CiMgMSAi
L3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMyA0CiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAz
IDQKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1wYy1saW51eC1nbnUvMy40LjQvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzIDQKIyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMyA0CgojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMyA0CiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAy
IDMgNAojIDc2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CnR5cGVkZWYgc3RydWN0CnsKICBp
bnQgX19jb3VudDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hi
WzRdOwogIH0gX192YWx1ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2Nv
bmZpZy5oIiAyIDMgNAoKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0
YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3Qg
X19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NCAiL3Vzci9p
bmNsdWRlL19HX2NvbmZpZy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMSAzIDQK
IyAyOCAiL3Vzci9pbmNsdWRlL2djb252LmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5o
IiAxIDMgNAojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CiMgMSAiL3Vzci9saWIvZ2Nj
L2k2ODYtcGMtbGludXgtZ251LzMuNC40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgNDkgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMgNAojIDI5ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAz
IDQKCgojIDEgIi91c3IvbGliL2djYy9pNjg2LXBjLWxpbnV4LWdudS8zLjQuNC9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMgNAojIDMyICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzIDQKCgoKCgplbnVt
CnsKICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05PQ09OViwKICBfX0dDT05WX05PREIsCiAg
X19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwKICBfX0dDT05WX0ZVTExfT1VU
UFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBfX0dDT05WX0lOQ09NUExFVEVfSU5QVVQs
CgogIF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAogIF9fR0NPTlZfSU5URVJOQUxfRVJST1IK
fTsKCgoKZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAxLAogIF9fR0NPTlZfSUdOT1JF
X0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwOwpzdHJ1Y3QgX19nY29u
dl9zdGVwX2RhdGE7CnN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3Q7CnN0cnVjdCBfX2djb252
X3RyYW5zX2RhdGE7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl9mY3QpIChzdHJ1Y3QgX19nY29u
dl9zdGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAogICAgICAgX19jb25zdCB1bnNp
Z25lZCBjaGFyICoqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgIHVuc2lnbmVkIGNo
YXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7CgoKdHlwZWRlZiB3aW50X3QgKCpfX2djb252X2J0
b3djX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwgdW5zaWduZWQgY2hhcik7CgoKdHlwZWRl
ZiBpbnQgKCpfX2djb252X2luaXRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRl
ZiB2b2lkICgqX19nY29udl9lbmRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgoKdHlw
ZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwKICAg
ICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAgX19jb25zdCB1bnNp
Z25lZCBjaGFyICosCiAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwKICAgICAgX19jb25z
dCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKiosCiAgICAgIHNpemVfdCAqKTsKCgp0
eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqLAogICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICB1
bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252
X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKioqLAogICAg
IHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lk
ICoqLCBjb25zdCBjaGFyICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3Qp
ICh2b2lkICopOwoKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNf
ZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250
ZXh0X2ZjdDsKICBfX2djb252X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQg
Kl9fZGF0YTsKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVj
dCBfX2djb252X3N0ZXAKewogIHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJf
aGFuZGxlOwogIF9fY29uc3QgY2hhciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBj
aGFyICpfX2Zyb21fbmFtZTsKICBjaGFyICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0
OwogIF9fZ2NvbnZfYnRvd2NfZmN0IF9fYnRvd2NfZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19p
bml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVk
ZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsK
ICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0
YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291
dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoK
ICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBf
X21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3Qg
X19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252
X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBz
OwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAq
X19nY29udl90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMyA0CnR5cGVkZWYg
dW5pb24KewogIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICBzdHJ1Y3QKICB7CiAgICBzdHJ1
Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRh
OwogIH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlwZWRlZiBpbnQgX0dfaW50MTZfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgX0dfaW50MzJf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19T
SV9fKSkpOwojIDMzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzIDQKIyA1MyAiL3Vzci9pbmNs
dWRlL2xpYmlvLmgiIDMgNAojIDEgIi91c3IvbGliL2djYy9pNjg2LXBjLWxpbnV4LWdudS8zLjQu
NC9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDQzICIvdXNyL2xpYi9nY2MvaTY4Ni1wYy1saW51
eC1nbnUvMy40LjQvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19idWlsdGluX3ZhX2xp
c3QgX19nbnVjX3ZhX2xpc3Q7CiMgNTQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMgNAojIDE2
NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNApzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9J
T19GSUxFOwojIDE3NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMgNAp0eXBlZGVmIHZvaWQgX0lP
X2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9u
ZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTk5ICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMyA0Cn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2Nv
ZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29k
ZWN2dF9ub2NvbnYKfTsKIyAyNjcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKc3RydWN0IF9J
T19GSUxFIHsKICBpbnQgX2ZsYWdzOwoKCgoKICBjaGFyKiBfSU9fcmVhZF9wdHI7CiAgY2hhciog
X0lPX3JlYWRfZW5kOwogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX2Jh
c2U7CiAgY2hhciogX0lPX3dyaXRlX3B0cjsKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwogIGNoYXIq
IF9JT19idWZfYmFzZTsKICBjaGFyKiBfSU9fYnVmX2VuZDsKCiAgY2hhciAqX0lPX3NhdmVfYmFz
ZTsKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1
Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBp
bnQgX2ZpbGVubzsKCgoKICBpbnQgX2ZsYWdzMjsKCiAgX19vZmZfdCBfb2xkX29mZnNldDsKCgoK
ICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNl
dDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAzMTUgIi91
c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQg
Kl9fcGFkMTsKICB2b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsx
NSAqIHNpemVvZiAoaW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0
cnVjdCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBz
dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklM
RV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18y
XzFfc3RkZXJyXzsKIyAzNTQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKdHlwZWRlZiBfX3Nz
aXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwgY2hhciAqX19idWYsIHNpemVfdCBf
X25ieXRlcyk7CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2b2lkICpf
X2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwKICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5
cGVkZWYgaW50IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3Ms
IGludCBfX3cpOwoKCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsK
IyA0MDYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAo
X0lPX0ZJTEUgKikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4dGVybiBpbnQgX191
ZmxvdyAoX0lPX0ZJTEUgKikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4dGVybiBp
bnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18pKTsKZXh0ZXJuIHdpbnRfdCBfX3d1bmRlcmZsb3cgKF9JT19GSUxFICopIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXykpOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAqKSBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKZXh0ZXJuIHdpbnRfdCBfX3dvdmVyZmxvdyAo
X0lPX0ZJTEUgKiwgd2ludF90KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKIyA0NDQg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzIDQKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUg
Kl9fZnApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwpleHRlcm4gaW50IF9JT19wdXRj
IChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7
CmV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxFICpfX2ZwKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKTsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9J
T19GSUxFICpfX2ZwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgpleHRlcm4g
dm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18pKTsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18pKTsKZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklM
RSAqKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKIyA0NzQgIi91c3IvaW5jbHVkZS9s
aWJpby5oIiAzIDQKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0
LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKICAgX19nbnVjX3ZhX2xpc3QsIGludCAqX19yZXN0
cmljdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4dGVybiBpbnQgX0lPX3ZmcHJp
bnRmIChfSU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgIF9f
Z251Y192YV9saXN0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKZXh0ZXJuIF9fc3Np
emVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXykpOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9p
ZCAqLCBzaXplX3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKZXh0ZXJuIF9fb2Zm
NjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9J
T19GSUxFICosIF9fb2ZmNjRfdCwgaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsK
CmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18pKTsKIyA3MyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMg
ODYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCgp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7
CgoKCgojIDEzOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3N0ZGlvX2xpbS5oIiAxIDMgNAojIDEzOSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0
CgoKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZGluOwpleHRlcm4gc3RydWN0IF9JT19GSUxF
ICpzdGRvdXQ7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZGVycjsKCgoKCgoKCmV4dGVybiBp
bnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXykpOwoKZXh0ZXJuIGludCByZW5hbWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29u
c3QgY2hhciAqX19uZXcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgoKCgoKCgpl
eHRlcm4gRklMRSAqdG1wZmlsZSAodm9pZCk7CiMgMTc4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MyA0CmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fbm90
aHJvd19fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3MpIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXykpOwojIDE5NiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApl
eHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpf
X3BmeCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgo
X19tYWxsb2NfXykpOwoKCgoKCgoKCmV4dGVybiBpbnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSk7
CgoKCgpleHRlcm4gaW50IGZmbHVzaCAoRklMRSAqX19zdHJlYW0pOwoKIyAyMjEgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3Ry
ZWFtKTsKIyAyMzUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCgoKCgoKZXh0ZXJuIEZJTEUg
KmZvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpOwoKCgoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX21vZGVzLAogICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoj
IDI2MiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKIyAyNzMgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAzIDQKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19t
b2RlcykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CiMgMjk0ICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMyA0CgoKCmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
KSk7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hh
ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgaW50IF9fbW9kZXMsIHNpemVfdCBfX24pIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAg
c2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKZXh0ZXJuIHZv
aWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XykpOwoKCgoKCgoKCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSwKICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKCgoKZXh0
ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsK
CmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18pKTsKCgoKCgpleHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgX19nbnVjX3ZhX2xpc3QgX19h
cmcpOwoKCgoKZXh0ZXJuIGludCB2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
b3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKTsKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAg
ICBfX2dudWNfdmFfbGlzdCBfX2FyZykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoK
CgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21h
eGxlbiwKICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAg
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9f
IChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKl9fcmVz
dHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywg
MCkpKTsKCiMgMzg4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKCgoKZXh0ZXJuIGludCBm
c2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKCgoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LCAuLi4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKIyA0MzAgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzIDQKCgoKCgpleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSk7
CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pOwoKCgoKCmV4dGVybiBpbnQgZ2V0Y2hh
ciAodm9pZCk7CgojIDQ1NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGdl
dGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2Vk
ICh2b2lkKTsKIyA0NjUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBmZ2V0
Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwoKCgoKCgoKCgoKCmV4dGVybiBpbnQgZnB1dGMg
KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGludCBwdXRjIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSk7CgoKCgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKTsKCiMgNDk4ICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBf
X2MsIEZJTEUgKl9fc3RyZWFtKTsKCgoKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBf
X2MpOwoKCgoKCgpleHRlcm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKTsKCgpleHRlcm4gaW50
IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKTsKCgoKCgoKCgpleHRlcm4gY2hhciAqZmdl
dHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcyk7CgojIDU3OCAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMgNAoKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoKCgoKCmV4dGVybiBp
bnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpOwoKCgoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCgoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpf
X3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgc2l6ZV90IF9fbiwgRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSk7CgoKCgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2
b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgIHNpemVfdCBfX24s
IEZJTEUgKl9fcmVzdHJpY3QgX19zKTsKCiMgNjMxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0
CmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNp
emVfdCBfX3NpemUsCiAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0pOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3Ry
aWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSk7CgoKCgoKCgoKZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJl
YW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpOwoKCgoKZXh0ZXJuIGxvbmcgaW50IGZ0
ZWxsIChGSUxFICpfX3N0cmVhbSk7CgoKCgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3Ry
ZWFtKTsKCiMgNjg2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKCgoKCmV4dGVybiBpbnQg
ZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvc190ICpfX3Jlc3RyaWN0IF9f
cG9zKTsKCgoKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBv
c190ICpfX3Bvcyk7CiMgNzA5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgojIDcxOCAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0
cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgpleHRlcm4gaW50IGZlb2YgKEZJ
TEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCmV4dGVybiBpbnQg
ZmVycm9yIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoK
CgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXykpOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9f
c3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKZXh0ZXJuIGludCBmZXJyb3Jf
dW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsK
CgoKCgoKCgpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKTsKCgoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAxIDMgNAojIDI3ICIvdXNyL2luY2x1
ZGUvYml0cy9zeXNfZXJybGlzdC5oIiAzIDQKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9f
Y29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwojIDc0OCAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDIgMyA0CgoKCgpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQg
KEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKIyA3NjcgIi91
c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIg
Kl9fY29tbWFuZCwgX19jb25zdCBjaGFyICpfX21vZGVzKTsKCgoKCgpleHRlcm4gaW50IHBjbG9z
ZSAoRklMRSAqX19zdHJlYW0pOwoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3Mp
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwojIDgwNyAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDMgNApleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18pKTsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9f
c3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgpleHRlcm4gdm9pZCBmdW5s
b2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoj
IDgyOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0
ZGlvLmgiIDEgMyA0CiMgMzMgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMgNApleHRlcm4g
X19pbmxpbmUgaW50CnZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19n
bnVjX3ZhX2xpc3QgX19hcmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9f
YXJnKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBf
SU9fZ2V0YyAoc3RkaW4pOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2NrZWQg
KEZJTEUgKl9fZnApCnsKICByZXR1cm4gKF9fYnVpbHRpbl9leHBlY3QgKChfX2ZwKS0+X0lPX3Jl
YWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kLCAwKSA/IF9fdWZsb3cgKF9fZnApIDogKih1
bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKZXh0ZXJuIF9faW5s
aW5lIGludApnZXRjaGFyX3VubG9ja2VkICh2b2lkKQp7CiAgcmV0dXJuIChfX2J1aWx0aW5fZXhw
ZWN0ICgoc3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3JlYWRfZW5kLCAwKSA/
IF9fdWZsb3cgKHN0ZGluKSA6ICoodW5zaWduZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9w
dHIrKyk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y2hhciAoaW50IF9fYykKewogIHJl
dHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQpOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZw
dXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoX19idWls
dGluX2V4cGVjdCAoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9f
d3JpdGVfZW5kLCAwKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9f
YykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9f
YykpKTsKfQoKCgoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y191bmxvY2tlZCAoaW50IF9fYywg
RklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKF9fYnVpbHRpbl9leHBlY3QgKChfX3N0cmVhbSkt
Pl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCwgMCkgPyBfX292ZXJm
bG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAo
KihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgpleHRlcm4gX19pbmxp
bmUgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1cm4gKF9fYnVpbHRpbl9l
eHBlY3QgKChzdGRvdXQpLT5fSU9fd3JpdGVfcHRyID49IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5k
LCAwKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNp
Z25lZCBjaGFyKSAoKihzdGRvdXQpLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CiMgMTEx
ICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzIDQKZXh0ZXJuIF9faW5saW5lIGludApfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkK
ewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MTApICE9IDApOwp9CgoKZXh0ZXJu
IF9faW5saW5lIGludApfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBmZXJyb3JfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgy
MCkgIT0gMCk7Cn0KIyA4MjkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKCgoKCgojIDIg
InV0aWxfZHBfc2ltLmMiIDIKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMgNAojIDI5ICIv
dXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92
YWwuaCIgMSAzIDQKIyAzNCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzIDQKIyA0NiAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGRlZi5oIiAxIDMg
NAojIDQ3ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAojIDcwICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzIDQKIyA1MyAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMgNAoKCmV4dGVybiBkb3VibGUgYWNvcyAo
ZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUg
X19hY29zIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCmV4dGVy
biBkb3VibGUgYXNpbiAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7
IGV4dGVybiBkb3VibGUgX19hc2luIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18pKTsKCmV4dGVybiBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19hdGFuIChkb3VibGUgX194KSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18pKTsKCmV4dGVybiBkb3VibGUgYXRhbjIgKGRvdWJsZSBfX3ks
IGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZG91Ymxl
IF9fYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXykpOwoKCmV4dGVybiBkb3VibGUgY29zIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2NvcyAoZG91YmxlIF9feCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fKSk7CgpleHRlcm4gZG91YmxlIHNpbiAoZG91YmxlIF9feCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19zaW4gKGRvdWJsZSBf
X3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKZXh0ZXJuIGRvdWJsZSB0YW4gKGRv
dWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZG91YmxlIF9f
dGFuIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCmV4dGVy
biBkb3VibGUgY29zaCAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7
IGV4dGVybiBkb3VibGUgX19jb3NoIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18pKTsKCmV4dGVybiBkb3VibGUgc2luaCAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19zaW5oIChkb3VibGUgX194KSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18pKTsKCmV4dGVybiBkb3VibGUgdGFuaCAoZG91YmxlIF9feCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX190YW5oIChkb3Vi
bGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCiMgODcgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKCgpleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUgX194
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3NoIChk
b3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCmV4dGVybiBkb3VibGUg
YXNpbmggKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4g
ZG91YmxlIF9fYXNpbmggKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp
OwoKZXh0ZXJuIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90
aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fKSk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGV4cCAoZG91YmxlIF9feCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19leHAgKGRvdWJs
ZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCmV4dGVybiBkb3VibGUgZnJl
eHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fKSk7IGV4dGVybiBkb3VibGUgX19mcmV4cCAoZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgpleHRlcm4gZG91YmxlIGxkZXhwIChk
b3VibGUgX194LCBpbnQgX19leHBvbmVudCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7
IGV4dGVybiBkb3VibGUgX19sZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCmV4dGVybiBkb3VibGUgbG9nIChkb3VibGUgX194
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZyAoZG91
YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKZXh0ZXJuIGRvdWJsZSBs
b2cxMCAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBk
b3VibGUgX19sb2cxMCAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7
CgoKZXh0ZXJuIGRvdWJsZSBtb2RmIChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19tb2RmIChkb3VibGUgX194
LCBkb3VibGUgKl9faXB0cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgojIDEyNyAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMgNAoKCmV4dGVybiBkb3VibGUgZXhwbTEg
KGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZG91Ymxl
IF9fZXhwbTEgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCmV4
dGVybiBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XykpOyBleHRlcm4gZG91YmxlIF9fbG9nMXAgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXykpOwoKCmV4dGVybiBkb3VibGUgbG9nYiAoZG91YmxlIF9feCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19sb2diIChkb3VibGUgX194KSBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCiMgMTUyICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoY2FsbHMuaCIgMyA0CgoKZXh0ZXJuIGRvdWJsZSBwb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBf
X3kpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZG91YmxlIF9fcG93IChk
b3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgpl
eHRlcm4gZG91YmxlIHNxcnQgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XykpOyBleHRlcm4gZG91YmxlIF9fc3FydCAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fKSk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19oeXBv
dCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7
CgoKCgoKCmV4dGVybiBkb3VibGUgY2JydCAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19jYnJ0IChkb3VibGUgX194KSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgoKCgpleHRlcm4gZG91YmxlIGNlaWwgKGRvdWJsZSBf
X3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2NlaWwgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91Ymxl
IGZhYnMgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2ZhYnMgKGRvdWJsZSBfX3gpIF9f
YXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgpleHRlcm4gZG91YmxlIGZsb29yIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19mbG9v
ciAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZm1vZCAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19mbW9k
IChkb3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsK
CgoKCmV4dGVybiBpbnQgX19pc2luZiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9f
ZmluaXRlIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBpbnQgaXNpbmYgKGRvdWJsZSBf
X3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJu
IGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2RyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgpleHRlcm4gZG91YmxlIHNpZ25pZmlj
YW5kIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGRv
dWJsZSBfX3NpZ25pZmljYW5kIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18pKTsKCgoKCgpleHRlcm4gZG91YmxlIGNvcHlzaWduIChkb3VibGUgX194LCBkb3VibGUgX195
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7IGV4dGVybiBkb3VibGUgX19jb3B5c2lnbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19h
dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
IyAyMzEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKZXh0ZXJuIGludCBfX2lz
bmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFuIChkb3VibGUgX192YWx1
ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCmV4dGVybiBkb3VibGUgajAgKGRvdWJsZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fKSk7IGV4dGVybiBkb3VibGUgX19qMCAoZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18pKTsKZXh0ZXJuIGRvdWJsZSBqMSAoZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2oxIChkb3VibGUpIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXykpOwpleHRlcm4gZG91YmxlIGpuIChpbnQsIGRvdWJsZSkgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19qbiAoaW50LCBkb3VibGUpIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXykpOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZG91YmxlIF9feTAgKGRvdWJsZSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4dGVybiBkb3VibGUgeTEgKGRvdWJsZSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX195MSAoZG91YmxlKSBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKZXh0ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUp
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZG91YmxlIF9feW4gKGludCwg
ZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgoKZXh0ZXJuIGRvdWJs
ZSBlcmYgKGRvdWJsZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3Vi
bGUgX19lcmYgKGRvdWJsZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4dGVybiBk
b3VibGUgZXJmYyAoZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJu
IGRvdWJsZSBfX2VyZmMgKGRvdWJsZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4
dGVybiBkb3VibGUgbGdhbW1hIChkb3VibGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp
OyBleHRlcm4gZG91YmxlIF9fbGdhbW1hIChkb3VibGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXykpOwoKIyAyNjUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKZXh0ZXJu
IGRvdWJsZSBnYW1tYSAoZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0
ZXJuIGRvdWJsZSBfX2dhbW1hIChkb3VibGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp
OwoKCgoKCgpleHRlcm4gZG91YmxlIGxnYW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19sZ2FtbWFfciAo
ZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoK
CgoKCgoKZXh0ZXJuIGRvdWJsZSByaW50IChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKTsgZXh0ZXJuIGRvdWJsZSBfX3JpbnQgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXykpOwoKCmV4dGVybiBkb3VibGUgbmV4dGFmdGVyIChkb3VibGUgX194
LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgoKCgpleHRlcm4gZG91YmxlIHJlbWFpbmRlciAoZG91YmxlIF9feCwgZG91
YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19y
ZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXykpOwoKCgpleHRlcm4gZG91YmxlIHNjYWxibiAoZG91YmxlIF9feCwgaW50IF9fbikgX19h
dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBkb3VibGUgX19zY2FsYm4gKGRvdWJs
ZSBfX3gsIGludCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgpleHRlcm4g
aW50IGlsb2diIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0
ZXJuIGludCBfX2lsb2diIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p
KTsKIyA3MSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzIDQKIyA5MyAiL3Vzci9pbmNsdWRlL21h
dGguaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMyA0CiMgNTMg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKCgpleHRlcm4gZmxvYXQgYWNvc2Yg
KGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBmbG9hdCBf
X2Fjb3NmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKZXh0ZXJu
IGZsb2F0IGFzaW5mIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBl
eHRlcm4gZmxvYXQgX19hc2luZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18pKTsKCmV4dGVybiBmbG9hdCBhdGFuZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0IF9fYXRhbmYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fKSk7CgpleHRlcm4gZmxvYXQgYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0
IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBmbG9hdCBfX2F0YW4y
ZiAoZmxvYXQgX195LCBmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoK
CmV4dGVybiBmbG9hdCBjb3NmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XykpOyBleHRlcm4gZmxvYXQgX19jb3NmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXykpOwoKZXh0ZXJuIGZsb2F0IHNpbmYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fKSk7IGV4dGVybiBmbG9hdCBfX3NpbmYgKGZsb2F0IF9feCkgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fKSk7CgpleHRlcm4gZmxvYXQgdGFuZiAoZmxvYXQgX194KSBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0IF9fdGFuZiAoZmxvYXQgX194
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCmV4dGVybiBmbG9hdCBjb3NoZiAo
ZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0IF9f
Y29zaGYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgpleHRlcm4g
ZmxvYXQgc2luaGYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4
dGVybiBmbG9hdCBfX3NpbmhmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XykpOwoKZXh0ZXJuIGZsb2F0IHRhbmhmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXykpOyBleHRlcm4gZmxvYXQgX190YW5oZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18pKTsKCiMgODcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAz
IDQKCgpleHRlcm4gZmxvYXQgYWNvc2hmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXykpOyBleHRlcm4gZmxvYXQgX19hY29zaGYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fKSk7CgpleHRlcm4gZmxvYXQgYXNpbmhmIChmbG9hdCBfX3gpIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZmxvYXQgX19hc2luaGYgKGZsb2F0IF9f
eCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgpleHRlcm4gZmxvYXQgYXRhbmhmIChm
bG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZmxvYXQgX19h
dGFuaGYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKCgoKCgpl
eHRlcm4gZmxvYXQgZXhwZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p
KTsgZXh0ZXJuIGZsb2F0IF9fZXhwZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18pKTsKCgpleHRlcm4gZmxvYXQgZnJleHBmIChmbG9hdCBfX3gsIGludCAqX19leHBvbmVu
dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBmbG9hdCBfX2ZyZXhwZiAo
ZmxvYXQgX194LCBpbnQgKl9fZXhwb25lbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp
OwoKCmV4dGVybiBmbG9hdCBsZGV4cGYgKGZsb2F0IF9feCwgaW50IF9fZXhwb25lbnQpIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZmxvYXQgX19sZGV4cGYgKGZsb2F0IF9f
eCwgaW50IF9fZXhwb25lbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCmV4dGVy
biBmbG9hdCBsb2dmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBl
eHRlcm4gZmxvYXQgX19sb2dmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XykpOwoKCmV4dGVybiBmbG9hdCBsb2cxMGYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fKSk7IGV4dGVybiBmbG9hdCBfX2xvZzEwZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0
ZV9fICgoX19ub3Rocm93X18pKTsKCgpleHRlcm4gZmxvYXQgbW9kZmYgKGZsb2F0IF9feCwgZmxv
YXQgKl9faXB0cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBmbG9hdCBf
X21vZGZmIChmbG9hdCBfX3gsIGZsb2F0ICpfX2lwdHIpIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXykpOwoKIyAxMjcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKCgpleHRl
cm4gZmxvYXQgZXhwbTFmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp
OyBleHRlcm4gZmxvYXQgX19leHBtMWYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90
aHJvd19fKSk7CgoKZXh0ZXJuIGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0IF9fbG9nMXBmIChmbG9hdCBfX3gpIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCmV4dGVybiBmbG9hdCBsb2diZiAoZmxvYXQgX194
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0IF9fbG9nYmYgKGZs
b2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgojIDE1MiAiL3Vzci9pbmNs
dWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMgNAoKCmV4dGVybiBmbG9hdCBwb3dmIChmbG9hdCBfX3gs
IGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBmbG9hdCBf
X3Bvd2YgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p
KTsKCgpleHRlcm4gZmxvYXQgc3FydGYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90
aHJvd19fKSk7IGV4dGVybiBmbG9hdCBfX3NxcnRmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXykpOwoKCgoKCmV4dGVybiBmbG9hdCBoeXBvdGYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0IF9faHlw
b3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7
CgoKCgoKCmV4dGVybiBmbG9hdCBjYnJ0ZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0IF9fY2JydGYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fKSk7CgoKCgoKCgoKZXh0ZXJuIGZsb2F0IGNlaWxmIChmbG9hdCBfX3gp
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGZsb2F0IF9fY2VpbGYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90
aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBmYWJz
ZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZhYnNmIChmbG9hdCBfX3gpIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRl
cm4gZmxvYXQgZmxvb3JmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fZmxvb3JmIChmbG9h
dCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0IF9fZm1vZGYgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCmV4dGVybiBp
bnQgX19pc2luZmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlZiAoZmxv
YXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBpbnQgaXNpbmZmIChmbG9hdCBfX3ZhbHVlKSBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
ZXh0ZXJuIGludCBmaW5pdGVmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGRyZW1m
IChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4
dGVybiBmbG9hdCBfX2RyZW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fKSk7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKGZsb2F0IF9feCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBmbG9hdCBfX3NpZ25pZmljYW5k
ZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgpleHRlcm4g
ZmxvYXQgY29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19j
b3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93
X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgojIDIzMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGNhbGxzLmgiIDMgNApleHRlcm4gaW50IF9faXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCmV4dGVybiBpbnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGow
ZiAoZmxvYXQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZmxvYXQgX19q
MGYgKGZsb2F0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKZXh0ZXJuIGZsb2F0IGox
ZiAoZmxvYXQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZmxvYXQgX19q
MWYgKGZsb2F0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKZXh0ZXJuIGZsb2F0IGpu
ZiAoaW50LCBmbG9hdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBmbG9h
dCBfX2puZiAoaW50LCBmbG9hdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4dGVy
biBmbG9hdCB5MGYgKGZsb2F0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJu
IGZsb2F0IF9feTBmIChmbG9hdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4dGVy
biBmbG9hdCB5MWYgKGZsb2F0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJu
IGZsb2F0IF9feTFmIChmbG9hdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4dGVy
biBmbG9hdCB5bmYgKGludCwgZmxvYXQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBl
eHRlcm4gZmxvYXQgX195bmYgKGludCwgZmxvYXQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XykpOwoKCgoKCgpleHRlcm4gZmxvYXQgZXJmZiAoZmxvYXQpIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXykpOyBleHRlcm4gZmxvYXQgX19lcmZmIChmbG9hdCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fKSk7CmV4dGVybiBmbG9hdCBlcmZjZiAoZmxvYXQpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXykpOyBleHRlcm4gZmxvYXQgX19lcmZjZiAoZmxvYXQpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXykpOwpleHRlcm4gZmxvYXQgbGdhbW1hZiAoZmxvYXQpIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmIChmbG9hdCkgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgojIDI2NSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNh
bGxzLmgiIDMgNApleHRlcm4gZmxvYXQgZ2FtbWFmIChmbG9hdCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fKSk7IGV4dGVybiBmbG9hdCBfX2dhbW1hZiAoZmxvYXQpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXykpOwoKCgoKCgpleHRlcm4gZmxvYXQgbGdhbW1hZl9yIChmbG9hdCwgaW50
ICpfX3NpZ25nYW1wKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0
IF9fbGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKTsKCgoKCgoKCmV4dGVybiBmbG9hdCByaW50ZiAoZmxvYXQgX194KSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0IF9fcmludGYgKGZsb2F0IF9feCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKZXh0ZXJuIGZsb2F0IG5leHRhZnRlcmYg
KGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25leHRhZnRlcmYgKGZsb2F0
IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGZsb2F0IHJlbWFpbmRlcmYgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0
IF9fcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXykpOwoKCgpleHRlcm4gZmxvYXQgc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJuZiAoZmxv
YXQgX194LCBpbnQgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKZXh0ZXJu
IGludCBpbG9nYmYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4
dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
KSk7CiMgOTQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMyA0CiMgMTE0ICIvdXNyL2luY2x1ZGUv
bWF0aC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzIDQKIyA1
MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMgNAoKCmV4dGVybiBsb25nIGRvdWJs
ZSBhY29zbCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fKSk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXNpbmwgKGxvbmcgZG91Ymxl
IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X2FzaW5sIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW5sIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFubCAobG9uZyBkb3VibGUg
X194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCmV4dGVybiBsb25nIGRvdWJsZSBh
dGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbjJsIChsb25nIGRvdWJsZSBf
X3ksIGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKZXh0
ZXJuIGxvbmcgZG91YmxlIGNvc2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2wgKGxvbmcgZG91YmxlIF9feCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2lubCAo
bG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fc2lubCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18pKTsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5sIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX190YW5sIChsb25n
IGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGNvc2hsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NobCAobG9uZyBkb3VibGUgX194KSBfX2F0
dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5obCAobG9u
ZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fc2luaGwgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv
d19fKSk7CgpleHRlcm4gbG9uZyBkb3VibGUgdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmhsIChsb25n
IGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKIyA4NyAiL3Vzci9p
bmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMgNAoKCmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwg
KGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2Fjb3NobCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2luaGwgKGxvbmcgZG91YmxlIF9feCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5o
bCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCmV4dGVy
biBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5obCAobG9uZyBkb3VibGUgX194
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgoKCmV4dGVybiBsb25nIGRvdWJs
ZSBleHBsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmcmV4cGwgKGxvbmcgZG91Ymxl
IF9feCwgaW50ICpfX2V4cG9uZW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fZnJleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVu
dCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxk
ZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xkZXhwbCAobG9uZyBkb3VibGUgX194
LCBpbnQgX19leHBvbmVudCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGxvZ2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90
aHJvd19fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgX19h
dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAo
bG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBtb2RmbCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSAqX19pcHRyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fbW9kZmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9faXB0
cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgojIDEyNyAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGNhbGxzLmgiIDMgNAoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBtMWwgKGxvbmcgZG91
YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2V4cG0xbCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p
KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cxcGwgKGxvbmcg
ZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dibCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18pKTsKCiMgMTUyICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2Fs
bHMuaCIgMyA0CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBk
b3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
KSk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19oeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNicnRsIChs
b25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19jYnJ0bCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18pKTsKCgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2VpbGwgKGxvbmcgZG91YmxlIF9f
eCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jZWlsbCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0
ZXJuIGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f
KSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbG9v
cmwgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbG9vcmwgKGxvbmcg
ZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbW9kbCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4g
bG9uZyBkb3VibGUgX19mbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9f
YXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mbCAobG9u
ZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVsIChsb25nIGRvdWJsZSBf
X3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKCgoKZXh0ZXJuIGludCBpc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9f
YXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgpleHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9u
ZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p
KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpZ25pZmljYW5kbCAobG9uZyBkb3VibGUgX194KSBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lnbmlm
aWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoK
CgoKCmV4dGVybiBsb25nIGRvdWJsZSBjb3B5c2lnbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NvcHlzaWdubCAobG9uZyBkb3VibGUg
X194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiMgMjMxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2Fs
bHMuaCIgMyA0CmV4dGVybiBpbnQgX19pc25hbmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
ZXh0ZXJuIGludCBpc25hbmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBk
b3VibGUgajBsIChsb25nIGRvdWJsZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2owbCAobG9uZyBkb3VibGUpIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXykpOwpleHRlcm4gbG9uZyBkb3VibGUgajFsIChsb25nIGRvdWJsZSkgX19hdHRyaWJ1
dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2oxbCAobG9uZyBkb3Vi
bGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwpleHRlcm4gbG9uZyBkb3VibGUgam5s
IChpbnQsIGxvbmcgZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fam5sIChpbnQsIGxvbmcgZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHkwbCAobG9uZyBkb3VibGUpIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX195MGwgKGxvbmcgZG91
YmxlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHkx
bCAobG9uZyBkb3VibGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX195MWwgKGxvbmcgZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p
KTsKZXh0ZXJuIGxvbmcgZG91YmxlIHlubCAoaW50LCBsb25nIGRvdWJsZSkgX19hdHRyaWJ1dGVf
XyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3lubCAoaW50LCBsb25nIGRv
dWJsZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKCgoKCmV4dGVybiBsb25nIGRv
dWJsZSBlcmZsIChsb25nIGRvdWJsZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2VyZmwgKGxvbmcgZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmNsIChsb25nIGRvdWJsZSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmNsIChsb25n
IGRvdWJsZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CmV4dGVybiBsb25nIGRvdWJs
ZSBsZ2FtbWFsIChsb25nIGRvdWJsZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2xnYW1tYWwgKGxvbmcgZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18pKTsKCiMgMjY1ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMyA0
CmV4dGVybiBsb25nIGRvdWJsZSBnYW1tYWwgKGxvbmcgZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZ2FtbWFsIChsb25nIGRvdWJsZSkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBs
Z2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZ2FtbWFsX3IgKGxvbmcgZG91Ymxl
LCBpbnQgKl9fc2lnbmdhbXApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18g
KChfX25vdGhyb3dfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yaW50bCAobG9uZyBkb3VibGUg
X194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUg
bmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19yZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2Fs
Ym5sIChsb25nIGRvdWJsZSBfX3gsIGludCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYm5sIChsb25nIGRvdWJsZSBfX3gsIGludCBf
X24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgpleHRlcm4gaW50IGlsb2dibCAo
bG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIGlu
dCBfX2lsb2dibCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p
KTsKIyAxMTUgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMyA0CiMgMTMwICIvdXNyL2luY2x1ZGUv
bWF0aC5oIiAzIDQKZXh0ZXJuIGludCBzaWduZ2FtOwojIDI1NyAiL3Vzci9pbmNsdWRlL21hdGgu
aCIgMyA0CnR5cGVkZWYgZW51bQp7CiAgX0lFRUVfID0gLTEsCiAgX1NWSURfLAogIF9YT1BFTl8s
CiAgX1BPU0lYXywKICBfSVNPQ18KfSBfTElCX1ZFUlNJT05fVFlQRTsKCgoKCmV4dGVybiBfTElC
X1ZFUlNJT05fVFlQRSBfTElCX1ZFUlNJT047CiMgMjgyICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAz
IDQKc3RydWN0IGV4Y2VwdGlvbgoKICB7CiAgICBpbnQgdHlwZTsKICAgIGNoYXIgKm5hbWU7CiAg
ICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAgZG91YmxlIHJldHZhbDsKICB9OwoK
CgoKZXh0ZXJuIGludCBtYXRoZXJyIChzdHJ1Y3QgZXhjZXB0aW9uICpfX2V4Yyk7CiMgMzgyICIv
dXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5l
LmgiIDEgMyA0CiMgMjkxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMgNApleHRl
cm4gX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3VibGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhy
b3dfXykpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XykpIF9fc2duIChkb3VibGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+
IDAuMCA/IDEuMCA6IC0xLjApOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9f
YXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fc2duZiAoZmxvYXQgX194KSB7IHJldHVybiBf
X3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IGV4dGVybiBfX2lu
bGluZSBsb25nIGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXykpIF9fc2dubCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4w
ID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9CiMgNDMzICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoaW5saW5lLmgiIDMgNApleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBk
b3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fYXRhbjJsIChfX3ksIF9feCk7IH0KIyA0NzMg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMyA0CmV4dGVybiBfX2lubGluZSBkb3Vi
bGUgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgZmFicyAoZG91YmxlIF9feCkgeyByZXR1
cm4gX19idWlsdGluX2ZhYnMgKF9feCk7IH0KCmV4dGVybiBfX2lubGluZSBmbG9hdCBfX2F0dHJp
YnV0ZV9fICgoX19ub3Rocm93X18pKSBmYWJzZiAoZmxvYXQgX194KSB7IHJldHVybiBfX2J1aWx0
aW5fZmFic2YgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXykpIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fYnVp
bHRpbl9mYWJzbCAoX194KTsgfQoKZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fYXR0cmli
dXRlX18gKChfX25vdGhyb3dfXykpIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4g
X19idWlsdGluX2ZhYnNsIChfX3gpOyB9CiMgNTA2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5s
aW5lLmgiIDMgNApleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ24xbCAobG9uZyBkb3Vi
bGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19zZ24xbCAobG9uZyBkb3VibGUg
X194KSB7IF9fZXh0ZW5zaW9uX18gdW5pb24geyBsb25nIGRvdWJsZSBfX3hsZDsgdW5zaWduZWQg
aW50IF9feGlbM107IH0gX19uID0geyBfX3hsZDogX194IH07IF9fbi5fX3hpWzJdID0gKF9fbi5f
X3hpWzJdICYgMHg4MDAwKSB8IDB4M2ZmZjsgX19uLl9feGlbMV0gPSAweDgwMDAwMDAwOyBfX24u
X194aVswXSA9IDA7IHJldHVybiBfX24uX194bGQ7IH0KIyA1MzAgIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhpbmxpbmUuaCIgMyA0CmV4dGVybiBfX2lubGluZSBkb3VibGUgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fKSkgZmxvb3IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIg
OiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgZmxvb3JmIChm
bG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNp
Z25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3Rt
cDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAg
PSAoX19jdyAmIDB4ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIg
OiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChf
X3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJt
IiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIHsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBp
bnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192
b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4
ZjNmZikgfCAweDA0MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19j
d3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIw
IiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyBy
ZXR1cm4gX192YWx1ZTsgfQojIDU0MSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAz
IDQKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBj
ZWlsIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRp
bGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50
IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBf
X2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxk
Y3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAi
IDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIGNlaWxmIChmbG9hdCBfX3gpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19j
dzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGls
ZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikg
fCAweDA4MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkp
OyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194
KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4g
X192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19hdHRyaWJ1dGVfXyAoKF9f
bm90aHJvd19fKSkgY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxl
IHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUw
IiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19h
c20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192
b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9CiMg
NzEzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMgNApleHRlcm4gX19pbmxpbmUg
aW50Cl9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fZmluaXRlIChkb3VibGUgX194KQp7
CiAgcmV0dXJuIChfX2V4dGVuc2lvbl9fCiAgICgoKCgodW5pb24geyBkb3VibGUgX19kOyBpbnQg
X19pWzJdOyB9KSB7X19kOiBfX3h9KS5fX2lbMV0KICAgICAgfCAweDgwMGZmZmZmdSkgKyAxKSA+
PiAzMSkpOwp9CiMgMzgzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAojIDQzOCAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMyA0CgojIDMgInV0aWxfZHBfc2ltLmMiIDIKIyAxICIvdXNyL2xpYi9n
Y2MvaTY4Ni1wYy1saW51eC1nbnUvMy40LjQvaW5jbHVkZS9zdGRhcmcuaCIgMSAzIDQKIyAxMDUg
Ii91c3IvbGliL2djYy9pNjg2LXBjLWxpbnV4LWdudS8zLjQuNC9pbmNsdWRlL3N0ZGFyZy5oIiAz
IDQKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDQgInV0aWxfZHBfc2ltLmMiIDIK
IyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMyA0CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MvaTY4Ni1wYy1saW51eC1nbnUvMy40LjQv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzNCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMg
NAoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAg
ICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAy
KSkpOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAq
X19zcmMsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19h
dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCgpleHRlcm4gdm9pZCAqbWVt
Y2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBf
X3NyYywKICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChf
X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCgpl
eHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp
KTsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQg
Kl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAy
KSkpOwoKCmV4dGVybiB2b2lkICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBz
aXplX3QgX19uKQogICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgojIDgy
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAoKCmV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIg
Kl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f
ICgxLCAyKSkpOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0
LAogICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs
X18gKDEsIDIpKSk7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgpleHRl
cm4gY2hhciAqc3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3NyYywKICAgICAgICBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJu
IGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAg
IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBpbnQgc3RybmNt
cCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgc3Ry
Y29sbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3JjLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9f
YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCiMgMTMwICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDMgNApleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykp
IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKIyAxNjUgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMyA0CgoKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKZXh0ZXJuIGNo
YXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKQogICAgIF9fYXR0cmlidXRl
X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRl
X18gKChfX25vbm51bGxfXyAoMSkpKTsKCiMgMTgxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMg
NAoKCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNo
YXIgKl9fcmVqZWN0KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsK
CgpleHRlcm4gc2l6ZV90IHN0cnNwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAq
X19hY2NlcHQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0
ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNj
ZXB0KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBj
aGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25l
ZWRsZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVy
biBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19kZWxpbSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJp
YnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAo
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxp
bSwKICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAzKSkpOwoKZXh0
ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u
bnVsbF9fICgyLCAzKSkpOwojIDI0MCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKCgpleHRl
cm4gc2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3MpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxKSkpOwoKIyAyNTQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CgoK
ZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIF9fYXR0cmlidXRlX18gKChfX25v
dGhyb3dfXykpOwoKIyAyODEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4dGVybiBjaGFy
ICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4p
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u
bnVsbF9fICgyKSkpOwoKCgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90
IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u
bnVsbF9fICgxKSkpOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywg
dm9pZCAqX19kZXN0LCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df
XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gdm9pZCBi
emVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p
KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBiY21wIChf
X2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBf
X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGNoYXIgKmluZGV4
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro
cm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u
dWxsX18gKDEpKSk7CgoKZXh0ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4g
aW50IGZmcyAoaW50IF9faSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwojIDMyNSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0
ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19z
MikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGlu
dCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNp
emVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDM0
OCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAq
Kl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVsaW0pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAo
KF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDQxNCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMSAzIDQKIyA0MTUgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMSAz
IDQKIyA1MiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzIDQKIyAxICIvdXNyL2luY2x1
ZGUvZW5kaWFuLmgiIDEgMyA0CiMgMzcgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMyA0CiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMyA0CiMgMzggIi91c3IvaW5jbHVkZS9lbmRp
YW4uaCIgMiAzIDQKIyA1MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMgNAojIDM5
NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzIDQKZXh0ZXJuIHZvaWQgKl9fcmF3bWVt
Y2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2MpOwojIDk2OSAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzIDQKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzEgKF9fY29u
c3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ry
Y3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdCkKewogIHJlZ2lzdGVyIHNp
emVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3Nb
X19yZXN1bHRdICE9IF9fcmVqZWN0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7
Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9f
cywgaW50IF9fcmVqZWN0MSwKICAgICAgICAgaW50IF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGlu
ZSBzaXplX3QKX19zdHJjc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwg
aW50IF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUg
KF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQogICYm
IF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19y
ZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MzIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fcmVqZWN0MSwKICAgICAgICAgaW50IF9fcmVqZWN0MiwgaW50IF9fcmVq
ZWN0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MzIChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0MiwKICAgICAgIGludCBfX3JlamVjdDMp
CnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRd
ICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAmJiBfX3NbX19yZXN1bHRd
ICE9IF9fcmVqZWN0MiAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MykKICAgICsrX19yZXN1
bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgMTA0NSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAzIDQKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2FjY2VwdCk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzEg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19y
ZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsrX19y
ZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ry
c3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICBpbnQgX19h
Y2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIpCnsKICByZWdpc3RlciBzaXplX3Qg
X19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19z
W19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3Vs
dDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpf
X3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgaW50IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0Myk7
CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyLCBpbnQgX19hY2NlcHQzKQp7CiAgcmVnaXN0ZXIg
c2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQx
IHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCiAgfHwgX19zW19fcmVzdWx0XSA9PSBfX2Fj
Y2VwdDMpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDExMjEgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMyA0CmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBi
cmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICBpbnQgX19h
Y2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hh
ciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyKQp7CgogIHdoaWxlICgqX19zICE9
ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIpCiAgICArK19f
czsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90
KSBfX3M7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hh
ciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICBpbnQgX19hY2NlcHQyLCBpbnQgX19hY2Nl
cHQzKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyLAogICAgICAgaW50IF9fYWNjZXB0MykK
ewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0g
X19hY2NlcHQyCiAgJiYgKl9fcyAhPSBfX2FjY2VwdDMpCiAgICArK19fczsKICByZXR1cm4gKl9f
cyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KIyAxMTcz
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMgNApleHRlcm4gX19pbmxpbmUgY2hhciAq
X19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCk7CmV4
dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2Vw
LCBjaGFyICoqX19uZXh0cCkKewogIGNoYXIgKl9fcmVzdWx0OwogIGlmIChfX3MgPT0gKCh2b2lk
ICopMCkpCiAgICBfX3MgPSAqX19uZXh0cDsKICB3aGlsZSAoKl9fcyA9PSBfX3NlcCkKICAgICsr
X19zOwogIF9fcmVzdWx0ID0gKCh2b2lkICopMCk7CiAgaWYgKCpfX3MgIT0gJ1wwJykKICAgIHsK
ICAgICAgX19yZXN1bHQgPSBfX3MrKzsKICAgICAgd2hpbGUgKCpfX3MgIT0gJ1wwJykKIGlmICgq
X19zKysgPT0gX19zZXApCiAgIHsKICAgICBfX3NbLTFdID0gJ1wwJzsKICAgICBicmVhazsKICAg
fQogICAgICAqX19uZXh0cCA9IF9fczsKICAgIH0KICByZXR1cm4gX19yZXN1bHQ7Cn0KIyAxMjA1
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMgNApleHRlcm4gY2hhciAqX19zdHJzZXBf
ZyAoY2hhciAqKl9fc3RyaW5ncCwgX19jb25zdCBjaGFyICpfX2RlbGltKTsKIyAxMjIzICIvdXNy
L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMgNApleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJz
ZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAq
Cl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hh
ciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSAmJiAoKl9f
cyA9IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZWplY3QpICYmICFf
X2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZXR2YWwpICYmIChfX3JlamVjdCkgPT0gJ1wwJyA/IChj
aGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19yZWplY3QpIDogX19idWlsdGluX3N0cmNo
ciAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikwKSkKICAgICooKl9fcykrKyA9
ICdcMCc7CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJz
ZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0Mik7CmV4dGVy
biBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3Qx
LCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBp
ZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9f
Y3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiB7CiAgIGlmICgqX19jcCA9PSAnXDAnKQog
ICAgIHsKICAgICAgIF9fY3AgPSAoKHZvaWQgKikwKTsKICAgYnJlYWs7CiAgICAgfQogICBpZiAo
Kl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MikKICAgICB7CiAgICAgICAq
X19jcCsrID0gJ1wwJzsKICAgICAgIGJyZWFrOwogICAgIH0KICAgKytfX2NwOwogfQogICAgICAq
X19zID0gX19jcDsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBj
aGFyICpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWpl
Y3QyLAogICAgICAgY2hhciBfX3JlamVjdDMpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ry
c2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsIGNoYXIg
X19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3Jl
dHZhbCAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9f
cmV0dmFsOwogICAgICB3aGlsZSAoMSkKIHsKICAgaWYgKCpfX2NwID09ICdcMCcpCiAgICAgewog
ICAgICAgX19jcCA9ICgodm9pZCAqKTApOwogICBicmVhazsKICAgICB9CiAgIGlmICgqX19jcCA9
PSBfX3JlamVjdDEgfHwgKl9fY3AgPT0gX19yZWplY3QyIHx8ICpfX2NwID09IF9fcmVqZWN0MykK
ICAgICB7CiAgICAgICAqX19jcCsrID0gJ1wwJzsKICAgICAgIGJyZWFrOwogICAgIH0KICAgKytf
X2NwOwogfQogICAgICAqX19zID0gX19jcDsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KIyAx
Mjk5ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMSAzIDQKIyAzMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKIyAxICIvdXNy
L2xpYi9nY2MvaTY4Ni1wYy1saW51eC1nbnUvMy40LjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQK
IyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCiMgNTgyICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDMgNAoKCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0
cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7Cgpl
eHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykp
OwoKIyA5NjEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CgojIDEzMDAgIi91c3IvaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMiAzIDQKCgoKCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25z
dCBjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1
dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxMzIzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgi
IDMgNApleHRlcm4gY2hhciAqX19zdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXpl
X3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18g
KChfX21hbGxvY19fKSk7CiMgNDE4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMyA0CiMgNDI2
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAoKIyA1ICJ1dGlsX2RwX3NpbS5jIiAyCgojIDEg
ImlvX2xpYl9oZWFkZXIuaCIgMQp0eXBlZGVmIHN0cnVjdAogICAgewogICAgY2hhciAqbW9kZTsK
ICAgIGNoYXIgKmNvbW1lbnRzOwogICAgaW50IG5zZXE7CiAgICBjaGFyICoqc2VxX25hbWU7CiAg
ICBmbG9hdCAqKlBXX1NEOwogICAgZmxvYXQgKipQV19JRDsKICAgIGZsb2F0ICpTRVFfVzsKICAg
IH1XZWlnaHRzOwoKdHlwZWRlZiBzdHJ1Y3QKICAgIHsKICAgIGludCAqKmxpc3Q7CiAgICBpbnQg
dG90X2xpc3Q7CiAgICBpbnQgKipzdGVtOwogICAgaW50IHRvdF9zdGVtOwogICAgaW50IG5fZmll
bGRzOwogICAgaW50IG5zZXE7CiAgICBpbnQgKmxlbjsKICAgIGludCAqKipzdHJ1YzsKICAgIHN0
cnVjdCBTZXF1ZW5jZSAqUzsKICAgIH1TdHJ1Y3R1cmU7CgpzdHJ1Y3QgU2VxdWVuY2UKICAgIHsK
ICAgICAgY2hhciAqKmZpbGU7CiAgICAgIGNoYXIgKipzZXFfY29tbWVudDsKICAgICAgY2hhciAq
KmFsbl9jb21tZW50OwogICAgICBjaGFyICoqc2VxOwogICAgICBpbnQgKmxlbjsKICAgICAgaW50
IG1heF9sZW47CiAgICAgIGludCBtaW5fbGVuOwogICAgICBpbnQgbnNlcTsKICAgICAgaW50IG1h
eF9uc2VxOwogICAgICBjaGFyICoqbmFtZTsKCgogICAgICBzdHJ1Y3QgQ29uc3RyYWludF9saXN0
ICpDTDsKICAgICAgaW50IGNvbnRhaW5zX2dhcDsKICAgICAgY2hhciAqdHlwZTsKICAgICAgV2Vp
Z2h0cyAqVzsKICAgICAgY2hhciB0ZW1wbGF0ZV9maWxlWzEwMF07CiAgICAgIHN0cnVjdCBUZW1w
bGF0ZSAqKlQ7Cgp9Owp0eXBlZGVmIHN0cnVjdCBTZXF1ZW5jZSBTZXF1ZW5jZTsKCnN0cnVjdCBU
ZW1wbGF0ZQp7CiAgY2hhciBzZXFfdHlwZVsxMF07CiAgc3RydWN0IFhfdGVtcGxhdGUgKlA7CiAg
c3RydWN0IFhfdGVtcGxhdGUgKlM7CiAgc3RydWN0IFhfdGVtcGxhdGUgKlI7CiAgc3RydWN0IFhf
dGVtcGxhdGUgKkc7CiAgc3RydWN0IFhfdGVtcGxhdGUgKlJCOwp9Owp0eXBlZGVmIHN0cnVjdCBU
ZW1wbGF0ZSBUZW1wbGF0ZTsKCnN0cnVjdCBYX3RlbXBsYXRlCnsKICBjaGFyIHNlcV9uYW1lWzEw
MF07CiAgY2hhciB0ZW1wbGF0ZV90eXBlWzEwMF07CiAgY2hhciB0ZW1wbGF0ZV9uYW1lWzEwMF07
CiAgY2hhciB0ZW1wbGF0ZV9maWxlWzEwMF07CiAgc3RydWN0IFBfdGVtcGxhdGUgKlZQOwogIHN0
cnVjdCBTX3RlbXBsYXRlICpWUzsKICBzdHJ1Y3QgUl90ZW1wbGF0ZSAqVlI7CiAgc3RydWN0IEdf
dGVtcGxhdGUgKlZHOwogIHN0cnVjdCBSX3RlbXBsYXRlICpWUkI7Cgp9Owp0eXBlZGVmIHN0cnVj
dCBYX3RlbXBsYXRlIFhfdGVtcGxhdGU7CgpzdHJ1Y3QgUF90ZW1wbGF0ZQp7CiAgY2hhciBwZGJf
aWRbMTAwXTsKICBjaGFyIHB1YmxpY19wZGI7Cn07CnR5cGVkZWYgc3RydWN0IFBfdGVtcGxhdGUg
UF90ZW1wbGF0ZTsKCnN0cnVjdCBTX3RlbXBsYXRlCnsKICBTZXF1ZW5jZSAqUzsKfTsKdHlwZWRl
ZiBzdHJ1Y3QgU190ZW1wbGF0ZSBTX3RlbXBsYXRlOwoKc3RydWN0IFJfdGVtcGxhdGUKewogIHN0
cnVjdCBBbGlnbm1lbnQgKkE7Cn07CnR5cGVkZWYgc3RydWN0IFJfdGVtcGxhdGUgUl90ZW1wbGF0
ZTsKCgpzdHJ1Y3QgR190ZW1wbGF0ZQp7CiAgU2VxdWVuY2UgKlM7Cn07CnR5cGVkZWYgc3RydWN0
IEdfdGVtcGxhdGUgR190ZW1wbGF0ZTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKICAgIHsKICAgIGlu
dCBtYXhfbGVuOwogICAgaW50IGFscF9zaXplOwogICAgY2hhciAqYWxwaGFiZXQ7CiAgICBpbnQg
Kipjb3VudDM7CiAgICBpbnQgKipjb3VudDsKICAgIGludCAqKmNvdW50MjsKICAgIH1Qcm9maWxl
OwoKc3RydWN0IEFsaWdubWVudAogICAgewoKICAgIGludCBtYXhfbGVuOwogICAgaW50IG1pbl9s
ZW47CiAgICBpbnQgKiBsZW47CiAgICBpbnQgZGVjbGFyZWRfbGVuOwogICAgaW50IG1heF9uX3Nl
cTsKICAgIGludCBuc2VxOwogICAgaW50IGxlbl9hbG47CgoKICAgIGNoYXIgKipmaWxlOwogICAg
Y2hhciAqKnNlcV9jb21tZW50OwogICAgY2hhciAqKmFsbl9jb21tZW50OwogICAgY2hhciAqKm5h
bWU7CgogICAgY2hhciAqKmV4cGFuZGVkX29yZGVyOwogICAgY2hhciAqKnRyZWVfb3JkZXI7CiAg
ICBjaGFyICoqc2VxX2FsOwoKICAgIGludCAqKm9yZGVyOwogICAgUHJvZmlsZSAqUDsKICAgIFNl
cXVlbmNlICpTOwogICAgc3RydWN0IERwX1Jlc3VsdCAqRHBfcmVzdWx0OwogICAgc3RydWN0IENv
bnN0cmFpbnRfbGlzdCAqQ0w7CgogICAgaW50ICoqc2VxX2NhY2hlOwoKCgoKCgoKICAgIGludCAq
KmNkbmFfY2FjaGU7CgoKCgoKICAgIGludCAqIHNjb3JlX3NlcTsKICAgIGludCAqKiBzY29yZV9y
ZXM7CiAgICBpbnQgc2NvcmVfYWxuOwogICAgaW50IHNjb3JlOwoKICAgIGludCBjcHU7CiAgICBp
bnQgZmluaXNoZWQ7CgoKICAgIGludCBvdXRwdXRfcmVzX251bTsKICAgIGludCByZXNpZHVlX2Nh
c2U7CiAgICAgIGludCBleHBhbmQ7CgogICAgIGludCB1c2VkOwogICAgIGludCBudW07CiAgICAg
aW50ICoqcG9zOwoKICAgIHN0cnVjdCBBbGlnbm1lbnQgKiBBOwoKICAgIGludCByYW5kb21fdGFn
OwoKICAgIH07Cgp0eXBlZGVmIHN0cnVjdCBBbGlnbm1lbnQgQWxpZ25tZW50Owp0eXBlZGVmIHN0
cnVjdAogICAgewogICAgaW50IGluX3NlcTsKICAgIEZJTEUgKmZwOwogICAgaW50IGZvbnQ7CiAg
ICBpbnQgeDA7CiAgICBpbnQgeTA7CiAgICBpbnQgeDsKICAgIGludCB5OwogICAgaW50IG5fcGFn
ZXM7CiAgICBpbnQgbWF4X2xpbmVfcHBhZ2U7CiAgICBpbnQgbl9saW5lOwogICAgaW50IGxpbmU7
CiAgICBpbnQgZW9wOwogICAgaW50IGluX2h0bWxfc3BhbjsKICAgIGNoYXIgcHJldmlvdXNfaHRt
bF9jb2xvclsxMDBdOwoKICAgIH0KRklMRV9mb3JtYXQ7Cgp0eXBlZGVmIHN0cnVjdAogICAgewog
ICAgZmxvYXQgcjsKICAgIGZsb2F0IGc7CiAgICBmbG9hdCBiOwogICAgY2hhciBodG1sX2NvbG9y
WzMwXTsKICAgIGNoYXIgaHRtbF9jb2xvcl9jbGFzc1szMF07CiAgICBpbnQgYXNjaWlfdmFsdWU7
CiAgICB9CkNvbG9yOwoKClNlcXVlbmNlICogZmlsbF9zZXF1ZW5jZV9zdHJ1YyAoIGludCBuc2Vx
LCBjaGFyICoqc2VxdWVuY2VzLCBjaGFyICoqc2VxX25hbWUpOwpTZXF1ZW5jZSAqIGN3X3JlYWRf
c2VxdWVuY2VzICggY2hhciAqc2VxX25hbWUpOwpTZXF1ZW5jZSAqIGdldF9zZXF1ZW5jZV90eXBl
IChTZXF1ZW5jZSAqUyk7CkFsaWdubWVudCogZ2V0X2Fsbl90eXBlIChBbGlnbm1lbnQgKkEpOwpj
aGFyICogZ2V0X3N0cmluZ190eXBlIChjaGFyICpzdHJpbmcpOwoKCnZvaWQgZ2V0X3NlcXVlbmNl
IChjaGFyICpzZXFfZmlsZSxpbnQgKk5TRVEsIGNoYXIgKioqU0VRLCBjaGFyICoqKlNOLCBpbnQg
KipzbCwgaW50ICptaW4sIGludCAqbWF4KTsKCmludCAqKiBnZXRfbWF0cml4ICggY2hhciAqbmFt
ZSwgY2hhciAqZm9ybWF0KTsKaW50ICoqIHJlYWRfbWF0cmljZSAoY2hhciAqbWF0X25hbWUpOwpp
bnQgKipuZWdfbWF0cml4MnBvc19tYXRyaXggKCBpbnQgKiptYXRyaXgpOwoKCnZvaWQgcHJpbnRf
YWxuICggQWxpZ25tZW50ICpCKTsKCmludCBvdXRwdXRfcmVsaWFiaWxpdHlfcHMgKCBBbGlnbm1l
bnQgKkIsQWxpZ25tZW50ICpTLCBjaGFyICpuYW1lKTsKaW50IG91dHB1dF9yZWxpYWJpbGl0eV9w
ZGYgKCBBbGlnbm1lbnQgKkIsQWxpZ25tZW50ICpTLCBjaGFyICpuYW1lKTsKaW50IG91dHB1dF9y
ZWxpYWJpbGl0eV9odG1sICggQWxpZ25tZW50ICpCLEFsaWdubWVudCAqUywgY2hhciAqbmFtZSk7
CmludCBvdXRwdXRfY29sb3JfcHMgKCBBbGlnbm1lbnQgKkIsQWxpZ25tZW50ICpTLCBjaGFyICpu
YW1lKTsKaW50IG91dHB1dF9jb2xvcl9wZGYgKCBBbGlnbm1lbnQgKkIsQWxpZ25tZW50ICpTLCBj
aGFyICpuYW1lKTsKaW50IG91dHB1dF9jb2xvcl9odG1sICggQWxpZ25tZW50ICpCLEFsaWdubWVu
dCAqUywgY2hhciAqbmFtZSk7CnZvaWQgZ2V0X3JnYl92YWx1ZXMoaW50IHZhbCwgQ29sb3IgKkMp
OwppbnQgb3V0cHV0X3JlbGlhYmlsaXR5X2Zvcm1hdCAoIEFsaWdubWVudCAqQixBbGlnbm1lbnQg
KlMsIGNoYXIgKm5hbWUsIEZJTEVfZm9ybWF0ICooKnZmb3Blbl9mb3JtYXQpICggY2hhciAqKSxG
SUxFX2Zvcm1hdCAqKCpwcmludF9mb3JtYXRfc3RyaW5nKSAoIGNoYXIgKiAsQ29sb3IgKiwgQ29s
b3IgKiwgRklMRV9mb3JtYXQqKSxGSUxFX2Zvcm1hdCAqKCpwcmludF9mb3JtYXRfY2hhcikgKCBp
bnQgLENvbG9yICosIENvbG9yICosIEZJTEVfZm9ybWF0Kiksdm9pZCAoKmdldF9yZ2JfdmFsdWVz
X2Zvcm1hdCkgKCBpbnQgLENvbG9yICopLEZJTEVfZm9ybWF0KiAoKnZmY2xvc2VfZm9ybWF0KSAo
IEZJTEVfZm9ybWF0ICopKTsKCgoKCgppbnQgb3V0cHV0X3Njb3JlX2Zvcm1hdCAoIEFsaWdubWVu
dCAqQixBbGlnbm1lbnQgKlMsIGNoYXIgKm5hbWUsIEZJTEVfZm9ybWF0ICooKnZmb3Blbl9mb3Jt
YXQpICggY2hhciAqKSxGSUxFX2Zvcm1hdCAqKCpwcmludF9mb3JtYXRfc3RyaW5nKSAoIGNoYXIg
KiAsQ29sb3IgKiwgQ29sb3IgKiwgRklMRV9mb3JtYXQqKSxGSUxFX2Zvcm1hdCAqKCpwcmludF9m
b3JtYXRfY2hhcikgKCBpbnQgLENvbG9yICosIENvbG9yICosIEZJTEVfZm9ybWF0Kiksdm9pZCAo
KmdldF9yZ2JfdmFsdWVzX2Zvcm1hdCkgKCBpbnQgLENvbG9yICopLEZJTEVfZm9ybWF0KiAoKnZm
Y2xvc2VfZm9ybWF0KSAoIEZJTEVfZm9ybWF0ICopKTsKCgoKCgoKCkZJTEVfZm9ybWF0ICogcHJp
bnRfcHNfc3RyaW5nICggY2hhciAqcyAsIENvbG9yICpib3gsIENvbG9yICppbmssIEZJTEVfZm9y
bWF0ICpmKTsKRklMRV9mb3JtYXQgKiBwcmludF9wc19jaGFyICggaW50IGMsIENvbG9yICpib3gs
IENvbG9yICppbmssIEZJTEVfZm9ybWF0ICpmKTsKCgoKdm9pZCBnZXRfcmdiX3ZhbHVlc19wcyAo
IGludCB2YWwsIENvbG9yICpDKTsKRklMRV9mb3JtYXQqIHZmb3Blbl9wcyAoIGNoYXIgKm5hbWUp
OwpGSUxFX2Zvcm1hdCogdmZjbG9zZV9wcyAoIEZJTEVfZm9ybWF0ICpmcHMpOwoKRklMRV9mb3Jt
YXQgKnByaW50X2h0bWxfc3RyaW5nKCBjaGFyICpzLCBDb2xvciAqYm94LCBDb2xvciAqaW5rLCBG
SUxFX2Zvcm1hdCAqZmh0bWwpOwpGSUxFX2Zvcm1hdCAqIHByaW50X2h0bWxfY2hhciAoIGludCBj
LCBDb2xvciAqYm94LCBDb2xvciAqaW5rLCBGSUxFX2Zvcm1hdCAqZik7CnZvaWQgZ2V0X3JnYl92
YWx1ZXNfaHRtbCAoIGludCB2YWwsIENvbG9yICpDKTsKRklMRV9mb3JtYXQqIHZmb3Blbl9odG1s
ICggY2hhciAqbmFtZSk7CkZJTEVfZm9ybWF0KiB2ZmNsb3NlX2h0bWwgKCBGSUxFX2Zvcm1hdCAq
Zmh0bWwpOwoKaW50IG91dHB1dF9yZWxpYWJpbGl0eV9hc2NpaSAoIEFsaWdubWVudCAqQixBbGln
bm1lbnQgKlMsIGNoYXIgKm5hbWUpOwppbnQgb3V0cHV0X2NvbG9yX2FzY2lpICggQWxpZ25tZW50
ICpCLEFsaWdubWVudCAqUywgY2hhciAqbmFtZSk7CgpGSUxFX2Zvcm1hdCAqcHJpbnRfYXNjaWlf
c3RyaW5nKCBjaGFyICpzLCBDb2xvciAqYm94LCBDb2xvciAqaW5rLCBGSUxFX2Zvcm1hdCAqZmFz
Y2lpKTsKRklMRV9mb3JtYXQgKiBwcmludF9hc2NpaV9jaGFyICggaW50IGMsIENvbG9yICpib3gs
IENvbG9yICppbmssIEZJTEVfZm9ybWF0ICpmKTsKdm9pZCBnZXRfcmdiX3ZhbHVlc19hc2NpaSAo
IGludCB2YWwsIENvbG9yICpDKTsKCkZJTEVfZm9ybWF0KiB2Zm9wZW5fYXNjaWkgKCBjaGFyICpu
YW1lKTsKRklMRV9mb3JtYXQqIHZmY2xvc2VfYXNjaWkgKCBGSUxFX2Zvcm1hdCAqZmFzY2lpKTsK
aW50IG91dHB1dF9zZXFfcmVsaWFiaWxpdHlfYXNjaWkgKCBBbGlnbm1lbnQgKkIsQWxpZ25tZW50
ICpTLCBjaGFyICpuYW1lKTsKIyAzNjYgImlvX2xpYl9oZWFkZXIuaCIKdHlwZWRlZiBzdHJ1Y3Qg
bm9kZSB7CiAgICAgICAgc3RydWN0IG5vZGUgKmxlZnQ7CiAgICAgICAgc3RydWN0IG5vZGUgKnJp
Z2h0OwogICAgICAgIHN0cnVjdCBub2RlICpwYXJlbnQ7CiAgICAgICAgZmxvYXQgZGlzdDsKICAg
ICAgICBpbnQgbGVhZjsKICAgICAgICBpbnQgb3JkZXI7CiAgICAgICAgY2hhciBuYW1lWzY0XTsK
fSBzdHJlZSwgKnRyZWVwdHI7Cgp0eXBlZGVmIHN0cnVjdCB0bm9kZSAqTlRfbm9kZTsKCnR5cGVk
ZWYgc3RydWN0IHRub2RlewogICAgaW50IHZpc2l0ZWQ7CiAgICBjaGFyICpuYW1lOwogICAgTlRf
bm9kZSBwYXJlbnQ7CiAgICBOVF9ub2RlIGxlZnQ7CiAgICBOVF9ub2RlIHJpZ2h0OwogICAgTlRf
bm9kZSBib3Q7CiAgICBpbnQgaXNzZXE7CiAgICBpbnQgc2VxOwogICAgaW50IG1heG5zZXE7CiAg
ICBpbnQgbnNlcTsKICAgIGludCAqbHNlcTsKICAgIGludCAqbHNlcTI7CiAgICBmbG9hdCBkaXN0
OwogICAgZmxvYXQgYm9vdHN0cmFwOwogICAgZmxvYXQgZHA7CiAgICBpbnQgb3JkZXI7CiAgaW50
IGxlYWY7CiAgaW50IG5vZGU7CiAgICBpbnQgZ3JvdXA7CiAgICBmbG9hdCBzY29yZTsKICAgIH1U
cmVlbm9kZTsKTlRfbm9kZSBtYWluX3BydW5lX3RyZWUgKCBOVF9ub2RlIFQsIFNlcXVlbmNlICpT
KTsKaW50IHBydW5lX3RyZWUgKCBOVF9ub2RlIFQsIFNlcXVlbmNlICpTKTsKCgoKCgoKY2hhciAq
dHJlZTJOZ3JvdXAgKEFsaWdubWVudCAqQSwgTlRfbm9kZSBULCBpbnQgbWF4X24sIGNoYXIgKmZu
YW1lLCBjaGFyICptYXQ0ZGlzdCk7CmludCB0cmVlMmdyb3VwX2ZpbGUgKCBOVF9ub2RlIFQsU2Vx
dWVuY2UgKlMsIGludCBtYXhuc2VxLCBpbnQgbWluc2ltLCBjaGFyICpuYW1lKTsKCk5UX25vZGUg
c2VxMmRwYV90cmVlIChTZXF1ZW5jZSAqUywgY2hhciAqYWxpZ25fbW9kZSk7Ck5UX25vZGUgdHJl
ZTJkcGFfdHJlZSAoTlRfbm9kZSBULCBBbGlnbm1lbnQgKkEsIGNoYXIgKm1hdHJpeDRkaXN0YW5j
ZSk7CkZJTEUgKiB0cmVlMmdyb3VwICggTlRfbm9kZSBULFNlcXVlbmNlICpTLGludCBtYXhuc2Vx
LCBpbnQgbWluZGlzdCxjaGFyICpuYW1lLCBGSUxFICpmcCk7Ck5UX25vZGUgdHJlZTJjb2xsYXBz
ZWRfdHJlZSAoTlRfbm9kZSBULCBpbnQgbiwgY2hhciAqKnN0cmluZyk7CgoKCgoKCgpOVF9ub2Rl
IG1haW5fY29tcGFyZV90cmVlcyAoIE5UX25vZGUgVDEsIE5UX25vZGUgVDIsIEZJTEUgKmZwKTsK
ZmxvYXQgY29tcGFyZV90cmVlcyAoIE5UX25vZGUgVDEsIE5UX25vZGUgVDIsIGludCBuc2VxLCBp
bnQgbW9kZSk7CmZsb2F0IHNlYXJjaF9ub2RlICggTlRfbm9kZSBCLCBOVF9ub2RlIFQsIGludCBu
c2VxLCBpbnQgbW9kZSk7CmZsb2F0IGV2YWx1YXRlX25vZGVfc2ltaWxhcml0eSAoIE5UX25vZGUg
QiwgTlRfbm9kZSBULCBpbnQgbnNlcSwgaW50IG1vZGUpOwoKaW50IGNvbXBhcmVfbm9kZSAoIGlu
dCAqYjEsIGludCAqYjIsIGludCBuKTsKdm9pZCBkaXNwbGF5X25vZGUgKE5UX25vZGUgTiwgY2hh
ciAqc3RyaW5nLGludCBuc2VxKTsKTlRfbm9kZSByZWNvZGVfdHJlZSAoIE5UX25vZGUgVCwgU2Vx
dWVuY2UgKlMpOwppbnQgY29tcGFyZV9icmFuY2gyICggaW50ICpiMSwgaW50ICpiMiwgaW50IG4p
OwoKCgoKCgoKTlRfbm9kZSB0cmVlX2NvbXB1dGUgKCBBbGlnbm1lbnQgKkEsIGludCBuLCBjaGFy
ICoqIGFyZ19saXN0KTsKTlRfbm9kZSBhbG4yZmpfdHJlZShOVF9ub2RlIFQsIEFsaWdubWVudCAq
QSwgaW50IGxpbWl0LGNoYXIqIG1vZGUpOwpBbGlnbm1lbnQgKiBmaWx0ZXJfYWxuNHRyZWUgKEFs
aWdubWVudCAqQSwgaW50IG4saW50IGZnLGNoYXIqIG1vZGUpOwoKCgoKCgoKTlRfbm9kZSBhbG4y
dHJlZSAoQWxpZ25tZW50ICpBKTsKTlRfbm9kZSByZXNldF9ib290X3RyZWUgKCBOVF9ub2RlIFIs
IGludCBuKTsKTlRfbm9kZSByZXNldF9kaXN0X3RyZWUgKCBOVF9ub2RlIFIsIGZsb2F0IG4pOwpO
VF9ub2RlIGZyZWVfdHJlZSAoIE5UX25vZGUgUik7Ck5UX25vZGUgcmVhbGxvY190cmVlKCBOVF9u
b2RlIFIsIGludCBuKTsKTlRfbm9kZSBmcmVlX3RyZWVfbm9kZSAoIE5UX25vZGUgUik7CgpTZXF1
ZW5jZSAqIHRyZWUyc2VxIChOVF9ub2RlIFIsIFNlcXVlbmNlICpTKTsKTlRfbm9kZSByZW5hbWVf
c2VxX2luX3RyZWUgKCBOVF9ub2RlIFIsIGNoYXIgKioqbGlzdCk7CgpOVF9ub2RlIGJhbGFuY2Vf
dHJlZSAoTlRfbm9kZSk7CmludCB0cmVlMm5zZXEgKCBOVF9ub2RlIFIpOwppbnQgdHJlZV9maWxl
Mm5zZXEgKCBjaGFyICpmaWxlKTsKCmludCB0cmVlMm5sZWFmICggTlRfbm9kZSBSKTsKaW50IHRy
ZWUybm5vZGUgKCBOVF9ub2RlIFIpOwoKRklMRSogZGlzcGxheV90cmVlICggTlRfbm9kZSBSLCBp
bnQgbiwgRklMRSAqZnApOwp2b2lkIGNsZWFyX3RyZWUgKE5UX25vZGUgVCk7CnZvaWQgZGlzcGxh
eV9sZWFmICggTlRfbm9kZSBUKTsKCk5UX25vZGUgcmVyb290X3RyZWUgKCBOVF9ub2RlIFRSRUUs
IE5UX25vZGUgVCk7Ck5UX25vZGUgc3RyYWlnaHRlbl90cmVlICggTlRfbm9kZSBQLCBOVF9ub2Rl
IEMsIGZsb2F0IG5ld19kaXN0KTsKTlRfbm9kZSB1bnJvb3RfdHJlZSAoIE5UX25vZGUgVCk7CkZJ
TEUqIHByaW50X3RyZWUgKCBOVF9ub2RlIFQsY2hhciAqZm9ybWF0LCBGSUxFICpmcCk7CkZJTEUg
KiByZWNfcHJpbnRfdHJlZSAoIE5UX25vZGUgVCwgRklMRSAqZnApOwoKCk5UX25vZGUgZmluZF9s
b25nZXN0X2JyYW5jaCAoIE5UX25vZGUgVCwgTlRfbm9kZSBMKTsKTlRfbm9kZSBzaGlmdF9yb290
ICggTlRfbm9kZSBSKTsKCmludCAqKiB0cmVlMmNsdXN0ZXIgKE5UX25vZGUgVCwgZmxvYXQgdGhy
ZXMpOwppbnQgKiogbWFrZV9zdWJfdHJlZV9saXN0ICggTlRfbm9kZSAqKlQsIGludCBuc2VxLCBp
bnQgbl9ub2RlKTsKdm9pZCBtYWtlX2FsbF9zdWJfdHJlZV9saXN0ICggTlRfbm9kZSBOLCBpbnQg
KipsaXN0LCBpbnQgKm4pOwp2b2lkIG1ha2Vfb25lX3N1Yl90cmVlX2xpc3QgKCBOVF9ub2RlIFQs
IGludCAqbGlzdCk7Ck5UX25vZGUgbWFpbl9yZWFkX3RyZWUoY2hhciAqdHJlZWZpbGUpOwpOVF9u
b2RlKiogc2ltcGxlX3JlYWRfdHJlZShjaGFyICp0cmVlZmlsZSk7Ck5UX25vZGUqKiByZWFkX3Ry
ZWUoY2hhciAqdHJlZWZpbGUsIGludCAqbm5vZGVzLGludCBuc2VxLCBjaGFyICoqc2VxX25hbWVz
KTsKRklMRSAqIGNyZWF0ZV90cmVlKE5UX25vZGUgcHRyZWUsIE5UX25vZGUgcGFyZW50LGludCAq
bnVtc2VxLGludCAqbnRvdGFsLGludCAqbm5vZGVzLE5UX25vZGUgKipsdSwgRklMRSAqZnApOwpO
VF9ub2RlIGRlY2xhcmVfdHJlZV9ub2RlIChpbnQgbnNlcSk7CnZvaWQgc2V0X2luZm8oTlRfbm9k
ZSBwLCBOVF9ub2RlIHBhcmVudCwgaW50IHBsZWFmLCBjaGFyICpwbmFtZSwgZmxvYXQgcGRpc3Qs
IGZsb2F0IGJvb3RzdHJhcCk7Ck5UX25vZGUgaW5zZXJ0X3RyZWVfbm9kZShOVF9ub2RlIHBwdHIp
OwpGSUxFICogc2tpcF9zcGFjZShGSUxFICpmZCk7CnZvaWQgY3JlYXRlX3RyZWVfbm9kZShOVF9u
b2RlIHBwdHIsIE5UX25vZGUgcGFyZW50KTsKZmxvYXQgY2FsY19tZWFuKE5UX25vZGUgbnB0ciwg
ZmxvYXQgKm1heGRpc3QsIGludCBuc2VxLE5UX25vZGUgKipsdSk7Ck5UX25vZGUgaW5zZXJ0X3Jv
b3QoTlRfbm9kZSBwLCBmbG9hdCBkaWZmKTsKZmxvYXQgY2FsY19yb290X21lYW4oTlRfbm9kZSBy
b290LCBmbG9hdCAqbWF4ZGlzdCwgaW50IG5lcSwgTlRfbm9kZSAqKmx1KTsKTlRfbm9kZSByZXJv
b3QoTlRfbm9kZSBwdHJlZSwgaW50IG5zZXEsIGludCBudG90YWwsIGludCBubm9kZXMsIE5UX25v
ZGUgKipsdSk7CiMgNTA0ICJpb19saWJfaGVhZGVyLmgiCnR5cGVkZWYgaW50IEJvb2xlYW47CiMg
NyAidXRpbF9kcF9zaW0uYyIgMgojIDEgInV0aWxfbGliX2hlYWRlci5oIiAxCnR5cGVkZWYgc3Ry
dWN0CiAgICB7CiAgICBjaGFyICpuYW1lOwogICAgY2hhciAqcGF0aDsKICAgIGNoYXIgKnN1ZmZp
eDsKICAgIH0KRm5hbWU7CgpzdHJ1Y3QgVG1wbmFtZQogICAgewogICAgY2hhciAqbmFtZTsKICAg
IHN0cnVjdCBUbXBuYW1lICpuZXh0OwogICAgfTsKCgoKCgoKZG91YmxlIGRpY2hvdG9teSAoZG91
YmxlIHZhbHVlLCBkb3VibGUgdGFyZ2V0X3ZhbHVlLCBkb3VibGUgbWlkZGxlLCBkb3VibGUgKmJv
dHRvbSxkb3VibGUgKnRvcCk7CgoKCgoKCnN0YXRpYyB2b2lkIGV4Y2hhbmdlKHZvaWQgKmEsIHZv
aWQgKmIsIHNpemVfdCBzaXplKTsKdm9pZCBxc29ydCh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIs
IHNpemVfdCBzaXplLCBpbnQgKCpjb21wYXIpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7
CiMgMzggInV0aWxfbGliX2hlYWRlci5oIgpGSUxFICpoc29ydF9maWxlICggRklMRSAqZnAgLGlu
dCBuLGludCBsZW4sIHNpemVfdCBzaXplLGludCBmaXJzdF9jb21wX2ZpZWxkLCBpbnQgbl9jb21w
X2ZpZWxkcyxpbnQgKCpjb21wYXJlKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQqLGludCxpbnQs
c2l6ZV90KSx2b2lkICogKCpjb3B5KSh2b2lkICosdm9pZCosc2l6ZV90KSk7CnZvaWQgKiogaHNv
cnRfYXJyYXkgKCB2b2lkICoqcmEsaW50IG4saW50IGxlbiwgc2l6ZV90IHNpemUsIGludCBmaXJz
dF9jb21wX2ZpZWxkLCBpbnQgbl9jb21wX2ZpZWxkcyxpbnQgKCpjb21wYXJlKShjb25zdCB2b2lk
ICosIGNvbnN0IHZvaWQqLGludCxpbnQsc2l6ZV90KSx2b2lkICogKCpjb3B5KSh2b2lkICosdm9p
ZCosc2l6ZV90KSk7CgoKCgoKCnZvaWQgKipoc29ydF9saXN0X2FycmF5ICggdm9pZCAqKkwsIGlu
dCBsZW4sIHNpemVfdCBzaXplLCBpbnQgZW50cnlfbGVuLGludCBmaXJzdF9jb21wX2ZpZWxkLCBp
bnQgbl9jb21wX2ZpZWxkcyk7CkZJTEUgKmhzb3J0X2xpc3RfZmlsZSAoIEZJTEUgKmZwLCBpbnQg
bGVuLCBzaXplX3Qgc2l6ZSwgaW50IGVudHJ5X2xlbixpbnQgZmlyc3RfY29tcF9maWVsZCwgaW50
IG5fY29tcF9maWVsZHMpOwppbnQgaHNvcnRfY21wICggY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9p
ZCAqYiwgaW50IGZpcnN0LCBpbnQgY2xlbiwgc2l6ZV90IHNpemUpOwp2b2lkICpoc29ydF9jcHko
dm9pZCp0bywgdm9pZCAqZnJvbSwgc2l6ZV90IHNpemUpOwoKdm9pZCB0ZXN0X2hzb3J0X2xpc3Rf
YXJyYXkoKTsKCgoKCgoKCnZvaWQgKiBic2VhcmNoX2ZpbGUgKCBjb25zdCB2b2lkICprZXksaW50
ICpwLGludCBjb21wX2ZpcnN0LGludCBjb21wX2xlbiwgRklMRSAqZnAgLGludCBsZW4sIGludCBl
bnRyeV9sZW4sc2l6ZV90IGVsX3NpemUsIGludCAoKmNvbXBhcmUpKGNvbnN0IHZvaWQgKiwgY29u
c3Qgdm9pZCosaW50LCBpbnQsIHNpemVfdCkpOwp2b2lkICogYnNlYXJjaF9hcnJheSggY29uc3Qg
dm9pZCAqa2V5LGludCAqcCxpbnQgY29tcF9maXJzdCxpbnQgY29tcF9sZW4sdm9pZCoqbGlzdCxp
bnQgbGVuLCBpbnQgZW50cnlfbGVuLHNpemVfdCBlbF9zaXplLCBpbnQgKCpjb21wYXJlKShjb25z
dCB2b2lkICosIGNvbnN0IHZvaWQqLGludCwgaW50LCBzaXplX3QpKTsKCgoKCgoKCnZvaWQgKipz
ZWFyY2hfaW5fbGlzdF9maWxlICggdm9pZCAqa2V5LGludCAqcCwgaW50IGNvbXBfbGVuLEZJTEUg
KmZwLCBpbnQgbGVuLCBzaXplX3Qgc2l6ZSwgaW50IGVudHJ5X2xlbik7CnZvaWQgKipzZWFyY2hf
aW5fbGlzdF9hcnJheSAoIHZvaWQgKmtleSxpbnQgKnAsIGludCBjb21wX2xlbix2b2lkICoqTCAs
IGludCBsZW4sIHNpemVfdCBzaXplLCBpbnQgZW50cnlfbGVuKTsKIyA3OCAidXRpbF9saWJfaGVh
ZGVyLmgiCmludCAqKnNlYXJjaF9pbl9saXN0X2ludCAoIGludCAqa2V5LCBpbnQga19sZW4sIGlu
dCAqKmxpc3QsIGludCBuZSk7CnZvaWQgc29ydF9mbG9hdCAoIGZsb2F0ICoqVixpbnQgTl9GLCBp
bnQgRiwgaW50IGxlZnQsIGludCByaWdodCk7CmludCBjbXBfZmxvYXQgKCBjb25zdCBmbG9hdCAq
KmEsIGNvbnN0IGZsb2F0ICoqYik7CnZvaWQgc29ydF9pbnRfMUQgKCBpbnQgKkwsIGludCBuKTsK
Y2hhcioqIHNvcnRfc3RyaW5nX2FycmF5IChjaGFyICoqViwgaW50IG4pOwoKdm9pZCBzb3J0X2lu
dCAoIGludCAqKlYsaW50IE5fRiwgaW50IEYsIGludCBsZWZ0LCBpbnQgcmlnaHQpOwp2b2lkIHNv
cnRfbGlzdF9pbnQgKCBpbnQgKipWLGludCBOX0YsIGludCBGLCBpbnQgbGVmdCwgaW50IHJpZ2h0
KTsKdm9pZCBzb3J0X2ludF9pbnYgKCBpbnQgKipWLGludCBOX0YsIGludCBGLCBpbnQgbGVmdCwg
aW50IHJpZ2h0KTsKdm9pZCBzb3J0X2xpc3RfaW50X2ludiAoIGludCAqKlYsaW50IE5fRiwgaW50
IEYsIGludCBsZWZ0LCBpbnQgcmlnaHQpOwppbnQgY21wX2ludCAoIGNvbnN0IGludCoqYSwgY29u
c3QgaW50KipiKTsKaW50IGNtcF9saXN0X2ludCAoY29uc3QgaW50KiphLCBjb25zdCBpbnQqKmIp
OwppbnQgbmFtZV9pc19pbl9saXN0ICggY2hhciAqbmFtZSwgY2hhciAqKm5hbWVfbGlzdCwgaW50
IG5fbmFtZSwgaW50IGxlbik7CmNoYXIgKiBjaGVja19saXN0X2Zvcl9kdXAgKCBjaGFyICoqbGlz
dCwgaW50IG5lKTsKRklMRSAqZ2V0X251bWJlcl9saXN0X2luX2ZpbGUgKCBGSUxFICpmcCwgaW50
ICpsaXN0LCBpbnQgKm4sIGludCAqbWF4X2xlbik7CgoKCgoKCgpzaG9ydCAqIHNldF9zaG9ydCAo
IHNob3J0ICosIGludCBuLC4uLik7CmNoYXIgKiBzZXRfY2hhciAoIGNoYXIgKiwgaW50IG4sLi4u
KTsKaW50ICogc2V0X2ludCAoIGludCAqLCBpbnQgbiwuLi4pOwpmbG9hdCAqIHNldF9mbG9hdCAo
IGZsb2F0ICosIGludCBuLC4uLik7CmRvdWJsZSAqIHNldF9kb3VibGUoIGRvdWJsZSosIGludCBu
LC4uLik7CgpzaG9ydCAqIGdhX21lbWNweV9zaG9ydCAoIHNob3J0ICphcnJheTEsIHNob3J0ICph
cnJheTIsIGludCBuKTsKaW50ICogZ2FfbWVtY3B5X2ludCAoIGludCAqYXJyYXkxLCBpbnQgKmFy
cmF5MiwgaW50IG4pOwpmbG9hdCAqIGdhX21lbWNweV9mbG9hdCAoIGZsb2F0ICphcnJheTEsIGZs
b2F0ICphcnJheTIsIGludCBuKTsKZG91YmxlICogZ2FfbWVtY3B5X2RvdWJsZSggZG91YmxlICph
cnJheTEsIGRvdWJsZSAqYXJyYXkyLCBpbnQgbik7CgpzaG9ydCAqKiBkdXBsaWNhdGVfc2hvcnQg
KCBzaG9ydCAqKmFycmF5ICwgaW50IGxlbiwgaW50IGZpZWxkKTsKaW50ICoqIGR1cGxpY2F0ZV9p
bnQgKCBpbnQgKiphcnJheSAsIGludCBsZW4sIGludCBmaWVsZCk7CmNoYXIgKiogZHVwbGljYXRl
X2NoYXIgKCBjaGFyICoqYXJyYXkgLCBpbnQgbGVuLCBpbnQgZmllbGQpOwpjaGFyICogZHVwbGlj
YXRlX3N0cmluZyAoIGNoYXIgKnN0cmluZyk7CmZsb2F0ICoqIGR1cGxpY2F0ZV9mbG9hdCAoIGZs
b2F0ICoqYXJyYXkgLCBpbnQgbGVuLCBpbnQgZmllbGQpOwpkb3VibGUgKiogZHVwbGljYXRlX2Rv
dWJsZSggZG91YmxlICoqYXJyYXkgLCBpbnQgbGVuLCBpbnQgZmllbGQpOwoKc2hvcnQgKiogY29w
eV9zaG9ydCAoIHNob3J0ICoqYXJyYXkxLCBzaG9ydCAqKmFycmF5MiwgaW50IGxlbiwgaW50IG51
bWJlcl9maWVsZCk7CmNoYXIgKiogY29weV9jaGFyICggY2hhciAqKmFycmF5MSwgY2hhciAqKmFy
cmF5MiwgaW50IGxlbiwgaW50IG51bWJlcl9maWVsZCk7CmludCAqKiBjb3B5X2ludCAoIGludCAq
KmFycmF5MSwgaW50ICoqYXJyYXkyLCBpbnQgbGVuLCBpbnQgbnVtYmVyX2ZpZWxkKTsKZmxvYXQg
KiogY29weV9mbG9hdCAoIGZsb2F0ICoqYXJyYXkxLCBmbG9hdCAqKmFycmF5MiwgaW50IGxlbiwg
aW50IG51bWJlcl9maWVsZCk7CmRvdWJsZSAqKiBjb3B5X2RvdWJsZSggZG91YmxlICoqYXJyYXkx
LCBkb3VibGUgKiphcnJheTIsIGludCBsZW4sIGludCBudW1iZXJfZmllbGQpOwoKCgoKCgoKQWxp
Z25tZW50ICoqIGNhdF9hbG5fbGlzdCAoIEFsaWdubWVudCAqKmxpc3RfdG9fY2F0LGludCBmaXJz
dCwgaW50IGVuZCwgQWxpZ25tZW50ICoqcmVjX2xpc3QpOwoKCgoKCgoKRklMRSAqIG91dHB1dF9h
cnJheV9pbnQgKGludCAqKmFycmF5LCBpbnQgbGVuLCBpbnQgbmYgLEZJTEUgKmZwKTsKc2hvcnQg
cmV0dXJuX21heF9zaG9ydCAoc2hvcnQgKiogYXJyYXksIGludCBsZW5fYXJyYXksIGludCBmaWVs
ZCk7CmNoYXIgcmV0dXJuX21heF9jaGFyKCBjaGFyICoqIGFycmF5LCBpbnQgbGVuX2FycmF5LCBp
bnQgZmllbGQpOwppbnQgcmV0dXJuX21heF9pbnQoIGludCAqKiBhcnJheSwgaW50IGxlbl9hcnJh
eSwgaW50IGZpZWxkKTsKZmxvYXQgcmV0dXJuX21heF9mbG9hdCggZmxvYXQgKiogYXJyYXksIGlu
dCBsZW5fYXJyYXksIGludCBmaWVsZCk7CmRvdWJsZSByZXR1cm5fbWF4X2RvdWJsZSggZG91Ymxl
KiogYXJyYXksIGludCBsZW5fYXJyYXksIGludCBmaWVsZCk7CgpzaG9ydCByZXR1cm5fbWluX3No
b3J0IChzaG9ydCAqKiBhcnJheSwgaW50IGxlbl9hcnJheSwgaW50IGZpZWxkKTsKY2hhciByZXR1
cm5fbWluX2NoYXIoIGNoYXIgKiogYXJyYXksIGludCBsZW5fYXJyYXksIGludCBmaWVsZCk7Cmlu
dCByZXR1cm5fbWluX2ludCggaW50ICoqIGFycmF5LCBpbnQgbGVuX2FycmF5LCBpbnQgZmllbGQp
OwpmbG9hdCByZXR1cm5fbWluX2Zsb2F0KCBmbG9hdCAqKiBhcnJheSwgaW50IGxlbl9hcnJheSwg
aW50IGZpZWxkKTsKZG91YmxlIHJldHVybl9taW5fZG91YmxlKCBkb3VibGUqKiBhcnJheSwgaW50
IGxlbl9hcnJheSwgaW50IGZpZWxkKTsKCnNob3J0IHJldHVybl9tYXhfY29vcl9zaG9ydCAoc2hv
cnQgKiogYXJyYXksIGludCBsZW5fYXJyYXksIGludCBmaWVsZCwgaW50ICpjb29yKTsKY2hhciBy
ZXR1cm5fbWF4X2Nvb3JfY2hhciggY2hhciAqKiBhcnJheSwgaW50IGxlbl9hcnJheSwgaW50IGZp
ZWxkLCBpbnQgKmNvb3IpOwppbnQgcmV0dXJuX21heF9jb29yX2ludCggaW50ICoqIGFycmF5LCBp
bnQgbGVuX2FycmF5LCBpbnQgZmllbGQsIGludCAqY29vcik7CmZsb2F0IHJldHVybl9tYXhfY29v
cl9mbG9hdCggZmxvYXQgKiogYXJyYXksIGludCBsZW5fYXJyYXksIGludCBmaWVsZCwgaW50ICpj
b29yKTsKZG91YmxlIHJldHVybl9tYXhfY29vcl9kb3VibGUoIGRvdWJsZSoqIGFycmF5LCBpbnQg
bGVuX2FycmF5LCBpbnQgZmllbGQsIGludCAqY29vcik7CgpzaG9ydCByZXR1cm5fbWluX2Nvb3Jf
c2hvcnQgKHNob3J0ICoqIGFycmF5LCBpbnQgbGVuX2FycmF5LCBpbnQgZmllbGQsIGludCAqY29v
cik7CmNoYXIgcmV0dXJuX21pbl9jb29yX2NoYXIoIGNoYXIgKiogYXJyYXksIGludCBsZW5fYXJy
YXksIGludCBmaWVsZCwgaW50ICpjb29yKTsKaW50IHJldHVybl9taW5fY29vcl9pbnQoIGludCAq
KiBhcnJheSwgaW50IGxlbl9hcnJheSwgaW50IGZpZWxkLCBpbnQgKmNvb3IpOwpmbG9hdCByZXR1
cm5fbWluX2Nvb3JfZmxvYXQoIGZsb2F0ICoqIGFycmF5LCBpbnQgbGVuX2FycmF5LCBpbnQgZmll
bGQsIGludCAqY29vcik7CmRvdWJsZSByZXR1cm5fbWluX2Nvb3JfZG91YmxlKCBkb3VibGUqKiBh
cnJheSwgaW50IGxlbl9hcnJheSwgaW50IGZpZWxkLCBpbnQgKmNvb3IpOwoKc2hvcnQgcmV0dXJu
XzJEbWF4X3Nob3J0IChzaG9ydCAqKiBhcnJheSwgaW50IHN0YXJ0LCBpbnQgbGVuX2FycmF5LCBp
bnQgZmlyc3RfZmllbGQsIGludCBudW1iZXJfZmllbGQpOwpjaGFyIHJldHVybl8yRG1heF9jaGFy
KCBjaGFyICoqIGFycmF5LCBpbnQgc3RhcnQsIGludCBsZW5fYXJyYXksIGludCBmaXJzdF9maWVs
ZCwgaW50IG51bWJlcl9maWVsZCk7CmludCByZXR1cm5fMkRtYXhfaW50KCBpbnQgKiogYXJyYXks
IGludCBzdGFydCwgaW50IGxlbl9hcnJheSwgaW50IGZpcnN0X2ZpZWxkLCBpbnQgbnVtYmVyX2Zp
ZWxkKTsKZmxvYXQgcmV0dXJuXzJEbWF4X2Zsb2F0KCBmbG9hdCAqKiBhcnJheSwgaW50IHN0YXJ0
LCBpbnQgbGVuX2FycmF5LCBpbnQgZmlyc3RfZmllbGQsIGludCBudW1iZXJfZmllbGQpOwpkb3Vi
bGUgcmV0dXJuXzJEbWF4X2RvdWJsZSggZG91YmxlKiogYXJyYXksIGludCBzdGFydCwgaW50IGxl
bl9hcnJheSwgaW50IGZpcnN0X2ZpZWxkLCBpbnQgbnVtYmVyX2ZpZWxkKTsKCnNob3J0IHJldHVy
bl8yRG1pbl9zaG9ydCAoc2hvcnQgKiogYXJyYXksIGludCBzdGFydCwgaW50IGxlbl9hcnJheSwg
aW50IGZpcnN0X2ZpZWxkLCBpbnQgbnVtYmVyX2ZpZWxkKTsKY2hhciByZXR1cm5fMkRtaW5fY2hh
ciggY2hhciAqKiBhcnJheSwgaW50IHN0YXJ0LCBpbnQgbGVuX2FycmF5LCBpbnQgZmlyc3RfZmll
bGQsIGludCBudW1iZXJfZmllbGQpOwppbnQgcmV0dXJuXzJEbWluX2ludCggaW50ICoqIGFycmF5
LCBpbnQgc3RhcnQsIGludCBsZW5fYXJyYXksIGludCBmaXJzdF9maWVsZCwgaW50IG51bWJlcl9m
aWVsZCk7CmZsb2F0IHJldHVybl8yRG1pbl9mbG9hdCggZmxvYXQgKiogYXJyYXksIGludCBzdGFy
dCwgaW50IGxlbl9hcnJheSwgaW50IGZpcnN0X2ZpZWxkLCBpbnQgbnVtYmVyX2ZpZWxkKTsKZG91
YmxlIHJldHVybl8yRG1pbl9kb3VibGUoIGRvdWJsZSoqIGFycmF5LCBpbnQgc3RhcnQsIGludCBs
ZW5fYXJyYXksIGludCBmaXJzdF9maWVsZCwgaW50IG51bWJlcl9maWVsZCk7CgpzaG9ydCByZXR1
cm5fMkRtYXhfY29vcl9zaG9ydCAoIHNob3J0ICoqIGFycmF5LGludCBzdGFydDEsIGludCBlbmQx
LCBpbnQgc3RhcnQyLCBpbnQgZW5kMiwgaW50ICppLCBpbnQgKmogKTsKY2hhciByZXR1cm5fMkRt
YXhfY29vcl9jaGFyKCBjaGFyICoqIGFycmF5LCBpbnQgc3RhcnQxLCBpbnQgZW5kMSwgaW50IHN0
YXJ0MiwgaW50IGVuZDIsIGludCAqaSwgaW50ICpqKTsKaW50IHJldHVybl8yRG1heF9jb29yX2lu
dCggaW50ICoqIGFycmF5LCBpbnQgc3RhcnQxLCBpbnQgZW5kMSwgaW50IHN0YXJ0MiwgaW50IGVu
ZDIsIGludCAqaSwgaW50ICpqKTsKZmxvYXQgcmV0dXJuXzJEbWF4X2Nvb3JfZmxvYXQoIGZsb2F0
ICoqIGFycmF5LCBpbnQgc3RhcnQxLCBpbnQgZW5kMSwgaW50IHN0YXJ0MiwgaW50IGVuZDIsIGlu
dCAqaSwgaW50ICpqKTsKZG91YmxlIHJldHVybl8yRG1heF9jb29yX2RvdWJsZSggZG91YmxlKiog
YXJyYXksIGludCBzdGFydDEsIGludCBlbmQxLCBpbnQgc3RhcnQyLCBpbnQgZW5kMiwgaW50ICpp
LCBpbnQgKmopOwoKc2hvcnQgcmV0dXJuXzJEbWluX2Nvb3Jfc2hvcnQgKCBzaG9ydCAqKiBhcnJh
eSwgaW50IHN0YXJ0MSwgaW50IGVuZDEsIGludCBzdGFydDIsIGludCBlbmQyLCBpbnQgKmksIGlu
dCAqaik7CmNoYXIgcmV0dXJuXzJEbWluX2Nvb3JfY2hhciggY2hhciAqKiBhcnJheSwgaW50IHN0
YXJ0MSwgaW50IGVuZDEsIGludCBzdGFydDIsIGludCBlbmQyLCBpbnQgKmksIGludCAqaik7Cmlu
dCByZXR1cm5fMkRtaW5fY29vcl9pbnQoIGludCAqKiBhcnJheSwgaW50IHN0YXJ0MSwgaW50IGVu
ZDEsIGludCBzdGFydDIsIGludCBlbmQyLCBpbnQgKmksIGludCAqaik7CmZsb2F0IHJldHVybl8y
RG1pbl9jb29yX2Zsb2F0KCBmbG9hdCAqKiBhcnJheSwgaW50IHN0YXJ0MSwgaW50IGVuZDEsIGlu
dCBzdGFydDIsIGludCBlbmQyLCBpbnQgKmksIGludCAqaik7CmRvdWJsZSByZXR1cm5fMkRtaW5f
Y29vcl9kb3VibGUoIGRvdWJsZSoqIGFycmF5LCBpbnQgc3RhcnQxLCBpbnQgZW5kMSwgaW50IHN0
YXJ0MiwgaW50IGVuZDIsIGludCAqaSwgaW50ICpqKTsKCmRvdWJsZSByZXR1cm5fd21lYW5fc2hv
cnQgKCBzaG9ydCAqKiBhcnJheSwgaW50IGxlbiwgaW50IHdmaWVsZCwgaW50IGZpZWxkKTsKZG91
YmxlIHJldHVybl93bWVhbl9jaGFyICggY2hhciAqKiBhcnJheSwgaW50IGxlbiwgaW50IHdmaWVs
ZCwgaW50IGZpZWxkKTsKZG91YmxlIHJldHVybl93bWVhbl9pbnQgKCBpbnQgKiogYXJyYXksIGlu
dCBsZW4sIGludCB3ZmllbGQsIGludCBmaWVsZCk7CmRvdWJsZSByZXR1cm5fd21lYW5fZmxvYXQg
KCBmbG9hdCAqKiBhcnJheSwgaW50IGxlbiwgaW50IHdmaWVsZCwgaW50IGZpZWxkKTsKZG91Ymxl
IHJldHVybl93bWVhbl9kb3VibGUoIGRvdWJsZSoqIGFycmF5LCBpbnQgbGVuLCBpbnQgd2ZpZWxk
LCBpbnQgZmllbGQpOwoKZG91YmxlIHJldHVybl9tZWFuX3Nob3J0ICggc2hvcnQgKiogYXJyYXks
IGludCBsZW4sIGludCBmaWVsZCk7CmRvdWJsZSByZXR1cm5fbWVhbl9jaGFyICggY2hhciAqKiBh
cnJheSwgaW50IGxlbiwgaW50IGZpZWxkKTsKZG91YmxlIHJldHVybl9tZWFuX2ludCAoIGludCAq
KiBhcnJheSwgaW50IGxlbiwgaW50IGZpZWxkKTsKZG91YmxlIHJldHVybl9tZWFuX2Zsb2F0ICgg
ZmxvYXQgKiogYXJyYXksIGludCBsZW4sIGludCBmaWVsZCk7CmRvdWJsZSByZXR1cm5fbWVhbl9k
b3VibGUgKCBkb3VibGUqKiBhcnJheSwgaW50IGxlbiwgaW50IGZpZWxkKTsKCnNob3J0IHJldHVy
bl9zdW1fc2hvcnQgKCBzaG9ydCAqKiBhcnJheSwgaW50IGxlbiwgaW50IGZpZWxkKTsKY2hhciBy
ZXR1cm5fc3VtX2NoYXIgKCBjaGFyICoqIGFycmF5LCBpbnQgbGVuLCBpbnQgZmllbGQpOwppbnQg
cmV0dXJuX3N1bV9pbnQgKCBpbnQgKiogYXJyYXksIGludCBsZW4sIGludCBmaWVsZCk7CmZsb2F0
IHJldHVybl9zdW1fZmxvYXQgKCBmbG9hdCAqKiBhcnJheSwgaW50IGxlbiwgaW50IGZpZWxkKTsK
ZG91YmxlIHJldHVybl9zdW1fZG91YmxlKCBkb3VibGUqKiBhcnJheSwgaW50IGxlbiwgaW50IGZp
ZWxkKTsKCnNob3J0IHJldHVybl9zZF9zaG9ydCAoIHNob3J0ICoqIGFycmF5LCBpbnQgbGVuLCBp
bnQgZmllbGQsIHNob3J0IG1lYW4pOwpjaGFyIHJldHVybl9zZF9jaGFyICggY2hhciAqKiBhcnJh
eSwgaW50IGxlbiwgaW50IGZpZWxkLCBjaGFyIG1lYW4pOwppbnQgcmV0dXJuX3NkX2ludCAoIGlu
dCAqKiBhcnJheSwgaW50IGxlbiwgaW50IGZpZWxkLCBpbnQgbWVhbik7CmZsb2F0IHJldHVybl9z
ZF9mbG9hdCAoIGZsb2F0ICoqIGFycmF5LCBpbnQgbGVuLCBpbnQgZmllbGQsIGZsb2F0IG1lYW4p
Owpkb3VibGUgcmV0dXJuX3NkX2RvdWJsZSggZG91YmxlKiogYXJyYXksIGludCBsZW4sIGludCBm
aWVsZCwgZG91YmxlIG1lYW4pOwoKZG91YmxlIHJldHVybl96X3Njb3JlICggZG91YmxlIHgsIGRv
dWJsZSBzdW0sIGRvdWJsZSBzdW0yLCBkb3VibGUgbik7CgpzaG9ydCogaW52ZXJ0X2xpc3Rfc2hv
cnQgKCBzaG9ydCAqIGFycmF5LCBpbnQgbGVuICk7CmNoYXIqIGludmVydF9saXN0X2NoYXIgKCBj
aGFyICogYXJyYXksIGludCBsZW4gKTsKaW50KiBpbnZlcnRfbGlzdF9pbnQgKCBpbnQgKiBhcnJh
eSwgaW50IGxlbiApOwpmbG9hdCogaW52ZXJ0X2xpc3RfZmxvYXQgKCBmbG9hdCAqIGFycmF5LCBp
bnQgbGVuICk7CmRvdWJsZSogaW52ZXJ0X2xpc3RfZG91YmxlKCBkb3VibGUqIGFycmF5LCBpbnQg
bGVuICk7Cgp2b2lkIHN3YXBfc2hvcnQgKCBzaG9ydCAqIGFycmF5LCBzaG9ydCAqIGFycmF5Mixp
bnQgbGVuICk7CnZvaWQgc3dhcF9jaGFyICggY2hhciAqIGFycmF5LCBjaGFyICogYXJyYXkyLGlu
dCBsZW4gKTsKdm9pZCBzd2FwX2ludCAoIGludCAqIGFycmF5LCBpbnQgKiBhcnJheTIsaW50IGxl
biApOwp2b2lkIHN3YXBfZmxvYXQgKCBmbG9hdCAqIGFycmF5LCBmbG9hdCAqIGFycmF5MixpbnQg
bGVuICk7CnZvaWQgc3dhcF9kb3VibGUoIGRvdWJsZSogYXJyYXksIGRvdWJsZSogYXJyYXkyLGlu
dCBsZW4gKTsKCnNob3J0IHJldHVybl9tYXhfc2hvcnRfaG9yIChzaG9ydCAqKiBhcnJheSwgaW50
IGxlbl9hcnJheSwgaW50IGZpZWxkKTsKY2hhciByZXR1cm5fbWF4X2NoYXJfaG9yIChjaGFyICoq
IGFycmF5LCBpbnQgbGVuX2FycmF5LCBpbnQgZmllbGQpOwppbnQgcmV0dXJuX21heF9pbnRfaG9y
IChpbnQgKiogYXJyYXksIGludCBsZW5fYXJyYXksIGludCBmaWVsZCk7CmZsb2F0IHJldHVybl9t
YXhfZmxvYXRfaG9yIChmbG9hdCAqKiBhcnJheSwgaW50IGxlbl9hcnJheSwgaW50IGZpZWxkKTsK
ZG91YmxlIHJldHVybl9tYXhfZG91YmxlX2hvcihkb3VibGUgKiogYXJyYXksIGludCBsZW5fYXJy
YXksIGludCBmaWVsZCk7CgpzaG9ydCByZXR1cm5fbWluX3Nob3J0X2hvciAoIHNob3J0ICoqIGFy
cmF5LCBpbnQgbGVuX2FycmF5LCBpbnQgZmllbGQpOwpjaGFyIHJldHVybl9taW5fY2hhcl9ob3Ig
KCBjaGFyICoqIGFycmF5LCBpbnQgbGVuX2FycmF5LCBpbnQgZmllbGQpOwppbnQgcmV0dXJuX21p
bl9pbnRfaG9yICggaW50ICoqIGFycmF5LCBpbnQgbGVuX2FycmF5LCBpbnQgZmllbGQpOwpmbG9h
dCByZXR1cm5fbWluX2Zsb2F0X2hvciAoIGZsb2F0ICoqIGFycmF5LCBpbnQgbGVuX2FycmF5LCBp
bnQgZmllbGQpOwpkb3VibGUgcmV0dXJuX21pbl9kb3VibGVfaG9yKCBkb3VibGUqKiBhcnJheSwg
aW50IGxlbl9hcnJheSwgaW50IGZpZWxkKTsKCnNob3J0IGJlc3Rfc2hvcnQgKGludCBuLCAuLi4p
OwppbnQgYmVzdF9pbnQgKGludCBuLCAuLi4pOwpjaGFyIGJlc3RfY2hhciAoaW50IG4sIC4uLik7
CmZsb2F0IGJlc3RfZmxvYXQgKGludCBuLCAuLi4pOwpkb3VibGUgYmVzdF9kb3VibGUoaW50IG4s
IC4uLik7CgppbnQgaXNfZGVmaW5lZF9zaG9ydCAoaW50IG4sIC4uLik7CmludCBpc19kZWZpbmVk
X2ludCAoaW50IG4sIC4uLik7CmludCBpc19kZWZpbmVkX2NoYXIgKGludCBuLCAuLi4pOwppbnQg
aXNfZGVmaW5lZF9mbG9hdCAoaW50IG4sIC4uLik7CmludCBpc19kZWZpbmVkX2RvdWJsZShpbnQg
biwgLi4uKTsKCgoKaW50IHJldHVybl9tYXhsZW4gKCBjaGFyICoqIGFycmF5LCBpbnQgbnVtYmVy
KTsKaW50IHJldHVybl9taW5sZW4gKCBjaGFyICoqIGFycmF5LCBpbnQgbnVtYmVyKTsKCmZsb2F0
IHJldHVybl9tZWFuX2RpZmZfZmxvYXQgKCBmbG9hdCAqKmFycmF5LCBpbnQgbGVuLCBpbnQgZmll
bGQsZmxvYXQgbWVhbik7CgoKdm9pZCBpbnZlcnNlX2ludCAoIGludCoqYXJyYXksIGludCBsZW4s
IGludCBmaWVsZCwgaW50IG1heCwgaW50IG1pbik7CnZvaWQgaW52ZXJzZV9mbG9hdCAoIGZsb2F0
KiphcnJheSwgaW50IGxlbiwgaW50IGZpZWxkLCBpbnQgbWF4LCBpbnQgbWluKTsKdm9pZCBpbnZl
cnNlXzJEX2Zsb2F0ICggZmxvYXQgKiphcnJheSwgaW50IHN0YXJ0LCBpbnQgbGVuLCBpbnQgc3Rh
cnRfZmllbGQsIGludCBudW1iZXJfZmllbGQsIGZsb2F0IG1heCxmbG9hdCBtaW4pOwoKCgoKdm9p
ZCAqKnJlY3ljbGUgKHZvaWQgKipBLCBpbnQgbCwgaW50IGN5Y2xlKTsKCgoKCgoKCmNoYXIqIGdl
dGVudjRkZWJ1ZyAoIGNvbnN0IGNoYXIgKnZhcik7CmNoYXIqIGdldF9lbnZfdmFyaWFibGUgKCBj
b25zdCBjaGFyICp2YXIsIGludCBtb2RlKTsKdm9pZCBzZXRlbnZfZnVuYyAoIGNoYXIgKnN0cmlu
Z19uYW1lLCBjaGFyICpzdHJpbmdfdmFsdWUpOwp2b2lkIGdldF9wd2QgKCBjaGFyICpuYW1lKTsK
aW50IHBnX2lzX2luc3RhbGxlZCAoIGNoYXIgKnBnKTsKCgoKCgpjaGFyICpudW0ycGxvdCAoaW50
IHZhbHVlLCBpbnQgbWF4LCBpbnQgbGluZV9sZW4pOwpmbG9hdCBncmVwX2Z1bmN0aW9uICggY2hh
ciAqcGF0dGVybiwgY2hhciAqZmlsZSk7CnZvaWQgY3Jhc2hfaWYgKCBpbnQgdmFsLCBjaGFyICpz
KTsKdm9pZCBjcmFzaCAoIGNoYXIgKnMpOwppbnQgKiogbWFrZV9yZWN1cnNpdmVfY29tYmluYXRp
b25fdGFibGUgKCBpbnQgdG90X25fcGFyYW0sIGludCAqbl9wYXJhbSwgaW50ICpuYywgaW50Kip0
YWJsZSwgaW50IGZpZWxkKTsKCgoKCgoKY2hhciAqKiBwdXNoX3N0cmluZyAoY2hhciAqdmFsLCBj
aGFyICoqc3RhY2ssIGludCAqbnZhbCwgaW50IG1vZGUpOwppbnQgdnNyYW5kIChpbnQgdmFsKTsK
aW50ICpyYW5kb21pemVfbGlzdCAoaW50ICpsaXN0LCBpbnQgbGVuLCBpbnQgbmN5Y2xlKTsKaW50
IHZzdHJjbXAgKGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMik7CmludCB2c3RybmNtcCAo
Y29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBpbnQgbik7CkZJTEUgKnByaW50X2FycmF5
X2NoYXIgKEZJTEUgKm91dCwgY2hhciAqKmFycmF5LCBpbnQgbiwgY2hhciAqc2VwKTsKY2hhciAq
ZXh0cmFjdF9zdWZmaXhlICggY2hhciAqYXJyYXkpOwpGbmFtZSogcGFyc2VfZm5hbWUgKCBjaGFy
ICphcnJheSk7Cgp2b2lkIHN0cmluZ19hcnJheV9jb252ZXJ0ICggY2hhciAqKmFycmF5LCBpbnQg
bl9zdHJpbmdzLCBpbnQgbnMsIGNoYXIgKipzbCk7CnZvaWQgc3RyaW5nX2NvbnZlcnQoIGNoYXIg
KnN0cmluZywgaW50IG5zLCBjaGFyICoqc2wpOwppbnQgY29udmVydCAoIGNoYXIgYywgaW50IG5z
LCBjaGFyICoqc2wpOwppbnQgY29udmVydDIgKCBjaGFyIGMsIGNoYXIgKmxpc3QpOwoKdm9pZCBz
dHJpbmdfYXJyYXlfdXBwZXIgKCBjaGFyICoqc3RyaW5nLCBpbnQgbik7CnZvaWQgc3RyaW5nX2Fy
cmF5X2xvd2VyICggY2hhciAqKnN0cmluZywgaW50IG4pOwpjaGFyICp1cHBlcl9zdHJpbmcgKCBj
aGFyICpzdHJpbmcpOwpjaGFyICpsb3dlcl9zdHJpbmcgKCBjaGFyICpzdHJpbmcpOwpjaGFyICog
c3Vic3RpdHV0ZSAoIGNoYXIgKnN0cmluZywgY2hhciAqdG9rZW4sIGNoYXIgKnJlcGxhY2VtZW50
KTsKY2hhciAqYWZ0ZXJfc3Ryc3RyIChjaGFyICpzdHJpbmcsIGNoYXIgKnRva2VuKTsKaW50IHN0
cl9vdmVybGFwICggY2hhciAqc3RyaW5nMSwgY2hhciAqc3RyaW5nMiwgY2hhciB4KTsKaW50IGdl
dF9zdHJpbmdfbGluZSAoIGludCBzdGFydCwgaW50IG5fbGluZXMsIGNoYXIgKmluLCBjaGFyICpv
dXQpOwpGSUxFICogb3V0cHV0X3N0cmluZ193cmFwICggaW50IHdyYXAsY2hhciAqc3RyaW5nLCBG
SUxFICpmcCk7CmNoYXIgKiBleHRyYWN0X2NoYXIgKCBjaGFyICogYXJyYXksIGludCBmaXJzdCwg
aW50IGxlbik7CmNoYXIqKiBicmVha19saXN0ICggY2hhciAqKmFyZ3YsIGludCAqYXJnYywgY2hh
ciAqc2VwYXJhdG9ycyk7CmNoYXIqKiBtZXJnZV9saXN0ICggY2hhciAqKmFyZ3YsIGludCAqYXJn
Yyk7CmludCAqbmFtZV9hcnJheTJpbmRleF9hcnJheSAoIGNoYXIgKipsaXN0MSwgaW50IG4xLCBj
aGFyICoqbGlzdDIsIGludCBuMik7CmNoYXIgKiogZ2V0X2xpc3Rfb2ZfdG9rZW5zICggY2hhciAq
c3RyaW5nLCBjaGFyICpzZXBhcmF0b3JzLCBpbnQgKm5fdG9rZW5zKTsKY2hhciAqKnVuZ2FwX2Fy
cmF5KGNoYXIgKiogYXJyYXksIGludCBuKTsKdm9pZCB1bmdhcCAoIGNoYXIgKnNlcSk7CmNoYXIg
Km1hcmtfaW50ZXJuYWxfZ2FwcyhjaGFyICpzZXEsIGNoYXIgc3ltYm9sKTsKCmNoYXIgKmxpc3Qy
c3RyaW5nIChjaGFyICoqbGlzdCwgaW50IG4pOwpjaGFyICpsaXN0MnN0cmluZzIgKGNoYXIgKips
aXN0LCBpbnQgbiwgY2hhciogc2VwKTsKCmNoYXIgKiogc3RyaW5nMmxpc3QgKGNoYXIgKnN0cmlu
Zyk7CmNoYXIgKiogc3RyaW5nMmxpc3QyKGNoYXIgKnN0cmluZywgY2hhciAqc2VwYXJhdG9ycyk7
CmludCAqIHN0cmluZzJudW1fbGlzdCggY2hhciAqc3RyaW5nKTsKaW50ICogc3RyaW5nMm51bV9s
aXN0MiggY2hhciAqc3RyaW5nLCBjaGFyICpzZXBhcmF0b3JzKTsKY2hhciAqKmNoYXJfYXJyYXky
bnVtYmVyICggY2hhciAqKiBhcnJheSwgaW50IG4pOwpjaGFyICpjaGFyMm51bWJlciAoIGNoYXIg
KiBhcnJheSk7CmxvbmcgYXRvcChjaGFyICopOwpjaGFyICppbnZlcnRfc3RyaW5nIChjaGFyICpz
dHJpbmcpOwoKCmludCBpc2JsYW5jICggY2hhciAqYnVmKTsKCgoKdm9pZCBzcGxpY2Vfb3V0ICgg
Y2hhciAqc2VxLCBjaGFyIHgpOwppbnQgaXNfbnVtYmVyICggY2hhciAqYnVmKTsKaW50IGlzX2Fs
cGhhX2xpbmUgKCBjaGFyICpidWYpOwppbnQgaXNfYWxudW1fbGluZSAoIGNoYXIgKmJ1Zik7Cmlu
dCBjYXNlX2luc2Vuc2l0aXZlX3N0cmNtcCAoIGNoYXIgKnN0cmluZzEsIGNoYXIgKnN0cmluZzIp
OwppbnQgZ2V0X3N0cmluZ19zaW0gKCBjaGFyICpzdHJpbmcxLCBjaGFyICpzdHJpbmcyLCBjaGFy
ICppZ25vcmUpOwoKaW50IGlzX2dhcCAoIGNoYXIgeCk7CmludCBpc19hYSAoIGNoYXIgeCk7Cmlu
dCBpc19kbmEgKCBjaGFyIHgpOwoKCgpjaGFyICogZ2V0X2FscGhhYmV0ICggY2hhciAqc2VxLCBj
aGFyICphbHBoYWJldCk7CmludCBpc19pbl9zZXQgKCBjaGFyIHIsIGNoYXIgKmxpc3QpOwppbnQg
YXJyYXlfaXNfaW5fc2V0IChjaGFyICphcnJheSwgY2hhciAqc2V0KTsKY2hhciAqIGdlbmVyYXRl
X3ZvaWQgKCBpbnQgeCk7CmNoYXIgKiBnZW5lcmF0ZV9udWxsICggaW50IHgpOwpjaGFyICogZ2Vu
ZXJhdGVfc3RyaW5nICggaW50IHgsIGNoYXIgeSk7CgpjaGFyICogdHJhbnNsYXRlX3N0cmluZyAo
Y2hhciAqc3RyaW5nLCBjaGFyICppbiwgY2hhcipvdXQpOwp2b2lkIHRyYW5zbGF0ZV9uYW1lICgg
Y2hhciAqbmFtZSk7CmludCBnZXRfbG9uZ2VzdF9zdHJpbmcgKGNoYXIgKiphcnJheSxpbnQgbiwg
aW50ICpsZW4sIGludCAqaW5kZXgpOwppbnQgZ2V0X3Nob3J0ZXN0X3N0cmluZyAoY2hhciAqKmFy
cmF5LGludCBuLCBpbnQgKmxlbiwgaW50ICppbmRleCk7CgpjaGFyICoqcGFkX3N0cmluZ19hcnJh
eSAoIGNoYXIgKiphcnJheSwgaW50IG4sIGludCBsZW4sIGNoYXIgcGFkKTsKY2hhciAqIGNyb3Bf
c3RyaW5nIChjaGFyICpzdHJpbmcsIGludCBzdGFydCwgaW50IGVuZCk7CmludCBnZXRfZGlzdGFu
Y2UyY2hhciAoIGNoYXIgKngsIGNoYXIgKmxpc3QpOwoKCgoKCgoKRklMRSogcHJpbnRfY3B1X3Vz
YWdlIChGSUxFICpmcCwgY2hhciAqY29tbWVudCk7CmludCBnZXRfdGltZSAoKTsKaW50IGdldF9j
dGltZSAoKTsKaW50IHJlc2V0X3RpbWUoKTsKaW50IGluY3JlYXNlX3JlZl90aW1lKGludCBpbmNy
ZWFzZSk7CgoKCgoKCmludCBldmFsdWF0ZV9zeXNfY2FsbF9pbyAoIGNoYXIgKm91dF9maWxlLCBj
aGFyICpjb20sIGNoYXIgKmZvbmMpOwppbnQgbXlfc3lzdGVtX2NsIChpbnQgYXJnYywgY2hhciAq
YXJndltdKTsKaW50IG15X3N5c3RlbSAoIGNoYXIgKmNvbW1hbmQpOwppbnQgdW5wYWNrX3Blcmxf
c2NyaXB0IChjaGFyICpuYW1lLCBjaGFyICoqKnVucGFja2VkLCBpbnQgbik7CnZvaWQgdW5wYWNr
X2FsbF9wZXJsX3NjcmlwdCAoY2hhciAqc2NyaXB0KTsKCgoKCgoKRklMRSAqIHByaW50X2NvbW1h
bmRfbGluZSAoRklMRSAqZnAgKTsKY2hhciAqKiBzdGFuZGFyZF9pbml0aWFsaXNhdGlvbiAoIGNo
YXIgKippbl9hcmd2LCBpbnQgKmluX2FyZ2MpOwoKRklMRSAqZmF0YWxfZXhpdCAoIEZJTEUgKmZw
LCBpbnQgZXhpdF9zaWduYWwsIGNoYXIgKnN0cmluZywgLi4uKTsKRklMRSAqYWRkX3dhcm5pbmcg
KEZJTEUgKmZwLCBjaGFyICpzdHJpbmcsIC4uLik7CnZvaWQgb3V0cHV0X3dhcm5pbmdfbGlzdCgp
OwoKaW50IGNvdW50X25fcmVzX2luX2FycmF5IChjaGFyICphcnJheSwgaW50IGxlbik7CmludCBj
b3VudF9uX2dhcF9pbl9hcnJheSAoY2hhciAqYXJyYXksIGludCBsZW4pOwppbnQgY291bnRfbl9z
eW1ib2xfaW5fYXJyYXkgKCBjaGFyICphcnJheSwgY2hhciAqYXJyYXlfbGlzdCwgaW50IGxlbik7
CgppbnQgY291bnRfbl9jaGFyX3hfaW5fZmlsZShjaGFyICpuYW1lLCBjaGFyIHgpOwppbnQgY291
bnRfbl9jaGFyX2luX2ZpbGUoY2hhciAqbmFtZSk7CmludCBjb3VudF9uX2xpbmVfaW5fZmlsZShj
aGFyICpuYW1lKTsKaW50IG1lYXN1cmVfbG9uZ2VzdF9saW5lX2luX2ZpbGUgKCBjaGFyICpuYW1l
ICk7CmludCBmaWxlX2NhdCAoIGNoYXIgKmZuYW1lMSwgY2hhciAqZm5hbWUyLCBjaGFyICpmbmFt
ZTMpOwpGSUxFKiBkaXNwbGF5X2ZpbGVfY29udGVudCAoRklMRSAqb3V0cHV0LCBjaGFyICpuYW1l
KTsKY2hhciAqKipmaWxlMmxpc3QgKGNoYXIgKm5hbWUsIGNoYXIgKnNlcCk7CmNoYXIgKiogZmls
ZTJsaW5lcyAoY2hhciAqbmFtZSk7CmNoYXIgKiBmaWxlMnN0cmluZyAoY2hhciAqbmFtZSk7Cgpj
aGFyICoqIGdldF9wYXJhbWV0ZXIgKCBjaGFyICpwYXJhX25hbWUsIGludCAqbnAsIGNoYXIgKmZu
YW1lKTsKaW50IGdldF9jbF9wYXJhbWV0ZXIgKGludCBhcmdjLCBjaGFyICoqYXJndixGSUxFICoq
ZnAsIGNoYXIgKnBhcmFfbmFtZSwgaW50ICpzZXRfZmxhZywgY2hhciAqdHlwZSwgaW50IG9wdGlv
bmFsLCBpbnQgbWF4X25fdmFsLGNoYXIgKnVzYWdlLCAuLi4pOwpjaGFyICppbnB1dF9uYW1lICgp
OwoKCnZvaWQgY2hlY2tfdnRtcG5hbSAoKTsKCnZvaWQgc2V0X2ZpbGUycmVtb3ZlX29mZigpOwp2
b2lkIHNldF9maWxlMnJlbW92ZV9vbigpOwpjaGFyICogYWRkMmZpbGUycmVtb3ZlX2xpc3QgKCBj
aGFyICpuYW1lKTsKRklMRSAqIHZ0bXBmaWxlKCk7CmNoYXIgKiB2dG1wbmFtICggY2hhciAqcyk7
CmNoYXIgKiB0bXBuYW1fMiAoY2hhciAqcyk7CmNoYXIgKiB2cmVtb3ZlICggY2hhciAqcyk7CnZv
aWQgZXJyb3JfZnVuY3Rpb24gKCk7CmludCBsb2dfZnVuY3Rpb24gKGNoYXIgKmZuYW1lKTsKdm9p
ZCBjbGVhbl9mdW5jdGlvbiAoICk7CnZvaWQgc2lnX2NsZWFuX2Z1bmN0aW9uICggaW50IHgpOwpj
aGFyICogcHJlcGFyZV9jYWNoZSAoIGNvbnN0IGNoYXIgKm1vZGUpOwpjaGFyICogZ2V0X2NhY2hl
X2RpcigpOwp2b2lkIHVwZGF0ZV9jYWNoZSAoKTsKdm9pZCBpZ25vcmVfY2FjaGUoKTsKCkZJTEUg
KiB2Zm9wZW4gKCBjaGFyICpuYW1lLCBjaGFyICptb2RlKTsKRklMRSAqIHZmY2xvc2UgKEZJTEUg
KmZwKTsKaW50IGVjaG8gKCBjaGFyICpzdHJpbmcsIGNoYXIgKmZuYW1lKTsKCmludCAqKmdldF9m
aWxlX2Jsb2NrX3BhdHRlcm4gKGNoYXIgKmZuYW1lLCBpbnQgKm5fYmxvY2tzLCBpbnQgbWF4X25f
bGluZSk7CgppbnQgdG9rZW5faXNfaW5fZmlsZSAoY2hhciAqZm5hbWUsIGNoYXIgKnRva2VuKTsK
RklMRSAqIGZpbmRfdG9rZW5faW5fZmlsZV9ubGluZXMgKCBjaGFyICpmbmFtZSwgRklMRSAqIGZw
LCBjaGFyICp0b2tlbiwgaW50IG5fbGluZSk7CkZJTEUgKiBmaW5kX3Rva2VuX2luX2ZpbGUgKCBj
aGFyICpmbmFtZSwgRklMRSAqIGZwLCBjaGFyICp0b2tlbik7CmNoYXIgKiB2ZmdldHMgKGNoYXIg
KmJ1ZiwgRklMRSAqZnApOwoKRklMRSAqIHNldF9mcF9hZnRlcl9jaGFyICggRklMRSAqZnAsIGNo
YXIgeCk7CkZJTEUgKiBzZXRfZnBfaWQgKCBGSUxFICpmcCwgY2hhciAqaWQpOwpGSUxFICogc2tp
cF9jb21tZW50YXJ5X2xpbmVfaW5fZmlsZSAoIGNoYXIgY29tLCBGSUxFICpmcCk7CmNoYXIgKiBz
dHJpcF9maWxlX2Zyb21fY29tbWVudHMgKGNoYXIgKmNvbSwgY2hhciAqaW5fZmlsZSk7CgppbnQg
Y2hlY2tfZm9yX3VwZGF0ZSAoIGNoYXIgKndlYl9hZGRyZXNzKTsKaW50IGNoZWNrX3Byb2dyYW1f
aXNfaW5zdGFsbGVkICggY2hhciAqcHJvZ3JhbV9uYW1lLCBjaGFyICpjdXJyZW50X3BhdGgsIGNo
YXIgKnBhdGhfdmFyaWFibGUsIGNoYXIgKndoZXJlMmdldGl0LCBpbnQgZmF0YWwpOwpGSUxFICog
ZGlzcGxheV9vdXRwdXRfZmlsZW5hbWUgKCBGSUxFICppbywgY2hhciAqdHlwZSwgY2hhciAqZm9y
bWF0LCBjaGFyICpuYW1lLCBpbnQgY2hlY2tfb3V0cHV0KTsKaW50IGZpbGVuYW1lX2lzX3NwZWNp
YWwgKCBjaGFyICpmbmFtZSk7CmNoYXIgKmNoZWNrX2ZpbGVfZXhpc3RzICggY2hhciAqZm5hbWUp
OwppbnQgbWtkaXIgKCBjaGFyICpkaXIpOwppbnQgZmlsZV9pc19lbXB0eShjaGFyICpmbmFtZSk7
CmludCBmaWxlX2V4aXN0cyAoY2hhciAqZm5hbWUpOwp2b2lkIGNyZWF0ZV9maWxlICggY2hhciAq
bmFtZSk7CnZvaWQgZGVsZXRlX2ZpbGUgKCBjaGFyICpmbmFtZSk7CmludCB1dGlsX3JlbmFtZSAo
IGNoYXIqIGZyb20sIGNoYXIgKnRvKTsKaW50IHV0aWxfY29weSAoIGNoYXIqIGZyb20sIGNoYXIg
KnRvKTsKRklMRSAqIG91dHB1dF9jb21wbGV0aW9uICggRklMRSAqZnAsaW50IG4sIGludCB0b3Qs
IGludCBuX2Vwb3J0cywgY2hhciAqcyk7CnZvaWQgKiBudWxsX2Z1bmN0aW9uIChpbnQgYSwgLi4u
KTsKaW50IGJ0b2kgKCBpbnQgbmMsLi4uKTsKCgoKCgoKCmZsb2F0IGdldF9nZW9tZXRyaWNfZGlz
dGFuY2UgKCBmbG9hdCAqKiBtYXRyaXgsIGludCBuY29vciwgaW50IGQxLCBpbnQgZDIsIGNoYXIg
Km1vZGUpOwoKCgoKCgpkb3VibGUgbG9nX2FkZE4gKCBpbnQgTiwgZG91YmxlICpMKTsKZG91Ymxl
IGxvZ19hZGQ2IChkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91Ymxl
IGUsIGRvdWJsZSBmICk7CmRvdWJsZSBsb2dfYWRkNSAoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3Vi
bGUgYywgZG91YmxlIGQsIGRvdWJsZSBlKTsKZG91YmxlIGxvZ19hZGQ0IChkb3VibGUgYSwgZG91
YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCk7CmRvdWJsZSBsb2dfYWRkMyAoZG91YmxlIGEsIGRv
dWJsZSBiLCBkb3VibGUgYyk7CmRvdWJsZSBsb2dfYWRkMiAoZG91YmxlIGEsIGRvdWJsZSBiKTsK
CmRvdWJsZSBmYWN0b3JpYWxfbG9nICggaW50IHN0YXJ0LCBpbnQgZW5kKTsKZG91YmxlIE1fY2hv
b3Nlc19ObG9nICggaW50IG0sIGludCBOKTsKZG91YmxlIGZhY3RvcmlhbCAoIGludCBzdGFydCwg
aW50IGVuZCk7CmRvdWJsZSBNX2Nob29zZXNfTiAoIGludCBtLCBpbnQgTik7CmRvdWJsZSBteV9p
bnRfbG9nKGludCBhKTsKCgp1bnNpZ25lZCBsb25nIGxpbnJhbmQodW5zaWduZWQgbG9uZyByKTsK
dW5zaWduZWQgbG9uZyBhZGRyYW5kKHVuc2lnbmVkIGxvbmcgcik7CnZvaWQgYWRkcmFuZGluaXQo
dW5zaWduZWQgbG9uZyBzKTsKCnN0YXRpYyB1bnNpZ25lZCBsb25nIG11bHQodW5zaWduZWQgbG9u
ZyBwLHVuc2lnbmVkIGxvbmcgcSk7CgoKc3RydWN0IEpvYl9UQwogICAgewogICAgICBpbnQgam9i
aWQ7CiAgICAgIGludCBzdGF0dXM7CgogICAgICBzdHJ1Y3QgSm9iX1RDICpjOwogICAgICBzdHJ1
Y3QgSm9iX1RDICpwOwogICAgICBzdHJ1Y3QgSm9iX2lvX1RDICppbzsKICAgICAgc3RydWN0IEpv
Yl9jb250cm9sX1RDICpjb250cm9sOwoKICAgICAgc3RydWN0IEpvYl9wYXJhbV9UQyAqcGFyYW07
CgoKICAgICAgY2hhciAqKnBsOwogICAgICBpbnQgbnA7Cn07CnR5cGVkZWYgc3RydWN0IEpvYl9U
QyBKb2JfVEM7CgpzdHJ1Y3QgSm9iX2NvbnRyb2xfVEMKICAgIHsKCiAgICAgIHN0cnVjdCBKb2Jf
VEMqICgqc3VibWl0RikgKHN0cnVjdCBKb2JfVEMqKTsKICAgICAgc3RydWN0IEpvYl9UQyogKCpy
ZXRyaWV2ZUYpKHN0cnVjdCBKb2JfVEMqKTsKICAgICAgY2hhciAqbW9kZTsKfTsKdHlwZWRlZiBz
dHJ1Y3QgSm9iX2NvbnRyb2xfVEMgSm9iX2NvbnRyb2xfVEM7CgpzdHJ1Y3QgSm9iX2lvX1RDCiAg
ICB7CiAgICAgIGNoYXIgKmluOwogICAgICBjaGFyICpvdXQ7CiAgICAgIHN0cnVjdCBDb25zdHJh
aW50X2xpc3QgKkNMOwogICAgICBzdHJ1Y3QgQWxpZ25tZW50ICpBOwp9Owp0eXBlZGVmIHN0cnVj
dCBKb2JfaW9fVEMgSm9iX2lvX1RDOwoKc3RydWN0IEpvYl9wYXJhbV9UQwp7CiAgY2hhciAqbWV0
aG9kOwogIHN0cnVjdCBUQ19tZXRob2QgKlRDTTsKICBjaGFyICp0ZW1wX2M7CiAgY2hhciAqYWxu
X2M7CiAgY2hhciAqc2VxX2M7CiAgY2hhciAqYWxuX21vZGU7Cn07CnR5cGVkZWYgc3RydWN0IEpv
Yl9wYXJhbV9UQyBKb2JfcGFyYW1fVEM7CgpKb2JfVEMqIHByaW50X2xpYl9qb2IgKCBKb2JfVEMg
KmpvYixjaGFyICpzdHJpbmcsIC4uLik7CkpvYl9UQyAqcHJpbnRfbGliX2pvYjIgKCBKb2JfVEMq
IGpvYiwgaW50IG4sIGNoYXIgKipuYW1lLCBjaGFyICoqdmFsdWUpOwoKCgpKb2JfVEMgKmZyZWVf
cXVldWUgKEpvYl9UQyAqam9iKTsKSm9iX1RDICpmcmVlX2pvYiAoSm9iX1RDICpqb2IpOwpKb2Jf
VEMgKiBxdWV1ZTJoZWFwIChKb2JfVEMqam9iKTsKSm9iX1RDICogcXVldWUybGFzdCAoSm9iX1RD
KmpvYik7CmludCBxdWV1ZTJuIChKb2JfVEMqam9iKTsKSm9iX1RDICogZGVzY2VuZF9xdWV1ZSAo
Sm9iX1RDKmpvYik7CkpvYl9UQyAqcXVldWVfY2F0IChKb2JfVEMgKlAsIEpvYl9UQyAqQyk7Ckpv
Yl9UQyAqZGVsZXRlX2pvYiAoSm9iX1RDICpqb2IpOwoKc3RydWN0IEpvYl9UQyogc3VibWl0X2pv
YiAoIEpvYl9UQyAqam9iKTsKc3RydWN0IEpvYl9UQyogcmV0cmlldmVfam9iICggSm9iX1RDICpq
b2IpOwpzdHJ1Y3QgRHBzX3Jlc3VsdAogICAgewogICAgICBpbnQgbmpvYnM7CiAgICAgIHN0cnVj
dCBEcHNfam9iICoqZHBzX2pvYjsKfTsKdHlwZWRlZiBzdHJ1Y3QgRHBzX3Jlc3VsdCBEcHNfcmVz
dWx0OwoKc3RydWN0IERwc19qb2IKICAgIHsKICAgICAgaW50IEpvYklkOwogICAgICBzdHJ1Y3Qg
Q29uc3RyYWludF9saXN0ICpDTDsKICAgICAgY2hhciAqaW5wdXRfZmlsZTsKICAgICAgY2hhciAq
b3V0cHV0X2ZpbGU7Cn07CnR5cGVkZWYgc3RydWN0IERwc19qb2IgRHBzX2pvYjsKCnN0cnVjdCBE
cHNfcmVzdWx0ICpzZXEybGlzdF9EUFMgKHN0cnVjdCBDb25zdHJhaW50X2xpc3QgKkNMLGNoYXIg
Km1ldGhvZCwgY2hhciAqYWxuX2NvbW1hbmQsIGNoYXIgKnNlcV9jb21tYW5kLCBjaGFyICp3ZWln
aHQsIERwc19yZXN1bHQgKmRwc19yZXN1bHQpOwpzdHJ1Y3QgQ29uc3RyYWludF9saXN0ICogZ2F0
aGVyX3Jlc3VsdHNfRFBTICggRHBzX3Jlc3VsdCAqRFBTLCBzdHJ1Y3QgQ29uc3RyYWludF9saXN0
ICpDTCk7CkRwc19yZXN1bHQgKmRlY2xhcmVfZHBzX3Jlc3VsdCAoIGludCBuYWxuLCBEcHNfcmVz
dWx0ICpkcHMpOwojIDYwNSAidXRpbF9saWJfaGVhZGVyLmgiCnR5cGVkZWYgaW50ICgqUHJvZmls
ZV9jb3N0X2Z1bmMpIChpbnQqLCBpbnQgKixzdHJ1Y3QgQ29uc3RyYWludF9saXN0ICopOwp0eXBl
ZGVmIGludCAoKkNvbF9jb3N0X2Z1bmMpKEFsaWdubWVudCosIGludCAqKiwgaW50LCBpbnQqLCBp
bnQsIGludCAqKiwgaW50LCBpbnQqLCBpbnQsIHN0cnVjdCBDb25zdHJhaW50X2xpc3QgKik7CnR5
cGVkZWYgaW50ICgqUGFpcl9jb3N0X2Z1bmMpKHN0cnVjdCBDb25zdHJhaW50X2xpc3QgKiwgaW50
LCBpbnQsIGludCwgaW50KTsKdHlwZWRlZiBpbnQgKCpQd2Z1bmMpIChBbGlnbm1lbnQgKiwgaW50
KiwgaW50ICoqLHN0cnVjdCBDb25zdHJhaW50X2xpc3QgKik7CgoKCgoKCnR5cGVkZWYgc3RydWN0
CiAgICB7CiAgICAgIGNoYXIgYmxhc3Rfc2VydmVyWzEwMF07CiAgICAgIGNoYXIgZGJbMTAwXTsK
ICAgICAgaW50IG1pbl9jb3Y7CiAgICAgIGludCBtaW5faWQ7CiAgICAgIGludCBtYXhfaWQ7Cn0K
Qmxhc3RfcGFyYW07Cgp0eXBlZGVmIHN0cnVjdAogICAgewogaW50IG5fZXhjbHVkZWRfbmI7Cgog
ZmxvYXQgc2ltaWxhcml0eV90aHJlc2hvbGQ7CiBmbG9hdCBybXNkX3RocmVzaG9sZDsKICAgICAg
ICBmbG9hdCBtZF90aHJlc2hvbGQ7CiAgICAgICAgaW50IGRpc3RhbmNlX29uX3JlcXVlc3Q7CiBj
aGFyICpjb21wYXJpc29uX2lvOwogZmxvYXQgbWF4aW11bV9kaXN0YW5jZTsKIGludCBOX2NhOwog
ZmxvYXQgbWF4X2RlbHRhIDsKIGNoYXIgKmhhc2NoX21vZGU7CiAgICAgICAgaW50IHNjYWxlOwog
ICAgICAgIGludCBuX2V4dHJhX3BhcmFtOwogICAgICAgIGNoYXIgKipleHRyYV9wYXJhbTsKICAg
ICAgICBjaGFyICpldmFsdWF0ZV9tb2RlOwogICAgfQpQZGJfcGFyYW07Cgp0eXBlZGVmIHN0cnVj
dAogICAgewogaW50IG51bTsKIGludCByZXNfbnVtOwogICAgICAgIGNoYXIgcmVzWzRdOwogY2hh
ciB0eXBlWzRdOwogZmxvYXQgeDsKIGZsb2F0IHk7CiBmbG9hdCB6OwogICAgfQpBdG9tOwoKdHlw
ZWRlZiBzdHJ1Y3QKICAgIHsKCiAgICAgIEF0b20qQ0E7CiAgICAgIEF0b20gKkM7CiAgICAgIEF0
b20gKk47CiAgICAgIEF0b20gKkNCOwogICAgfQpBbWlub19hY2lkOwoKCnR5cGVkZWYgc3RydWN0
CiAgICB7CgogaW50ICoqbmI7CgogZmxvYXQgKipkX25iOwoKIGludCBtYXhfbmI7Cn0KU3RydWN0
X25iOwoKdHlwZWRlZiBzdHJ1Y3QKICAgIHsKCiBpbnQgbGVuOwogaW50IG5fYXRvbTsKIGNoYXIg
Km5hbWU7CiBjaGFyICpzZXE7CiBBdG9tICoqc3RydWN0dXJlOwogICAgICAgIEF0b20gKipjYTsK
ICAgICAgICBBbWlub19hY2lkICoqcGVwdGlkZV9jaGFpbjsKCgogICAgICAgIFN0cnVjdF9uYiAq
Q2hhaW47CiAgICAgICAgU3RydWN0X25iICpCdWJibGU7CiAgICAgICAgU3RydWN0X25iICpUcmFu
c3ZlcnNhbDsKCiAgICAgICAgZmxvYXQgKiogY2FfZGlzdDsKIFBkYl9wYXJhbSAqcGRiX3BhcmFt
Owp9CgpDYV90cmFjZTsKCgoKCgpzdHJ1Y3QgTW9jYQp7CgogICAgICBpbnQgbW9jYV9zY2FsZTsK
CgogICAgICBpbnQgKCpldmFsdWF0ZV9kb21haW4pKEFsaWdubWVudCosc3RydWN0IENvbnN0cmFp
bnRfbGlzdCAqKTsKICAgICAgaW50IG1vY2FfdGhyZXNob2xkOwoKCiAgICAgIGludCAqKiAoKmNh
Y2hlX2NsX3dpdGhfZG9tYWluKShBbGlnbm1lbnQqLCBzdHJ1Y3QgQ29uc3RyYWludF9saXN0ICop
OwogICAgICBpbnQgKipmb3JiaWRlbl9yZXNpZHVlczsKCgoKICAgICAgQWxpZ25tZW50KiAoKm1h
a2Vfbm9sX2FsbikoQWxpZ25tZW50Kiwgc3RydWN0IENvbnN0cmFpbnRfbGlzdCAqKTsKCgogICAg
ICBpbnQgbW9jYV9zdGFydDsKICAgICAgaW50IG1vY2FfbGVuOwogICAgICBpbnQgbW9jYV9pbnRl
cmFjdGl2ZTsKCn07CnR5cGVkZWYgc3RydWN0IE1vY2EgTW9jYTsKCgoKCgpzdHJ1Y3QgRGlzdGFu
Y2VfbWF0cml4CnsKICBjaGFyIG1vZGVbMTAwXTsKICBpbnQgKipzaW1pbGFyaXR5X21hdHJpeDsK
ICBpbnQgKipzY29yZV9zaW1pbGFyaXR5X21hdHJpeDsKICBpbnQgKipkaXN0YW5jZV9tYXRyaXg7
Cn07CnR5cGVkZWYgc3RydWN0IERpc3RhbmNlX21hdHJpeCBEaXN0YW5jZV9tYXRyaXg7CnN0cnVj
dCBDb25zdHJhaW50X2xpc3QKICAgIHsKCgoKCgoKICAgICAgaW50IGNvcHlfbW9kZTsKICAgICAg
c3RydWN0IENvbnN0cmFpbnRfbGlzdCAqcENMOwogICAgICBTZXF1ZW5jZSAqUzsKICAgICAgU2Vx
dWVuY2UgKlNUUlVDX0xJU1Q7CiAgICAgIGNoYXIgYWxpZ25fcGRiX3BhcmFtX2ZpbGVbMTAwXTsK
ICAgICAgY2hhciBhbGlnbl9wZGJfaGFzY2hfbW9kZVsxMDBdOwoKCiAgICAgIFdlaWdodHMgKlc7
CiAgICAgIERpc3RhbmNlX21hdHJpeCAqRE07CiAgICAgIERpc3RhbmNlX21hdHJpeCAqa3R1cERN
OwoKCiAgICAgIGludCAqdHJhbnNsYXRpb247CiAgICAgIGNoYXIgKiogb3V0X2Fsbl9mb3JtYXQ7
CiAgICAgIGludCBuX291dF9hbG5fZm9ybWF0OwoKCgogICAgICBpbnQgKipwYWNrZWRfc2VxX2x1
OwoKCiAgICAgIEZJTEUgKmZwOwogICAgICBpbnQgKipMOwogICAgICBpbnQgKipNOwoKCiAgICAg
IGludCBuZTsKICAgICAgY2hhciBsaXN0X25hbWVbMTAwMF07CiAgICAgIGludCBlbnRyeV9sZW47
CiAgICAgIHNpemVfdCBlbF9zaXplOwoKCiAgICAgIGludCBub3JtYWxpc2U7CiAgICAgIGludCBt
YXhfZXh0X3ZhbHVlOwogICAgICBpbnQgbWF4X3ZhbHVlOwogICAgICBpbnQgb3ZlcndlaWdodDsK
CgogICAgICBpbnQgcHdfcGFyYW1ldGVyc19zZXQ7CiAgICAgIGludCBnb3A7CiAgICAgIGludCBn
ZXA7CiAgICAgIGludCBmX2dvcDsKICAgICAgaW50IGZfZ2VwOwogICAgICBpbnQgbm1fZ29wOwog
ICAgICBpbnQgbm1fZ2VwOwoKICAgICAgaW50IG5vbWF0Y2g7CgogICAgICBpbnQgVEdfTU9ERTsK
ICAgICAgaW50IEZfVEdfTU9ERTsKCiAgICAgIGNoYXIgZHBfbW9kZVsxMDBdOwoKICAgICAgaW50
IG1heGltaXNlOwogICAgICBjaGFyIG1hdHJpeF9mb3JfYWFfZ3JvdXBbMTAwXTsKICAgICAgY2hh
ciBtZXRob2RfbWF0cml4WzEwMF07CiAgICAgIGZsb2F0IGRpYWdvbmFsX3RocmVzaG9sZDsKICAg
ICAgaW50IGt0dXA7CiAgICAgIGludCB1c2VfZnJhZ21lbnRzOwogICAgICBpbnQgZmFzdGFfc3Rl
cDsKICAgICAgaW50IGxhbGlnbl9uX3RvcDsKICAgICAgaW50IHN3X21pbl9kaXN0OwogICAgICBj
aGFyICoqbWF0cmljZXNfbGlzdDsKICAgICAgaW50IG5fbWF0cmljZXM7CiAgICAgIGNoYXIgdHJl
ZV9tb2RlWzEwMF07CgogICAgICBjaGFyIGRpc3RhbmNlX21hdHJpeF9tb2RlWzEwMF07CiAgICAg
IEFsaWdubWVudCAqdHJlZV9hbG47CgoKCiAgICAgIENvbF9jb3N0X2Z1bmMgZ2V0X2RwX2Nvc3Q7
CiAgICAgIFByb2ZpbGVfY29zdF9mdW5jIHByb2ZpbGVfbW9kZTsKICAgICAgY2hhciBwcm9maWxl
X2NvbXBhcmlzb24gWzEwMF07CgoKICAgICAgUGFpcl9jb3N0X2Z1bmMgZXZhbHVhdGVfcmVzaWR1
ZV9wYWlyOwoKICAgICAgUHdmdW5jIHBhaXJfd2lzZTsKCgoKCgoKCiAgICAgIGludCB3ZWlnaHRf
ZmllbGQ7CiAgICAgIGludCBtYXhfbl9wYWlyOwoKCgoKICAgICAgQmxhc3RfcGFyYW0gKlByb3Rf
Qmxhc3Q7CiAgICAgIEJsYXN0X3BhcmFtICpQZGJfQmxhc3Q7CiAgICAgIEJsYXN0X3BhcmFtICpE
TkFfQmxhc3Q7CgogICAgICBpbnQgc3BsaXQ7CiAgICAgIGludCBzcGxpdF9uc2VxX3RocmVzOwog
ICAgICBpbnQgc3BsaXRfc2NvcmVfdGhyZXM7CgogICAgICBpbnQgY2hlY2tfcGRiX3N0YXR1czsK
CiAgICAgIGNoYXIgbWV0aG9kX2xvZ1sxMDAwXTsKICAgICAgY2hhciBldmFsdWF0ZV9tb2RlWzEw
MDBdOwoKICAgICAgTW9jYSAqbW9jYTsKCiAgICAgIGludCAqKioqZm9yYmlkZW5fcGFpcl9saXN0
OwoKCgoKCgogICAgICBpbnQgKnNlcV9mb3JfcXVhZHJ1cGxldDsKICAgICAgaW50IG5zZXFfZm9y
X3F1YWRydXBsZXQ7CgoKICAgICAgaW50IGV4dGVuZF9qaXQ7CiAgICAgIGludCBleHRlbmRfdGhy
ZXNob2xkOwogICAgICBpbnQgZG9fc2VsZjsKICAgICAgY2hhciBleHRlbmRfY2xlYW5fbW9kZVsx
MDBdOwogICAgICBjaGFyIGV4dGVuZF9jb21wYWN0X21vZGVbMTAwXTsKIyA4ODMgInV0aWxfbGli
X2hlYWRlci5oIgogICAgICBpbnQgcmVzaWR1ZV9pbmRleGVkOwogICAgICBpbnQgKioqcmVzaWR1
ZV9pbmRleDsKICAgICAgaW50IHJlc2lkdWVfZmllbGQ7CgoKICAgICAgaW50IHNlcV9pbmRleGVk
OwogICAgICBpbnQgKipzdGFydF9pbmRleDsKICAgICAgaW50ICoqZW5kX2luZGV4OwogICAgICBp
bnQgbWF4X0xfbGVuOwogICAgICBpbnQgY2h1bms7CgoKCgogICAgICBDYV90cmFjZSAqKiBUOwoK
CiAgICAgIGludCBjcHU7CiAgICAgIEZJTEUgKmxvY2FsX3N0ZGVycjsKICAgICAgY2hhciBtdWx0
aV90aHJlYWRbMTAwXTsKICAgICAgY2hhciBsaWJfbGlzdFsxMDBdOwp9OwoKdHlwZWRlZiBzdHJ1
Y3QgQ29uc3RyYWludF9saXN0IENvbnN0cmFpbnRfbGlzdDsKCnN0cnVjdCBUQ19tZXRob2QKewoK
ICBjaGFyIGV4ZWN1dGFibGVbMTAwXTsKICBjaGFyIGluX2ZsYWdbMTAwXTsKICBjaGFyIG91dF9m
bGFnWzEwMF07CiAgY2hhciBhbG5fbW9kZVsxMDBdOwogIGNoYXIgb3V0X21vZGVbMTAwXTsKICBj
aGFyIHNlcV90eXBlWzEwMF07CiAgY2hhciB3ZWlnaHRbMTAwXTsKICBjaGFyIG1hdHJpeFsxMDBd
OwogIGludCBnb3A7CiAgaW50IGdlcDsKICBpbnQgbWluaWQ7CiAgaW50IG1heGlkOwogIGNoYXIg
cGFyYW1bMTAwMF07CiAgY2hhciBwYXJhbTFbMTAwMF07CiAgQ29uc3RyYWludF9saXN0ICpQV19D
TDsKfTsKdHlwZWRlZiBzdHJ1Y3QgVENfbWV0aG9kIFRDX21ldGhvZDsKCgoKCgoKCkNvbnN0cmFp
bnRfbGlzdCAqcHJvZHVjZV9saXN0ICggQ29uc3RyYWludF9saXN0ICpDTCwgU2VxdWVuY2UgKlMs
IGNoYXIgKiBtZXRob2QsY2hhciAqd2VpZ2h0LGNoYXIgKm1lbV9tb2RlKTsKSm9iX1RDKiBtZXRo
b2Qyam9iX2xpc3QgKCBjaGFyICptZXRob2QsIFNlcXVlbmNlICpTLGNoYXIgKndlaWdodCwgY2hh
ciAqbGliX2xpc3QsIERpc3RhbmNlX21hdHJpeCAqRE0pOwoKSm9iX1RDICpqb2JfbGlzdDJtdWx0
aV90aHJlYWRfam9iX2xpc3QgKEpvYl9UQyogb2pvYiwgY2hhciAqbXQsIENvbnN0cmFpbnRfbGlz
dCAqQ0wpOwpKb2JfVEMgKnJldHJpZXZlX2xpYl9qb2IgKCBKb2JfVEMgKmpvYik7CkpvYl9UQyAq
c3VibWl0X2xpYl9qb2IgKCBKb2JfVEMgKmpvYik7CgoKCmludCBpc19pbl9wcmVfc2V0X21ldGhv
ZF9saXN0IChjaGFyICpmbmFtZSk7CmNoYXIgKm1ldGhvZF9uYW1lMm1ldGhvZF9maWxlIChjaGFy
ICptZXRob2QpOwpjaGFyICptYWtlX2Fsbl9jb21tYW5kKFRDX21ldGhvZCAqbSwgY2hhciAqc2Vx
LCBjaGFyICphbG4pOwpzdHJ1Y3QgVENfbWV0aG9kKiBtZXRob2RfZmlsZTJUQ19tZXRob2QgKCBj
aGFyICpmbmFtZSk7CmludCBUQ19tZXRob2QybWV0aG9kX2ZpbGUoIHN0cnVjdCBUQ19tZXRob2Qq
LCBjaGFyICpmbmFtZSApOwoKCgoKCgppbnQgdnJlYWRfY2xpc3QgKCBDb25zdHJhaW50X2xpc3Qg
KkNMLCBpbnQgYSwgaW50IGIgKTsKaW50IHZ3cml0ZV9jbGlzdCAoIENvbnN0cmFpbnRfbGlzdCAq
Q0wsIGludCBhLCBpbnQgYiwgaW50IHgpOwpDb25zdHJhaW50X2xpc3QgKmluZGV4X2NvbnN0cmFp
bnRfbGlzdCAoIENvbnN0cmFpbnRfbGlzdCAqQ0wpOwpDb25zdHJhaW50X2xpc3QgKmluZGV4X3Jl
c19jb25zdHJhaW50X2xpc3QgKCBDb25zdHJhaW50X2xpc3QgKkNMLCBpbnQgZmllbGQpOwoKCgoK
CgpDb25zdHJhaW50X2xpc3QgKiBhZGRfbGlzdF9lbnRyeTJsaXN0IChDb25zdHJhaW50X2xpc3Qg
KkNMLCBpbnQgbl9wYXJhLCAuLi4pOwpDb25zdHJhaW50X2xpc3QgKiBldmFsdWF0ZV9jb25zdHJh
aW50X2xpc3RfcmVmZXJlbmNlICggQ29uc3RyYWludF9saXN0ICpDTCk7CkNvbnN0cmFpbnRfbGlz
dCAqYWRkX2VudHJ5Mmxpc3QgKCBpbnQgKmVudHJ5LCBDb25zdHJhaW50X2xpc3QgKkNMKTsKQ29u
c3RyYWludF9saXN0ICppbnNlcnRfZW50cnkybGlzdCAoIGludCAqZW50cnksIGludCBwb3MsQ29u
c3RyYWludF9saXN0ICpDTCk7CmludCogZXh0cmFjdF9lbnRyeShpbnQgKiBlbnRyeSwgaW50IHBv
cywgQ29uc3RyYWludF9saXN0ICpDTCk7CgoKCgoKCkNvbnN0cmFpbnRfbGlzdCAqZXh0ZW5kX2xp
c3RfcGFpciAoQ29uc3RyYWludF9saXN0ICpDTGluLGNoYXIgKnN0b3JlX21vZGUsIGludCBzMSwg
aW50IHMyKTsKQ29uc3RyYWludF9saXN0ICpleHRlbmRfbGlzdCAoQ29uc3RyYWludF9saXN0ICpD
TGluLCBjaGFyICpzdG9yZV9tb2RlLGNoYXIgKmNsZWFuX21vZGUsIGNoYXIgKmNvbXBhY3RfbW9k
ZSxpbnQgZG9fc2VsZiwgU2VxdWVuY2UgKlNVQlNFVCk7CnZvaWQgZ2V0X2JvdW5kcyAoQ29uc3Ry
YWludF9saXN0ICpDTCwgaW50IHMxLCBpbnQgczIsIGludCAqc3RhcnQsIGludCAqZW5kKTsKaW50
ICoqIGZpbGxfcG9zX21hdHJpeCAoQ29uc3RyYWludF9saXN0ICpDTCwgaW50IGJlZywgaW50IGVu
ZCwgaW50IHNsZW4sIGludCAqKnBvcywgaW50ICpsZW4sIGludCBtaXJyb3JlZCk7CgoKCgoKCgpG
SUxFICogY29tcGFyZV9saXN0IChGSUxFICpPVVQsIENvbnN0cmFpbnRfbGlzdCAqQ0wxLENvbnN0
cmFpbnRfbGlzdCAqQ0wyKTsKaW50ICoqc2VhcmNoX2luX2xpc3RfY29uc3RyYWludChpbnQgKmtl
eSwgaW50IGtfbGVuLCBpbnQgKipMLCBpbnQgbmUsIGludCAqKipzdGFydF9pbmRleCwgaW50ICoq
KmVuZF9pbmRleCk7CmludCAqKm1haW5fc2VhcmNoX2luX2xpc3RfY29uc3RyYWludCAoIGludCAq
a2V5LGludCAqcCxpbnQga19sZW4sQ29uc3RyYWludF9saXN0ICpDTCk7CkNvbnN0cmFpbnRfbGlz
dCAqc29ydF9jb25zdHJhaW50X2xpc3RfaW52IChDb25zdHJhaW50X2xpc3QgKkNMLCBpbnQgc3Rh
cnQsIGludCBsZW4pOwpDb25zdHJhaW50X2xpc3QgKmludmVydF9jb25zdHJhaW50X2xpc3QgKENv
bnN0cmFpbnRfbGlzdCAqQ0wsIGludCBzdGFydCxpbnQgbGVuKTsKQ29uc3RyYWludF9saXN0ICog
c29ydF9jb25zdHJhaW50X2xpc3QgKENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBzdGFydCwgaW50
IGxlbik7CkNvbnN0cmFpbnRfbGlzdCAqIHNvcnRfY29uc3RyYWludF9saXN0X29uX25fZmllbGRz
IChDb25zdHJhaW50X2xpc3QgKkNMLCBpbnQgc3RhcnQsIGludCBsZW4sIGludCBmaXJzdF9maWVs
ZCwgaW50IG5fZmllbGRzKTsKCgoKCgoKCkNvbnN0cmFpbnRfbGlzdCogcmVhZF9uX2NvbnN0cmFp
bnRfbGlzdChjaGFyICoqZm5hbWUsaW50IG5fbGlzdCwgY2hhciAqaW5fbW9kZSxjaGFyICptZW1f
bW9kZSxjaGFyICp3ZWlnaHRfbW9kZSxjaGFyICp0eXBlLCBGSUxFICpsb2NhbF9zdGRlcnIsIENv
bnN0cmFpbnRfbGlzdCAqQ0wsIGNoYXIgKnNlcV9zb3VyY2UpOwpDb25zdHJhaW50X2xpc3QqIHJl
YWRfY29uc3RyYWludF9saXN0KENvbnN0cmFpbnRfbGlzdCAqQ0wsY2hhciAqZm5hbWUsY2hhciAq
aW5fbW9kZSxjaGFyICptZW1fbW9kZSxjaGFyICp3ZWlnaHRfbW9kZSk7CgoKaW50IHJlYWRfY3B1
X2luX25fbGlzdChjaGFyICoqZm5hbWUsIGludCBuKTsKaW50IHJlYWRfc2VxX2luX2xpc3QgKCBj
aGFyICpmbmFtZSwgaW50ICpuc2VxLCBjaGFyICoqKnNlcXVlbmNlcywgY2hhciAqKipzZXFfbmFt
ZSk7CgpTZXF1ZW5jZSAqIHJlYWRfc2VxX2luX25fbGlzdChjaGFyICoqZm5hbWUsIGludCBuLCBj
aGFyICp0eXBlLCBjaGFyICpTZXFNb2RlKTsKCmludCByZWFkX2NwdV9pbl9saXN0ICggY2hhciAq
Zm5hbWUpOwppbnQgKiogcmVhZF9saXN0ICggY2hhciAqZm5hbWUsIGludCAqKmxpc3QsaW50ICpu
ZSwgaW50ICpuc2VxLCBpbnQgKmNwdSwgY2hhciAqKipzZXF1ZW5jZXMsIGNoYXIgKioqc2VxX25h
bWUpOwpDb25zdHJhaW50X2xpc3QgKiByZWFkX2NvbnN0cmFpbnRfbGlzdF9maWxlKENvbnN0cmFp
bnRfbGlzdCAqQ0wsIGNoYXIgKmZuYW1lKTsKQ29uc3RyYWludF9saXN0ICogZmFzdF9yZWFkX2Nv
bnN0cmFpbnRfbGlzdF9maWxlKENvbnN0cmFpbnRfbGlzdCAqQ0wsIGNoYXIgKmZuYW1lKTsKCgoK
CgoKCkZJTEUgKiBzYXZlX2V4dGVuZGVkX2NvbnN0cmFpbnRfbGlzdCAoIENvbnN0cmFpbnRfbGlz
dCAqQ0wsIGNoYXIgKm1vZGUsIEZJTEUgKmZwKSA7CkZJTEUgKiBzYXZlX2V4dGVuZGVkX2NvbnN0
cmFpbnRfbGlzdF9wYWlyICggQ29uc3RyYWludF9saXN0ICpDTCwgY2hhciAqbW9kZSwgY2hhciog
c2VxMSwgY2hhciAqIHNlcTIsRklMRSAqZnApOwoKCgoKCgoKRklMRSAqIHNhdmVfY29uc3RyYWlu
dF9saXN0ICggQ29uc3RyYWludF9saXN0ICpDTCxpbnQgc3RhcnQsIGludCBsZW4sIGNoYXIgKmZu
YW1lLCBGSUxFICpmcCxjaGFyICptb2RlLFNlcXVlbmNlICpTKTsKRklMRSAqIHNhdmVfc3ViX2xp
c3RfaGVhZGVyICggRklMRSAqT1VULCBpbnQgbiwgY2hhciAqKm5hbWUsIENvbnN0cmFpbnRfbGlz
dCAqQ0wpOwpGSUxFICogc2F2ZV9saXN0X2hlYWRlciAoIEZJTEUgKk9VVCxDb25zdHJhaW50X2xp
c3QgKkNMKTsKRklMRSAqIHNhdmVfbGlzdF9mb290ZXIgKEZJTEUgKk9VVCxDb25zdHJhaW50X2xp
c3QgKkNMKTsKRklMRSAqIHNhdmVfY29uc3RyYWludF9saXN0X2FzY2lpICggRklMRSAqT1VULENv
bnN0cmFpbnRfbGlzdCAqQ0wsIGludCBzdGFydCxpbnQgbGVuLCBpbnQgKnRyYW5zbGF0aW9uKTsK
RklMRSAqIHNhdmVfY29uc3RyYWludF9saXN0X2JpbiAoIEZJTEUgKk9VVCxDb25zdHJhaW50X2xp
c3QgKkNMLCBpbnQgc3RhcnQsaW50IGxlbiwgaW50ICp0cmFuc2xhdGlvbik7CgoKCgoKCgppbnQg
KnNlcXBhaXIyd2VpZ2h0IChpbnQgczEsIGludCBzMiwgQWxpZ25tZW50ICpBLENvbnN0cmFpbnRf
bGlzdCAqQ0wsIGNoYXIgKndlaWdodF9tb2RlLCBpbnQgKndlaWdodCk7CkNvbnN0cmFpbnRfbGlz
dCAqYWxuX2ZpbGUyY29uc3RyYWludF9saXN0IChjaGFyICphbG5hbWUsIENvbnN0cmFpbnRfbGlz
dCAqQ0wsY2hhciAqd2VpZ2h0X21vZGUpOwpDb25zdHJhaW50X2xpc3QgKmFsbjJjb25zdHJhaW50
X2xpc3QgKEFsaWdubWVudCAqQSwgQ29uc3RyYWludF9saXN0ICpDTCxjaGFyICp3ZWlnaHRfbW9k
ZSk7Cgpkb3VibGUgKipsaXN0Mm1hdCAoQ29uc3RyYWludF9saXN0ICpDTCxpbnQgczEsaW50IHMy
LCBkb3VibGUgKm1pbiwgZG91YmxlICptYXgpOwpDb25zdHJhaW50X2xpc3QgKiBjb25zdHJhaW50
X2xpc3QyYmluX2ZpbGUoQ29uc3RyYWludF9saXN0ICpjbGlzdCk7CkZJTEUgKiBiaW5fZmlsZTJj
b25zdHJhaW50X2xpc3QgKCBDb25zdHJhaW50X2xpc3QgKkNMLCBGSUxFICpmcCwgY2hhciAqbmFt
ZSk7CgppbnQgKipsaXN0MnJlc2lkdWVfdG90YWxfd2VpZ2h0ICggQ29uc3RyYWludF9saXN0ICpD
TCk7CmludCAqKmxpc3QycmVzaWR1ZV90b3RhbF9leHRlbmRlZF93ZWlnaHQgKCBDb25zdHJhaW50
X2xpc3QgKkNMKTsKaW50ICoqbGlzdDJyZXNpZHVlX3BhcnRpYWxfZXh0ZW5kZWRfd2VpZ2h0ICgg
Q29uc3RyYWludF9saXN0ICpDTCk7CiMgMTA2MiAidXRpbF9saWJfaGVhZGVyLmgiCkNvbnN0cmFp
bnRfbGlzdCAqY2xlYW4gKCBjaGFyICpjbGVhbl9tb2RlLENvbnN0cmFpbnRfbGlzdCAqQyxpbnQg
c3RhcnQsIGludCBsZW4pOwpDb25zdHJhaW50X2xpc3QgKiBjbGVhbl9zaGFkb3cgKCBDb25zdHJh
aW50X2xpc3QgKkNMLCBpbnQgc3RhcnQsIGludCBsZW4pOwoKCgoKCgoKQ29uc3RyYWludF9saXN0
ICptZXJnZV9jb25zdHJhaW50X2xpc3QgKCBDb25zdHJhaW50X2xpc3QgKlNMLCBDb25zdHJhaW50
X2xpc3QgKk1MLCBjaGFyICptb2RlKTsKaW50IHJldHVybl9tYXhfY29uc3RyYWludF9saXN0ICgg
Q29uc3RyYWludF9saXN0ICpDTCwgaW50IGZpZWxkKTsKQ29uc3RyYWludF9saXN0ICptb2RpZnlf
d2VpZ2h0KCBDb25zdHJhaW50X2xpc3QgKkNMLGludCBzdGFydCwgaW50IGVuZCwgY2hhciAqbW9k
aWZ5X21vZGUpOwpDb25zdHJhaW50X2xpc3QgKmNvbXBhY3RfbGlzdCAoQ29uc3RyYWludF9saXN0
ICpDTCwgaW50IHN0YXJ0LCBpbnQgbGVuLCBjaGFyICpjb21wYWN0X21vZGUpOwpDb25zdHJhaW50
X2xpc3QgKnJlc2NhbGVfbGlzdF9zaW1wbGUgKENvbnN0cmFpbnRfbGlzdCAqQ0wsaW50IHN0YXJ0
LCBpbnQgbGVuLGludCBuZXdfbWluLCBpbnQgbmV3X21heCk7CkNvbnN0cmFpbnRfbGlzdCAqcmVz
Y2FsZV9saXN0IChDb25zdHJhaW50X2xpc3QgKkNMLGludCBzdGFydCwgaW50IGxlbixpbnQgbWF4
MSwgaW50IG1heDIpOwpDb25zdHJhaW50X2xpc3QqIGZpbHRlcl9saXN0IChDb25zdHJhaW50X2xp
c3QgKkNMLCBpbnQgc3RhcnQsIGludCBsZW4saW50IFQpOwpDb25zdHJhaW50X2xpc3QgKnVuZGVm
aW5lX2xpc3QgKENvbnN0cmFpbnRfbGlzdCAqQ0wpOwoKCgoKdm9pZCBwcmludF9DTF9tZW0oQ29u
c3RyYWludF9saXN0ICpDTCwgY2hhciAqZnVuY3Rpb24pOwppbnQgY29uc3RyYWludF9saXN0X2lz
X3NvcnRlZCAoIENvbnN0cmFpbnRfbGlzdCAqQ0wpOwp2b2lkIGNoZWNrX3NlcV9wYWlyX2luX2xp
c3QoQ29uc3RyYWludF9saXN0ICpDTCxpbnQgc2VxMSwgaW50IHNlcTIpOwoKCgoKCgpDb25zdHJh
aW50X2xpc3QgKiBhbGlnbl9jb2RpbmdfbnVjbGVvdGlkZXMgKGNoYXIgKnNlcSwgY2hhciAqbWV0
aG9kLCBjaGFyICp3ZWlnaHQsIGNoYXIgKm1lbV9tb2RlLCBDb25zdHJhaW50X2xpc3QgKkNMKTsK
CgoKCgpDb25zdHJhaW50X2xpc3QgKndlaWdodF9jb25zdHJhaW50X2xpc3QoQ29uc3RyYWludF9s
aXN0ICogQ0wsIGNoYXIgKnNlcV93ZWlnaHQpOwpXZWlnaHRzKiBjb21wdXRlX3RfY29mZmVlX3dl
aWdodChDb25zdHJhaW50X2xpc3QgKiBDTCk7CkNvbnN0cmFpbnRfbGlzdCAqcmVfd2VpZ2h0X2Nv
bnN0cmFpbnRfbGlzdChDb25zdHJhaW50X2xpc3QgKiBDTCxXZWlnaHRzICpXKTsKCkRpc3RhbmNl
X21hdHJpeCogY2wyZGlzdGFuY2VfbWF0cml4IChDb25zdHJhaW50X2xpc3QgKkNMLCBjaGFyICpp
bl9tb2RlKTsKRGlzdGFuY2VfbWF0cml4ICpzZXEyZGlzdGFuY2VfbWF0cml4IChDb25zdHJhaW50
X2xpc3QgKkNMLCBjaGFyICppbl9tb2RlKTsKCgoKCgoKaW50IHJ1bl9tdWx0aV90aHJlYWRfZmls
ZSAoY2hhciAqZm5hbWUsIGNoYXIgKmNvbmZpZyk7CmludCAqKmluZGV4X3NlcV9yZXMgKCBTZXF1
ZW5jZSAqUzEsIFNlcXVlbmNlICpTMiwgaW50ICoqbmFtZV9pbmRleCk7CmludCAqKmluZGV4X3Nl
cV9uYW1lICggU2VxdWVuY2UgKlMxLCBTZXF1ZW5jZSAqUzIpOwppbnQgKmdldF9uYW1lX2luZGV4
IChjaGFyICoqbDEsIGludCBuMSwgY2hhciAqKmwyLCBpbnQgbjIpOwoKaW50KiBnZXRfcmVzX2lu
ZGV4IChjaGFyICpzZXExLCBjaGFyICpzZXEyKTsKCgoKaW50IGNoYW5nZV9yZXNpZHVlX2Nvb3Jk
aW5hdGUgKCBjaGFyICppbl9zZXExLCBjaGFyICppbl9zZXEyLCBpbnQgdik7CgppbnQgKiogbWlu
aW1pc2VfcmVwZWF0X2Nvb3IgKGludCAqKmNvb3IsIGludCBuc2VxLCBTZXF1ZW5jZSAqUyk7Cmlu
dCAqKiBnZXRfbm9sX3NlcSggQ29uc3RyYWludF9saXN0ICpDTCxpbnQgKipjb29yLCBpbnQgbnNl
cSwgU2VxdWVuY2UgKlMpOwoKCmludCBjb21wYXJlX3Bvc19jb2x1bW4oIGludCAqKnBvczEsaW50
IHAxLCBpbnQgKipwb3MyLGludCBwMiwgaW50IG5zZXEpOwoKY2hhciAqIHNlcTJhbHBoYWJldCAo
U2VxdWVuY2UgKlMpOwpjaGFyICphbG4yYWxwaGFiZXQgKEFsaWdubWVudCAqQSk7CmNoYXIgKmFy
cmF5MmFscGhhYmV0IChjaGFyICoqYXJyYXksIGludCBuKTsKCkFsaWdubWVudCAqIHNlcTJwZGIg
KCBjaGFyICpuYW1lLCBjaGFyICpzZXEsQmxhc3RfcGFyYW0gKkIpOwpBbGlnbm1lbnQgKiBzZXEy
Ymxhc3QgKCBjaGFyICpuYW1lLCBjaGFyICpzZXEsIEJsYXN0X3BhcmFtICpCKTsKU2VxdWVuY2Ug
KiBzZXEydW5pcXVlX25hbWVfc2VxIChTZXF1ZW5jZSAqUyk7ClNlcXVlbmNlICogc2VxMmJsYXN0
X3Byb2ZpbGUgKCBTZXF1ZW5jZSAqUywgaW50IG4sIEJsYXN0X3BhcmFtICpCKTsKCmludCAqKiBz
ZXEyYWxuX3BvcyAoQWxpZ25tZW50ICpBLCBpbnQgKm4sIGludCAqKmxzKTsKQWxpZ25tZW50ICpw
YWRkX2FsbiAoIEFsaWdubWVudCAqQSk7CmNoYXIgKipwYWRkX3N0cmluZyAoIGNoYXIgKipzdHJp
bmcsIGludCBuLGNoYXIgcGFkKTsKCkFsaWdubWVudCAqbG9jYWxfbWFsbjJnbG9iYWxfbWFsbiAo
Y2hhciAqc2VxLCBBbGlnbm1lbnQgKkEpOwoKQWxpZ25tZW50ICogc2VxMnByb2ZpbGUgKFNlcXVl
bmNlICpTLCBpbnQgaW5kZXgpOwoKQWxpZ25tZW50ICogYWxuMnByb2ZpbGUgKEFsaWdubWVudCAq
IEEpOwpBbGlnbm1lbnQgKiBhbG4yY29sbGFwc2VkX2FsbiAoQWxpZ25tZW50ICogQSwgaW50IG4s
IGNoYXIgKipzdHJpbmcpOwpBbGlnbm1lbnQqIGFsbjJzdWJfYWxuX2ZpbGUgKEFsaWdubWVudCAq
QSwgaW50IG4sIGNoYXIgKipzdHJpbmcpOwpBbGlnbm1lbnQqIGFsbjJzdWJfc2VxIChBbGlnbm1l
bnQgKkEsIGludCBuLCBjaGFyICoqc3RyaW5nKTsKCmludCAqIHNlcTJpbnZfcG9zICggY2hhciAq
c2VxKTsKaW50ICoqIGFsbjJwb3Nfc2ltcGxlIChBbGlnbm1lbnQgKkEsIGludCBuX25zZXEsIC4u
Lik7CmludCAqKiBhbG4ycG9zX3NpbXBsZV8yIChBbGlnbm1lbnQgKkEpOwpBbGlnbm1lbnQgKiog
c3BsaXRfc2VxX2luX2Fsbl9saXN0ICggQWxpZ25tZW50ICoqYWxuLCBTZXF1ZW5jZSAqUywgaW50
IGxfc2VxLCBjaGFyICoqc2VxX2xpc3QpOwoKU2VxdWVuY2UgKiBmaWxsX3NlcXVlbmNlX3N0cnVj
ICggaW50IG5zZXEsIGNoYXIgKipzZXF1ZW5jZXMsIGNoYXIgKipzZXFfbmFtZSk7CgppbnQgc2Vx
X2xpc3QyaW5fZmlsZSAoIFRDX21ldGhvZCAqTSwgU2VxdWVuY2UgKlMsIGNoYXIgKmxpc3QsIGNo
YXIgKmZpbGUpOwppbnQgc2VxX2xpc3QyZmFzdGFfZmlsZSggU2VxdWVuY2UgKlMsIGNoYXIgKmxp
c3QsIGNoYXIgKmZpbGUpOwpTdHJ1Y3R1cmUgKiBzZXEyc3RydWMgKCBTZXF1ZW5jZSAqUywgU3Ry
dWN0dXJlICpTVCk7CkFsaWdubWVudCAqc3RyaW5nczJhbG4gKGludCBuc2VxLC4uLik7CkFsaWdu
bWVudCAqIHNlcTJhbG4gKCBTZXF1ZW5jZSAqUywgQWxpZ25tZW50ICpBLGludCBybV9nYXApOwpB
bGlnbm1lbnQgKnNlcV9jb29yMmFsbiAoIFNlcXVlbmNlICpTLCBBbGlnbm1lbnQgKkEsIGludCAq
KmNvb3IsIGludCBuc2VxKTsKCkFsaWdubWVudCAqc3RhY2tfYWxuIChBbGlnbm1lbnQgKkEsIEFs
aWdubWVudCAqQik7CkFsaWdubWVudCAqY2hzZXFJYWxuKGNoYXIgKm5hbWUsIGludCBzZXFfbiwg
aW50IHN0YXJ0LGludCBsZW4sU2VxdWVuY2UgKlMsIGludCBzZXFJYWxuLCBBbGlnbm1lbnQgKkEp
OwoKY2hhciAqZG5hX2FsbjJjb25zX3NlcSAoIEFsaWdubWVudCAqQSk7CmNoYXIgKmFsbjJjb25z
X3NlcSAoIEFsaWdubWVudCAqQSwgaW50IG5zLCBpbnQgKmxzLCBpbnQgbl9ncm91cHMsIGNoYXIg
Kipncm91cF9saXN0KTsKCmNoYXIgKnN1Yl9hbG4yY29uc19zZXFfbWF0ICggQWxpZ25tZW50ICpB
LGludCBucywgaW50ICpscywgY2hhciAqbWF0X25hbWUpOwpjaGFyICphbG4yY29uc19zZXFfbWF0
ICggQWxpZ25tZW50KkEsIGNoYXIgKm1hdF9uYW1lKTsKQWxpZ25tZW50ICphbG4yc2hvcnRfYWxu
KCBBbGlnbm1lbnQgKkEsIGNoYXIgKmxpc3QsIGNoYXIgKm5ldywgaW50IHNwYWNlcik7ClNlcXVl
bmNlICprZWVwX3Jlc2lkdWVzX2luX3NlcSAoIFNlcXVlbmNlICpTLGNoYXIgKmxpc3QsIGNoYXIg
cmVwbGFjZW1lbnQpOwpBbGlnbm1lbnQgKmtlZXBfcmVzaWR1ZXNfaW5fYWxuICggQWxpZ25tZW50
ICpBLGNoYXIgKmxpc3QsIGNoYXIgcmVwbGFjZW1lbnQpOwpBbGlnbm1lbnQgKmZpbHRlcl9rZWVw
X3Jlc2lkdWVzX2luX2FsbiAoIEFsaWdubWVudCAqQSxBbGlnbm1lbnQgKlNULCBpbnQgdXNlX2Nv
bnMsIGludCB2YWx1ZSwgY2hhciAqbGlzdCwgY2hhciByZXBsYWNlbWVudCk7CgpBbGlnbm1lbnQg
KmFsbl9jb252ZXJ0IChBbGlnbm1lbnQgKkEsIEFsaWdubWVudCAqU1QsIGludCB1c2VfY29ucywg
aW50IHZhbHVlLGludCBuLCAuLi4pOwpBbGlnbm1lbnQgKmFsbjJudW1iZXIgKEFsaWdubWVudCAq
QSk7CkFsaWdubWVudCAqIGZpbHRlcl9hbG4gKCBBbGlnbm1lbnQgKkEsIEFsaWdubWVudCAqU1Qs
IGludCB2YWx1ZSk7CkFsaWdubWVudCAqIGZpbHRlcl9hbG5fbG93ZXJfdXBwZXIgKCBBbGlnbm1l
bnQgKkEsIEFsaWdubWVudCAqU1QsaW50IHVzZV9jb25zLCBpbnQgdmFsdWUpOwpBbGlnbm1lbnQg
KiBmaWx0ZXJfYWxuX3VwcGVyX2xvd2VyICggQWxpZ25tZW50ICpBLCBBbGlnbm1lbnQgKlNULCBp
bnQgdXNlX2NvbnMsaW50IHZhbHVlKTsKQWxpZ25tZW50ICogZmlsdGVyX2Fsbl9jb252ZXJ0ICgg
QWxpZ25tZW50ICpBLCBBbGlnbm1lbnQgKlNULCBpbnQgdXNlX2NvbnMsaW50IHZhbHVlLCBpbnQg
bl9zeW1ib2wsY2hhcioqIHN5bWJvbF9saXN0KTsKaW50ICogY291bnRfaW5fYWxuICggQWxpZ25t
ZW50ICpBLCBBbGlnbm1lbnQgKlNULCBpbnQgdmFsdWUsIGludCBuX3N5bWJvbCxjaGFyICoqc3lt
Ym9sX2xpc3QsIGludCAqdGFibGUpOwoKQWxpZ25tZW50ICogdHJpbV9hbG5fd2l0aF9zZXEgKCBB
bGlnbm1lbnQgKlMsIEFsaWdubWVudCAqUCk7CkFsaWdubWVudCAqIGFkZF9hbGlnbl9zZXEyYWxu
ICggQWxpZ25tZW50ICpBLCBjaGFyICpzZXEsIGNoYXIgKnNlcV9uYW1lKTsKU2VxdWVuY2UgKiBh
bG4yc2VxICggQWxpZ25tZW50ICpBKTsKCkFsaWdubWVudCAqIHRocmVhZF9wcm9maWxlX2ZpbGVz
MmFsbiAoQWxpZ25tZW50ICpBLCBjaGFyICp0ZW1wbGF0ZV9maWxlKTsKQWxpZ25tZW50ICogZXhw
YW5kX2FsbiAoQWxpZ25tZW50ICpBKTsKQWxpZ25tZW50ICogZXhwYW5kX251bWJlcl9hbG4gKEFs
aWdubWVudCAqQSxBbGlnbm1lbnQgKkVBKTsKQWxpZ25tZW50ICogcmVtb3ZlX2dhcF9jb2x1bW4g
KCBBbGlnbm1lbnQgKkEsIGNoYXIgKm1vZGUpOwpBbGlnbm1lbnQqIHVuZ2FwX3N1Yl9hbG4gKCBB
bGlnbm1lbnQgKkEsIGludCBuc2VxLCBpbnQgKmxzKTsKU2VxdWVuY2UgKiB1bmdhcF9zZXEgKCBT
ZXF1ZW5jZSAqQSk7CkFsaWdubWVudCAqIHVuZ2FwX2Fsbl9uICggQWxpZ25tZW50ICpBLCBpbnQg
bik7CkFsaWdubWVudCAqIHVuZ2FwX2FsbiAoIEFsaWdubWVudCAqQSk7CnZvaWQgY29tcHJlc3Nf
YWxuICggQWxpZ25tZW50ICpBKTsKQWxpZ25tZW50KiBjb25kZW5zZV9hbG4gKEFsaWdubWVudCAq
QSk7CgpBbGlnbm1lbnQgKiBwcm9iYWJpbGlzdGljX3JtX2FhICggQWxpZ25tZW50ICpBLCBpbnQg
cG9zLCBpbnQgbGVuKTsKQWxpZ25tZW50ICogYWxuX2dhcDJyYW5kb21fYWEoQWxpZ25tZW50ICpB
KTsKQWxpZ25tZW50ICogbWFrZV9yYW5kb21fYWxuKEFsaWdubWVudCAqQSxpbnQgbnNlcSwgaW50
IGxlbiwgY2hhciAqYWxwaGFiZXQpOwpBbGlnbm1lbnQgKiBhZGRfcmFuZG9tX3NlcXVlbmNlMmFs
biggQWxpZ25tZW50ICpBLCBjaGFyICphbHBoYWJldCk7CgppbnQgKiogdHJpbV9hbG5fYm9yZGVy
cyAoIGNoYXIgKipzZXExLCBjaGFyICoqc2VxMiwgaW50IG5zZXEpOwpTZXF1ZW5jZSAqIHRyaW1f
YWxuX3NlcSAoIEFsaWdubWVudCAqQSwgQWxpZ25tZW50ICpCKTsKU2VxdWVuY2UgKiB0cmltX2Fs
bl9zZXFfbmFtZSAoIEFsaWdubWVudCAqQSwgQWxpZ25tZW50ICpCKTsKU2VxdWVuY2UgKmdldF9k
ZWZpbmVkX3Jlc2lkdWVzKCBBbGlnbm1lbnQgKkEpOwoKCkFsaWdubWVudCAqdGhyZWFkX2RlZmlu
ZWRfcmVzaWR1ZXNfb25fYWxuICggQWxpZ25tZW50ICpBLCBTZXF1ZW5jZSAqUzEpOwpTZXF1ZW5j
ZSAqc2VxMm51bWJlciAoU2VxdWVuY2UgKlMpOwpTZXF1ZW5jZSAqIG1lcmdlX3NlcSAoIFNlcXVl
bmNlICpJTiwgU2VxdWVuY2UgKk9VVCk7CmNoYXIgKiBzZXFfbmFtZTJjb29yICggY2hhciAqcywg
aW50ICpzdGFydCwgaW50ICplbmQsIGNoYXIgc2VwKTsKQWxpZ25tZW50ICpzZXFfbmFtZTJyZW1v
dmVkX3NlcV9uYW1lKFNlcXVlbmNlICpTLCBBbGlnbm1lbnQgKk5BLCBmbG9hdCAqKmRpZmYpOwpp
bnQgc2VxX25hbWUyaW5kZXggKGNoYXIgKm5hbWUsIFNlcXVlbmNlICpTKTsKClNlcXVlbmNlICpl
eHRyYWN0X29uZV9zZXEoY2hhciAqbixpbnQgc3RhcnQsIGludCBlbmQsIEFsaWdubWVudCAqUyxp
bnQga2VlcF9uYW1lKTsKU2VxdWVuY2UgKiBleHRyYWN0X3N1Yl9zZXEoIFNlcXVlbmNlICpDT09S
LCBTZXF1ZW5jZSAqUyk7CgoKU2VxdWVuY2UgKiBhZGRfcHJmMnNlcSAoY2hhciAqYWxuZmlsZSwg
U2VxdWVuY2UgKlMpOwppbnQgcHJmX2luX3NlcSAoIFNlcXVlbmNlICpTKTsKU2VxdWVuY2UgKiBh
ZGRfc2VxdWVuY2UgKCBTZXF1ZW5jZSAqSU4sIFNlcXVlbmNlICpPVVQsIGludCBpKTsKU2VxdWVu
Y2UgKiB0cmltX3NlcSAoIFNlcXVlbmNlICpBLCBTZXF1ZW5jZSAqQik7ClNlcXVlbmNlICogcmVv
cmRlcl9zZXEgKCBTZXF1ZW5jZSAqQSwgY2hhciAqKm5hbWUsIGludCBuc2VxKTsKY2hhciAqIGNv
bmNhdGVuYXRlX3NlcSAoIFNlcXVlbmNlICpTLCBjaGFyICpjb25jLCBpbnQgKm9yZGVyKTsKU2Vx
dWVuY2UgKiBzd2FwX2hlYWRlciAoIFNlcXVlbmNlICpTLCBTZXF1ZW5jZSAqSCk7CkFsaWdubWVu
dCAqIHJlb3JkZXJfYWxuICggQWxpZ25tZW50ICpBLCBjaGFyICoqbmFtZSwgaW50IG5zZXEpOwpj
aGFyICoqIHJtX25hbWVfdGFnIChjaGFyICoqbmFtZSwgaW50IG5zZXEsIGNoYXIgKnRhZyk7CgoK
CgpjaGFyICogc3RyaW5nX2NvbnRhaW5zX3RlbXBsYXRlX3RhZyAoY2hhciAqc3RyaW5nKTsKU2Vx
dWVuY2UgKiBzZXEydGVtcGxhdGVfdHlwZShTZXF1ZW5jZSAqU2VxKTsKU2VxdWVuY2UgKiBzZXEy
dGVtcGxhdGVfc2VxICggU2VxdWVuY2UgKlMsIGNoYXIgKnRlbXBsYXRlX2ZpbGUpOwpjaGFyICog
c2VxMnRlbXBsYXRlX2ZpbGUgKFNlcXVlbmNlICpTLCBjaGFyICpmaWxlKTsKaW50IHNlcTJ0ZW1w
bGF0ZV9maWxlMiAoU2VxdWVuY2UgKlMsIGNoYXIgKmZpbGUsIGNoYXIgKm1vZGUpOwoKU2VxdWVu
Y2UgKiBwcm9maWxlX3NlcTJ0ZW1wbGF0ZV9zZXEgKCBTZXF1ZW5jZSAqUywgY2hhciAqdGVtcGxh
dGVfZmlsZSk7CmludCBzZXEybl9YX3RlbXBsYXRlICggU2VxdWVuY2UgKlMsIGNoYXIgKnR5cGUp
OwoKc3RydWN0IFhfdGVtcGxhdGUgKmZpbGxfWF90ZW1wbGF0ZSAoY2hhciAqbmFtZSwgY2hhciAq
cCwgY2hhciAqdHlwZSk7CkZJTEUgKiBkaXNwbGF5X3NlcV90ZW1wbGF0ZSAoU2VxdWVuY2UgKlMs
IEZJTEUgKmlvKTsKY2hhciAqdGVtcGxhdGVfdHlwZTJ0eXBlX25hbWUgKGNoYXIgKnR5cGUpOwoK
CkZJTEUgKiBkaXNwbGF5X3NlcXVlbmNlX3RlbXBsYXRlcyAoIFNlcXVlbmNlICpTLCBpbnQgaSwg
RklMRSAqaW8pOwpGSUxFICogZGlzcGxheV9YX3RlbXBsYXRlIChzdHJ1Y3QgWF90ZW1wbGF0ZSAq
WCwgRklMRSAqaW8pOwoKc3RydWN0IFhfdGVtcGxhdGUqIGZyZWVfWF90ZW1wbGF0ZSAoIHN0cnVj
dCBYX3RlbXBsYXRlICpYKTsKCnN0cnVjdCBYX3RlbXBsYXRlICpmaWxsX1BfdGVtcGxhdGUgKGNo
YXIgKm5hbWUsIGNoYXIgKnAsIFNlcXVlbmNlICpTKTsKc3RydWN0IFhfdGVtcGxhdGUgKmZpbGxf
U190ZW1wbGF0ZSAoIGNoYXIgKm5hbWUsY2hhciAqcCwgU2VxdWVuY2UgKlMpOwpzdHJ1Y3QgWF90
ZW1wbGF0ZSAqZmlsbF9SX3RlbXBsYXRlIChjaGFyICpuYW1lLCBjaGFyICpwLCBTZXF1ZW5jZSAq
Uyk7CnN0cnVjdCBYX3RlbXBsYXRlICpmaWxsX0dfdGVtcGxhdGUgKGNoYXIgKm5hbWUsIGNoYXIg
KnAsIFNlcXVlbmNlICpTKTsKc3RydWN0IFhfdGVtcGxhdGUgKmZpbGxfUkJfdGVtcGxhdGUoY2hh
ciAqbmFtZSwgY2hhciAqcCwgU2VxdWVuY2UgKlMpOwoKY2hhciAqc2VxMlRfdmFsdWUgKCBTZXF1
ZW5jZSAqUywgaW50IGksIGNoYXIgKnBhcmFtX25hbWUsIGNoYXIgKnRlbXBsYXRlX3R5cGUpOwpB
bGlnbm1lbnQgKiBzZXEyUl90ZW1wbGF0ZV9wcm9maWxlIChTZXF1ZW5jZSAqUywgaW50IG4pOwpj
aGFyICogc2VxMlBfdGVtcGxhdGVfZmlsZSAoU2VxdWVuY2UgKlMsIGludCBuKTsKCnN0cnVjdCBY
X3RlbXBsYXRlICogc2VxX2hhc190ZW1wbGF0ZSAoIFNlcXVlbmNlICpTLCBpbnQgbiwgY2hhciAq
dHlwZSk7CgoKCgoKCkFsaWdubWVudCAqIGZpeF9hbG5fc2VxICggQWxpZ25tZW50ICpBLCBTZXF1
ZW5jZSAqUyk7CkFsaWdubWVudCAqIHJvdGF0ZV9hbG4gKCBBbGlnbm1lbnQgKkEsIGNoYXIgKm5h
bWUpOwpBbGlnbm1lbnQgKiBpbnZlcnRfYWxuICggQWxpZ25tZW50ICpBKTsKQWxpZ25tZW50ICog
ZXh0cmFjdF9ub2xfbG9jYWxfYWxuKCBBbGlnbm1lbnQgKkEsIGludCBzdGFydCwgaW50IG1heF9l
bmQpOwpBbGlnbm1lbnQgKiBleHRyYWN0X2FsbiAoIEFsaWdubWVudCAqQSwgaW50IHN0YXJ0LCBp
bnQgZW5kKTsKQWxpZ25tZW50ICogZXh0cmFjdF9hbG4yICggQWxpZ25tZW50ICpBLCBpbnQgc3Rh
cnQsIGludCBlbmQsIGNoYXIgKnNlcV9uYW1lKTsKQWxpZ25tZW50ICogZXh0cmFjdF9hbG4zICgg
QWxpZ25tZW50ICpBLCBjaGFyICpmaWxlbmFtZSk7CgpBbGlnbm1lbnQgKiB0cnVua2F0ZV9sb2Nh
bF9hbG4gKCBBbGlnbm1lbnQgKkEpOwppbnQgZ2V0X25vbF9hbG5fYm9yZGVyICggQWxpZ25tZW50
ICpBLCBpbnQgc3RhcnQsIGludCBkaXJlY3Rpb24pOwpBbGlnbm1lbnQgKiogdHJpbV9sb2NhbF9h
bG4gKCBBbGlnbm1lbnQgKkEsIGludCAqKkxpc3QsIGludCBuZSwgaW50ICoqcmVzaWR1ZV9saXN0
LCBTZXF1ZW5jZSAqUyk7CgpBbGlnbm1lbnQgKiBhbG5fY2F0ICggQWxpZ25tZW50ICpBLCBBbGln
bm1lbnQgKkIpOwpBbGlnbm1lbnQgKiBjb25jYXRlbmF0ZV9hbG4gKCBBbGlnbm1lbnQgKkEsIEFs
aWdubWVudCAqQik7CmNoYXIgKiBleHRyYWN0X2RlZmluZWRfc2VxICggY2hhciAqaW4sIGludCBp
bl9vZiwgaW50IGluX3N0YXJ0LCBpbnQgKmFhX2RlZiwgaW50IGRpciwgaW50ICpvdXRfc3RhcnQs
IGNoYXIgKm91dF9zZXEpOwppbnQgdmVyaWZ5X2FsbiAoIEFsaWdubWVudCAqQSwgU2VxdWVuY2Ug
KlMsIGNoYXIgKiBlcnJvcik7CkFsaWdubWVudCAqIHJlbW92ZV9lbmQgKEFsaWdubWVudCAqQSk7
CgpBbGlnbm1lbnQgKmFkanVzdF9lc3RfYWxuICggQWxpZ25tZW50ICpQVywgQWxpZ25tZW50ICpN
LCBpbnQgcyk7CkFsaWdubWVudCAqIHJlbmFtZV9zZXFfaW5fYWxuIChBbGlnbm1lbnQgKkEsIGNo
YXIgKioqbGlzdCk7ClNlcXVlbmNlICogcmVuYW1lX3NlcV9pbl9zZXEgKFNlcXVlbmNlICpBLCBj
aGFyICoqKmxpc3QpOwoKCgoKCgoKZmxvYXQgZ2V0X3NlcV9mc2ltICggY2hhciAqc3RyaW5nMSwg
Y2hhciAqc3RyaW5nMiwgY2hhciAqaWdub3JlLCBjaGFyICpzaW1pbGFyaXR5X2dyb3VwcywgaW50
ICoqbWF0cml4LCBpbnQgbW9kZSk7CmZsb2F0ICoqIGdldF9mc2ltX2Fsbl9hcnJheSAoIEFsaWdu
bWVudCAqQSwgY2hhciAqbW9kZSk7CgoKCgoKCgppbnQgKipzaW1fYXJyYXkyZGlzdF9hcnJheSAo
IGludCAqKnAsIGludCBtYXgpOwppbnQgKipkaXN0X2FycmF5MnNpbV9hcnJheSAoIGludCAqKnAs
IGludCBtYXgpOwoKaW50IGFsbjJtb3N0X3NpbWlsYXJfc2VxdWVuY2UgKCBBbGlnbm1lbnQgKkEs
IGNoYXIgKm1vZGUpOwppbnQgYWxuMmNvdmVyYWdlICggQWxpZ25tZW50ICpBLCBpbnQgcmVmX3Nl
cSk7CmludCBhbG4yc2ltICggQWxpZ25tZW50ICpBLCBjaGFyICptb2RlKTsKCmludCBhbG5faXNf
YWxpZ25lZCAoIEFsaWdubWVudCAqQSk7CmludCogZ2V0X2NkbmFfc2VxX3dpbnNpbSAoIGludCAq
Y2FjaGUsIGNoYXIgKnN0cmluZzEsIGNoYXIgKnN0cmluZzIsIGNoYXIgKmlnbm9yZSwgY2hhciAq
bW9kZSwgaW50ICp3KTsKaW50IGdldF9jZG5hX3NlcV9zaW0gKCBpbnQgKmNhY2hlLCBjaGFyICpz
dHJpbmcxLCBjaGFyICpzdHJpbmcyLCBjaGFyICppZ25vcmUsIGNoYXIgKm1vZGUpOwoKaW50IHNl
cTJhbG4yc2ltIChjaGFyICpzZXExLCBjaGFyICpzZXEyLCBjaGFyICptb2RlX2FsbiwgY2hhciAq
bW9kZV9pZCk7CmludCogZ2V0X3NlcV93aW5zaW0oIGNoYXIgKnN0cmluZzEsIGNoYXIgKnN0cmlu
ZzIsIGNoYXIgKmlnbm9yZSwgY2hhciAqbW9kZSwgaW50ICp3KTsKaW50IGdldF9zZXFfc2ltICgg
Y2hhciAqc3RyaW5nMSwgY2hhciAqc3RyaW5nMiwgY2hhciAqaWdub3JlLCBjaGFyICptb2RlKTsK
aW50IGdldF9zZXFfc2ltXzIgKCBjaGFyICpzdHJpbmcxLCBjaGFyICpzdHJpbmcyLCBjaGFyICpp
Z25vcmUsIGNoYXIgKipnciwgaW50IG5nKTsKaW50IGdldF9zZXFfc2ltXzMgKCBjaGFyICpzdHJp
bmcxLCBjaGFyICpzdHJpbmcyLCBjaGFyICppZ25vcmUsIGludCAqKm1hdCk7CgoKaW50ICoqKiBn
ZXRfd2luc2ltX2Fsbl9hcnJheSAoIEFsaWdubWVudCAqQSwgY2hhciAqbW9kZSwgaW50ICoqKncp
OwppbnQgKiogZ2V0X3NpbV9tYXN0ZXJfYWxuX2FycmF5ICggQWxpZ25tZW50ICpBLGludCBuLCBj
aGFyICptb2RlKTsKCmludCAqKiBhbG4yc2ltX21hdCAoQWxpZ25tZW50ICpBLCBjaGFyICptb2Rl
KTsKaW50ICoqIGdldF9kaXN0X2Fsbl9hcnJheSAoIEFsaWdubWVudCAqQSwgY2hhciAqbW9kZSk7
CmludCAqKiBnZXRfc2ltX2Fsbl9hcnJheSAoIEFsaWdubWVudCAqQSwgY2hhciAqbW9kZSk7CgoK
aW50ICoqIGdldF9jb3ZfYWxuX2FycmF5ICggQWxpZ25tZW50ICpBLCBjaGFyICptb2RlKTsKaW50
ICoqIGdldF9jb3ZfbWFzdGVyX2Fsbl9hcnJheSAoIEFsaWdubWVudCAqQSxpbnQgbiwgY2hhciAq
bW9kZSk7CgppbnQgKiBnZXRfYWxuX2NvbF93ZWlnaHQgKCBBbGlnbm1lbnQgKkEsIGNoYXIgKm1v
ZGUpOwppbnQgYW5hbHlzZV9hbG5fY29sdW1uICggQWxpZ25tZW50ICpCLCBpbnQgY29sKTsKCgpp
bnQgKiphbG4yY291bnRfbWF0IChBbGlnbm1lbnQgKkEpOwppbnQgKipzdWJfYWxuMmNvdW50X21h
dDIgKEFsaWdubWVudCAqQSwgaW50IG5zLCBpbnQgKmxzKTsKaW50ICoqYWxuMmNvdW50X21hdDIg
KEFsaWdubWVudCAqQSk7CmNoYXIgKmFsbjJyYW5kb21fc2VxIChBbGlnbm1lbnQgKkEsIGludCBu
b2lzZTEsIGludCBub2lzZTIsIGludCBub2lzZTMsIGludCBnYXBfbm9pc2UpOwoKQWxpZ25tZW50
ICogbWFzdGVyX3RyaW1zZXEoIEFsaWdubWVudCAqQSwgU2VxdWVuY2UgKlMsY2hhciAqbW9kZSk7
CkFsaWdubWVudCAqIHRyaW1zZXEoIEFsaWdubWVudCAqQSwgU2VxdWVuY2UgKlMsIGNoYXIgKm1v
ZGUpOwoKZmxvYXQgKiogZ2V0X3dlaWdodCAoIEFsaWdubWVudCAqQSwgU2VxdWVuY2UgKlMsIGNo
YXIgKm1vZGUpOwpmbG9hdCAqKnNlcTJwd3NpbSAoIEFsaWdubWVudCAqQSwgU2VxdWVuY2UgKlMs
IGNoYXIgKm1vZGUpOwpBbGlnbm1lbnQgKiB0cmltc2VxKCBBbGlnbm1lbnQgKkEsIFNlcXVlbmNl
ICpTLGNoYXIgKm1vZGUpOwpBbGlnbm1lbnQgKiB0Y190cmltc2VxKCBBbGlnbm1lbnQgKkEsIFNl
cXVlbmNlICpTLGNoYXIgKm1vZGUpOwpBbGlnbm1lbnQqIHNlcTJzdWJzZXEzKCBBbGlnbm1lbnQg
KkEsIFNlcXVlbmNlICpTLGludCB1c2VfYWxuLCBpbnQgbG93ZXJfc2ltLGludCB1cHBlcl9zaW0s
IGludCBtaW5fbnNlcSwgaW50IHRyaW1fZGlyZWN0aW9uLCBjaGFyICp3ZWlnaHRfbW9kZSwgZmxv
YXQgKioqc2ltX3dlaWdodCwgaW50ICpzZXFfbGlzdCk7CkFsaWdubWVudCogc2VxMnN1YnNlcTIo
IEFsaWdubWVudCAqQSwgU2VxdWVuY2UgKlMsaW50IHVzZV9hbG4sIGludCBsb3dlcl9zaW0saW50
IHVwcGVyX3NpbSwgaW50IG1heF9uc2VxLCBpbnQgdHJpbV9kaXJlY3Rpb24sIGNoYXIgKndlaWdo
dF9tb2RlLCBmbG9hdCAqKip3ZWlnaHRfdGFibGUsIGludCAqc2VxX2xpc3QpOwpmbG9hdCBleHRy
ZW1lX3NlcSAoaW50IGRpcmVjdGlvbiwgQWxpZ25tZW50ICpBLGZsb2F0ICoqc2ltX3dlaWdodCxp
bnQgKnNlcV9saXN0LCBpbnQgKnNlcV9pbmRleCk7CgpBbGlnbm1lbnQqIHNlcTJzdWJzZXExKCBB
bGlnbm1lbnQgKkEsIFNlcXVlbmNlICpTLGludCB1c2VfYWxuLCBpbnQgcGVyY2VudCxpbnQgbWF4
X25zZXEsaW50IG1heF9kaWZmLCBjaGFyICp3ZWlnaHRfbW9kZSk7CgoKCgoKCgppbnQgaXNfaW5f
c2FtZV9ncm91cF9hYSAoIGNoYXIgcjEsIGNoYXIgcjIsIGludCBuX2dyb3VwLCBjaGFyICoqZ2ws
IGNoYXIgKm1vZGUpOwppbnQgZmluZF9ncm91cF9hYV9kaXN0cmlidXRpb24gKGNoYXIgKmNvbCwg
aW50IG5zZXEsaW50IG5fZ3JvdXAsIGNoYXIgKipnbCwgaW50ICpkaXN0cmliLCBjaGFyICptb2Rl
ICk7CmNoYXIqKiBtYWtlX2dyb3VwX2FhIChpbnQgKm5ncm91cCwgY2hhciAqbW9kZSk7CgoKY2hh
ciAqIHRlc3RfZ2VuZTJwcm90IChDb25zdHJhaW50X2xpc3QgKkNMLCBpbnQgczEpOwpBbGlnbm1l
bnQqIGdlbmUycHJvdCAoQWxpZ25tZW50ICpBKTsKQWxpZ25tZW50ICogZG5hX2FsbjJfM2ZyYW1l
X2NkbmFfYWxuKEFsaWdubWVudCAqQSxpbnQgKm5zLGludCAqKmxfcyk7CgoKCgpBbGlnbm1lbnQg
KnNhcl9hbmFseXplIChBbGlnbm1lbnQgKkEsIEFsaWdubWVudCAqU0FSLCBjaGFyICpuYW1lKTsK
aW50IGFsbjJzYXJfY29sdW1uX2xpc3QgKCBBbGlnbm1lbnQgKkEsIGNoYXIgKmZpbHRlcik7CmZs
b2F0IGdldF9zYXJfc2ltIChjaGFyICpzZXExLCBjaGFyICpzZXEyKTsKQWxpZ25tZW50ICphbG4y
d2VpZ2h0ZWRfc2FyX3Njb3JlICggQWxpZ25tZW50ICpBLEFsaWdubWVudCAqQiwgY2hhciAqd2Vp
Z2h0X2ZpbGUsIGNoYXIgKmNvbXBvdW5kKTsKZmxvYXQgc2VxMndlaWdodGVkX3Nhcl9zY29yZSAo
IGNoYXIgKnNlcSwgaW50ICoqd2VpZ2h0KTsKCmludCBzYXIyc3Vic2FyIChBbGlnbm1lbnQgKkEs
IEFsaWdubWVudCAqUywgQWxpZ25tZW50ICoqc3ViQSwgQWxpZ25tZW50ICoqc3ViUywgY2hhciAq
KnNsaXN0LCBpbnQgbmwpOwppbnQgc2FyMnN1YnNhcl9maWxlICggQWxpZ25tZW50ICpBLCBBbGln
bm1lbnQgKlMsIGNoYXIgKmFsbiwgY2hhciAqc2FyKTsKCkFsaWdubWVudCAqd2VpZ2h0MnNhciAo
QWxpZ25tZW50ICpBLCBBbGlnbm1lbnQgKlNBUiwgY2hhciAqd2VpZ2h0X2ZpbGUsIGludCBsaW1p
dCk7CkFsaWdubWVudCAqIHNhcjJzaW1wcmVkIChBbGlnbm1lbnQgKkEsIEFsaWdubWVudCAqU0FS
LCBjaGFyICpwb3MsIGNoYXIgKmNvbXBvdW5kLCBpbnQgTCxpbnQgVSApOwpBbGlnbm1lbnQgKiBz
YXIyc2ltcHJlZDIgKEFsaWdubWVudCAqQSwgQWxpZ25tZW50ICpTQVIsIGNoYXIgKnNlcWxpc3Qs
IGNoYXIgKnBvc2ZpbGUsIGNoYXIgKmNvbXBvdW5kLCBpbnQgTDEgKTsKCkFsaWdubWVudCAqZGlz
cGxheV9zYXIgKCBBbGlnbm1lbnQgKkEsIEFsaWdubWVudCAqU0FSLCBjaGFyICpjb21wb3VuZCk7
Ck5UX25vZGUgc2FyMnRyZWUgKEFsaWdubWVudCAqQSwgY2hhciAqbW9kZSk7CkNvbnN0cmFpbnRf
bGlzdCAqIG1hc2tfbGlzdF93aXRoX2FsbiAoQWxpZ25tZW50ICpBLGludCBzdGFydCwgaW50IGxl
bixDb25zdHJhaW50X2xpc3QgKkNMLCBpbnQgbmV3X3ZhbHVlKTsKQ29uc3RyYWludF9saXN0KiBt
YXNrX2xpc3Rfd2l0aF9hbG5fcGFpciAoQWxpZ25tZW50ICpBLGludCBzdGFydCwgaW50IGVuZCxD
b25zdHJhaW50X2xpc3QgKkNMLGludCBuZXdfdmFsdWUpOwpDb25zdHJhaW50X2xpc3QgKm1hc2tf
ZW50cnkoIENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBwLCBpbnQgbmV3X3ZhbHVlKTsKQ29uc3Ry
YWludF9saXN0ICpwcmVwYXJlX2xpc3RfYW5kX3NlcTRzdyhDb25zdHJhaW50X2xpc3QgKkksIGlu
dCBuX3NlcSwgY2hhciAqKnNlcV9uYW1lKTsKaW50ICoqIGdldF91bmRlZmluZWRfbGlzdCAoQ29u
c3RyYWludF9saXN0ICpDTCk7CmludCBpc19uZXZlcl91bmRlZmluZWQgKENvbnN0cmFpbnRfbGlz
dCAqQ0wsaW50IHIpOwppbnQqIGRvX2FuYWx5c2VfbGlzdCAoIENvbnN0cmFpbnRfbGlzdCAqQ0wp
OwoKCnZvaWQgcHJpbnRfbGlzdChDb25zdHJhaW50X2xpc3QgKkNMKTsKdm9pZCBwcmludF9wYWly
IChDb25zdHJhaW50X2xpc3QgKkNMLGludCBwKTsKaW50KiogYmluX2xpc3QgKENvbnN0cmFpbnRf
bGlzdCAqQ0wsaW50IGZpZWxkLCBpbnQgVGhyZXNob2xkKTsKdm9pZCBzYXZlX2Z1bGxfbGlzdCAo
Q29uc3RyYWludF9saXN0ICpDTCwgY2hhcipmbmFtZSk7CkZJTEUgKiBvdXRwdXRfbGlzdCAoIENv
bnN0cmFpbnRfbGlzdCAqQ0wsIEZJTEUgKmZwKTsKRklMRSAqIG91dHB1dF9wYWlyIChDb25zdHJh
aW50X2xpc3QgKkNMLGludCBwLCBGSUxFICpmcCk7Ck5UX25vZGUgKiogc2VxMmN3X3RyZWUgKCBT
ZXF1ZW5jZSAqUywgY2hhciAqZmlsZSk7Ck5UX25vZGUgKiogbWFrZV9ual90cmVlICggQWxpZ25t
ZW50ICpBLGludCAqKmRpc3RhbmNlcyxpbnQgZ29wLCBpbnQgZ2VwLCBjaGFyICoqb3V0X3NlcSwg
Y2hhciAqKm91dF9zZXFfbmFtZSwgaW50IG91dF9uc2VxLCBjaGFyICp0cmVlX2ZpbGUsIGNoYXIg
KnRyZWVfbW9kZSk7Ck5UX25vZGUgKiogaW50X2Rpc3QybmpfdHJlZSAoaW50ICoqZGlzdGFuY2Vz
LCBjaGFyICoqb3V0X3NlcV9uYW1lLCBpbnQgb3V0X25zZXEsIGNoYXIgKnRyZWVfZmlsZSk7Ck5U
X25vZGUgKiogZmxvYXRfZGlzdDJual90cmVlIChmbG9hdCAqKmRpc3RhbmNlcywgY2hhciAqKm91
dF9zZXFfbmFtZSwgaW50IG91dF9uc2VxLCBjaGFyICp0cmVlX2ZpbGUpOwpOVF9ub2RlICoqIGRp
c3QybmpfdHJlZSAoZG91YmxlICoqZGlzdGFuY2VzLCBjaGFyICoqb3V0X3NlcV9uYW1lLCBpbnQg
b3V0X25zZXEsIGNoYXIgKnRyZWVfZmlsZSk7Cgp2b2lkIG5qX3RyZWUoY2hhciAqKnRyZWVfZGVz
Y3JpcHRpb24sIGludCBuc2VxKTsKdm9pZCBmYXN0X25qX3RyZWUoY2hhciAqKnRyZWVfZGVzY3Jp
cHRpb24pOwp2b2lkIHNsb3dfbmpfdHJlZShjaGFyICoqdHJlZV9kZXNjcmlwdGlvbik7Cgp2b2lk
IHByaW50X3BoeWxpcF90cmVlKGNoYXIgKip0cmVlX2Rlc2NyaXB0aW9uLCBGSUxFICp0cmVlLCBp
bnQgYm9vdHN0cmFwKTsKdm9pZCB0d29fd2F5X3NwbGl0KGNoYXIgKip0cmVlX2Rlc2NyaXB0aW9u
LCBGSUxFICp0cmVlLCBpbnQgc3RhcnRfcm93LCBpbnQgZmxhZywgaW50IGJvb3RzdHJhcCk7CnZv
aWQgZ3VpZGVfdHJlZShjaGFyICpmbmFtZSwgZG91YmxlICoqc2FnYV90bWF0LCBjaGFyICoqc2Fn
X3NlcV9uYW1lLCBpbnQgc2FnYV9uc2VxKTsKCnR5cGVkZWYgc3RydWN0IFRtcG5hbWUgVG1wbmFt
ZTsKc3RydWN0IE1lbWNvbnRyb2wKICAgIHsKICAgICAgc2l6ZV90IHNpemU7CiAgICAgIHNpemVf
dCBzaXplX2VsZW1lbnQ7CiAgICAgIGNoYXIgY2hlY2tbM107CiAgICAgIHN0cnVjdCBNZW1jb250
cm9sICpwOwogICAgICBzdHJ1Y3QgTWVtY29udHJvbCAqbjsKICAgIH07CnR5cGVkZWYgc3RydWN0
IE1lbWNvbnRyb2wgTWVtY29udHJvbDsKCgoKCgoKQ29uc3RyYWludF9saXN0ICpmcmVlX2NvbnN0
cmFpbnRfbGlzdDRsaWJfY29tcHV0YXRpb24gKENvbnN0cmFpbnRfbGlzdCAqQ0wpOwpDb25zdHJh
aW50X2xpc3QgKmR1cGxpY2F0ZV9jb25zdHJhaW50X2xpc3Q0bGliX2NvbXB1dGF0aW9uIChDb25z
dHJhaW50X2xpc3QgKkNMKTsKQ29uc3RyYWludF9saXN0ICogZGVjbGFyZV9jb25zdHJhaW50X2xp
c3Rfc2ltcGxlICggU2VxdWVuY2UgKlMpOwpDb25zdHJhaW50X2xpc3QgKiBkZWNsYXJlX2NvbnN0
cmFpbnRfbGlzdCAoIFNlcXVlbmNlICpTLCBjaGFyICpuYW1lLCBpbnQgKipMLCBpbnQgbmUsRklM
RSAqZnAsIGludCAqKk0pOwpDb25zdHJhaW50X2xpc3QgKmNhY2hlX2RwX3ZhbHVlNGNvbnN0cmFp
bnRfbGlzdCAoIGNoYXIgbW9kZVtdLENvbnN0cmFpbnRfbGlzdCAqQ0wpOwpDb25zdHJhaW50X2xp
c3QgKmR1cGxpY2F0ZV9jb25zdHJhaW50X2xpc3Rfc29mdCAoQ29uc3RyYWludF9saXN0ICpDTCk7
CkNvbnN0cmFpbnRfbGlzdCAqZHVwbGljYXRlX2NvbnN0cmFpbnRfbGlzdCAoQ29uc3RyYWludF9s
aXN0ICpDTCk7CkNvbnN0cmFpbnRfbGlzdCAqY29weV9jb25zdHJhaW50X2xpc3QgKENvbnN0cmFp
bnRfbGlzdCAqQ0wsIGludCBtb2RlKTsKU2VxdWVuY2UgKiBmcmVlX2NvbnN0cmFpbnRfbGlzdCAo
Q29uc3RyYWludF9saXN0ICpDTCk7CkNvbnN0cmFpbnRfbGlzdCAqIGZyZWVfY29uc3RyYWludF9s
aXN0X2Z1bGwgKENvbnN0cmFpbnRfbGlzdCAqQ0wpOwpEaXN0YW5jZV9tYXRyaXggKiBmcmVlX2Rp
c3RhbmNlX21hdHJpeCAoIERpc3RhbmNlX21hdHJpeCAqRE0pOwpEaXN0YW5jZV9tYXRyaXggKiBk
dXBsaWNhdGVfZGlzdGFuY2VfbWF0cml4ICggRGlzdGFuY2VfbWF0cml4ICpETWluKTsKCgoKCgoK
Qmxhc3RfcGFyYW0gKiBkdXBsaWNhdGVfYmxhc3RfcGFyYW0gKCBCbGFzdF9wYXJhbSpCKTsKQmxh
c3RfcGFyYW0gKiBmcmVlX2JsYXN0X3BhcmFtICggQmxhc3RfcGFyYW0qQik7CgoKCgoKCk1vY2Eg
KiBkdXBsaWNhdGVfbW9jYSAoIE1vY2EgKm0pOwpNb2NhICogZnJlZV9tb2NhICggTW9jYSAqbSk7
CgoKCgoKClN0cnVjdHVyZSAqIGRlY2xhcmVfc3RydWN0dXJlICggaW50IG4sIGNoYXIgKiphcnJh
eSk7ClN0cnVjdHVyZSAqIGV4dGVuZF9zdHJ1Y3R1cmUgKCBTdHJ1Y3R1cmUgKlMpOwoKCgoKCgpX
ZWlnaHRzKiBkZWNsYXJlX3dlaWdodHMgKCBpbnQgbnNlcSk7CldlaWdodHMqIGR1cGxpY2F0ZV93
ZWlnaHRzIChXZWlnaHRzICpXKTsKV2VpZ2h0cyogZnJlZV93ZWlnaHRzICggV2VpZ2h0cyogVyk7
CgpGSUxFKiBwcmludF9tZW1fdXNhZ2UgKEZJTEUgKmZwLCBjaGFyICpjb21tZW50KTsKdm9pZCBz
ZXRfbWF4X21lbSAoaW50IG0pOwppbnQgdmVyaWZ5X21lbW9yeSAoaW50IHMpOwppbnQgbXlfYXNz
ZXJ0ICggdm9pZCAqcCwgaW50IGluZGV4KTsKCnZvaWQgKiB2bWFsbG9jICggc2l6ZV90IHNpemUp
Owp2b2lkICogdmNhbGxvYyAoIHNpemVfdCBub2JqLCBzaXplX3Qgc2l6ZSk7CnZvaWQgKiB2Y2Fs
bG9jX25vbWVtc2V0ICggc2l6ZV90IG5vYmosIHNpemVfdCBzaXplKTsKdm9pZCAqIHN1Yl92Y2Fs
bG9jICggc2l6ZV90IG5vYmosIHNpemVfdCBzaXplLCBpbnQgTU9ERSk7Cgp2b2lkICogdnJlYWxs
b2MgKCB2b2lkICpwLCBzaXplX3Qgc2l6ZSk7CnZvaWQgdmZyZWUyICggdm9pZCAqKnApOwp2b2lk
IHZmcmVlICggdm9pZCAqcCk7CnZvaWQgKiBmcmVlX2FycmF5TiAodm9pZCAqcCwgaW50IG5kaW0p
Owp2b2lkIHZmcmVlX2FsbCAoKTsKCgoKCgoKdm9pZCB3cml0ZV9zaXplX3Nob3J0IChpbnQgeCwg
c2hvcnQgKmFycmF5LCBpbnQgb2Zmc2V0KTsKdm9pZCB3cml0ZV9zaXplX2NoYXIgKGludCB4LCBj
aGFyICphcnJheSwgaW50IG9mZnNldCk7CnZvaWQgd3JpdGVfc2l6ZV9pbnQgKGludCB4LCBpbnQg
KmFycmF5LCBpbnQgb2Zmc2V0KTsKdm9pZCB3cml0ZV9zaXplX2Zsb2F0IChpbnQgeCwgZmxvYXQg
KmFycmF5LCBpbnQgb2Zmc2V0KTsKdm9pZCB3cml0ZV9zaXplX2RvdWJsZShpbnQgeCwgZG91Ymxl
ICphcnJheSwgaW50IG9mZnNldCk7CgppbnQgcmVhZF9zaXplX3Nob3J0ICggdm9pZCAqYXJyYXks
IHNpemVfdCBzaXplICk7CmludCByZWFkX3NpemVfY2hhciAoIHZvaWQgKmFycmF5LCBzaXplX3Qg
c2l6ZSApOwppbnQgcmVhZF9zaXplX2ludCAoIHZvaWQgKmFycmF5LCBzaXplX3Qgc2l6ZSApOwpp
bnQgcmVhZF9zaXplX2Zsb2F0ICggdm9pZCAqYXJyYXksIHNpemVfdCBzaXplICk7CmludCByZWFk
X3NpemVfZG91YmxlKCB2b2lkICphcnJheSwgc2l6ZV90IHNpemUgKTsKaW50IHJlYWRfYXJyYXlf
c2l6ZSAoIHZvaWQgKmFycmF5LCBzaXplX3Qgc2l6ZSApOwppbnQgcmVhZF9hcnJheV9uZXcgKCB2
b2lkICphcnJheSk7CmludCBpc19keW5hbWljX21lbW9yeSAoIHZvaWQgKmFycmF5KTsKCgoKCgoK
CnZvaWQgKipyZWFsbG9jX2FycmF5TihpbnQgbmRpbSx2b2lkICoqbWFpbl9hcnJheSxzaXplX3Qg
c2l6ZSwgLi4uKTsKdm9pZCAqKnJlYWxsb2NfYXJyYXlOMiAoIGludCBuZGltLCB2b2lkICoqIHAs
IGludCAqQSwgc2l6ZV90IHNpemUpOwoKCnZvaWQgKiogcmVhbGxvY19hcnJheSAodm9pZCAqKmFy
cmF5LHNpemVfdCBzaXplLCBpbnQgZmlyc3QsIGludCBzZWNvbmQsIGludCBleHQxLCBpbnQgZXh0
Mik7CnNob3J0ICoqIHJlYWxsb2Nfc2hvcnQgKCBzaG9ydCAqKmFycmF5LCBpbnQgZmlyc3QsIGlu
dCBzZWNvbmQsIGludCBleHQxLCBpbnQgZXh0Mik7CmNoYXIgKiogcmVhbGxvY19jaGFyICggY2hh
ciAqKmFycmF5LCBpbnQgZmlyc3QsIGludCBzZWNvbmQsIGludCBleHQxLCBpbnQgZXh0Mik7Cmlu
dCAqKiByZWFsbG9jX2ludCAoIGludCAqKmFycmF5LCBpbnQgZmlyc3QsIGludCBzZWNvbmQsIGlu
dCBleHQxLCBpbnQgZXh0Mik7CmZsb2F0ICoqIHJlYWxsb2NfZmxvYXQgKCBmbG9hdCAqKmFycmF5
LCBpbnQgZmlyc3QsIGludCBzZWNvbmQsIGludCBleHQxLCBpbnQgZXh0Mik7CmRvdWJsZSAqKiBy
ZWFsbG9jX2RvdWJsZSAoIGRvdWJsZSAqKmFycmF5LCBpbnQgZmlyc3QsIGludCBzZWNvbmQsIGlu
dCBleHQxLCBpbnQgZXh0Mik7CkFsaWdubWVudCAqKiByZWFsbG9jX2Fsbl9hcnJheSAoIEFsaWdu
bWVudCAqKmFycmF5LCBpbnQgZXh0MSk7CgpzaG9ydCAqKiBuZXdfcmVhbGxvY19zaG9ydCAoIHNo
b3J0ICoqYXJyYXksIGludCBleHQxLCBpbnQgZXh0Mik7CmNoYXIgKiogbmV3X3JlYWxsb2NfY2hh
ciAoIGNoYXIgKiphcnJheSwgaW50IGV4dDEsIGludCBleHQyKTsKaW50ICoqIG5ld19yZWFsbG9j
X2ludCAoIGludCAqKmFycmF5LCBpbnQgZXh0MSwgaW50IGV4dDIpOwpmbG9hdCAqKiBuZXdfcmVh
bGxvY19mbG9hdCAoIGZsb2F0ICoqYXJyYXksIGludCBleHQxLCBpbnQgZXh0Mik7CmRvdWJsZSAq
KiBuZXdfcmVhbGxvY19kb3VibGUgKCBkb3VibGUgKiphcnJheSwgaW50IGV4dDEsIGludCBleHQy
KTsKCgp2b2lkICogZGVjbGFyZV9hcnJheU5ub21lbXNldCAoaW50IG5kaW0sIHNpemVfdCBzaXpl
LCAuLi4pOwp2b2lkICpkZWNsYXJlX2FycmF5TjJub21lbXNldCAoIGludCBuZGltLCBpbnQgKkEs
IHNpemVfdCBzaXplKTsKCnZvaWQgKiBkZWNsYXJlX2FycmF5TiAoaW50IG5kaW0sIHNpemVfdCBz
aXplLCAuLi4pOwp2b2lkICpkZWNsYXJlX2FycmF5TjIgKCBpbnQgbmRpbSwgaW50ICpBLCBzaXpl
X3Qgc2l6ZSk7CgoKdm9pZCAqKiBkZWNsYXJlX2FycmF5IChpbnQgZmlyc3QsIGludCBzZWNvbmQs
IHNpemVfdCBzaXplKTsKc2hvcnQgKiogZGVjbGFyZV9zaG9ydCAoIGludCBmaXJzdCwgaW50IHNl
Y29uZCk7CmNoYXIgKiogZGVjbGFyZV9jaGFyICggaW50IGZpcnN0LCBpbnQgc2Vjb25kKTsKaW50
ICoqIGRlY2xhcmVfaW50ICggaW50IGZpcnN0LCBpbnQgc2Vjb25kKTsKZmxvYXQgKiogZGVjbGFy
ZV9mbG9hdCAoIGludCBmaXJzdCwgaW50IHNlY29uZCk7CmRvdWJsZSAqKiBkZWNsYXJlX2RvdWJs
ZSAoIGludCBmaXJzdCwgaW50IHNlY29uZCk7Cgp2b2lkICoqIGRlY2xhcmVfYXJyYXlfbm9tZW1z
ZXQgKGludCBmaXJzdCwgaW50IHNlY29uZCwgc2l6ZV90IHNpemUpOwpzaG9ydCAqKiBkZWNsYXJl
X3Nob3J0X25vbWVtc2V0ICggaW50IGZpcnN0LCBpbnQgc2Vjb25kKTsKY2hhciAqKiBkZWNsYXJl
X2NoYXJfbm9tZW1zZXQgKCBpbnQgZmlyc3QsIGludCBzZWNvbmQpOwppbnQgKiogZGVjbGFyZV9p
bnRfbm9tZW1zZXQgKCBpbnQgZmlyc3QsIGludCBzZWNvbmQpOwpmbG9hdCAqKiBkZWNsYXJlX2Zs
b2F0X25vbWVtc2V0ICggaW50IGZpcnN0LCBpbnQgc2Vjb25kKTsKZG91YmxlICoqIGRlY2xhcmVf
ZG91YmxlX25vbWVtc2V0ICggaW50IGZpcnN0LCBpbnQgc2Vjb25kKTsKCgpBbGlnbm1lbnQgKiog
ZGVjbGFyZV9hbG5fYXJyYXkgKCBpbnQgZmlyc3QpOwoKc2hvcnQgKiogZnJlZV9zaG9ydCAoIHNo
b3J0ICoqYXJyYXksIGludCBmaXJzdCk7CmludCAqKiBmcmVlX2ludCAoIGludCAqKmFycmF5LCBp
bnQgZmlyc3QpOwpjaGFyICoqIGZyZWVfY2hhciAoIGNoYXIgKiphcnJheSwgaW50IGZpcnN0KTsK
ZG91YmxlICoqIGZyZWVfZG91YmxlICggZG91YmxlICoqYXJyYXksIGludCBmaXJzdCk7CmZsb2F0
ICoqIGZyZWVfZmxvYXQgKCBmbG9hdCAqKmFycmF5LCBpbnQgZmlyc3QpOwpBbGlnbm1lbnQgKiog
ZnJlZV9hbG5fYXJyYXkgKCBBbGlnbm1lbnQgKiphcnJheSk7CgpTZXF1ZW5jZSAqZnJlZV9BbGln
bm1lbnQgKCBBbGlnbm1lbnQgKkEpOwpTZXF1ZW5jZSAqZnJlZV9hbG4gKCBBbGlnbm1lbnQgKkEp
OwpBbGlnbm1lbnQgKmRlY2xhcmVfQWxpZ25tZW50ICggU2VxdWVuY2UgKlMpOwpBbGlnbm1lbnQg
KnJlYWxsb2NfYWxpZ25tZW50ICggQWxpZ25tZW50ICpBLCBpbnQgbmV3X2xlbik7CkFsaWdubWVu
dCAqcmVhbGxvY19hbGlnbm1lbnQyICggQWxpZ25tZW50ICpBLCBpbnQgbmV3X25zZXEsIGludCBu
ZXdfbGVuKTsKCkFsaWdubWVudCAqZGVjbGFyZV9hbG4gKCBTZXF1ZW5jZSAqUyk7CkFsaWdubWVu
dCAqZGVjbGFyZV9hbG4yIChpbnQgbnNlcSwgaW50IGxlbik7CkFsaWdubWVudCAqcmVhbGxvY19h
bG4gKCBBbGlnbm1lbnQgKkEsIGludCBuZXdfbGVuKTsKQWxpZ25tZW50ICpyZWFsbG9jX2FsbjIg
KCBBbGlnbm1lbnQgKkEsIGludCBuZXdfbnNlcSwgaW50IG5ld19sZW4pOwpBbGlnbm1lbnQgKnVw
ZGF0ZV9hbG5fcmFuZG9tX3RhZyAoQWxpZ25tZW50ICpBKTsKCkFsaWdubWVudCAqY29weV9hbG4g
KCBBbGlnbm1lbnQgKkEsIEFsaWdubWVudCAqQik7CkFsaWdubWVudCogZXh0cmFjdF9zdWJfYWxu
MiAoIEFsaWdubWVudCAqQSwgaW50IG5zZXEsIGNoYXIgKipsaXN0KTsKQWxpZ25tZW50KiBleHRy
YWN0X3N1Yl9hbG4gKCBBbGlnbm1lbnQgKkEsIGludCBuc2VxLCBpbnQgKmxpc3QpOwpBbGlnbm1l
bnQqIHNocmlua19hbG4gKCBBbGlnbm1lbnQgKkEsIGludCBuc2VxLCBpbnQgKmxpc3QpOwoKUHJv
ZmlsZSAqY29weV9wcm9maWxlIChQcm9maWxlICpQMSk7ClByb2ZpbGUgKmRlY2xhcmVfcHJvZmls
ZShjaGFyICphbHBoYWJldCwgaW50IGxlbik7ClByb2ZpbGUgKiBmcmVlX3Byb2ZpbGUgKCBQcm9m
aWxlICpQKTsKClNlcXVlbmNlICogZGVjbGFyZV9zZXF1ZW5jZSAoIGludCBtaW4sIGludCBtYXgs
IGludCBuc2VxKTsKU2VxdWVuY2UgKiByZWFsbG9jX3NlcXVlbmNlIChTZXF1ZW5jZSAqT1VULCBp
bnQgbmV3X25zZXEsIGludCBtYXhfbGVuKTsKU2VxdWVuY2UgKiBkdXBsaWNhdGVfc2VxdWVuY2Ug
KFNlcXVlbmNlICpTICk7ClNlcXVlbmNlICogYWRkX3NlcXVlbmNlICggU2VxdWVuY2UgKklOLCBT
ZXF1ZW5jZSAqT1VULCBpbnQgaSk7CnZvaWQgZnJlZV9zZXF1ZW5jZSAoIFNlcXVlbmNlICpMUywg
aW50IG5zZXEpOwoKCgpGbmFtZSAqZGVjbGFyZV9mbmFtZSAoKTsKRm5hbWUgKmZyZWVfZm5hbWUg
KCBGbmFtZSAqRik7CiMgMTYyMiAidXRpbF9saWJfaGVhZGVyLmgiCnN0cnVjdCBIYXNjaFQKewog
IGludCBuZTsKICBzdHJ1Y3QgSGFzY2hfZW50cnkgKipwOwp9Owp0eXBlZGVmIHN0cnVjdCBIYXNj
aFQgSGFzY2hUOwoKc3RydWN0IEhhc2NoX2VudHJ5CnsKICBzdHJ1Y3QgSGFzY2hfZW50cnkgKm47
CiAgc3RydWN0IEhhc2NoX2VudHJ5ICpwOwogIGludCBrOwogIHN0cnVjdCBIYXNjaF9kYXRhICpk
YXRhOwogIHN0cnVjdCBIYXNjaF9kYXRhICogKCpmcmVlX2RhdGEpKHN0cnVjdCBIYXNjaF9kYXRh
ICopOwogIHN0cnVjdCBIYXNjaF9kYXRhICogKCpkZWNsYXJlX2RhdGEpKHN0cnVjdCBIYXNjaF9l
bnRyeSopOwogIGludCB0YWc7Cn07CnR5cGVkZWYgc3RydWN0IEhhc2NoX2VudHJ5IEhhc2NoX2Vu
dHJ5OwpzdHJ1Y3QgQ2hhcl9ub2RlCnsKIHN0cnVjdCBDaGFyX25vZGUgKipjOwogaW50IGtleTsK
Cn07CnR5cGVkZWYgc3RydWN0IENoYXJfbm9kZSBDaGFyX25vZGU7CgpIYXNjaFQgKiBoY3JlYXRl
ICggaW50IG5fZWxlbWVudHMsc3RydWN0IEhhc2NoX2RhdGEgKiBkZWNsYXJlX2RhdGEoc3RydWN0
IEhhc2NoX2VudHJ5ICopLCBzdHJ1Y3QgSGFzY2hfZGF0YSAqZnJlZV9kYXRhKHN0cnVjdCBIYXNj
aF9kYXRhICopICk7Ckhhc2NoVCAqaGRlc3Ryb3kgKEhhc2NoVCAqVCxzdHJ1Y3QgSGFzY2hfZGF0
YSAqIGRlY2xhcmVfZGF0YShzdHJ1Y3QgSGFzY2hfZW50cnkgKiksIHN0cnVjdCBIYXNjaF9kYXRh
ICpmcmVlX2RhdGEoc3RydWN0IEhhc2NoX2RhdGEgKikgKTsKSGFzY2hfZW50cnkqIGhzZWFyY2gg
KEhhc2NoVCAqVCwgaW50IGssIGludCBhY3Rpb24sIHN0cnVjdCBIYXNjaF9kYXRhICogZGVjbGFy
ZV9kYXRhKHN0cnVjdCBIYXNjaF9lbnRyeSAqKSwgc3RydWN0IEhhc2NoX2RhdGEgKmZyZWVfZGF0
YShzdHJ1Y3QgSGFzY2hfZGF0YSAqKSApOwpIYXNjaF9lbnRyeSAqIGV4dHJhY3RfaGFzY2hfZW50
cnlfZnJvbV9saXN0IChIYXNjaF9lbnRyeSAqZSwgc3RydWN0IEhhc2NoX2RhdGEgKiBkZWNsYXJl
X2RhdGEoc3RydWN0IEhhc2NoX2VudHJ5ICopLCBzdHJ1Y3QgSGFzY2hfZGF0YSAqZnJlZV9kYXRh
KHN0cnVjdCBIYXNjaF9kYXRhICopICk7Ckhhc2NoX2VudHJ5ICogaW5zZXJ0X2hhc2NoX2VudHJ5
X2luX2xpc3QgKEhhc2NoX2VudHJ5ICpwLCBIYXNjaF9lbnRyeSAqZSwgSGFzY2hfZW50cnkgKm4s
IHN0cnVjdCBIYXNjaF9kYXRhICogZGVjbGFyZV9kYXRhKHN0cnVjdCBIYXNjaF9lbnRyeSAqKSwg
c3RydWN0IEhhc2NoX2RhdGEgKmZyZWVfZGF0YShzdHJ1Y3QgSGFzY2hfZGF0YSAqKSApOwpIYXNj
aF9lbnRyeSAqIGFsbG9jYXRlX2hhc2NoX2VudHJ5IChIYXNjaF9lbnRyeSAqZSwgaW50IGFjdGlv
bixzdHJ1Y3QgSGFzY2hfZGF0YSAqIGRlY2xhcmVfZGF0YShzdHJ1Y3QgSGFzY2hfZW50cnkgKiks
IHN0cnVjdCBIYXNjaF9kYXRhICpmcmVlX2RhdGEoc3RydWN0IEhhc2NoX2RhdGEgKikgKTsKCgoK
CgppbnQgc3RyaW5nMmtleSAoY2hhciAqcywgQ2hhcl9ub2RlICpuKTsKQ2hhcl9ub2RlICogZGVj
bGFyZV9jaGFyX25vZGUgKGludCBhY3Rpb24pOwpjaGFyICogbm9ybWFsaXplX3BkYl9maWxlIChj
aGFyICpuYW1lLCBjaGFyICpzZXEsY2hhciAqb3V0X2ZpbGUpOwpDYV90cmFjZSAqIHRyaW1fY2Ff
dHJhY2UgKENhX3RyYWNlICpzdCwgY2hhciAqc2VxICk7CgpDYV90cmFjZSAqIHJlYWRfY2FfdHJh
Y2UgKGNoYXIgKmZpbGUsIGNoYXIgKnNlcV9maWVsZCApOwpDYV90cmFjZSAqIHNpbXBsZV9yZWFk
X2NhX3RyYWNlIChjaGFyICpmaWxlICk7CkNhX3RyYWNlICogaGFzY2hfY2FfdHJhY2UgKCBDYV90
cmFjZSAqVCk7CkNhX3RyYWNlICogaGFzY2hfY2FfdHJhY2VfbmIgKCBDYV90cmFjZSAqVCk7CkNh
X3RyYWNlICogaGFzY2hfY2FfdHJhY2VfYnViYmxlICggQ2FfdHJhY2UgKlQpOwpDYV90cmFjZSAq
IGhhc2NoX2NhX3RyYWNlX3RyYW5zdmVyc2FsICggQ2FfdHJhY2UgKlRSQUNFKTsKCmZsb2F0IGdl
dF9hdG9taWNfZGlzdGFuY2UgKCBBdG9tICpBLCBBdG9tKkIpOwpmbG9hdCAqKiBtZWFzdXJlX2Nh
X2Rpc3RhbmNlcyhDYV90cmFjZSAqVCk7CgpmbG9hdCoqIHByaW50X2NvbnRhY3RzICggY2hhciAq
ZmlsZTEsIGNoYXIgKmZpbGUyLCBmbG9hdCBUKTsKY2hhciAqIG1hcF9jb250YWN0cyAoIGNoYXIg
KmZpbGUxLCBjaGFyICpmaWxlMiwgZmxvYXQgVCk7CmludCAqIGlkZW50aWZ5X2NvbnRhY3RzIChD
YV90cmFjZSAqU1QxLENhX3RyYWNlICpTVDIsIGZsb2F0IFQpOwpTZXF1ZW5jZSAqc2VxMmNvbnRh
Y3RzICggU2VxdWVuY2UgKlMsIGZsb2F0IFQpOwpjaGFyICpzdHJpbmcyY29udGFjdHMgKGNoYXIg
KnNlcSxjaGFyICpuYW1lLGNoYXIgKmNvbW1lbnQsIGZsb2F0IFQpOwpzaG9ydCAqKnN0cnVjMm5i
IChjaGFyICpuYW1lLGNoYXIgKnNlcSwgY2hhciAqY29tbWVudCwgZmxvYXQgVGhyZXNob2xkLCBj
aGFyICphdG9tX2xpc3QpOwoKdHlwZWRlZiBzdHJ1Y3QKeyBBbGlnbm1lbnQgKkE7CiAgICBBbGln
bm1lbnQgKkI7CiAgICBBbGlnbm1lbnQgKnNpbV9BOwogICAgU2VxdWVuY2UgKlM7CiAgICBTdHJ1
Y3R1cmUgKlNUOwoKICAgIGNoYXIgKioqZ3JlcF9saXN0OwogICAgaW50IG5fZ3JlcHM7CgogICAg
Y2hhciAqc2ltX2FsbjsKICAgIGNoYXIgKmFsaWdubWVudDFfZmlsZTsKICAgIGNoYXIgKmFsaWdu
bWVudDJfZmlsZTsKCiAgICBjaGFyICppb19mb3JtYXQ7CgogICAgaW50IG5fc3RydWN0dXJlOwog
ICAgY2hhciAqKnN0cnVjdF9maWxlOwogICAgY2hhciAqKnN0cnVjdF9mb3JtYXQ7CiAgICBpbnQg
Km5fc3ltYm9sOwogICAgY2hhciAqKipzeW1ib2xfbGlzdDsKCgogICAgaW50ICoqY29kZV9BOwog
ICAgaW50ICoqY29kZV9COwogICAgaW50IG5fZWxlbWVudHNBOwogICAgaW50IG5fZWxlbWVudHNC
OwoKICAgIGludCAqKmVuZF9pbmRleDsKICAgIGludCAqKnN0YXJ0X2luZGV4OwoKICAgIGludCAq
KnRvdF9jb3VudDsKICAgIGludCAqKnBvc19jb3VudDsKICAgIGludCAqKipwd190b3RfY291bnQ7
CiAgICBpbnQgKioqcHdfcG9zX2NvdW50OwogICAgaW50ICpnbG9iOwogICAgaW50ICoqcHdfZ2xv
YjsKCiAgICBpbnQgbl9jYXRlZ29yaWVzOwogICAgY2hhciAqKipjYXRlZ29yeTsKICAgIGNoYXIg
KmNhdGVnb3J5X2xpc3Q7CiAgICBpbnQgKm5fc3ViX2NhdGVnb3JpZXM7CiAgICBjaGFyIHNlcF9s
OwogICAgY2hhciBzZXBfcjsKCiAgICBmbG9hdCAqKnNpbTsKICAgIGZsb2F0ICoqc2ltX3BhcmFt
OwogICAgY2hhciAqc2ltX21hdHJpeDsKCiAgICBpbnQgc2ltX25fY2F0ZWdvcmllczsKICAgIGNo
YXIgKioqc2ltX2NhdGVnb3J5OwogICAgY2hhciAqc2ltX2NhdGVnb3J5X2xpc3Q7CiAgICBpbnQg
KnNpbV9uX3N1Yl9jYXRlZ29yaWVzOwp9UmVzdWx0OwojIDE3NDMgInV0aWxfbGliX2hlYWRlci5o
IgppbnQgYWxuX2NvbXBhcmUgKGludCBhcmdjLCBjaGFyICphcmd2W10pOwppbnQgKiphbmFseXNl
X2Rpc3RhbmNlICggQWxpZ25tZW50ICpBLCBpbnQgKipkaXMpOwoKU3RydWN0dXJlICogcmVhZF9z
dHJ1Y3R1cmUgKGNoYXIgKmZuYW1lLCBjaGFyICpmb3JtYXQsIEFsaWdubWVudCAqQSxBbGlnbm1l
bnQgKkIsIFN0cnVjdHVyZSAqU1QsIGludCBuX3N5bWJvbHMsIGNoYXIgKipzeW1ib2xfdGFibGUp
OwoKCmludCBpc19pbl9zdHJ1Y3RfY2F0ZWdvcnkgKCBpbnQgczEsIGludCBzMiwgaW50IHIxLCBp
bnQgcjIsIFN0cnVjdHVyZSAqU1QsIGNoYXIgKipjYXQsIGludCBuX3N1Yl9jYXQpOwpjaGFyICog
Z2V0X3N0cnVjdHVyZV9yZXNpZHVlIChpbnQgcywgaW50IHIsIFN0cnVjdHVyZSAqUyk7CmludCBw
YXJzZV9jYXRlZ29yeV9saXN0ICggY2hhciAqY2F0ZWdvcnlfbGlzdCwgY2hhciAqKipjYXRlZ29y
eSwgaW50ICpzdWJfbl9jYXRlZ29yaWVzKTsKaW50IHN0cnVjX21hdGNoZXNfcGF0dGVybiAoIGNo
YXIgKnN0cnVjLCBjaGFyICpwYXR0ZXJuKTsKZmxvYXQgKipnZXRfYWxuX2NvbXBhcmVfc2ltICgg
QWxpZ25tZW50ICpBLCBTdHJ1Y3R1cmUgKlMsIGNoYXIgKipjYXQsIGludCBuX2NhdCwgY2hhciAq
bWF0cml4KTsKZmxvYXQgKiphbmFseXNlX3NpbSAoIEFsaWdubWVudCAqQSwgZmxvYXQgKipkaXMp
OwoKCkZJTEUgKm91dHB1dF9mb3JtYXQgKGNoYXIgKmlvZiwgRklMRSAqZnAsIFJlc3VsdCAqUik7
CkZJTEUgKm91dHB1dF9wYWlyX3dpc2Vfc2VxdWVuY2VfcmVzdWx0cyAoRklMRSAqZnAsIFJlc3Vs
dCAqUik7CkZJTEUgKm91dHB1dF9zZXF1ZW5jZV9yZXN1bHRzIChGSUxFICpmcCwgUmVzdWx0ICpS
KTsKRklMRSAqb3V0cHV0X3RvdGFsX3Jlc3VsdHMgKEZJTEUgKmZwLCBSZXN1bHQgKlIpOwpGSUxF
ICpvdXRwdXRfaGVhZGVyIChGSUxFICpmcCwgUmVzdWx0ICpSKTsKRklMRSAqb3V0cHV0X2xhcmdl
X2hlYWRlciAoIEZJTEUgKmZwLCBSZXN1bHQgKlIpOwoKCmludCBpc19hX3N0cnVjX2Zvcm1hdCAo
Y2hhciAqZm9ybWF0KTsKdm9pZCBnZXRfc2VwYXJhdGluZ19jaGFyICggY2hhciBzLCBjaGFyICps
LCBjaGFyICpyKTsKdm9pZCBvdXRwdXRfaW5mb3JtYXRpb25zICgpOwoKaW50IGNoZWNrX2NvbmZp
Z3VyYXRpb240cHJvZ3JhbSgpOwp0eXBlZGVmIHN0cnVjdAogICAgewogICAgICBBbGlnbm1lbnQg
KkE7CiAgICAgIFdlaWdodHMgKlc7CiAgICAgIFNlcXVlbmNlICpTOwogICAgICBTdHJ1Y3R1cmUg
KlJOQV9TVDsKICAgICAgTlRfbm9kZSBUOwogICAgICBDb25zdHJhaW50X2xpc3QgKkNMOwogICAg
ICBjaGFyIGZvcm1hdFsxMDBdOwogICAgICBjaGFyIGZpbGVbMTAwXTsKICAgICAgaW50IHJtX2dh
cDsKCn1TZXF1ZW5jZV9kYXRhX3N0cnVjOwoKdHlwZWRlZiBzdHJ1Y3QKICAgIHsKIGNoYXIgKipz
eW1ib2xfbGlzdDsKICAgICAgICBpbnQgbl9zeW1ib2w7CiAgICAgICAgY2hhciAqY29vcl9maWxl
OwogICAgICAgIGludCBybV9nYXA7CiAgICAgICAgaW50IGtlZXBfY2FzZTsKICAgICAgICBpbnQg
a2VlcF9uYW1lOwogICAgICAgIGludCB1c2VfY29uc2Vuc3VzOwp9QWN0aW9uX2RhdGFfc3RydWM7
CgoKaW50IHNldF9sYW5kc2NhcGVfbXNhIChpbnQgbGVuKTsKaW50IGdldF9tc2FfbGluZV9sZW5n
dGggKGludCBsaW5lLCBpbnQgYWxuX2xlbik7CgppbnQgc2VxX3JlZm9ybWF0IChpbnQgYXJnYywg
Y2hhciAqYXJndltdKTsKClNlcXVlbmNlX2RhdGFfc3RydWMgKnJlYWRfZGF0YV9zdHJ1Y3R1cmUg
KCBjaGFyICppbl9mb3JtYXQsIGNoYXIgKmluX2ZpbGUsQWN0aW9uX2RhdGFfc3RydWMgKlJBRCk7
CkFsaWdubWVudCAqIG1haW5fcmVhZF9hbG4gKCBjaGFyICpuYW1lLCBBbGlnbm1lbnQgKkEpOwpT
ZXF1ZW5jZSAqIHJlYWRfc2VxdWVuY2VzICggY2hhciAqbW5hbWUpOwpTZXF1ZW5jZSAqIG1haW5f
cmVhZF9zZXEgKCBjaGFyICptbmFtZSk7CmludCBvdXRwdXRfZm9ybWF0X2FsbiAoIGNoYXIgKmZv
cm1hdCwgQWxpZ25tZW50ICpBLCBBbGlnbm1lbnQgKkVBLGNoYXIgKm5hbWUpOwppbnQgbWFpbl9v
dXRwdXQgKCBTZXF1ZW5jZV9kYXRhX3N0cnVjICpEMSwgU2VxdWVuY2VfZGF0YV9zdHJ1YyAqRDIs
IFNlcXVlbmNlX2RhdGFfc3RydWMgKkRTVCwgY2hhciAqb3V0X2Zvcm1hdCwgY2hhciAqb3V0X2Zp
bGUpOwoKY2hhciAqIGlkZW50aWZ5X3NlcV9mb3JtYXQgKCBjaGFyICpmaWxlKTsKY2hhciAqIG5h
bWUydHlwZV9uYW1lICggY2hhciAqbmFtZSk7CmNoYXIgaWRlbnRpZnlfZm9ybWF0IChjaGFyICoq
Zm5hbWUpOwpjaGFyICoqaWRlbnRpZnlfbGlzdF9mb3JtYXQgKCBjaGFyICoqbGlzdCwgaW50IG4p
OwoKaW50IGZvcm1hdF9pc19vbGlnbyAoIGNoYXIgKmZpbGUpOwppbnQgZm9ybWF0X2lzX21zZiAo
IGNoYXIgKmZpbGUpOwppbnQgZm9ybWF0X2lzX2Zhc3RhKCBjaGFyICpmaWxlKTsKaW50IGZvcm1h
dF9pc19mYXN0YV9hbG4oIGNoYXIgKmZpbGUpOwppbnQgZm9ybWF0X2lzX2Zhc3RhX3NlcSggY2hh
ciAqZmlsZSk7CmludCBmb3JtYXRfaXNfcGlyICggY2hhciAqZmlsZSk7CmludCBmb3JtYXRfaXNf
cGlyX2FsbiggY2hhciAqZmlsZSk7CmludCBmb3JtYXRfaXNfcGlyX3NlcSggY2hhciAqZmlsZSk7
CmludCBmb3JtYXRfaXNfc2FnYSAoIGNoYXIgKmZpbGUpOwppbnQgZm9ybWF0X2lzX3N3aXNzcHJv
dCAoY2hhciAqbmFtZSk7CgppbnQgaXNfc2VxICggY2hhciAqbmFtZSk7CmludCBpc19hbG4gKCBj
aGFyICpuYW1lKTsKaW50IGhhc19wZGIgKGNoYXIgKm5hbWUpOwppbnQgaXNfYmxhc3RfZmlsZSAo
Y2hhciAqbmFtZSk7CmludCBpc19zYXBfZmlsZSAoY2hhciAqbmFtZSk7CmludCBpc19wZGJfZmls
ZSAoIGNoYXIgKm5hbWUpOwppbnQgaXNfc2ltcGxlX3BkYl9maWxlICggY2hhciAqbmFtZSk7Cgpp
bnQgaXNfcGRiX25hbWUgKCBjaGFyICpuYW1lKTsKY2hhciogZ2V0X3BkYl9pZChjaGFyICpuYW1l
KTsKY2hhciogZ2V0X3BkYl9zdHJ1YyhjaGFyICpuYW1lLCBpbnQgc3RhcnQsIGludCBlbmQpOwpj
aGFyKiBzZXFfaXNfcGRiX3N0cnVjICggU2VxdWVuY2UgKlMsIGludCBpKTsKY2hhciogaXNfcGRi
X3N0cnVjICggY2hhciAqbmFtZSk7CmludCBpc19tYXRyaXggKGNoYXIgKm5hbWUpOwoKaW50IGlz
X2xpYiAoY2hhciAqbmFtZSk7CmludCBpc19saWJfMDEgKGNoYXIgKm5hbWUpOwppbnQgaXNfbGli
XzAyIChjaGFyICpuYW1lKTsKCmludCBpc19zaW5nbGVfc2VxX3dlaWdodF9maWxlIChjaGFyICpm
bmFtZSk7CmludCBpc19uZXdpY2sgKGNoYXIgKm5hbWUpOwoKaW50IGlzX21ldGhvZCAoIGNoYXIg
KmZpbGUpOwoKaW50IGlzX2luX2Zvcm1hdF9saXN0ICggY2hhciAqbmFtZSk7CmludCBpc19vdXRf
Zm9ybWF0X2xpc3QgKCBjaGFyICpuYW1lKTsKaW50IGlzX3N0cnVjX2luX2Zvcm1hdF9saXN0ICgg
Y2hhciAqbmFtZSk7CmludCBpc19zdHJ1Y19vdXRfZm9ybWF0X2xpc3QgKCBjaGFyICpuYW1lKTsK
CmNoYXIgKioqIHJlYWRfcmVuYW1lX2ZpbGUgKCBjaGFyICpmbmFtZSwgaW50IG1vZGUpOwp2b2lk
IGdldF9iYXJ0b25fbGlzdF90Y19zZXEgKCBjaGFyICppbl9maWxlKTsKaW50IHByb2Nlc3NfYmFy
dG9uX2VudHJ5IChjaGFyICpidWYsIGNoYXIgKm5hbWUpOwoKU3RydWN0dXJlICpyZWFkX3JuYV9z
dHJ1Y19udW1iZXIgKCBBbGlnbm1lbnQgKkEsIGNoYXIgKmZuYW1lKTsKCgoKCgoKV2VpZ2h0cyog
Z2V0X2FtcHNfc2Rfc2NvcmVzICggY2hhciAqZm5hbWUpOwpXZWlnaHRzICpyZWFkX3NlcV93ZWln
aHQgKGNoYXIgKipuYW1lLCBpbnQgbnNlcSwgY2hhciogc2VxX3dlaWdodCk7CgoKCgoKCmNoYXIg
KioqcmVhZF9ncm91cCAoIGNoYXIgKmZpbGUpOwpTZXF1ZW5jZSogZ2V0X3BkYl9zZXF1ZW5jZSAo
IGNoYXIgKmZuYW1lKTsKU2VxdWVuY2UqIGdldF9zdHJ1Y19nb3IgKCBjaGFyICpmbmFtZSk7ClNl
cXVlbmNlKiBnZXRfZGlhbGlnbl9zZXF1ZW5jZSAoIGNoYXIgKmZuYW1lKTsKU2VxdWVuY2UqIGdl
dF9waW1hX3NlcXVlbmNlICggY2hhciAqZm5hbWUpOwpTZXF1ZW5jZSogZ2V0X3NlcXVlbmNlX2Rh
bGkgKCBjaGFyICpmbmFtZSk7ClNlcXVlbmNlKiBnZXRfcGlyX3NlcXVlbmNlICggY2hhciAqZm5h
bWUsIGNoYXIgKmNvbW1lbnRfbmFtZSk7ClNlcXVlbmNlKiBwZXJsX3JlZm9ybWF0MmZhc3RhICgg
Y2hhciAqcGVybF9zY3JpcHQsIGNoYXIgKmZpbGUpOwpTZXF1ZW5jZSogZ2V0X2Zhc3RhX3NlcXVl
bmNlICggY2hhciAqZm5hbWUsIGNoYXIgKmNvbW1lbnRfbmFtZSk7ClNlcXVlbmNlKiBnZXRfZmFz
dGFfc2VxdWVuY2VfbnVtICggY2hhciAqZm5hbWUsIGNoYXIgKmNvbW1lbnRfbmFtZSk7ClNlcXVl
bmNlKiBnZXRfZ29yX3NlcXVlbmNlICggY2hhciAqZm5hbWUsIGNoYXIgKmNvbW1lbnRfbmFtZSk7
ClNlcXVlbmNlKiBnZXRfc3dpc3Nwcm90X3NlcXVlbmNlICggY2hhciAqZm5hbWUsIGNoYXIgKmNv
bW1lbnRfbmFtZSk7Cgp2b2lkIHJlYWRfY2hlY2sgKCBBbGlnbm1lbnQgKkEsIGNoYXIgKmNoZWNr
X2ZpbGUpOwoKdm9pZCByZWFkX2FsbiAoIGNoYXIgKmZuYW1lLCBBbGlnbm1lbnQgKkEpOwp2b2lk
IHJlYWRfbnVtYmVyX2FsbiAoIGNoYXIgKmZuYW1lLCBBbGlnbm1lbnQgKkEpOwpBbGlnbm1lbnQg
KnJlYWRfYmxhc3RfYWxuICggY2hhciAqZm5hbWUsIEFsaWdubWVudCAqQSk7CnZvaWQgcmVhZF9t
c2ZfYWxuICggY2hhciAqZm5hbWUsIEFsaWdubWVudCAqQSk7CnZvaWQgcmVhZF9hbXBzX2FsbiAo
IGNoYXIgKmluX2ZpbGUsIEFsaWdubWVudCAqQSk7CmludCBnZXRfYW1wc19zZXFfbmFtZSAoIGNo
YXIgKipuYW1lLCBjaGFyKiBmbmFtZSk7CkFsaWdubWVudCAqcmVhZF9nb3RvaF9hbG4gKCBjaGFy
ICpmbmFtZSwgQWxpZ25tZW50ICpBKTsKIyAxOTAyICJ1dGlsX2xpYl9oZWFkZXIuaCIKaW50IG91
dHB1dF9mcmVxX21hdCAoIGNoYXIgKm91dGZpbGUsIEFsaWdubWVudCAqQSk7CgoKCgoKCmZsb2F0
IG91dHB1dF9tYWxuX3B2YWwgKCBjaGFyICpvdXRmaWxlLCBBbGlnbm1lbnQgKkEpOwoKCgoKCgp2
b2lkIG91dHB1dF9zaW1pbGFyaXRpZXMgKGNoYXIgKmZpbGUsIEFsaWdubWVudCAqQSwgY2hhciAq
bW9kZSk7CnZvaWQgb3V0cHV0X3N0YXRpc3RpY3MgKGNoYXIgKmZpbGUsIEFsaWdubWVudCAqQSwg
Y2hhciAqbW9kZSk7CnZvaWQgb3V0cHV0X3B3X3dlaWdodHM0c2FnYSAoIFdlaWdodHMgKlcsIGZs
b2F0ICoqd19saXN0LCBjaGFyICp3ZmlsZSk7CmludCBvdXRwdXRfc2VxX3dlaWdodHMgKCBXZWln
aHRzICpXLCBjaGFyICp3ZmlsZSk7CkZJTEUgKiBkaXNwbGF5X3dlaWdodHMgKFdlaWdodHMgKlcs
IEZJTEUgKmZwKTsKCgoKCgoKRklMRSAqIGRpc3BsYXlfc2VxdWVuY2VzX25hbWVzIChTZXF1ZW5j
ZSAqUywgRklMRSAqZnAsIGludCBjaGVja19wZGJfc3RhdHVzLCBpbnQgcHJpbnRfdGVtcGxhdGVz
KTsKdm9pZCBvdXRwdXRfcGlyX3NlcTEgKGNoYXIgKmZuYW1lLCBBbGlnbm1lbnQqQSApOwp2b2lk
IG91dHB1dF9waXJfc2VxIChjaGFyICpmbmFtZSwgQWxpZ25tZW50KkEgKTsKdm9pZCBvdXRwdXRf
Z29yX3NlcSAoY2hhciAqZm5hbWUsIEFsaWdubWVudCpBICk7CnZvaWQgb3V0cHV0X211bHRfZmFz
dGFfc2VxIChjaGFyICpmbmFtZSwgQWxpZ25tZW50KkEsIGludCBuICk7CnZvaWQgb3V0cHV0X2Zh
c3RhX3NlcTEgKGNoYXIgKmZuYW1lLCBBbGlnbm1lbnQqQSApOwpjaGFyICpvdXRwdXRfZmFzdGFf
c2VxWCAoY2hhciAqbmFtZSwgY2hhciAqbW9kZSwgU2VxdWVuY2UgKlMsIEFsaWdubWVudCAqQSwg
aW50IGkpOwoKdm9pZCBvdXRwdXRfcGlyX2NoZWNrIChjaGFyICpmbmFtZSxpbnQgbnNlcSwgY2hh
ciAqKkEgKTsKdm9pZCBvdXRwdXRfZmFzdGFfc2VxIChjaGFyICpmbmFtZSwgQWxpZ25tZW50KkEg
KTsKdm9pZCBvdXRwdXRfZ290b2hfc2VxIChjaGFyICpmbmFtZSwgQWxpZ25tZW50KkEgKTsKdm9p
ZCBvdXRwdXRfZXN0X3ByZiAoY2hhciAqZm5hbWUsIEFsaWdubWVudCAqQSk7CnZvaWQgb3V0cHV0
X2dvcl9zZXEgKGNoYXIgKmZuYW1lLCBBbGlnbm1lbnQqQSApOwoKCgoKCgp2b2lkIG91dHB1dF9w
aXJfYWxuICggY2hhciAqZm5hbWUsQWxpZ25tZW50KkEpOwp2b2lkIG91dHB1dF9tb2RlbF9hbG4g
KCBjaGFyICpmbmFtZSxBbGlnbm1lbnQqQSApOwp2b2lkIG91dHB1dF9mYXN0YV9hbG4gKCBjaGFy
ICpmbmFtZSxBbGlnbm1lbnQqQSk7CnZvaWQgb3V0cHV0X21zZl9hbG4gKCBjaGFyICpmbmFtZSxB
bGlnbm1lbnQqQik7CnZvaWQgb3V0cHV0X2NsdXN0YWxfYWxuKCBjaGFyICpuYW1lLCBBbGlnbm1l
bnQqQik7CnZvaWQgb3V0cHV0X3NhZ2FfYWxuICggY2hhciAqbmFtZSwgQWxpZ25tZW50KkIpOwp2
b2lkIG91dHB1dF9waHlsaXBfYWxuICggY2hhciAqbmFtZSwgQWxpZ25tZW50KkIpOwp2b2lkIG91
dHB1dF9tb2NjYV9hbG4gKCBjaGFyICpuYW1lLCBBbGlnbm1lbnQqQixBbGlnbm1lbnQqUyk7CnZv
aWQgb3V0cHV0X3JuYWxpZ24gKGNoYXIgKm91dF9maWxlLCBBbGlnbm1lbnQqQSxTZXF1ZW5jZSAq
U1RSVUMpOwp2b2lkIG91dHB1dF9wd19saWJfc2FnYV9hbG4gKGNoYXIgKmxpYl9uYW1lLCBBbGln
bm1lbnQgKkEgKTsKdm9pZCBvdXRwdXRfbGliIChjaGFyICpsaWJfbmFtZSwgQWxpZ25tZW50ICpB
ICk7CnZvaWQgb3V0cHV0X2NvbXBhY3RfYWxuKCBjaGFyICpuYW1lLCBBbGlnbm1lbnQgKkIpOwoK
dm9pZCBwcmludF9hbG4gKCBBbGlnbm1lbnQgKkIpOwpGSUxFICogb3V0cHV0X2FsbiggQWxpZ25t
ZW50ICpCLCBGSUxFICpmcCk7CgoKRklMRSAqIG91dHB1dF9hbG5fc2NvcmUgKCBBbGlnbm1lbnQg
KkIsIEZJTEUgKmZwKTsKRklMRSAqIG91dHB1dF9hbG5fd2l0aF9yZXNfbnVtYmVyICggQWxpZ25t
ZW50ICpCLCBGSUxFICpmcCk7CgoKRklMRSogb3V0cHV0X0FsaWdubWVudCAoIEFsaWdubWVudCAq
QiwgRklMRSAqZnApOwpGSUxFKiBvdXRwdXRfQWxpZ25tZW50X3dpdGhvdXRfaGVhZGVyICggQWxp
Z25tZW50ICpCLCBGSUxFICpmcCk7CkZJTEUgKiBvdXRwdXRfQWxpZ25tZW50X3Njb3JlICggQWxp
Z25tZW50ICpCLCBGSUxFICpmcCk7CkZJTEUgKiBvdXRwdXRfQWxpZ25tZW50X3dpdGhfcmVzX251
bWJlciAoIEFsaWdubWVudCAqQiwgRklMRSAqZnApOwp2b2lkIG91dHB1dF9jb25zdHJhaW50cyAo
IGNoYXIgKmZuYW1lLCBjaGFyICptb2RlLCBBbGlnbm1lbnQgKkEpOwoKdm9pZCBvdXRwdXRfZ2xh
bGlnbiAoIGNoYXIgKm5hbWUsIEFsaWdubWVudCAqQiwgQWxpZ25tZW50ICpTKTsKdm9pZCBvdXRw
dXRfbGFsaWduX2hlYWRlciggY2hhciAqbmFtZSwgQWxpZ25tZW50ICpCKTsKdm9pZCBvdXRwdXRf
bGFsaWduICggY2hhciAqbmFtZSwgQWxpZ25tZW50ICpCKTsKdm9pZCBvdXRwdXRfbGFsaWduX2Fs
biAoIGNoYXIgKm5hbWUsIEFsaWdubWVudCAqQik7CgoKCgoKCgppbnQgaXNfYmxhc3RfbWF0cml4
IChjaGFyICpmbmFtZSk7CmludCBpc19wYXZpZV9tYXRyaXggKGNoYXIgKmZuYW1lKTsKCgoKaW50
ICoqc2VxMmxhdG1hdCAoIFNlcXVlbmNlICpTLCBjaGFyICpmbmFtZSk7CmludCBvdXRwdXRfbWF0
IChpbnQgKiptYXQsIGNoYXIgKmZuYW1lLCBjaGFyICphbHAsIGludCBvZmZzZXQpOwppbnQgKiog
cmVhZF9ibGFzdF9tYXRyaXggKCBjaGFyICptYXRfbmFtZSk7CmludCBvdXRwdXRfYmxhc3RfbWF0
IChpbnQgKiptYXQsIGNoYXIgKmZuYW1lKTsKCnZvaWQgb3V0cHV0X3BhdmllX21hdCAoaW50ICoq
bWF0LCBjaGFyICpmbmFtZSwgZG91YmxlIGdlcCwgY2hhciAqYWxwKTsKaW50ICoqIHJlYWRfcGF2
aWVfbWF0cml4ICggY2hhciAqbWF0X25hbWUpOwojIDIwMTAgInV0aWxfbGliX2hlYWRlci5oIgpT
dHJ1Y3R1cmUgKiBkZWNsYXJlX3JuYV9zdHJ1Y3R1cmVfbnVtIChTZXF1ZW5jZSAqU0EpOwoKY2hh
ciAqdGhyZWFkX2FhX3NlcV9vbl9kbmFfc2VxKCBjaGFyICpzKTsKdm9pZCB0aHJlYWRfc2VxX3N0
cnVjMmFsbiAoIEFsaWdubWVudCAqQSwgU2VxdWVuY2UgKlNUKTsKQWxpZ25tZW50ICp0aHJlYWRf
ZG5hc2VxX29uX3Byb3RfYWxuIChTZXF1ZW5jZSAqUywgQWxpZ25tZW50ICpBKTsKdm9pZCBjYWNo
ZV9pZCAoIEFsaWdubWVudCAqQSk7CgoKCmludCBwcm9jZXNzX2VzdF9zZXF1ZW5jZSAoIFNlcXVl
bmNlICpTLCBpbnQgKmNsdXN0ZXJfbGlzdCk7CmNoYXIgKiBpbnZlcnRfc2VxICggY2hhciAqc2Vx
KTsKaW50IGdldF9iZXN0X21hdGNoICggY2hhciAqc2VxMSwgY2hhciAqc2VxMik7CmludCoqIGV4
dHJhY3RfbV9kaWFnX3N0cmVjaGVzICggaW50ICoqIG0sIGludCBsMSwgaW50IGwyLGNoYXIgKnNl
cTEsIGNoYXIgKnNlcTIsIGludCAqbl9tZGlhZyk7CmludCBpc19zdHJlY2ggKCBjaGFyICpBQSwg
Y2hhciAqc2VxMSwgY2hhciAqc2VxMiwgaW50IGxlbiwgaW50IHgsIGludCB5KTsKCmludCBzZWFy
Y2hfZm9yX2NsdXN0ZXIgKCBpbnQgc2VxLCBpbnQgY2x1c3Rlcl9udW1iZXIsIGludCAqY2x1c3Rl
cl9saXN0LCBpbnQgVCwgaW50IG5zZXEsIGludCAqKlMpOwppbnQgKiBTSEMgKCBpbnQgbnNlcSwg
aW50ICoqTlNULCBpbnQgKipTVCk7CmludCBtdXRhdGVfc29sIChpbnQgKnNvbCwgaW50IG5zZXEp
OwppbnQgZXZhbHVhdGVfc29sICggaW50KnNvbCwgaW50IG5zZXEsIGludCAqKlNULCBpbnQgKipO
U1QpOwoKY2hhciAqKm1ha2Vfc3ltYm9scyAoIGNoYXIgKm5hbWUsIGludCAqbik7CkFsaWdubWVu
dCAqY29kZV9kbmFfYWxuIChBbGlnbm1lbnQgKkEpOwpjaGFyKiBiYWNrX3RyYW5zbGF0ZV9kbmFf
Y29kb24gKCBjaGFyIGFhLCBpbnQgZGV0ZXJtaW5pc3RpYyk7CmludCB0cmFuc2xhdGVfZG5hX2Nv
ZG9uICggY2hhciAqc2VxLCBjaGFyIHN0b3ApOwpjaGFyKiBtdXRhdGVfYW1pbm9fYWNpZCAoIGNo
YXIgYWEsIGNoYXIgKm1vZGUpOwpBbGlnbm1lbnQgKiBtdXRhdGVfYWxuICggQWxpZ25tZW50ICpB
LCBjaGFyICpyKTsKCkFsaWdubWVudCAqdHJhbnNsYXRlX3NwbGljZV9kbmFfYWxuIChBbGlnbm1l
bnQgKkEsQWxpZ25tZW50ICpTVCApOwpBbGlnbm1lbnQgKiBtdXRhdGVfY2RuYV9hbG4gKCBBbGln
bm1lbnQgKkEpOwoKY2hhciAqIHRyYW5zbGF0ZV9kbmFfc2VxX29uM2ZyYW1lICggY2hhciAqZG5h
X3NlcSwgY2hhciBzdG9wLCBjaGFyICpwcm90KTsKY2hhciAqIHRyYW5zbGF0ZV9kbmFfc2VxICgg
Y2hhciAqZG5hX3NlcSwgaW50IGZyYW1lLCBjaGFyIHN0b3AsIGNoYXIgKnByb3QpOwoKY2hhciAq
IGJhY2tfdHJhbnNsYXRlX2RuYV9zZXEgKCBjaGFyICppbl9zZXEsY2hhciAqb3V0X3NlcSwgaW50
IG1vZGUpOwpBbGlnbm1lbnQgKmJhY2tfdHJhbnNsYXRlX2RuYV9hbG4gKEFsaWdubWVudCAqQSk7
CkFsaWdubWVudCAqdHJhbnNsYXRlX2RuYV9hbG4gKEFsaWdubWVudCAqQSwgaW50IGZyYW1lKTsK
QWxpZ25tZW50ICpjbGVhbl9nZG5hX2FsbiAoQWxpZ25tZW50ICpBKTsKQWxpZ25tZW50ICpjbGVh
bl9jZG5hX2FsbiAoQWxpZ25tZW50ICpBKTsKQWxpZ25tZW50ICpjbGVhbl9lc3QgKEFsaWdubWVu
dCAqQSk7CgoKCgp2b2lkIG1vZGlmeV9kYXRhIChTZXF1ZW5jZV9kYXRhX3N0cnVjICpEMSwgU2Vx
dWVuY2VfZGF0YV9zdHJ1YyAqRDIsIFNlcXVlbmNlX2RhdGFfc3RydWMgKkRTVCwgY2hhciAqKmFj
dGlvbl9saXN0LGludCBuX2FjdGlvbnMsIEFjdGlvbl9kYXRhX3N0cnVjICpSQUQpOwojIDggInV0
aWxfZHBfc2ltLmMiIDIKIyAxICJkZWZpbmVfaGVhZGVyLmgiIDEKCgoKIyAxICIvdXNyL2xpYi9n
Y2MvaTY4Ni1wYy1saW51eC1nbnUvMy40LjQvaW5jbHVkZS9mbG9hdC5oIiAxIDMgNAojIDUgImRl
ZmluZV9oZWFkZXIuaCIgMgojIDkgInV0aWxfZHBfc2ltLmMiIDIKIyAxICJkcF9saWJfaGVhZGVy
LmgiIDEKc3RydWN0IENMX25vZGUKICAgIHsKCiAgICAgIGludCBjb3B5X21vZGU7CiAgICAgIHN0
cnVjdCBDTF9ub2RlICpjOwogICAgICBzdHJ1Y3QgQ0xfbm9kZSAqcDsKICAgICAgc3RydWN0IENM
X25vZGUgKmw7CiAgICAgIHN0cnVjdCBDTF9ub2RlICpyOwogICAgICBpbnQgc2VxOwogICAgICBp
bnQgcmVzOwogICAgICBpbnQgZnJlZTsKfTsKCnR5cGVkZWYgc3RydWN0IENMX25vZGUgQ0xfbm9k
ZTsKQWxpZ25tZW50ICogYWRkX2NvbnN0cmFpbnQyYWxuICggQWxpZ25tZW50ICpBLCBpbnQgczEs
IGludCByMSwgaW50IHMyLCBpbnQgcjIpOwpBbGlnbm1lbnQgKiBncmFwaF9hbG4gKEFsaWdubWVu
dCAqQSwgQ29uc3RyYWludF9saXN0ICpDTCwgU2VxdWVuY2UgKlMpOwpBbGlnbm1lbnQqIGdyYXBo
MmFsbiAoQWxpZ25tZW50ICpBLCBDTF9ub2RlICpHLCBTZXF1ZW5jZSAqUyk7CkNMX25vZGUgKioq
YWRkX2NvbnN0cmFpbnQyZ3JhcGhfYWxuIChDTF9ub2RlICoqKkcsIGludCBzMSwgaW50IHIxLCBp
bnQgczIsIGludCByMik7CkNMX25vZGUgKiBzaGlmdF9zZWdtZW50ICggQ0xfbm9kZSAqUywgaW50
IHNlZ0wsIGludCBzaGlmdEwpOwoKaW50IGlzX2dyYXBoX2dhcF9jb2x1bW4oQ0xfbm9kZSAqUyk7
CkNMX25vZGUgKiByZW1vdmVfZ3JhcGhfZ2FwX2NvbHVtbiAoQ0xfbm9kZSAqUyk7CkNMX25vZGUg
KiBzd2FwX2dhcF9pbl9ncmFwaCAoIENMX25vZGUqUywgQ0xfbm9kZSAqRSk7CgpDTF9ub2RlICog
ZGVjbGFyZV9jbF9ub2RlcyAoIGludCBsZW4sIGludCBzZXEpOwpDTF9ub2RlICogaW5zZXJ0X2dh
cF9jb2x1bW5zIChDTF9ub2RlICpTLCBpbnQgZCk7CmludCBnZXRfbm9kZV9kaXN0YW5jZSAoIENM
X25vZGUgKlMsIENMX25vZGUgKkUpOwpDTF9ub2RlICoqKmFsbjJncmFwaCAoQWxpZ25tZW50ICpB
KTsKQ0xfbm9kZSAqdmZyZWVfZ3JhcGggKENMX25vZGUgKlMpOwpDTF9ub2RlICp2ZnJlZV9jbF9u
b2RlICggQ0xfbm9kZSAqTik7CgppbnQgZ290b2hfcGFpcl93aXNlX2xhbGlnbiAoIEFsaWdubWVu
dCAqQSwgaW50Km5zLCBpbnQgKipsX3MsQ29uc3RyYWludF9saXN0ICpDTCk7CkNvbnN0cmFpbnRf
bGlzdCAqIHVuZGVmaW5lX3N3X2FsbiAoIEFsaWdubWVudCAqQSwgQ29uc3RyYWludF9saXN0ICpD
TCk7CkNvbnN0cmFpbnRfbGlzdCAqIHVuZGVmaW5lX3N3X3BhaXIgKCBDb25zdHJhaW50X2xpc3Qg
KkNMLCBpbnQgczEsIGludCByMSwgaW50IHMyLCBpbnQgcjIpOwppbnQgc3dfcGFpcl9pc19kZWZp
bmVkICggQ29uc3RyYWludF9saXN0ICpDTCwgaW50IHMxLCBpbnQgcjEsIGludCBzMiwgaW50IHIy
KTsKCgppbnQgZ290b2hfcGFpcl93aXNlX3N3IChBbGlnbm1lbnQgKkEsaW50Km5zLCBpbnQgKips
X3MsQ29uc3RyYWludF9saXN0ICpDTCk7CgpBbGlnbm1lbnQgKiBnZXRfYmVzdF9sb2NhbF9hbG4g
KCBBbGlnbm1lbnQgKklOLENvbnN0cmFpbnRfbGlzdCAqQ0wsaW50IGdvcCwgaW50IGdlcCwgaW50
IHN3X3QsIGludCBzd19sLCBpbnQgc3dfeiwgaW50IGdyZWVkeSk7CkFsaWdubWVudCAqIGdldF9i
ZXN0X25vbF9sb2NhbF9hbG4gKCBBbGlnbm1lbnQgKklOLCBDb25zdHJhaW50X2xpc3QgKkNMLCBp
bnQgZ29wLCBpbnQgZ2VwLGludCBzd190LGludCBzd19sLCBpbnQgc3dfeiwgaW50IG1vZGUpOwpk
b3VibGUgY29tcHV0ZV9wZW5hbHR5IChDb25zdHJhaW50X2xpc3QgKkNMLCBjaGFyICptb2RlLCBp
bnQgbGVuKTsKZG91YmxlIGNvbXB1dGVfc2NhbGUgKCBDb25zdHJhaW50X2xpc3QgKkNMLGNoYXIg
Km1vZGUsIGludCBsZW4pOwppbnQgZXZhbHVhdGVfcGVuYWx0eSAoQWxpZ25tZW50ICpBLCBDb25z
dHJhaW50X2xpc3QgKkNMLCBpbnQgKnNjYWxlLGNoYXIgKnNjYWxlX21vZGUsIGludCAqcGVuYWx0
eSwgY2hhciAqcGVuYWx0eV9tb2RlLCBpbnQgbGVuX3NlcSk7CkFsaWdubWVudCAqKiB0X2NvZmZl
ZV9sYWxpZ24gKENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBzY2FsZSwgaW50IHBlbmFsdHksaW50
IG1heGltaXNlLFNlcXVlbmNlICpTLCBpbnQgc3dfdCwgaW50IHN3X2wsIGludCBzd196LGludCAq
c3dfbiwgaW50IHN3X2lvKTsKQWxpZ25tZW50ICogYWRkX3NlcTJhbG4gKENvbnN0cmFpbnRfbGlz
dCAqQ0wsIEFsaWdubWVudCAqSU4sU2VxdWVuY2UgKlMpOwoKCgoKCgoKc3RydWN0IERwX01vZGVs
CnsKICBpbnQgKmRpYWc7CgogIGludCBUR19NT0RFOwogIGludCBGX1RHX01PREU7CiAgaW50IGdv
cDsKICBpbnQgZ2VwOwogIGludCBmX2dvcDsKICBpbnQgZl9nZXA7CiAgaW50IG5zdGF0ZTsKICBp
bnQgU1RBUlQ7CiAgaW50IEVORDsKCiAgY2hhcioqbW9kZWxfY29tbWVudHM7CiAgaW50ICoqbW9k
ZWw7CiAgaW50ICoqbW9kZWxfcHJvcGVydGllczsKICBpbnQgKipib3VuZGVkX21vZGVsOwogIGlu
dCAoKioqbW9kZWxfZW1pc3Npb25fZnVuY3Rpb24pKEFsaWdubWVudCosIGludCAqKiwgaW50LCBp
bnQqLCBpbnQsIGludCAqKiwgaW50LCBpbnQqLCBpbnQsIHN0cnVjdCBDb25zdHJhaW50X2xpc3Qg
Kik7CgogIGludCBMRU5fSTsKICBpbnQgTEVOX0o7CiAgaW50IERFTFRBX0k7CiAgaW50IERFTFRB
X0o7CiAgaW50IEVNSVNTSU9OOwogIGludCBTVEFSVF9FTUlTU0lPTjsKICBpbnQgVEVSTV9FTUlT
U0lPTjsKCiAgaW50IEFMTl9UWVBFOwogIENvbnN0cmFpbnRfbGlzdCAqQ0w7CgoKCiAgaW50IFVN
OwoKICBpbnQgVFlQRTsKICBpbnQgRjA7CiAgaW50IEYxOwoKCiAgaW50IE5PTl9DT0RJTkc7CiAg
aW50IElOU0VSVElPTjsKICBpbnQgREVMRVRJT047CiAgaW50IENPRElORzA7CiAgaW50IENPRElO
RzE7CiAgaW50IENPRElORzI7CgoKfTsKdHlwZWRlZiBzdHJ1Y3QgRHBfTW9kZWwgRHBfTW9kZWw7
CgpzdHJ1Y3QgRHBfUmVzdWx0CnsKICBpbnQgKnRyYWNlYmFjazsKICBpbnQgbGVuOwogIGludCBz
Y29yZTsKICBEcF9Nb2RlbCAqRHBfbW9kZWw7Cn07CnR5cGVkZWYgc3RydWN0IERwX1Jlc3VsdCBE
cF9SZXN1bHQ7CgpEcF9SZXN1bHQgKiBtYWtlX2Zhc3RfZ2VuZXJpY19kcF9wYWlyX3dpc2UgKEFs
aWdubWVudCAqQSwgaW50Km5zLCBpbnQgKipsX3MsRHBfTW9kZWwgKk0pOwoKQ29uc3RyYWludF9s
aXN0KiBmcmVlX2RwX21vZGVsIChEcF9Nb2RlbCAqRCk7CkRwX1Jlc3VsdCAqIGZyZWVfZHBfcmVz
dWx0IChEcF9SZXN1bHQgKkQgKTsKaW50ICoqIGV2YWx1YXRlX2RpYWdvbmFsc19mb3JfdHdvX3Nl
cXVlbmNlcyAoIGNoYXIgKnNlcTEsIGNoYXIgKnNlcTIsaW50IG1heGltaXNlLENvbnN0cmFpbnRf
bGlzdCAqQ0wsaW50IGt0dXApOwppbnQgKiogZXZhbHVhdGVfZGlhZ29uYWxzICggQWxpZ25tZW50
ICpBLCBpbnQgKm5zLCBpbnQgKipsX3MsIENvbnN0cmFpbnRfbGlzdCAqQ0wsaW50IG1heGltaXNl
LGludCBuX2dyb3VwcywgY2hhciAqKmdyb3VwX2xpc3QsaW50IGt0dXApOwppbnQgKiogZXZhbHVh
dGVfc2VnbWVudHNfd2l0aF9rdHVwICggQWxpZ25tZW50ICpBLCBpbnQgKm5zLCBpbnQgKipsX3Ms
IENvbnN0cmFpbnRfbGlzdCAqQ0wsaW50IG1heGltaXNlLGludCBuX2dyb3VwcywgY2hhciAqKmdy
b3VwX2xpc3QsaW50IGt0dXApOwppbnQgKiogZXZhbHVhdGVfZGlhZ29uYWxzX3dpdGhfa3R1cCAo
IEFsaWdubWVudCAqQSwgaW50ICpucywgaW50ICoqbF9zLCBDb25zdHJhaW50X2xpc3QgKkNMLGlu
dCBtYXhpbWlzZSxpbnQgbl9ncm91cHMsIGNoYXIgKipncm91cF9saXN0LGludCBrdHVwKTsKCmlu
dCAqKiBldmFsdWF0ZV9kaWFnb25hbHNfd2l0aF9jbGlzdCAoIEFsaWdubWVudCAqQSwgaW50ICpu
cywgaW50ICoqbF9zLCBDb25zdHJhaW50X2xpc3QgKkNMLGludCBtYXhpbWlzZSxpbnQgbl9ncm91
cHMsIGNoYXIgKipncm91cF9saXN0LGludCBrdHVwKTsKCmludCAqIGZsYWdfZGlhZ29uYWxzIChp
bnQgbDEsIGludCBsMiwgaW50ICoqc29ydGVkX2RpYWcsZmxvYXQgVCwgaW50IHdpbmRvdyk7Cmlu
dCAqIGV4dHJhY3RfTl9kaWFnIChpbnQgbDEsIGludCBsMiwgaW50ICoqc29ydGVkX2RpYWcsIGlu
dCBuX2Nob3Nlbl9kaWFnLCBpbnQgd2luZG93KTsKCmludCBoYXNjaF9zZXEoY2hhciAqc2VxMSwg
aW50ICoqaHMsIGludCAqKmx1LGludCBrdHVwLCBjaGFyICphbHBoKTsKaW50IGZhc3RhX2dvdG9o
X3BhaXJfd2lzZSAoQWxpZ25tZW50ICpBLGludCpucywgaW50ICoqbF9zLENvbnN0cmFpbnRfbGlz
dCAqQ0wpOwppbnQgY2Zhc3RhX2dvdG9oX3BhaXJfd2lzZSAoQWxpZ25tZW50ICpBLGludCpucywg
aW50ICoqbF9zLENvbnN0cmFpbnRfbGlzdCAqQ0wpOwppbnQgdmVyeV9mYXN0X2dvdG9oX3BhaXJf
d2lzZSAoQWxpZ25tZW50ICpBLGludCpucywgaW50ICoqbF9zLENvbnN0cmFpbnRfbGlzdCAqQ0wp
OwoKaW50IG1ha2VfZmFzdGFfZ290b2hfcGFpcl93aXNlIChBbGlnbm1lbnQgKkEsaW50Km5zLCBp
bnQgKipsX3MsQ29uc3RyYWludF9saXN0ICpDTCwgaW50ICpkaWFnKTsKCgoKCgoKCmludCBwcmVj
b21wdXRlZF9wYWlyX3dpc2UgKEFsaWdubWVudCAqQSxpbnQqbnMsIGludCAqKmxfcyxDb25zdHJh
aW50X2xpc3QgKkNMKTsKaW50IGt0dXBfcGFpcl93aXNlIChBbGlnbm1lbnQgKkEsaW50Km5zLCBp
bnQgKipsX3MsQ29uc3RyYWludF9saXN0ICpDTCk7CmludCBrdHVwX2NvbXBhcmlzb24gKCBjaGFy
ICpzZXExLCBjaGFyICpzZXEyLCBpbnQga3R1cCk7Ckhhc2NoVCogaGFzY2hfc2VxdWVuY2UgKCBj
aGFyICpzZXExLCBpbnQga3R1cCk7CmludCBjZmFzdGFfZ290b2hfcGFpcl93aXNlX3N3IChBbGln
bm1lbnQgKkEsaW50Km5zLCBpbnQgKipsX3MsQ29uc3RyYWludF9saXN0ICpDTCk7CmludCBmYXN0
YV9nb3RvaF9wYWlyX3dpc2Vfc3cgKEFsaWdubWVudCAqQSxpbnQqbnMsIGludCAqKmxfcyxDb25z
dHJhaW50X2xpc3QgKkNMKTsKaW50IG1ha2VfZmFzdGFfZ290b2hfcGFpcl93aXNlX3N3IChBbGln
bm1lbnQgKkEsaW50Km5zLCBpbnQgKipsX3MsQ29uc3RyYWludF9saXN0ICpDTCwgaW50ICpkaWFn
KTsKCgppbnQgZ290b2hfcGFpcl93aXNlIChBbGlnbm1lbnQgKkEsaW50Km5zLCBpbnQgKipsX3Ms
Q29uc3RyYWludF9saXN0ICpDTCk7CmludCBzdWJvcDFfcGFpcl93aXNlICggQWxpZ25tZW50ICpB
LCBpbnQgKm5zLCBpbnQgKipscywgQ29uc3RyYWludF9saXN0ICpDTCk7CmludCBzdWJvcDJfcGFp
cl93aXNlICggQWxpZ25tZW50ICpBLCBpbnQgKm5zLCBpbnQgKipscywgQ29uc3RyYWludF9saXN0
ICpDTCk7CgoKCgoKCmludCBjZmFzdGFfY2RuYV9wYWlyX3dpc2UgKEFsaWdubWVudCAqQSxpbnQq
bnMsIGludCAqKmxfcyxDb25zdHJhaW50X2xpc3QgKkNMKTsKaW50IGZhc3RhX2NkbmFfcGFpcl93
aXNlIChBbGlnbm1lbnQgKkEsaW50Km5zLCBpbnQgKipsX3MsQ29uc3RyYWludF9saXN0ICpDTCk7
CkRwX01vZGVsKiBpbml0aWFsaXplX2RuYV9kcF9tb2RlbCAoQ29uc3RyYWludF9saXN0ICpDTCk7
CkRwX1Jlc3VsdCAqIG1ha2VfZmFzdF9kcF9wYWlyX3dpc2UgKEFsaWdubWVudCAqQSxpbnQqbnMs
IGludCAqKmxfcywgQ29uc3RyYWludF9saXN0ICpDTCxEcF9Nb2RlbCAqTSk7CmludCBtYWtlX2Zh
c3RhX2NkbmFfcGFpcl93aXNlIChBbGlnbm1lbnQgKkIsQWxpZ25tZW50ICpBLGludCpucywgaW50
ICoqbF9zLENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCAqZGlhZyk7CgoKCmludCAqKiBldmFsdWF0
ZV9kaWFnb25hbHNfY2RuYSAoIEFsaWdubWVudCAqQSwgaW50ICpucywgaW50ICoqbF9zLCBDb25z
dHJhaW50X2xpc3QgKkNMLGludCBtYXhpbWlzZSxpbnQgbl9ncm91cHMsIGNoYXIgKipncm91cF9s
aXN0LCBpbnQga3R1cCk7CmludCBjZmFzdGFfY2RuYV9wYWlyX3dpc2UgKEFsaWdubWVudCAqQSxp
bnQqbnMsIGludCAqKmxfcyxDb25zdHJhaW50X2xpc3QgKkNMKTsKQWxpZ25tZW50ICpjbGVhbl9t
YWxuICggQWxpZ25tZW50ICpBLCBBbGlnbm1lbnQgKkksIGludCBULCBpbnQgbl9pdCk7CkFsaWdu
bWVudCAqcmVhbGlnbl9zZWdtZW50IChpbnQgc2VxLCBpbnQgc3RhcnQsIGludCBsZW4sQWxpZ25t
ZW50ICpBLCBBbGlnbm1lbnQgKkMpOwpEcF9Nb2RlbCAqIGluaXRpYWxpemVfc2VnMnByZl9tb2Rl
bChpbnQgbGVmdF90Z19tb2RlLCBpbnQgcmlnaHRfdGdfbW9kZSwgQ29uc3RyYWludF9saXN0ICpD
TCk7CgppbnQgZ2V0X2dlcF9jb3N0IChBbGlnbm1lbnQgKkEsIGludCoqcG9zMSwgaW50IG5zMSwg
aW50Kmxpc3QxLCBpbnQgY29sMSwgaW50Kipwb3MyLCBpbnQgbnMyLCBpbnQqbGlzdDIsIGludCBj
b2wyLCBDb25zdHJhaW50X2xpc3QgKkNMKTsKaW50IGdldF9zdGFydF9nZXBfY29zdCAoQWxpZ25t
ZW50ICpBLCBpbnQqKnBvczEsIGludCBuczEsIGludCpsaXN0MSwgaW50IGNvbDEsIGludCoqcG9z
MiwgaW50IG5zMiwgaW50Kmxpc3QyLCBpbnQgY29sMiwgQ29uc3RyYWludF9saXN0ICpDTCk7Cmlu
dCBnZXRfdGVybV9nZXBfY29zdCAoQWxpZ25tZW50ICpBLCBpbnQqKnBvczEsIGludCBuczEsIGlu
dCpsaXN0MSwgaW50IGNvbDEsIGludCoqcG9zMiwgaW50IG5zMiwgaW50Kmxpc3QyLCBpbnQgY29s
MiwgQ29uc3RyYWludF9saXN0ICpDTCk7CgpEcF9Nb2RlbCAqIGluaXRpYWxpemVfc3NlcV9tb2Rl
bChpbnQgbGVmdF90Z19tb2RlLCBpbnQgcmlnaHRfdGdfbW9kZSwgQ29uc3RyYWludF9saXN0ICpD
TCk7CmludCBzc2VjX3B3YWxuX21hbG4gKEFsaWdubWVudCAqQSwgaW50ICpucywgaW50ICoqbHMs
IENvbnN0cmFpbnRfbGlzdCAqQ0wpOwoKCmludCBnZXRfdHVybl9nZXBfY29zdCAoQWxpZ25tZW50
ICpBLCBpbnQqKnBvczEsIGludCBuczEsIGludCpsaXN0MSwgaW50IGNvbDEsIGludCoqcG9zMiwg
aW50IG5zMiwgaW50Kmxpc3QyLCBpbnQgY29sMiwgQ29uc3RyYWludF9saXN0ICpDTCk7CmludCBn
ZXRfdHVybl9zdGFydF9nZXBfY29zdCAoQWxpZ25tZW50ICpBLCBpbnQqKnBvczEsIGludCBuczEs
IGludCpsaXN0MSwgaW50IGNvbDEsIGludCoqcG9zMiwgaW50IG5zMiwgaW50Kmxpc3QyLCBpbnQg
Y29sMiwgQ29uc3RyYWludF9saXN0ICpDTCk7CmludCBnZXRfdHVybl90ZXJtX2dlcF9jb3N0IChB
bGlnbm1lbnQgKkEsIGludCoqcG9zMSwgaW50IG5zMSwgaW50Kmxpc3QxLCBpbnQgY29sMSwgaW50
Kipwb3MyLCBpbnQgbnMyLCBpbnQqbGlzdDIsIGludCBjb2wyLCBDb25zdHJhaW50X2xpc3QgKkNM
KTsKCmludCBnZXRfYWxwaGFfZ2VwX2Nvc3QgKEFsaWdubWVudCAqQSwgaW50Kipwb3MxLCBpbnQg
bnMxLCBpbnQqbGlzdDEsIGludCBjb2wxLCBpbnQqKnBvczIsIGludCBuczIsIGludCpsaXN0Miwg
aW50IGNvbDIsIENvbnN0cmFpbnRfbGlzdCAqQ0wpOwppbnQgZ2V0X2FscGhhX3N0YXJ0X2dlcF9j
b3N0KEFsaWdubWVudCAqQSwgaW50Kipwb3MxLCBpbnQgbnMxLCBpbnQqbGlzdDEsIGludCBjb2wx
LCBpbnQqKnBvczIsIGludCBuczIsIGludCpsaXN0MiwgaW50IGNvbDIsIENvbnN0cmFpbnRfbGlz
dCAqQ0wpOwppbnQgZ2V0X2FscGhhX3Rlcm1fZ2VwX2Nvc3QgKEFsaWdubWVudCAqQSwgaW50Kipw
b3MxLCBpbnQgbnMxLCBpbnQqbGlzdDEsIGludCBjb2wxLCBpbnQqKnBvczIsIGludCBuczIsIGlu
dCpsaXN0MiwgaW50IGNvbDIsIENvbnN0cmFpbnRfbGlzdCAqQ0wpOwoKaW50IGdldF9iZXRhX2dl
cF9jb3N0IChBbGlnbm1lbnQgKkEsIGludCoqcG9zMSwgaW50IG5zMSwgaW50Kmxpc3QxLCBpbnQg
Y29sMSwgaW50Kipwb3MyLCBpbnQgbnMyLCBpbnQqbGlzdDIsIGludCBjb2wyLCBDb25zdHJhaW50
X2xpc3QgKkNMKTsKaW50IGdldF9iZXRhX3N0YXJ0X2dlcF9jb3N0IChBbGlnbm1lbnQgKkEsIGlu
dCoqcG9zMSwgaW50IG5zMSwgaW50Kmxpc3QxLCBpbnQgY29sMSwgaW50Kipwb3MyLCBpbnQgbnMy
LCBpbnQqbGlzdDIsIGludCBjb2wyLCBDb25zdHJhaW50X2xpc3QgKkNMKTsKaW50IGdldF9iZXRh
X3Rlcm1fZ2VwX2Nvc3QgKEFsaWdubWVudCAqQSwgaW50Kipwb3MxLCBpbnQgbnMxLCBpbnQqbGlz
dDEsIGludCBjb2wxLCBpbnQqKnBvczIsIGludCBuczIsIGludCpsaXN0MiwgaW50IGNvbDIsIENv
bnN0cmFpbnRfbGlzdCAqQ0wpOwoKaW50IGdldF9hbHBoYV9zdWJfY29zdCAoQWxpZ25tZW50ICpB
LCBpbnQqKnBvczEsIGludCBuczEsIGludCpsaXN0MSwgaW50IGNvbDEsIGludCoqcG9zMiwgaW50
IG5zMiwgaW50Kmxpc3QyLCBpbnQgY29sMiwgQ29uc3RyYWludF9saXN0ICpDTCk7CmludCBnZXRf
YmV0YV9zdWJfY29zdCAoQWxpZ25tZW50ICpBLCBpbnQqKnBvczEsIGludCBuczEsIGludCpsaXN0
MSwgaW50IGNvbDEsIGludCoqcG9zMiwgaW50IG5zMiwgaW50Kmxpc3QyLCBpbnQgY29sMiwgQ29u
c3RyYWludF9saXN0ICpDTCk7CmludCBnZXRfdHVybl9zdWJfY29zdCAoQWxpZ25tZW50ICpBLCBp
bnQqKnBvczEsIGludCBuczEsIGludCpsaXN0MSwgaW50IGNvbDEsIGludCoqcG9zMiwgaW50IG5z
MiwgaW50Kmxpc3QyLCBpbnQgY29sMiwgQ29uc3RyYWludF9saXN0ICpDTCk7CgppbnQgZ2V0X3Nz
ZWNfbm9fY29zdCAoQWxpZ25tZW50ICpBLCBpbnQqKnBvczEsIGludCBuczEsIGludCpsaXN0MSwg
aW50IGNvbDEsIGludCoqcG9zMiwgaW50IG5zMiwgaW50Kmxpc3QyLCBpbnQgY29sMiwgQ29uc3Ry
YWludF9saXN0ICpDTCk7CmludCBzaW1fcGFpcl93aXNlX2xhbGlnbiAoQWxpZ25tZW50ICppbl9B
LCBpbnQgKmluX25zLCBpbnQgKippbl9sX3MsIENvbnN0cmFpbnRfbGlzdCAqaW5fQ0wpOwoKCmlu
dCBteWVyc19taWxsZXJfcGFpcl93aXNlIChBbGlnbm1lbnQgKkEsIGludCAqbnMsIGludCAqKmxf
cyxDb25zdHJhaW50X2xpc3QgKkNMKTsKaW50IGRpZmYgKEFsaWdubWVudCAqQSwgaW50ICpucywg
aW50ICoqbHMsIGludCBzMSwgaW50IE0saW50IHMyLCBpbnQgTiAsIGludCB0YiwgaW50IHRlLCBD
b25zdHJhaW50X2xpc3QgKkNMLCBpbnQgKipwb3MpOwppbnQgZXZhbHVhdGVfZXN0X29yZGVyIChT
ZXF1ZW5jZSAqUywgY2hhciAqY29uY2F0LCBDb25zdHJhaW50X2xpc3QgKkNMLCBpbnQga3R1cGxl
KTsKCkNvbnN0cmFpbnRfbGlzdCAqcHJlcGFyZV9jbF9mb3JfbW9jYSAoIENvbnN0cmFpbnRfbGlz
dCAqQ0wpOwpBbGlnbm1lbnQgKiogbW9jYV9hbG4gKCBDb25zdHJhaW50X2xpc3QgKkNMKTsKQWxp
Z25tZW50ICogZXh0cmFjdF9kb21haW4gKCBDb25zdHJhaW50X2xpc3QgKkNMKTsKQWxpZ25tZW50
ICogaW50ZXJhY3RpdmVfZG9tYWluX2V4dHJhY3Rpb24gKCBDb25zdHJhaW50X2xpc3QgKkNMKTsK
aW50IHByaW50X21vY2FfaW50ZXJhY3RpdmVfY2hvaWNlcyAoKTsKCkFsaWdubWVudCAqIGFwcHJv
eGltYXRlX2RvbWFpbiAoIGludCBtaW5fc3RhcnQsIGludCBtYXhfc3RhcnQsIGludCBzdGVwX3N0
YXJ0LGludCBtaW5fbGVuLCBpbnQgbWF4X2xlbiwgaW50IHN0ZXBfbGVuLCBpbnQgKmJlc3Rfc3Rh
cnQsIGludCAqYmVzdF9sZW4sIGludCAqYmVzdF9zY29yZSwgQ29uc3RyYWludF9saXN0ICpDTCk7
CgppbnQgbWVhc3VyZV9kb21haW5fbGVuZ3RoICggQ29uc3RyYWludF9saXN0ICpDTCxBbGlnbm1l
bnQgKklOLCBpbnQgc3RhcnQsIGludCBtaW5fc2l6ZSwgaW50IG1heF9zaXplLCBpbnQgc3RlcCk7
CkFsaWdubWVudCAqZXh0cmFjdF9kb21haW5fd2l0aF9jb29yZGluYXRlcyAoIEFsaWdubWVudCAq
UkVTVUxULGludCBzdGFydCwgaW50IGxlbiwgQ29uc3RyYWludF9saXN0ICpDTCk7CmludCBnZXRf
c3RhcnRpbmdfcG9pbnQgKCBDb25zdHJhaW50X2xpc3QgKkNMKTsKCkFsaWdubWVudCAqIGZpbmRf
ZG9tYWluX2Nvb3JkaW5hdGVzIChDb25zdHJhaW50X2xpc3QgKkNMLCBpbnQgKnN0YXJ0LCBpbnQg
Kmxlbik7CkFsaWdubWVudCAqIGV4dGVuZF9kb21haW4gKCBDb25zdHJhaW50X2xpc3QgKkNMLCBp
bnQgKnN0YXJ0LCBpbnQgKmxlbiwgaW50IGRzdGFydCwgaW50IGRsZW4pOwpBbGlnbm1lbnQgKiBt
b2RpZnlfZG9tYWluICggQ29uc3RyYWludF9saXN0ICpDTCwgQWxpZ25tZW50ICpJTiwgaW50ICpz
dGFydCwgaW50ICpsZW4sIGludCBkc3RhcnQsIGludCBkbGVuKTsKCmludCAqIGFuYWx5c2Vfc2Vx
dWVuY2UgKCBDb25zdHJhaW50X2xpc3QgKkNMKTsKIyAyMzMgImRwX2xpYl9oZWFkZXIuaCIKQ29u
c3RyYWludF9saXN0ICpwcm9maWxlMmxpc3QgKCBKb2JfVEMgKmpvYixpbnQgbnByZik7CkNvbnN0
cmFpbnRfbGlzdCAqc2VxMmxpc3QgKEpvYl9UQyAqSm9iKTsKQ29uc3RyYWludF9saXN0ICptZXRo
b2QycHdfY2wgKFRDX21ldGhvZCAqTSwgQ29uc3RyYWludF9saXN0ICpDTCk7CmludCBtZXRob2Rf
dXNlc19zdHJ1Y3R1cmUoIGNoYXIgKm1ldGhvZCk7CgoKCgoKQWxpZ25tZW50ICogY29tcHV0ZV9w
cnJwX2FsbiAoQWxpZ25tZW50ICpBLCBDb25zdHJhaW50X2xpc3QgKkNMKTsKQWxpZ25tZW50ICog
Y29tcHV0ZV9jbHVzdGFsd19hbG4gKEFsaWdubWVudCAqQSwgQ29uc3RyYWludF9saXN0ICpDTCk7
CkFsaWdubWVudCAqIGNvbXB1dGVfdGNvZmZlZV9hbG5fcXVpY2sgKEFsaWdubWVudCAqQSwgQ29u
c3RyYWludF9saXN0ICpDTCk7CkFsaWdubWVudCAqIHNlcTJjbHVzdGFsd19hbG4gKFNlcXVlbmNl
ICpTKTsKQWxpZ25tZW50ICogYWxuMmNsdXN0YWx3X2FsbiAoQWxpZ25tZW50ICpBLCBDb25zdHJh
aW50X2xpc3QgKkNMKTsKQWxpZ25tZW50ICogcmVhbGlnbl9ibG9jayAoIEFsaWdubWVudCAqQSwg
aW50IGNvbDEsIGludCBjb2wyLCBjaGFyICpwZyk7CgoKCgoKQ29uc3RyYWludF9saXN0ICogYWxp
Z25fY29kaW5nX251Y2xlb3RpZGVzIChjaGFyICpzZXEsIGNoYXIgKm1ldGhvZCwgY2hhciAqd2Vp
Z2h0LCBjaGFyICptZW1fbW9kZSwgQ29uc3RyYWludF9saXN0ICpDTCk7CgoKCgoKCgpDb25zdHJh
aW50X2xpc3QgKmFsaWduX3BkYl9wYWlyIChjaGFyICpzZXFfaW4sIGNoYXIgKmRwX21vZGUsY2hh
ciAqZXZhbHVhdGVfbW9kZSwgY2hhciAqZmlsZSwgQ29uc3RyYWludF9saXN0ICpDTCwgSm9iX1RD
ICpqb2IpOwpDb25zdHJhaW50X2xpc3QgKiBhbGlnbl9wZGJfcGFpcl8yIChjaGFyICpzZXEsIENv
bnN0cmFpbnRfbGlzdCAqQ0wpOwoKQ29uc3RyYWludF9saXN0ICogZnVndWVfcGFpciAoIGNoYXIg
KnNlcSwgQ29uc3RyYWludF9saXN0ICpDTCk7CkNvbnN0cmFpbnRfbGlzdCAqIGZ1Z3VlX3BhaXIy
IChpbnQgczEsIGludCBzMiwgQ29uc3RyYWludF9saXN0ICpDTCk7CkNvbnN0cmFpbnRfbGlzdCAq
IHNhcF9wYWlyIChjaGFyICpzZXEsIENvbnN0cmFpbnRfbGlzdCAqQ0wpOwpDb25zdHJhaW50X2xp
c3QgKiBsc3FtYW5fcGFpciAoY2hhciAqc2VxLCBDb25zdHJhaW50X2xpc3QgKkNMKTsKCkNvbnN0
cmFpbnRfbGlzdCAqIHRocmVhZF9wYWlyIChjaGFyICpzZXEsIENvbnN0cmFpbnRfbGlzdCAqQ0wp
OwoKQ29uc3RyYWludF9saXN0ICogc2FwX3BhaXJfcnMgKGNoYXIgKnNlcSwgQ29uc3RyYWludF9s
aXN0ICpDTCk7CgoKCgoKCgpBbGlnbm1lbnQgKiBmYXN0X3BhaXIgKEpvYl9UQyAqam9iKTsKCnZv
aWQgdG9nZ2xlX2Nhc2VfaW5fYWxpZ25fdHdvX3NlcXVlbmNlcyhpbnQgdmFsdWUpOwpBbGlnbm1l
bnQgKiBhbGlnbl90d29fc2VxdWVuY2VzICggY2hhciAqc2VxMSwgY2hhciAqc2VxMiwgY2hhciAq
bWF0cml4LCBpbnQgZ29wLCBpbnQgZ2VwLCBjaGFyICphbGlnbl9tb2RlKTsKQWxpZ25tZW50ICog
YWxpZ25fdHdvX2FsbiAoIEFsaWdubWVudCAqQTEsIEFsaWdubWVudCAqQTIsIGNoYXIgKmluX21h
dHJpeCwgaW50IGdvcCwgaW50IGdlcCwgY2hhciAqaW5fYWxpZ25fbW9kZSk7Ck5UX25vZGUgKiog
bWFrZV90cmVlICggQWxpZ25tZW50ICpBLENvbnN0cmFpbnRfbGlzdCAqQ0wsaW50IGdvcCwgaW50
IGdlcCxTZXF1ZW5jZSAqUywgY2hhciAqdHJlZV9maWxlLCBpbnQgbWF4aW1pc2UpOwppbnQgKiog
Z2V0X3B3X2Rpc3RhbmNlcyAoIEFsaWdubWVudCAqQSxDb25zdHJhaW50X2xpc3QgKkNMLGludCBn
b3AsIGludCBnZXAsIGNoYXIgKipvdXRfc2VxLCBjaGFyICoqb3V0X3NlcV9uYW1lLCBpbnQgb3V0
X25zZXEsIGNoYXIgKnRyZWVfZmlsZSwgY2hhciAqdHJlZV9tb2RlLCBpbnQgbWF4aW1pc2UpOwpB
bGlnbm1lbnQgKmJ1aWxkX3Byb2dyZXNzaXZlX25vbF9hbG5fd2l0aF9zZXFfY29vcihDb25zdHJh
aW50X2xpc3QgKkNMLGludCBnb3AsIGludCBnZXAsU2VxdWVuY2UgKlMsIGludCAqKnNlcV9jb29y
LCBpbnQgbnNlcSk7CkFsaWdubWVudCAqYnVpbGRfcHJvZ3Jlc3NpdmVfYWxuX3dpdGhfc2VxX2Nv
b3IgKENvbnN0cmFpbnRfbGlzdCpDTCxpbnQgZ29wLCBpbnQgZ2VwLCBTZXF1ZW5jZSAqUywgaW50
ICoqY29vciwgaW50IG5zZXEpOwpBbGlnbm1lbnQgKmJ1aWxkX3Byb2dyZXNzaXZlX2FsbihBbGln
bm1lbnQgKkEsIENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBnb3AsIGludCBnZXApOwpBbGlnbm1l
bnQgKmVzdF9wcm9ncmVzc2l2ZV9hbG4oQWxpZ25tZW50ICpBLCBDb25zdHJhaW50X2xpc3QgKkNM
LCBpbnQgZ29wLCBpbnQgZ2VwKTsKdm9pZCBhbmFseXNlX3NlcSAoIEFsaWdubWVudCAqQSwgaW50
IHMpOwoKQWxpZ25tZW50ICp0c3BfYWxuIChBbGlnbm1lbnQgKkEsIENvbnN0cmFpbnRfbGlzdCAq
aUNMLCBTZXF1ZW5jZSAqUyk7CkFsaWdubWVudCAqaXRlcmF0ZV9hbG4gKCBBbGlnbm1lbnQqQSwg
aW50IG5pdCwgQ29uc3RyYWludF9saXN0ICpDTCk7CkFsaWdubWVudCAqcmVhbGlnbl9hbG4gKCBB
bGlnbm1lbnQqQSwgQ29uc3RyYWludF9saXN0ICpDTCk7CkFsaWdubWVudCAqdmVyeV9mYXN0X2Fs
biAoQWxpZ25tZW50KkEsIGludCBuc2VxLCBDb25zdHJhaW50X2xpc3QgKkNMKTsKCk5UX25vZGUq
IHRyZWVfYWxuICggTlRfbm9kZSBMVCwgTlRfbm9kZSBSVCwgQWxpZ25tZW50KkEsIGludCBuc2Vx
LCBDb25zdHJhaW50X2xpc3QgKkNMKTsKaW50IHNwbGl0X2NvbmRpdGlvbiAoaW50IG5zZXEsIGlu
dCBzY29yZSwgQ29uc3RyYWludF9saXN0ICpDTCk7CgppbnQgcGFpcl93aXNlIChBbGlnbm1lbnQg
KkEsIGludCpucywgaW50ICoqbF9zLENvbnN0cmFpbnRfbGlzdCAqQ0wgKTsKCmludCBlbXB0eV9w
YWlyX3dpc2UgKCBBbGlnbm1lbnQgKkEsIGludCAqbnMsIGludCAqKmxfcywgQ29uc3RyYWludF9s
aXN0ICpDTCwgaW50IGdsb2NhbCk7CgoKUHdmdW5jIGdldF9wYWlyX3dpc2VfZnVuY3Rpb24gKFB3
ZnVuYyBmdW5jLCBjaGFyICpkcF9tb2RlLCBpbnQgKmdsb2NhbCk7CgoKCmNoYXIgKmJ1aWxkX2Nv
bnNlbnN1cyAoIGNoYXIgKnNlcTEsIGNoYXIgKnNlcTIsIGNoYXIgKmRwX21vZGUpOwoKaW50IGRv
bWFpbl9wYWlyX3dpc2UgKEFsaWdubWVudCAqQSxpbnQqbnMsIGludCAqKmxfcyxDb25zdHJhaW50
X2xpc3QgKkNMICk7CkFsaWdubWVudCAqZG9tYWluX21hdGNoX2xpc3QyYWxuICggQWxpZ25tZW50
ICpBLGludCAqbnMsaW50ICoqbF9zLGludCAqKm1sLCBpbnQgbnNlcSwgaW50IGxlbik7CkFsaWdu
bWVudCAqIGRvbWFpbl9zZXEyZG9tYWluIChDb25zdHJhaW50X2xpc3QgKkNMLGludCBzY2FsZSxp
bnQgZ29wLGludCBnZXAsQWxpZ25tZW50ICpTRVFfRE9NQUlOLCBBbGlnbm1lbnQgKlRBUkdFVCk7
CgoKaW50IGN1c3RvbV9wYWlyX3Njb3JlX2Z1bmN0aW9uMSAoQ29uc3RyYWludF9saXN0ICpDTCwg
aW50IHMxLCBpbnQgcjEsIGludCBzMiwgaW50IHIyKTsKaW50IGN1c3RvbV9wYWlyX3Njb3JlX2Z1
bmN0aW9uMiAoQ29uc3RyYWludF9saXN0ICpDTCwgaW50IHMxLCBpbnQgcjEsIGludCBzMiwgaW50
IHIyKTsKaW50IGN1c3RvbV9wYWlyX3Njb3JlX2Z1bmN0aW9uMyAoQ29uc3RyYWludF9saXN0ICpD
TCwgaW50IHMxLCBpbnQgcjEsIGludCBzMiwgaW50IHIyKTsKaW50IGN1c3RvbV9wYWlyX3Njb3Jl
X2Z1bmN0aW9uNCAoQ29uc3RyYWludF9saXN0ICpDTCwgaW50IHMxLCBpbnQgcjEsIGludCBzMiwg
aW50IHIyKTsKaW50IGN1c3RvbV9wYWlyX3Njb3JlX2Z1bmN0aW9uNSAoQ29uc3RyYWludF9saXN0
ICpDTCwgaW50IHMxLCBpbnQgcjEsIGludCBzMiwgaW50IHIyKTsKaW50IGN1c3RvbV9wYWlyX3Nj
b3JlX2Z1bmN0aW9uNiAoQ29uc3RyYWludF9saXN0ICpDTCwgaW50IHMxLCBpbnQgcjEsIGludCBz
MiwgaW50IHIyKTsKaW50IGN1c3RvbV9wYWlyX3Njb3JlX2Z1bmN0aW9uNyAoQ29uc3RyYWludF9s
aXN0ICpDTCwgaW50IHMxLCBpbnQgcjEsIGludCBzMiwgaW50IHIyKTsKaW50IGN1c3RvbV9wYWly
X3Njb3JlX2Z1bmN0aW9uOCAoQ29uc3RyYWludF9saXN0ICpDTCwgaW50IHMxLCBpbnQgcjEsIGlu
dCBzMiwgaW50IHIyKTsKaW50IGN1c3RvbV9wYWlyX3Njb3JlX2Z1bmN0aW9uOSAoQ29uc3RyYWlu
dF9saXN0ICpDTCwgaW50IHMxLCBpbnQgcjEsIGludCBzMiwgaW50IHIyKTsKaW50IGN1c3RvbV9w
YWlyX3Njb3JlX2Z1bmN0aW9uMTAgKENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBzMSwgaW50IHIx
LCBpbnQgczIsIGludCByMik7CmludCBhcGRiIChpbnQgYXJnYywgY2hhciAqYXJndltdKTsKCkNv
bnN0cmFpbnRfbGlzdCAqIHNldF9jb25zdHJhaW50X2xpc3Q0YWxpZ25fcGRiIChDb25zdHJhaW50
X2xpc3QgKmluQ0wsaW50IHNlcSwgY2hhciAqZHBfbW9kZSwgY2hhciAqaGFzY2hfbW9kZSwgY2hh
ciAqcGFyYW1fZmlsZSk7CmludCBldmFsdWF0ZV9jYV90cmFjZV9zYXAyX2J1YmJsZSAoQ29uc3Ry
YWludF9saXN0ICpDTCwgaW50IHMxLCBpbnQgcjEsIGludCBzMiwgaW50IHIyKTsKaW50IGV2YWx1
YXRlX2NhX3RyYWNlX25iIChDb25zdHJhaW50X2xpc3QgKkNMLCBpbnQgczEsIGludCBzMiwgaW50
IHIxLCBpbnQgcjIpOwppbnQgZXZhbHVhdGVfY2FfdHJhY2VfYnViYmxlIChDb25zdHJhaW50X2xp
c3QgKkNMLCBpbnQgczEsIGludCBzMiwgaW50IHIxLCBpbnQgcjIpOwppbnQgZXZhbHVhdGVfY2Ff
dHJhY2Vfc2FwMV9idWJibGUgKENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBzMSwgaW50IHMyLCBp
bnQgcjEsIGludCByMik7CmludCBldmFsdWF0ZV9jYV90cmFjZV8zRF9idWJibGUgKENvbnN0cmFp
bnRfbGlzdCAqQ0wsIGludCBzMSwgaW50IHMyLCBpbnQgcjEsIGludCByMik7CmludCBldmFsdWF0
ZV9jYV90cmFjZV90cmFuc3ZlcnNhbCAoQ29uc3RyYWludF9saXN0ICpDTCwgaW50IHMxLCBpbnQg
czIsIGludCByMSwgaW50IHIyKTsKaW50IGV2YWx1YXRlX2NhX3RyYWNlX2J1YmJsZV8yIChDb25z
dHJhaW50X2xpc3QgKkNMLCBpbnQgczEsIGludCBzMiwgaW50IHIxLCBpbnQgcjIpOwppbnQgZXZh
bHVhdGVfY2FfdHJhY2VfYnViYmxlXzMgKENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBzMSwgaW50
IHMyLCBpbnQgcjEsIGludCByMik7CgoKCgoKCgpmbG9hdCBtYXRyaXhfbWF0Y2ggKENvbnN0cmFp
bnRfbGlzdCAqQ0wsIGludCBzMSwgaW50IHMyLCBpbnQgcjEsIGludCByMiwgU3RydWN0X25iICpu
YnMxLCBTdHJ1Y3RfbmIgKm5iczIpOwpmbG9hdCB0cmFuc3ZlcnNhbF9tYXRjaCAoQ29uc3RyYWlu
dF9saXN0ICpDTCwgaW50IHMxLCBpbnQgczIsIGludCByMSwgaW50IHIyLCBTdHJ1Y3RfbmIgKm5i
czEsIFN0cnVjdF9uYiAqbmJzMik7CmZsb2F0IG5laWdoYm9yaG9vZF9tYXRjaCAoQ29uc3RyYWlu
dF9saXN0ICpDTCwgaW50IHMxLCBpbnQgczIsIGludCByMSwgaW50IHIyLFN0cnVjdF9uYiAqbmJz
MSwgU3RydWN0X25iICpuYnMyKTsKZmxvYXQgc2FwMV9uZWlnaGJvcmhvb2RfbWF0Y2ggKENvbnN0
cmFpbnRfbGlzdCAqQ0wsIGludCBzMSwgaW50IHMyLCBpbnQgcjEsIGludCByMiwgU3RydWN0X25i
ICpuYnMxLCBTdHJ1Y3RfbmIgKm5iczIpOwpmbG9hdCBzYXAyX25laWdoYm9yaG9vZF9tYXRjaCAo
Q29uc3RyYWludF9saXN0ICpDTCwgaW50IHMxLCBpbnQgczIsIGludCByMSwgaW50IHIyLCBTdHJ1
Y3RfbmIgKm5iczEsIFN0cnVjdF9uYiAqbmJzMik7CgoKCgoKCgpBbGlnbm1lbnQgKiBhbmFseXNl
X3BkYiAoIEFsaWdubWVudCAqQSwgQWxpZ25tZW50ICpTVCk7CmZsb2F0ICoqKiBhbmFseXNlX3Bk
Yl9yZXNpZHVlcyAoIEFsaWdubWVudCAqQSwgQ29uc3RyYWludF9saXN0ICpDTCwgUGRiX3BhcmFt
ICpwZGJfcGFyYW0pOwoKZmxvYXQgc3F1YXJlX2F0b20gKCBBdG9tICpYKTsKQXRvbSogcmVmcmFt
ZV9hdG9tICggQXRvbSAqWCwgQXRvbSpZLCBBdG9tICpaLCBBdG9tICpJTiwgQXRvbSAqUik7CkF0
b20qIGFkZF9hdG9tICggQXRvbSAqQSwgQXRvbSpCLCBBdG9tICpSKTsKQXRvbSogZGlmZl9hdG9t
ICggQXRvbSAqQSwgQXRvbSpCLCBBdG9tICpSKTsKQXRvbSAqIGNvcHlfYXRvbSAoIEF0b20gKkEs
IEF0b20qUik7CmludCBldmFsdWF0ZV9hbG5fZ2liYnMgKCBBbGlnbm1lbnQgKkEsIENvbnN0cmFp
bnRfbGlzdCAqQ0wpOwppbnQgZXZhbHVhdGVfbW9jYV9kb21haW4gKCBBbGlnbm1lbnQgKkEsIENv
bnN0cmFpbnRfbGlzdCAqQ0wpOwppbnQgbW9jYV9yZXNpZHVlX3BhaXJfZXh0ZW5kZWRfbGlzdCAo
IENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBzMSwgaW50IHIxLCBpbnQgczIsIGludCByMik7Cmlu
dCBtb2NhX2V2YWx1YXRlX21hdHJpeF9zY29yZSAoIENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBz
MSwgaW50IHIxLCBpbnQgczIsIGludCByMik7CmludCBtb2NhX3Nsb3dfZ2V0X2RwX2Nvc3QgKCBB
bGlnbm1lbnQgKkEsIGludCoqcG9zMSwgaW50IG5zMSwgaW50Kmxpc3QxLCBpbnQgY29sMSwgaW50
Kipwb3MyLCBpbnQgbnMyLCBpbnQqbGlzdDIsIGludCBjb2wyLCBDb25zdHJhaW50X2xpc3QgKkNM
KTsKCmludCAqKmNhY2hlX2NsX3dpdGhfbW9jYV9kb21haW4gKEFsaWdubWVudCAqQSwgQ29uc3Ry
YWludF9saXN0ICpDTCk7CkFsaWdubWVudCAqbWFrZV9tb2NhX25vbF9hbG4gKCBBbGlnbm1lbnQg
KkEsIENvbnN0cmFpbnRfbGlzdCAqQ0wpOwoKCgoKCgppbnQgZXZhbHVhdGVfZG9tYWluX2Fsbl96
X3Njb3JlIChBbGlnbm1lbnQgKkEsIGludCBzdGFydCwgaW50IGVuZCxDb25zdHJhaW50X2xpc3Qg
KkNMLCBjaGFyICphbHBoYWJldCk7CmludCBldmFsdWF0ZV9kb21haW5fYWxuICggQWxpZ25tZW50
ICpBLCBpbnQgc3RhcnQsIGludCBlbmQsQ29uc3RyYWludF9saXN0ICpDTCk7CgoKCmludCB1bnBh
Y2tfc2VxX3Jlc2lkdWVzICggaW50ICpzMSwgaW50ICpyMSwgaW50ICpzMiwgaW50ICpyMiwgaW50
ICoqcGFja2VkX3NlcV9sdSk7CkFsaWdubWVudCAqIHVucGFja19zZXFfYWxuICggQWxpZ25tZW50
ICpBLENvbnN0cmFpbnRfbGlzdCAqQyk7CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgTl9DT01QT05F
TlQ7CiAgZG91YmxlICpkb3VibGVfbG9nQl9hbHBoYTsKICBkb3VibGUgKmV4cG9uYW50X2xpc3Q7
CiAgZG91YmxlICoqQUxQSEE7CiAgZG91YmxlICpETV9ROwogIGRvdWJsZSAqYWxwaGFfdG90Owog
IGludCBuX2FhOwogIGludCB0b3RfbjsKfQpNaXh0dXJlOwoKZG91YmxlIGludF9sb2dCIChpbnQg
KmksIGludCBuKTsKZG91YmxlIGZsb2F0X2xvZ0IgKGZsb2F0ICppLCBpbnQgbik7CmRvdWJsZSBk
b3VibGVfbG9nQiAoZG91YmxlICp4LCBpbnQgbik7CmRvdWJsZSAqKiogbWFrZV9sdXBfdGFibGUg
KCBNaXh0dXJlICpEKTsKZG91YmxlIGRvdWJsZV9sb2dCMihpbnQgaiwgZG91YmxlICpuLE1peHR1
cmUgKkQpOwpkb3VibGUgY29tcHV0ZV9leHBvbmFudCAoIGRvdWJsZSAqbiwgaW50IGosIE1peHR1
cmUgKkQpOwoKZG91YmxlICpjb21wdXRlX21hdHJpeF9wICggZG91YmxlICpuLGludCBOc2VxKTsK
ZG91YmxlKiBjb21wdXRlX2RpcmljaGxldF9wICggZG91YmxlICpuLGludCBOc2VxKTsKdm9pZCBw
cmVjb21wdXRlX2xvZ19CICggZG91YmxlICp0YWJsZSxNaXh0dXJlICpEKTsKZG91YmxlIGNvbXB1
dGVfWCAoZG91YmxlICpuLGludCBpLE1peHR1cmUgKkQpOwpNaXh0dXJlICpyZWFkX2RpcmljaGxl
dCAoIGNoYXIgKm5hbWUpOwppbnQgZGlyaWNobGV0X2NvZGUoIGNoYXIgYWEpOwoKZG91YmxlIGxn
YW1tYTIgKCBkb3VibGUgeCk7CmRvdWJsZSBsZ2FtbWFfcihkb3VibGUgeCwgaW50ICpzaWduZ2Ft
cCk7CgoKCgoKQWxpZ25tZW50ICogbWFpbl9jb2ZmZWVfZXZhbHVhdGVfb3V0cHV0ICggQWxpZ25t
ZW50ICpJTixDb25zdHJhaW50X2xpc3QgKkNMLCBjb25zdCBjaGFyICptb2RlICk7CgppbnQgc3Vi
X2FsbjJzdWJfYWxuX3Njb3JlICggQWxpZ25tZW50ICpJTixDb25zdHJhaW50X2xpc3QgKkNMLCBj
b25zdCBjaGFyICptb2RlLCBpbnQgKm5zLCBpbnQgKipscyk7CkFsaWdubWVudCAqIG1haW5fY29m
ZmVlX2V2YWx1YXRlX291dHB1dF9zdWJfYWxuICggQWxpZ25tZW50ICpJTixDb25zdHJhaW50X2xp
c3QgKkNMLCBjb25zdCBjaGFyICptb2RlLCBpbnQgKm5zLCBpbnQgKipscyk7CgpBbGlnbm1lbnQg
KiBjYXRlZ29yaWVzX2V2YWx1YXRlX291dHB1dCAoIEFsaWdubWVudCAqSU4sQ29uc3RyYWludF9s
aXN0ICpDTCk7CkFsaWdubWVudCAqIG1hdHJpeF9ldmFsdWF0ZV9vdXRwdXQgKCBBbGlnbm1lbnQg
KklOLENvbnN0cmFpbnRfbGlzdCAqQ0wpOwpBbGlnbm1lbnQgKiBmYXN0X2NvZmZlZV9ldmFsdWF0
ZV9vdXRwdXQgKCBBbGlnbm1lbnQgKklOLENvbnN0cmFpbnRfbGlzdCAqQ0wpOwoKaW50IHNsb3df
Y29mZmVlX2V2YWx1YXRlX3N1Yl9hbG4gKCBBbGlnbm1lbnQgKklOLGludCAqbnMsIGludCAqKmxz
LCBDb25zdHJhaW50X2xpc3QgKkNMKTsKQWxpZ25tZW50ICogc2xvd19jb2ZmZWVfZXZhbHVhdGVf
b3V0cHV0ICggQWxpZ25tZW50ICpJTixDb25zdHJhaW50X2xpc3QgKkNMKTsKQWxpZ25tZW50ICog
bm9uX2V4dGVuZGVkX3RfY29mZmVlX2V2YWx1YXRlX291dHB1dCggQWxpZ25tZW50ICpJTixDb25z
dHJhaW50X2xpc3QgKkNMKTsKQWxpZ25tZW50ICogaGV1cmlzdGljX2NvZmZlZV9ldmFsdWF0ZV9v
dXRwdXQgKCBBbGlnbm1lbnQgKklOLENvbnN0cmFpbnRfbGlzdCAqQ0wpOwoKQWxpZ25tZW50ICog
Y29mZmVlX2V2YWx1YXRlX291dHB1dCAoIEFsaWdubWVudCAqSU4sQ29uc3RyYWludF9saXN0ICpD
TCk7CgoKCgoKClByb2ZpbGVfY29zdF9mdW5jIGdldF9wcm9maWxlX21vZGVfZnVuY3Rpb24gKGNo
YXIgKm5hbWUsIFByb2ZpbGVfY29zdF9mdW5jIGZ1bmMpOwppbnQgZ2VuZXJpY19ldmFsdWF0ZV9w
cm9maWxlX3Njb3JlIChDb25zdHJhaW50X2xpc3QgKkNMLEFsaWdubWVudCAqUHJmMSwgaW50IHMx
LCBpbnQgcjEsIEFsaWdubWVudCAqUHJmMiwgaW50IHMyLCBpbnQgcjIsIFByb2ZpbGVfY29zdF9m
dW5jIHByZl9wcmYpOwppbnQgY3dfcHJvZmlsZV9wcm9maWxlIChpbnQgKnByZjEsIGludCAqcHJm
MiwgQ29uc3RyYWludF9saXN0ICpDTCk7CmludCBtdXNjbGVfcHJvZmlsZV9wcm9maWxlIChpbnQg
KnByZjEsIGludCAqcHJmMiwgQ29uc3RyYWludF9saXN0ICpDTCk7CgoKCgoKCmludCBldmFsdWF0
ZV9ibGFzdF9wcm9maWxlX3Njb3JlIChDb25zdHJhaW50X2xpc3QgKkNMLCBpbnQgczEsIGludCBy
MSwgaW50IHMyLCBpbnQgcjIpOwppbnQgZXZhbHVhdGVfYWxuX3Byb2ZpbGVfc2NvcmUgKENvbnN0
cmFpbnRfbGlzdCAqQ0wsIGludCBzMSwgaW50IHIxLCBpbnQgczIsIGludCByMik7CgppbnQgZXZh
bHVhdGVfcHJvZmlsZV9zY29yZSAoIENvbnN0cmFpbnRfbGlzdCAqQ0wsQWxpZ25tZW50ICpQcmYx
LCBpbnQgczEsIGludCByMSwgQWxpZ25tZW50ICpQcmYyLCBpbnQgczIsIGludCByMik7CmludCBl
dmFsdWF0ZV9jZG5hX21hdHJpeF9zY29yZSAoIENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBzMSwg
aW50IHIxLCBpbnQgczIsIGludCByMik7CmludCBldmFsdWF0ZV9tYXRyaXhfc2NvcmUgKCBDb25z
dHJhaW50X2xpc3QgKkNMLCBpbnQgczEsIGludCByMSwgaW50IHMyLCBpbnQgcjIpOwppbnQgZXZh
bHVhdGVfY29tYmluZWRfbWF0cml4X3Njb3JlICggQ29uc3RyYWludF9saXN0ICpDTCwgaW50IHMx
LCBpbnQgcjEsIGludCBzMiwgaW50IHIyKTsKaW50IGV2YWx1YXRlX3BoeXNpY29fc2NvcmUgKCBD
b25zdHJhaW50X2xpc3QgKkNMLCBpbnQgczEsIGludCByMSwgaW50IHMyLCBpbnQgcjIpOwppbnQg
cmVzaWR1ZV9wYWlyX25vbl9leHRlbmRlZF9saXN0ICggQ29uc3RyYWludF9saXN0ICpDTCwgaW50
IHMxLCBpbnQgcjEsIGludCBzMiwgaW50IHIyKTsKCmludCByZXNpZHVlX3BhaXJfZXh0ZW5kZWRf
bGlzdCAoIENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBzMSwgaW50IHIxLCBpbnQgczIsIGludCBy
Mik7CmludCByZXNpZHVlX3BhaXJfZXh0ZW5kZWRfbGlzdF9nX2NvZmZlZV9xdWFkcnVwbGV0ICgg
Q29uc3RyYWludF9saXN0ICpDTCwgaW50IHMxLCBpbnQgcjEsIGludCBzMiwgaW50IHIyKTsKaW50
IHJlc2lkdWVfcGFpcl9leHRlbmRlZF9saXN0X2dfY29mZmVlICggQ29uc3RyYWludF9saXN0ICpD
TCwgaW50IHMxLCBpbnQgcjEsIGludCBzMiwgaW50IHIyKTsKaW50IHJlc2lkdWVfcGFpcl9leHRl
bmRlZF9saXN0X3F1YWRydXBsZXQgKCBDb25zdHJhaW50X2xpc3QgKkNMLCBpbnQgczEsIGludCBy
MSwgaW50IHMyLCBpbnQgcjIpOwppbnQgcmVzaWR1ZV9wYWlyX2V4dGVuZGVkX2xpc3RfbWl4dCAo
IENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBzMSwgaW50IHIxLCBpbnQgczIsIGludCByMik7Cmlu
dCByZXNpZHVlX3BhaXJfdGVzdF9mdW5jdGlvbiAoIENvbnN0cmFpbnRfbGlzdCAqQ0wsIGludCBz
MSwgaW50IHIxLCBpbnQgczIsIGludCByMik7CmludCBleHRlbmRfcmVzaWR1ZV9wYWlyICggQ29u
c3RyYWludF9saXN0ICpDTCwgaW50IHMxLCBpbnQgcjEsIGludCBzMiwgaW50IHIyKTsKCmludCBy
ZXNpZHVlX3BhaXJfcmVsYXRpdmVfZXh0ZW5kZWRfbGlzdCAoIENvbnN0cmFpbnRfbGlzdCAqQ0ws
IGludCBzMSwgaW50IHIxLCBpbnQgczIsIGludCByMiApOwoKCgoKCmludCBnZXRfZHBfY29zdF9i
bG9zdW1fbWF0cml4IChBbGlnbm1lbnQgKkEsIGludCoqcG9zMSwgaW50IG5zMSwgaW50Kmxpc3Qx
LCBpbnQgY29sMSwgaW50Kipwb3MyLCBpbnQgbnMyLCBpbnQqbGlzdDIsIGludCBjb2wyLCBDb25z
dHJhaW50X2xpc3QgKkNMKTsKaW50IGdldF9kcF9jb3N0X3BhbV9tYXRyaXggKEFsaWdubWVudCAq
QSwgaW50Kipwb3MxLCBpbnQgbnMxLCBpbnQqbGlzdDEsIGludCBjb2wxLCBpbnQqKnBvczIsIGlu
dCBuczIsIGludCpsaXN0MiwgaW50IGNvbDIsIENvbnN0cmFpbnRfbGlzdCAqQ0wpOwppbnQgZ2V0
X2RwX2Nvc3RfcHdfbWF0cml4IChBbGlnbm1lbnQgKkEsIGludCoqcG9zMSwgaW50IG5zMSwgaW50
Kmxpc3QxLCBpbnQgY29sMSwgaW50Kipwb3MyLCBpbnQgbnMyLCBpbnQqbGlzdDIsIGludCBjb2wy
LCBDb25zdHJhaW50X2xpc3QgKkNMKTsKCmludCBnZXRfY2RuYV9iZXN0X2ZyYW1lX2RwX2Nvc3Qg
KCBBbGlnbm1lbnQgKkEsIGludCoqcG9zMSwgaW50IG5zMSwgaW50Kmxpc3QxLCBpbnQgY29sMSwg
aW50Kipwb3MyLCBpbnQgbnMyLCBpbnQqbGlzdDIsIGludCBjb2wyLCBDb25zdHJhaW50X2xpc3Qg
KkNMKTsKaW50IGdldF9kcF9jb3N0ICggQWxpZ25tZW50ICpBLCBpbnQqKnBvczEsIGludCBuczEs
IGludCpsaXN0MSwgaW50IGNvbDEsIGludCoqcG9zMiwgaW50IG5zMiwgaW50Kmxpc3QyLCBpbnQg
Y29sMiwgQ29uc3RyYWludF9saXN0ICpDTCk7CmludCBnZXRfZHBfY29zdF9xdWFkcnVwbGV0ICgg
QWxpZ25tZW50ICpBLCBpbnQqKnBvczEsIGludCBuczEsIGludCpsaXN0MSwgaW50IGNvbDEsIGlu
dCoqcG9zMiwgaW50IG5zMiwgaW50Kmxpc3QyLCBpbnQgY29sMiwgQ29uc3RyYWludF9saXN0ICpD
TCk7CgoKaW50IHZlcnlfZmFzdF9nZXRfZHBfY29zdCAoIEFsaWdubWVudCAqQSwgaW50Kipwb3Mx
LCBpbnQgbnMxLCBpbnQqbGlzdDEsIGludCBjb2wxLCBpbnQqKnBvczIsIGludCBuczIsIGludCps
aXN0MiwgaW50IGNvbDIsIENvbnN0cmFpbnRfbGlzdCAqQ0wpOwppbnQgc3VwZXJfZmFzdF9nZXRf
ZHBfY29zdCAoIEFsaWdubWVudCAqQSwgaW50Kipwb3MxLCBpbnQgbnMxLCBpbnQqbGlzdDEsIGlu
dCBjb2wxLCBpbnQqKnBvczIsIGludCBuczIsIGludCpsaXN0MiwgaW50IGNvbDIsIENvbnN0cmFp
bnRfbGlzdCAqQ0wpOwppbnQgc3VwZXJfZmFzdF9nZXRfZHBfY29zdDIgKCBBbGlnbm1lbnQgKkEs
IGludCoqcG9zMSwgaW50IG5zMSwgaW50Kmxpc3QxLCBpbnQgY29sMSwgaW50Kipwb3MyLCBpbnQg
bnMyLCBpbnQqbGlzdDIsIGludCBjb2wyLCBDb25zdHJhaW50X2xpc3QgKkNMKTsKCmludCBmYXN0
X2dldF9kcF9jb3N0ICggQWxpZ25tZW50ICpBLCBpbnQqKnBvczEsIGludCBuczEsIGludCpsaXN0
MSwgaW50IGNvbDEsIGludCoqcG9zMiwgaW50IG5zMiwgaW50Kmxpc3QyLCBpbnQgY29sMiwgQ29u
c3RyYWludF9saXN0ICpDTCk7CmludCBmYXN0X2dldF9kcF9jb3N0XzIgKCBBbGlnbm1lbnQgKkEs
IGludCoqcG9zMSwgaW50IG5zMSwgaW50Kmxpc3QxLCBpbnQgY29sMSwgaW50Kipwb3MyLCBpbnQg
bnMyLCBpbnQqbGlzdDIsIGludCBjb2wyLCBDb25zdHJhaW50X2xpc3QgKkNMKTsKaW50IGZhc3Rf
Z2V0X2RwX2Nvc3RfcXVhZHJ1cGxldCAoIEFsaWdubWVudCAqQSwgaW50Kipwb3MxLCBpbnQgbnMx
LCBpbnQqbGlzdDEsIGludCBjb2wxLCBpbnQqKnBvczIsIGludCBuczIsIGludCpsaXN0MiwgaW50
IGNvbDIsIENvbnN0cmFpbnRfbGlzdCAqQ0wpOwoKaW50IHNsb3dfZ2V0X2RwX2Nvc3QgKCBBbGln
bm1lbnQgKkEsIGludCoqcG9zMSwgaW50IG5zMSwgaW50Kmxpc3QxLCBpbnQgY29sMSwgaW50Kipw
b3MyLCBpbnQgbnMyLCBpbnQqbGlzdDIsIGludCBjb2wyLCBDb25zdHJhaW50X2xpc3QgKkNMKTsK
aW50IHNsb3dfZ2V0X2RwX2Nvc3RfdGVzdCAoIEFsaWdubWVudCAqQSwgaW50Kipwb3MxLCBpbnQg
bnMxLCBpbnQqbGlzdDEsIGludCBjb2wxLCBpbnQqKnBvczIsIGludCBuczIsIGludCpsaXN0Miwg
aW50IGNvbDIsIENvbnN0cmFpbnRfbGlzdCAqQ0wpOwoKaW50IHN3X2dldF9kcF9jb3N0ICggQWxp
Z25tZW50ICpBLCBpbnQqKnBvczEsIGludCBuczEsIGludCpsaXN0MSwgaW50IGNvbDEsIGludCoq
cG9zMiwgaW50IG5zMiwgaW50Kmxpc3QyLCBpbnQgY29sMiwgQ29uc3RyYWludF9saXN0ICpDTCk7
CmludCBnZXRfZG9tYWluX2RwX2Nvc3QgKCBBbGlnbm1lbnQgKkEsIGludCoqcG9zMSwgaW50IG5z
MSwgaW50Kmxpc3QxLCBpbnQgY29sMSwgaW50Kipwb3MyLCBpbnQgbnMyLCBpbnQqbGlzdDIsIGlu
dCBjb2wyLENvbnN0cmFpbnRfbGlzdCAqQ0wgLCBpbnQgc2NhbGUgLCBpbnQgZ29wLCBpbnQgZ2Vw
KTsKCgoKCgoKZmxvYXQgKiogaW5pdGlhbGlzZV9hYV9waHlzaWNvX2NoZW1pY2FsX3Byb3BlcnR5
X3RhYmxlIChpbnQgKm4pOwppbnQgYWxuMm5fcmVzICggQWxpZ25tZW50ICpBLCBpbnQgc3RhcnQs
IGludCBlbmQpOwpmbG9hdCBnZXRfZ29wX3NjYWxpbmdfZmFjdG9yICggaW50ICoqbWF0cml4LGZs
b2F0IGlkLCBpbnQgbDEsIGludCBsMik7CmZsb2F0IGdldF9hdmdfbWF0cml4X21tICggaW50ICoq
bWF0cml4LCBjaGFyICphbHBoYWJldCk7CmZsb2F0IGdldF9hdmdfbWF0cml4X21hdGNoICggaW50
ICoqbWF0cml4LCBjaGFyICphbHBoYWJldCk7CmZsb2F0IGdldF9hdmdfbWF0cml4X2RpZmYgKCBp
bnQgKiptYXRyaXgxLGludCAqKm1hdHJpeDIsIGNoYXIgKmFscGhhYmV0KTsKZmxvYXQgbWVhc3Vy
ZV9tYXRyaXhfZW50aHJvcHkgKGludCAqKm1hdHJpeCxjaGFyICphbHBoYWJldCk7CmZsb2F0IG1l
YXN1cmVfbWF0cml4X3Bvc19hdmcgKGludCAqKm1hdHJpeCxjaGFyICphbHBoYWJldCk7CmZsb2F0
IGV2YWx1YXRlX3JhbmRvbV9tYXRjaCAoY2hhciAqbWF0cml4LCBpbnQgbiwgaW50IGxlbixjaGFy
ICphbHApOwpmbG9hdCBjb21wYXJlX3R3b19tYXQgKGNoYXIgKm1hdDEsY2hhciptYXQyLCBpbnQg
biwgaW50IGxlbixjaGFyICphbHApOwpmbG9hdCBjb21wYXJlX3R3b19tYXRfYXJyYXkgKGludCAq
Km1hdHJpeDEsaW50ICoqbWF0cml4MiwgaW50IG4sIGludCBsZW4sY2hhciAqYWxwKTsKaW50ICoq
IHJlc2NhbGVfdHdvX21hdCAoY2hhciAqbWF0MSxjaGFyKm1hdDIsIGludCBuLCBpbnQgbGVuLGNo
YXIgKmFscCk7CmludCAqKiByZXNjYWxlX21hdHJpeCAoIGludCAqKm1hdCwgZmxvYXQgbGFtYmRh
LCBjaGFyICphbHApOwp2b2lkIG91dHB1dF9tYXRyaXhfaGVhZGVyICggY2hhciAqbmFtZSwgaW50
ICoqbWF0cml4LCBjaGFyICphbHApOwpmbG9hdCBldmFsdWF0ZV9yYW5kb21fbWF0Y2gyIChpbnQg
KiptYXRyaXgsIGludCBuLCBpbnQgbGVuLGNoYXIgKmFscCk7CmZsb2F0IG1lYXN1cmVfbGFtYmRh
MihjaGFyICptYXQxLGNoYXIqbWF0MiwgaW50IG4sIGludCBsZW4sY2hhciAqYWxwKTsKZmxvYXQg
bWVhc3VyZV9sYW1iZGEoY2hhciAqbWF0MSxjaGFyKm1hdDIsIGludCBuLCBpbnQgbGVuLGNoYXIg
KmFscCk7CkNvbnN0cmFpbnRfbGlzdCAqIGNob29zZV9leHRlbnNpb25fbW9kZSAoIGNoYXIgKmV4
dGVuZF9tb2RlLCBDb25zdHJhaW50X2xpc3QgKkNMKTsKaW50ICoqIGNvbWJpbmVfdHdvX21hdHJp
Y2VzICggaW50ICoqbWF0MSwgaW50ICoqbWF0Mik7CmludCAqKiBzaG93X3BhaXIoaW50IGlzdGFy
dCwgaW50IGllbmQsIGludCBqc3RhcnQsIGludCBqZW5kLCBpbnQgKnNlcWxlbl9hcnJheSwgY2hh
ciAqKnNlcV9hcnJheSwgaW50IGRuYV9rdHVwLCBpbnQgZG5hX3dpbmRvdywgaW50IGRuYV93aW5k
X2dhcCwgaW50IGRuYV9zaWduaWYsaW50IHByb3Rfa3R1cCwgaW50IHByb3Rfd2luZG93LGludCBw
cm90X3dpbmRfZ2FwLGludCBwcm90X3NpZ25pZiwgaW50IG5zZXFzLGludCBkbmFmbGFnLCBpbnQg
bWF4X2FhLCBpbnQgbWF4X2Fsbl9sZW5ndGggKTsKCgpzdHJ1Y3QgSG1tCnsKCiAgZG91YmxlIGZy
ZWVUOwogIGRvdWJsZSBmb3JiaWRlbjsKICBpbnQgc3RhcnQ7CiAgaW50IGVuZDsKCiAgaW50IG5T
OwogIGludCBvcmRlcjsKICBzdHJ1Y3QgSG1tU3RhdGUgKipTOwoKCiAgZG91YmxlICoqVDsKICBp
bnQgKipmcm9tTTsKICBpbnQgKip0b007CgoKCn07CnR5cGVkZWYgc3RydWN0IEhtbSBIbW07Cgpz
dHJ1Y3QgSG1tQWxuCnsKICBIbW0gKkg7CiAgaW50ICpzdGF0ZV9saXN0Owp9Owp0eXBlZGVmIHN0
cnVjdCBIbW1BbG4gSG1tQWxuOwoKdHlwZWRlZiBkb3VibGUgKCpHZW5lcmljX2VtX2Z1bmMpKHN0
cnVjdCBIbW0qLCBzdHJ1Y3QgSG1tU3RhdGUqLCBpbnQpOwoKc3RydWN0IEhtbVN0YXRlCnsKY2hh
ciBuYW1lWzEwMF07CmNoYXIgc3RhdGU7CmludCBESjsKaW50IERJOwoKCmRvdWJsZSBlbTsKQ29s
X2Nvc3RfZnVuYyBlbV9mdW5jOwoKCmRvdWJsZSAqZW0yOwpHZW5lcmljX2VtX2Z1bmMgZW1fZnVu
YzI7CmludCBuVDsKc3RydWN0IFN0YXRlVHJhbnMgKipUOwp9Owp0eXBlZGVmIHN0cnVjdCBIbW1T
dGF0ZSBIbW1TdGF0ZTsKCnN0cnVjdCBTdGF0ZVRyYW5zCnsKICBjaGFyIG5hbWVbMTAxXTsKICBk
b3VibGUgdHI7Cn07CnR5cGVkZWYgc3RydWN0IFN0YXRlVHJhbnMgU3RhdGVUcmFuczsKCnN0cnVj
dCBNYXRTdGF0ZQp7CiAgaW50IGk7CiAgaW50IGo7CiAgaW50IHN0OwogIGludCBwc3Q7CiAgZG91
YmxlIHNjOwogIHN0cnVjdCBNYXRTdGF0ZSAqbjsKICBzdHJ1Y3QgTWF0U3RhdGUgKnA7CiAgc3Ry
dWN0IE1hdFN0YXRlICptOwogIHN0cnVjdCBNYXRTdGF0ZSAqczsKCiAgc3RydWN0IE1hdFN0YXRl
ICpIbjsKICBzdHJ1Y3QgTWF0U3RhdGUgKkhwOwoKICBzdHJ1Y3QgTWF0U3RhdGUgKk1uOwogIHN0
cnVjdCBNYXRTdGF0ZSAqTXA7CiAgaW50IGZyZWU7Cn07CnR5cGVkZWYgc3RydWN0IE1hdFN0YXRl
IE1hdFN0YXRlOwojIDYxMCAiZHBfbGliX2hlYWRlci5oIgppbnQgc2VxX3ZpdGVyYmlfcGFpcl93
aXNlIChBbGlnbm1lbnQgKkEsaW50Km5zLCBpbnQgKipscyxDb25zdHJhaW50X2xpc3QgKkNMKTsK
IyA2MjAgImRwX2xpYl9oZWFkZXIuaCIKaW50IHZpdGVyYmlfcGFpcl93aXNlIChBbGlnbm1lbnQg
KkEsaW50Km5zLCBpbnQgKipscyxDb25zdHJhaW50X2xpc3QgKkNMKTsKQWxpZ25tZW50ICogdml0
ZXJiaXBhdGgyYWxuIChBbGlnbm1lbnQgKkEsIGludCAqbnMsaW50ICoqbHMsaW50ICp0YiwgSG1t
ICpIKTsKZG91YmxlKioqIHZpdGVyYmlfaG1tIChBbGlnbm1lbnQgKkEsaW50ICpucywgaW50ICoq
bHMsIEhtbSAqSCwgQ29uc3RyYWludF9saXN0ICpDTCk7CmludCAqIHZpdGVyYmkycGF0aCAoaW50
IGwxLGludCBsMiwgSG1tICpILCBkb3VibGUgKioqTSk7CgoKCgoKCgppbnQgdml0ZXJiaUxfcGFp
cl93aXNlIChBbGlnbm1lbnQgKkEsaW50Km5zLCBpbnQgKipscyxDb25zdHJhaW50X2xpc3QgKkNM
KTsKTWF0U3RhdGUqIFJ2aXRlcmJpTF9obW0gKEFsaWdubWVudCAqQSxpbnQgKm5zLCBpbnQgKips
cywgSG1tICpILCBDb25zdHJhaW50X2xpc3QgKkNMLE1hdFN0YXRlICpTLCBNYXRTdGF0ZSAqRSk7
Ck1hdFN0YXRlKiB2aXRlcmJpTF9obW0gKEFsaWdubWVudCAqQSxpbnQgKm5zLCBpbnQgKipscywg
SG1tICpILCBDb25zdHJhaW50X2xpc3QgKkNMLCBNYXRTdGF0ZSAqUywgTWF0U3RhdGUgKkUpOwoK
aW50IHZpdGVyYmlEX3BhaXJfd2lzZSAoQWxpZ25tZW50ICpBLGludCpucywgaW50ICoqbHMsQ29u
c3RyYWludF9saXN0ICpDTCk7CmRvdWJsZSBsdV9Sdml0ZXJiaURfaG1tIChBbGlnbm1lbnQgKkEs
aW50ICpucywgaW50ICoqbHMsIEhtbSAqSCwgQ29uc3RyYWludF9saXN0ICpDTCxNYXRTdGF0ZSAq
UywgTWF0U3RhdGUgKkUsIGludCAqKnNlZ19saXN0KTsKTWF0U3RhdGUqIFJ2aXRlcmJpRF9obW0g
KEFsaWdubWVudCAqQSxpbnQgKm5zLCBpbnQgKipscywgSG1tICpILCBDb25zdHJhaW50X2xpc3Qg
KkNMLE1hdFN0YXRlICpTLCBNYXRTdGF0ZSAqRSwgaW50ICoqc2VnX2xpc3QpOwpNYXRTdGF0ZSog
dml0ZXJiaURfaG1tIChBbGlnbm1lbnQgKkEsaW50ICpucywgaW50ICoqbHMsIEhtbSAqSCwgQ29u
c3RyYWludF9saXN0ICpDTCwgTWF0U3RhdGUgKlMsIE1hdFN0YXRlICpFLCBpbnQgKipzZWdfbGlz
dCk7CmludCAqKnNlZ2xpc3QydGFibGUgKCBpbnQgKipzZWdsaXN0LGludCBsMSwgaW50IGwyKTsK
aW50ICpzZWdsaXN0MmxpbmUgKCBpbnQgKipzZWdsaXN0LCBpbnQgbGluZSwgaW50IHN0YXJ0LCBp
bnQgZW5kKTsKaW50ICogdHJhY2ViYWNrIChBbGlnbm1lbnQgKkEsaW50ICpucywgaW50ICoqbHMs
IEhtbSAqSCwgQ29uc3RyYWludF9saXN0ICpDTCxNYXRTdGF0ZSAqUywgTWF0U3RhdGUgKkUsIGlu
dCAqKnNlZ19saXN0KTsKCmludCB2aXRlcmJpREdMX3BhaXJfd2lzZSAoQWxpZ25tZW50ICpBLGlu
dCpucywgaW50ICoqbHMsQ29uc3RyYWludF9saXN0ICpDTCk7CmRvdWJsZSBsdV9Sdml0ZXJiaURH
TF9obW0gKEFsaWdubWVudCAqQSxpbnQgKm5zLCBpbnQgKipscywgSG1tICpILCBDb25zdHJhaW50
X2xpc3QgKkNMLE1hdFN0YXRlICpTLCBNYXRTdGF0ZSAqRSwgaW50ICoqc2VnX2xpc3QpOwpNYXRT
dGF0ZSogUnZpdGVyYmlER0xfaG1tIChBbGlnbm1lbnQgKkEsaW50ICpucywgaW50ICoqbHMsIEht
bSAqSCwgQ29uc3RyYWludF9saXN0ICpDTCxNYXRTdGF0ZSAqUywgTWF0U3RhdGUgKkUsIGludCAq
KnNlZ19saXN0KTsKTWF0U3RhdGUqIHZpdGVyYmlER0xfaG1tIChBbGlnbm1lbnQgKkEsaW50ICpu
cywgaW50ICoqbHMsIEhtbSAqSCwgQ29uc3RyYWludF9saXN0ICpDTCxNYXRTdGF0ZSAqUywgTWF0
U3RhdGUgKkUsIGludCAqKnNlZ19saXN0KTsKIyA2NTYgImRwX2xpYl9oZWFkZXIuaCIKaW50IE1h
dFN0YXRlQXJlSWRlbnRpY2FsIChNYXRTdGF0ZSpJLCBNYXRTdGF0ZSpPKTsKaW50IE1heERlbHRh
TWF0U3RhdGUgKE1hdFN0YXRlKkksIE1hdFN0YXRlKk8pOwppbnQgTWluRGVsdGFNYXRTdGF0ZSAo
TWF0U3RhdGUqSSwgTWF0U3RhdGUqTyk7CgpNYXRTdGF0ZSAqIE1hbmFnZU1hdFN0YXRlKGludCBN
b2RlLCBNYXRTdGF0ZSAqQyk7Ck1hdFN0YXRlKiBDb3B5TWF0U3RhdGUgKCBNYXRTdGF0ZSpJLCBN
YXRTdGF0ZSpPKTsKCkhtbSogcmVhZF9obW0oY2hhciAqZmlsZSk7CkhtbSogZGVjbGFyZV9obW0o
aW50IG4pOwpIbW0qIGZyZWVfSG1tKEhtbSpIKTsKdm9pZCBEaXNwbGF5SG1tICggSG1tICpIKTsK
IyA2NzUgImRwX2xpYl9oZWFkZXIuaCIKSG1tKiBkZWZpbmVfdHdvX21hdF9tb2RlbChDb25zdHJh
aW50X2xpc3QgKkNMKTsKSG1tKiBkZWZpbmVfcHJvYmNvbnNfbW9kZWwoQ29uc3RyYWludF9saXN0
ICpDTCk7CkhtbSogZGVmaW5lX3NpbXBsZV9tb2RlbChDb25zdHJhaW50X2xpc3QgKkNMKTsKCkht
bSAqIGJvdW5kX2htbSAoIEhtbSAqSCk7ClNlcXVlbmNlICpwYXZpZV9zZXEycmFuZG9tX3NlcSAo
U2VxdWVuY2UgKlMsIGNoYXIgKnN1YnN0KTsKZmxvYXQgKipwYXZpZV9zZXEycGF2aWVfYWxuKFNl
cXVlbmNlICpTLGNoYXIgKm1hdCwgY2hhciAqbW9kZSk7CmludCAqKnBhdmllX3NlcTJ0cmFpbmVk
X3BhdmllX21hdChTZXF1ZW5jZSAqUywgY2hhciAqcGFyYW0pOwppbnQgcGF2aWVfcGFpcl93aXNl
IChBbGlnbm1lbnQgKkEsaW50ICpucywgaW50ICoqbF9zLENvbnN0cmFpbnRfbGlzdCAqQ0wgKTsK
IyAxMCAidXRpbF9kcF9zaW0uYyIgMgoKCgp2b2lkKiBzaW1fdmNhbGxvYyggc2l6ZV90IG5vYmos
IHNpemVfdCBzaXplKTsKdm9pZCBzaW1fZnJlZV9hbGwgKCk7CmludCBzaW1fcmVzZXRfc3RhdGlj
X3ZhcmlhYmxlICgpOwpDb25zdHJhaW50X2xpc3QgKkNMOwpzdGF0aWMgaW50ICogbnM7CnN0YXRp
YyBpbnQgKipsX3M7CnN0YXRpYyBBbGlnbm1lbnQgKkFsbjsKc3RhdGljIGludCAqKnBvczsKc3Rh
dGljIGludCAqc2VxYzAsICpzZXFjMTsKc3RhdGljIGludCBtaW4wLG1pbjEsbWF4MCxtYXgxLG1p
bnM7CgoKCmludCBnc2NvcmU7CgoKCgoKCnN0YXRpYyBpbnQgcSwgcjsKc3RhdGljIGludCBxcjsK
Cgp0eXBlZGVmIHN0cnVjdCBPTkUgeyBpbnQgQ09MIDsgc3RydWN0IE9ORSAqTkVYVCA7fSBwYWly
LCAqcGFpcnB0cjsKcGFpcnB0ciAqcm93LCB6LCB6MTsKCgoKc3RhdGljIGludCB0dDsKCnR5cGVk
ZWYgc3RydWN0IFNJTV9OT0RFCiB7IGludCBTSU1fU0NPUkU7CiAgIGludCBTSU1fU1RBUkk7CiAg
IGludCBTSU1fU1RBUko7CiAgIGludCBTSU1fRU5ESTsKICAgaW50IFNJTV9FTkRKOwogICBpbnQg
U0lNX1RPUDsKICAgaW50IFNJTV9CT1Q7CiAgIGludCBTSU1fTEVGVDsKICAgaW50IFNJTV9SSUdI
VDsgfSB2ZXJ0ZXgsCgoKCiAgICAgKnZlcnRleHB0cjsKCgp2ZXJ0ZXhwdHIgKkxJU1Q7CnZlcnRl
eHB0ciBsb3cgPSAwOwp2ZXJ0ZXhwdHIgbW9zdCA9IDA7CnN0YXRpYyBpbnQgbnVtbm9kZTsKCnN0
YXRpYyBpbnQgKkNDLCAqREQ7CnN0YXRpYyBpbnQgKlJSLCAqU1MsICpFRSwgKkZGOwpzdGF0aWMg
aW50ICpISCwgKldXOwpzdGF0aWMgaW50ICpJSSwgKkpKLCAqWFgsICpZWTsKc3RhdGljIGludCBt
MSwgbW0sIG4xLCBubjsKc3RhdGljIGludCBybCwgY2w7CnN0YXRpYyBpbnQgbG1pbjsKc3RhdGlj
IGludCBmbGFnOwojIDk5ICJ1dGlsX2RwX3NpbS5jIgpzdGF0aWMgaW50IGRpZmZfc2ltKCksIGRp
c3BsYXkoKSxjYWxjb25zKCk7CnN0YXRpYyBpbnQgemVybyA9IDA7CgoKCnN0YXRpYyBpbnQgKnNh
cHA7CnN0YXRpYyBpbnQgbGFzdDsKCnN0YXRpYyBpbnQgSSwgSjsKc3RhdGljIGludCBub19tYXQ7
CnN0YXRpYyBpbnQgbm9fbWlzOwpzdGF0aWMgaW50IGFsX2xlbjsKIyAxNDkgInV0aWxfZHBfc2lt
LmMiCmludCBzaW1fcGFpcl93aXNlX2xhbGlnbiAoQWxpZ25tZW50ICppbl9BLCBpbnQgKmluX25z
LCBpbnQgKippbl9sX3MsQ29uc3RyYWludF9saXN0ICppbl9DTCkKCgoKCgp7CiAgaW50IGVuZGks
IGVuZGosIHN0YXJpLCBzdGFyajsKICBpbnQgc2NvcmU7CiAgaW50IGNvdW50OwogIGludCBpOwog
IGludCAqUzsKICBpbnQgbmMsIG5pZGVudDsKICB2ZXJ0ZXhwdHIgY3VyOwogIHZlcnRleHB0ciBm
aW5kbWF4KCk7CiAgZG91YmxlIHBlcmNlbnQ7CiAgaW50IHQxLCB0MiwgZzEsIGcyLCByMSwgcjI7
CiAgaW50IGEsIGIsIGMsIGQsIGU7CgogIGludCBDRURSSUNfTUFYX05fQUxOPTk5OTsKICBpbnQg
Q0VEUklDX1RIUkVTSE9MRD01MDsKICBpbnQgKkEsICpCOwogIGludCBNLCBOLCBLLCBtYXhsOwog
IGludCBuc2VxOwogIGludCBSLCBROwogIEFsaWdubWVudCAqREE7CgoKICBEQT1pbl9BOwoKICBB
bG49Y29weV9hbG4gKGluX0EsICgodm9pZCAqKTApKTsKCgoKICBsX3M9aW5fbF9zOwogIG5zPWlu
X25zOwogIENMPWluX0NMOwogIEs9Q0wtPmxhbGlnbl9uX3RvcDsKCiAgTT1zdHJsZW4gKEFsbi0+
c2VxX2FsW2xfc1swXVswXV0pOwogIE49c3RybGVuIChBbG4tPnNlcV9hbFtsX3NbMV1bMF1dKTsK
ICBtYXhsPU0rTisxOwoKICBwb3M9YWxuMnBvc19zaW1wbGUgKEFsbiwtMSwgbnMsIGxfcyk7Cgog
IHNlcWMwPShpbnQqKXNpbV92Y2FsbG9jIChtYXhsLHNpemVvZiAoaW50KSk7CiAgQT0oaW50Kilz
aW1fdmNhbGxvYyAobWF4bCxzaXplb2YgKGludCkpOwogIGZvciAoIGE9MDsgYTxtYXhsOyBhKysp
e3NlcWMwW2FdPUFbYV09YTt9CiAgQVtNKzFdPSdcMCc7CgogIHNlcWMxPShpbnQqKXNpbV92Y2Fs
bG9jIChtYXhsLHNpemVvZiAoaW50KSk7CiAgQj0oaW50KilzaW1fdmNhbGxvYyAobWF4bCxzaXpl
b2YgKGludCkpOwogIGZvciAoIGE9MDsgYTxtYXhsOyBhKyspe3NlcWMxW2FdPUJbYV09YTt9CiAg
QltOKzFdPSdcMCc7CgogIG5zZXE9KGxfc1swXVswXSE9bF9zWzFdWzBdKT8yOjE7CgoKICBRPSgo
KENMLT5nb3ApID4oLUNMLT5nb3ApKSA/IChDTC0+Z29wKTooLUNMLT5nb3ApKSoxMDsKICBSPSgo
KENMLT5nZXApID4oLUNMLT5nZXApKSA/IChDTC0+Z2VwKTooLUNMLT5nZXApKSoxMDsKCgoKICBp
ZiAoIEs9PUNFRFJJQ19NQVhfTl9BTE4pSy0tOwogIGVsc2UgaWYgKCBLPDApCiAgICAgIHsKCiAg
ICAgICBDRURSSUNfVEhSRVNIT0xEPS1LOwogICAgICAgSz1DRURSSUNfTUFYX05fQUxOOwogICAg
ICB9CgoKCiAgQ0MgPSAoIGludCAqICkgc2ltX3ZjYWxsb2MoTisxLCBzaXplb2YoaW50KSk7CiAg
REQgPSAoIGludCAqICkgc2ltX3ZjYWxsb2MoTisxLCBzaXplb2YoaW50KSk7CiAgUlIgPSAoIGlu
dCAqICkgc2ltX3ZjYWxsb2MoTisxLCBzaXplb2YoaW50KSk7CiAgU1MgPSAoIGludCAqICkgc2lt
X3ZjYWxsb2MoTisxLCBzaXplb2YoaW50KSk7CiAgRUUgPSAoIGludCAqICkgc2ltX3ZjYWxsb2Mo
TisxLCBzaXplb2YoaW50KSk7CiAgRkYgPSAoIGludCAqICkgc2ltX3ZjYWxsb2MoTisxLCBzaXpl
b2YoaW50KSk7CgogIEhIID0gKCBpbnQgKiApIHNpbV92Y2FsbG9jKE0gKyAxLCBzaXplb2YoaW50
KSk7CiAgV1cgPSAoIGludCAqICkgc2ltX3ZjYWxsb2MoTSArIDEsIHNpemVvZihpbnQpKTsKICBJ
SSA9ICggaW50ICogKSBzaW1fdmNhbGxvYyhNICsgMSwgc2l6ZW9mKGludCkpOwogIEpKID0gKCBp
bnQgKiApIHNpbV92Y2FsbG9jKE0gKyAxLCBzaXplb2YoaW50KSk7CiAgWFggPSAoIGludCAqICkg
c2ltX3ZjYWxsb2MoTSArIDEsIHNpemVvZihpbnQpKTsKICBZWSA9ICggaW50ICogKSBzaW1fdmNh
bGxvYyhNICsgMSwgc2l6ZW9mKGludCkpOwogIFMgPSAoIGludCAqICkgc2ltX3ZjYWxsb2MoKChN
KTw9KE4pID8gKE0pIDogKE4pKSo1LzQrMSwgc2l6ZW9mIChpbnQpKTsKICByb3cgPSAoIHBhaXJw
dHIgKiApIHNpbV92Y2FsbG9jKCAoTSArIDEpLCBzaXplb2YocGFpcnB0cikpOwoKCgogIGlmIChu
c2VxID09IDIpIGZvciAoIGkgPSAxOyBpIDw9IE07IGkrKyApIHJvd1tpXT0gKHBhaXJwdHIpKCh2
b2lkICopMCk7CiAgZWxzZSB7CiAgIHogPSAoIHBhaXJwdHIgKXNpbV92Y2FsbG9jIChNLChpbnQp
c2l6ZW9mKHBhaXIpKTsKICAgZm9yICggaSA9IDE7IGkgPD0gTTsgaSsrLHorKykgewogICAgcm93
W2ldID0gejsKICAgIHotPkNPTCA9IGk7CiAgICB6LT5ORVhUID0gKHBhaXJwdHIpKCh2b2lkICop
MCk7CiAgIH0KICB9CgoKICBxID0gUTsKICByID0gUjsKICBxciA9IHEgKyByOwoKICBMSVNUID0g
KCB2ZXJ0ZXhwdHIgKiApIHNpbV92Y2FsbG9jKCBLLCBzaXplb2YodmVydGV4cHRyKSk7CiAgZm9y
ICggaSA9IDA7IGkgPCBLIDsgaSsrICkKICAgIExJU1RbaV0gPSAoIHZlcnRleHB0ciApc2ltX3Zj
YWxsb2MoIDEsIHNpemVvZih2ZXJ0ZXgpKTsKCgogIG51bW5vZGUgPSBsbWluID0gMDsKICBiaWdf
cGFzcyhBLEIsTSxOLEssbnNlcSk7CiMgMjcwICJ1dGlsX2RwX3NpbS5jIgogIGZvciAoIGNvdW50
ID0gSyAtIDE7IGNvdW50ID49IDA7IGNvdW50LS0gKQogICAgeyBpZiAoIG51bW5vZGUgPT0gMCAp
CiAgICAgICAgewoKICAgcGFkZF9hbG4gKGluX0EpOwoKICAgc2ltX2ZyZWVfYWxsKCk7CiAgIHJl
dHVybiAxOwogfQoKICAgICAgY3VyID0gZmluZG1heCgpOwogICAgICBzY29yZSA9IGN1ci0+U0lN
X1NDT1JFOwogICAgICBpZiAoIEs9PUNFRFJJQ19NQVhfTl9BTE4gJiYgc2NvcmU8Q0VEUklDX1RI
UkVTSE9MRClicmVhazsKICAgICAgc3RhcmkgPSArK2N1ci0+U0lNX1NUQVJJOwogICAgICBzdGFy
aiA9ICsrY3VyLT5TSU1fU1RBUko7CiAgICAgIGVuZGkgPSBjdXItPlNJTV9FTkRJOwogICAgICBl
bmRqID0gY3VyLT5TSU1fRU5ESjsKICAgICAgbTEgPSBjdXItPlNJTV9UT1A7CiAgICAgIG1tID0g
Y3VyLT5TSU1fQk9UOwogICAgICBuMSA9IGN1ci0+U0lNX0xFRlQ7CiAgICAgIG5uID0gY3VyLT5T
SU1fUklHSFQ7CiAgICAgIHJsID0gZW5kaSAtIHN0YXJpICsgMTsKICAgICAgY2wgPSBlbmRqIC0g
c3RhcmogKyAxOwogICAgICBJID0gc3RhcmkgLSAxOwogICAgICBKID0gc3RhcmogLSAxOwogICAg
ICBzYXBwID0gUzsKICAgICAgbGFzdCA9IDA7CiAgICAgIGFsX2xlbiA9IDA7CiAgICAgIG5vX21h
dCA9IDA7CiAgICAgIG5vX21pcyA9IDA7CiAgICAgIGRpZmZfc2ltKCZBW3N0YXJpXS0xLCAmQltz
dGFyal0tMSxybCxjbCxxLHEpOwoKCiAgICAgIG1pbjAgPSBzdGFyaTsKICAgICAgbWluMSA9IHN0
YXJqOwogICAgICBtYXgwID0gc3RhcmkrcmwtMTsKICAgICAgbWF4MSA9IHN0YXJqK2NsLTE7CiAg
ICAgIGNhbGNvbnMoQSsxLE0sQisxLE4sUywmbmMsJm5pZGVudCwgQWxuLG5zLCBsX3MsIENMKTsK
ICAgICAgcGVyY2VudCA9IChkb3VibGUpbmlkZW50KjEwMC4wLyhkb3VibGUpbmM7CgoKCgoKCgog
ICAgICBpZiAoIURBLT5BKURBLT5BPWNvcHlfYWxuKEFsbiwgREEtPkEpOwogICAgICBEQS0+QT1y
ZWFsbG9jX2FsaWdubWVudCAoREEtPkEsbmMrMSk7CgoKICAgICAgREE9REEtPkE7CiAgICAgIERB
LT5BPSgodm9pZCAqKTApOwoKICAgICAgZm9yICggYz0wOyBjPCAyOyBjKyspCiAgICAgewogICAg
IGZvciAoIGE9MDsgYTwgbnNbY107IGErKykKICB7CiAgICBlPShjPT0wKT9taW4wOm1pbjE7CiAg
ICBmb3IgKCBkPTA7IGQ8ZTsgZCsrKQogICAgICB7CiAgICAgICAgREEtPm9yZGVyW2xfc1tjXVth
XV1bMV0rPTEtaXNfZ2FwKEFsbi0+c2VxX2FsW2xfc1tjXVthXV1bZF0pOwogICAgICB9CiAgfQog
ICAgIH0KCgogICAgICBmb3IgKCB0MT1taW4wLHQyPW1pbjEsYT0wOyBhPG5jOyBhKyspCiB7CiAg
IHIxPXNlcWMwW2FdOwogICByMj1zZXFjMVthXTsKCiAgIGcxPShyMT09LTEgfHwgcjE+TSk/MDox
OwogICBnMj0ocjI9PS0xIHx8IHIyPk4pPzA6MTsKICAgdDErPWcxOwogICB0Mis9ZzI7CiAgIGZv
ciAoYj0wOyBiPG5zWzBdOyBiKyspREEtPnNlcV9hbFtsX3NbMF1bYl1dW2FdPShnMSk/QWxuLT5z
ZXFfYWxbbF9zWzBdW2JdXVtBW3QxLTFdXTonLSc7CiAgIGZvciAoYj0wOyBiPG5zWzFdOyBiKysp
REEtPnNlcV9hbFtsX3NbMV1bYl1dW2FdPShnMik/QWxuLT5zZXFfYWxbbF9zWzFdW2JdXVtCW3Qy
LTFdXTonLSc7CiB9CiAgICAgIGZvciAoYj0wOyBiPG5zWzBdOyBiKyspe0RBLT5zZXFfYWxbbF9z
WzBdW2JdXVthXT0nXDAnO30KICAgICAgZm9yIChiPTA7IGI8bnNbMV07IGIrKyl7REEtPnNlcV9h
bFtsX3NbMV1bYl1dW2FdPSdcMCc7fQoKICAgICAgREEtPm5zZXE9bnNbMF0rbnNbMV07CiAgICAg
IERBLT5sZW5fYWxuPW5jOwogICAgICBEQS0+c2NvcmU9cGVyY2VudDsKICAgICAgREEtPnNjb3Jl
X2Fsbj1zY29yZTsKICAgICAgZmZsdXNoKHN0ZG91dCk7CgoKICAgICAgaWYgKCBjb3VudCApCiB7
IGZsYWcgPSAwOwogICBsb2NhdGUoQSxCLG5zZXEpOwogICBpZiAoIGZsYWcgKQogICAgIHNtYWxs
X3Bhc3MoQSxCLGNvdW50LG5zZXEpOwogfQogICAgfQogIHBhZGRfYWxuIChpbl9BKTsKCiAgc2lt
X2ZyZWVfYWxsKCk7CiMgMzc2ICJ1dGlsX2RwX3NpbS5jIgogIGZyZWVfaW50IChwb3MsIC0xKTsK
ICBmcmVlX2FsbiAoQWxuKTsKCgoKICByZXR1cm4gMTsKCn0KaW50IHNpbV9yZXNldF9zdGF0aWNf
dmFyaWFibGUgKCkKewogIENDPUREPVJSPVNTPUVFPUZGPUhIPVdXPUlJPUpKPVhYPVlZPXNhcHA9
KCh2b2lkICopMCk7CiAgbWluMD1taW4xPW1heDA9bWF4MT1taW5zPXE9cj1xcj10dD1udW1ub2Rl
PW0xPW4xPW5uPXJsPWNsPWxtaW49ZmxhZz16ZXJvPWxhc3Q9ST1KPW5vX21hdD1ub19taXM9YWxf
bGVuPTA7CiAgbW9zdD1sb3c9KCh2b2lkICopMCk7CiAgTElTVD0oKHZvaWQgKikwKTsKICByZXR1
cm4gMDsKfQoKCgpiaWdfcGFzcyhBLEIsTSxOLEssbnNlcSkgaW50IEFbXSxCW107IGludCBNLE4s
Syxuc2VxOwp7IHJlZ2lzdGVyIGludCBpLCBqOwogIHJlZ2lzdGVyIGludCBjOwogIHJlZ2lzdGVy
IGludCBmOwogIHJlZ2lzdGVyIGludCBkOwogIHJlZ2lzdGVyIGludCBwOwogIHJlZ2lzdGVyIGlu
dCBjaSwgY2o7CiAgcmVnaXN0ZXIgaW50IGRpLCBkajsKICByZWdpc3RlciBpbnQgZmksIGZqOwog
IHJlZ2lzdGVyIGludCBwaSwgcGo7CgogIGludCBhZGRub2RlKCk7CiMgNDE1ICJ1dGlsX2RwX3Np
bS5jIgogZm9yICggaiA9IDE7IGogPD0gTiA7IGorKyApCiAgIHsgQ0Nbal0gPSAwOwogICAgICBS
UltqXSA9IDA7CiAgICAgIEVFW2pdID0gajsKICAgICAgRERbal0gPSAtIChxKTsKICAgICAgU1Nb
al0gPSAwOwogICAgICBGRltqXSA9IGo7CiAgIH0KIGZvciAoIGkgPSAxOyBpIDw9IE07IGkrKykK
ICAgeyBjID0gMDsKICAgICAgZiA9IC0gKHEpOwogICAgICBjaSA9IGZpID0gaTsKICAgICAgaWYg
KCBuc2VxID09IDIgKQogICAgICAgIHsgcCA9IDA7CiAgICAgICAgICBwaSA9IGkgLSAxOwogICAg
ICAgICAgY2ogPSBmaiA9IHBqID0gMDsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7IHAg
PSBDQ1tpXTsKICAgcGkgPSBSUltpXTsKICAgcGogPSBFRVtpXTsKICAgICAgICAgIGNqID0gZmog
PSBpOwogICAgICAgIH0KICAgICAgZm9yICggaiA9IChuc2VxID09IDIgPyAxIDogKGkrMSkpIDsg
aiA8PSBOIDsgaisrICkKICAgICAgICB7IGYgPSBmIC0gcjsKICAgIGMgPSBjIC0gcXI7CiAgICB7
IGlmICggZiA8IGMgKSB7IGYgPSBjOyBmaSA9IGNpOyBmaiA9IGNqOyB9IGVsc2UgaWYgKCBmID09
IGMgKSB7IGlmICggZmkgPCBjaSApIHsgZmkgPSBjaTsgZmogPSBjajsgfSBlbHNlIGlmICggZmkg
PT0gY2kgJiYgZmogPCBjaiApIGZqID0gY2o7IH0gfQogICAgYyA9IENDW2pdIC0gcXI7CiAgICBj
aSA9IFJSW2pdOwogICAgY2ogPSBFRVtqXTsKICAgIGQgPSBERFtqXSAtIHI7CiAgICBkaSA9IFNT
W2pdOwogICAgZGogPSBGRltqXTsKICAgIHsgaWYgKCBkIDwgYyApIHsgZCA9IGM7IGRpID0gY2k7
IGRqID0gY2o7IH0gZWxzZSBpZiAoIGQgPT0gYyApIHsgaWYgKCBkaSA8IGNpICkgeyBkaSA9IGNp
OyBkaiA9IGNqOyB9IGVsc2UgaWYgKCBkaSA9PSBjaSAmJiBkaiA8IGNqICkgZGogPSBjajsgfSB9
CiAgICBjID0gMDsKCiAgICB7IGZvciAoIHR0ID0gMSwgeiA9IHJvd1soaSldOyB6ICE9IChwYWly
cHRyKSgodm9pZCAqKTApOyB6ID0gei0+TkVYVCApIGlmICggei0+Q09MID09IChqKSApIHsgdHQg
PSAwOyBicmVhazsgfSBpZiAoIHR0ICkgYyA9ICggcCsoKENMLT5nZXRfZHBfY29zdCkoQWxuLCBw
b3MsIG5zWzBdLCBsX3NbMF0sIEFbaS0xXSwgcG9zLCBuc1sxXSwgbF9zWzFdLCBCW2otMV0sIENM
KSkgKTsgfQogICAgaWYgKCBjIDw9IDAgKQogICAgICB7IGMgPSAwOyBjaSA9IGk7IGNqID0gajsg
fQogICAgZWxzZQogICAgICB7IGNpID0gcGk7IGNqID0gcGo7IH0KICAgIHsgaWYgKCBjIDwgZCAp
IHsgYyA9IGQ7IGNpID0gZGk7IGNqID0gZGo7IH0gZWxzZSBpZiAoIGMgPT0gZCApIHsgaWYgKCBj
aSA8IGRpICkgeyBjaSA9IGRpOyBjaiA9IGRqOyB9IGVsc2UgaWYgKCBjaSA9PSBkaSAmJiBjaiA8
IGRqICkgY2ogPSBkajsgfSB9CiAgICB7IGlmICggYyA8IGYgKSB7IGMgPSBmOyBjaSA9IGZpOyBj
aiA9IGZqOyB9IGVsc2UgaWYgKCBjID09IGYgKSB7IGlmICggY2kgPCBmaSApIHsgY2kgPSBmaTsg
Y2ogPSBmajsgfSBlbHNlIGlmICggY2kgPT0gZmkgJiYgY2ogPCBmaiApIGNqID0gZmo7IH0gfQog
ICAgcCA9IENDW2pdOwogICAgQ0Nbal0gPSBjOwogICAgcGkgPSBSUltqXTsKICAgIHBqID0gRUVb
al07CiAgICBSUltqXSA9IGNpOwogICAgRUVbal0gPSBjajsKICAgIEREW2pdID0gZDsKICAgIFNT
W2pdID0gZGk7CiAgICBGRltqXSA9IGRqOwogICAgaWYgKCBjID4gbG1pbiApCiAgICAgIGxtaW4g
PSBhZGRub2RlKGMsIGNpLCBjaiwgaSwgaiwgSywgbG1pbik7CiAgICAgICAgIH0KICAgfQpyZXR1
cm4gMTsKfQoKCgpsb2NhdGUoQSxCLG5zZXEpIGludCBBW10sQltdOyBpbnQgbnNlcTsKeyByZWdp
c3RlciBpbnQgaSwgajsKICByZWdpc3RlciBpbnQgYzsKICByZWdpc3RlciBpbnQgZjsKICByZWdp
c3RlciBpbnQgZDsKICByZWdpc3RlciBpbnQgcDsKICByZWdpc3RlciBpbnQgY2ksIGNqOwogIHJl
Z2lzdGVyIGludCBkaSwgZGo7CiAgcmVnaXN0ZXIgaW50IGZpLCBmajsKICByZWdpc3RlciBpbnQg
cGksIHBqOwogIGludCBjZmxhZywgcmZsYWc7CiAgaW50IGFkZG5vZGUoKTsKICBpbnQgbGltaXQ7
CiMgNTAzICJ1dGlsX2RwX3NpbS5jIgogZm9yICggaiA9IG5uOyBqID49IG4xIDsgai0tICkKICAg
ICAgICAgIHsgQ0Nbal0gPSAwOwogICAgICBFRVtqXSA9IGo7CiAgICAgIEREW2pdID0gLSAocSk7
CiAgICAgIEZGW2pdID0gajsKICAgICAgaWYgKCBuc2VxID09IDIgfHwgaiA+IG1tICkKICAgICAg
ICAgICAgICAgIFJSW2pdID0gU1Nbal0gPSBtbSArIDE7CiAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgIFJSW2pdID0gU1Nbal0gPSBqOwogICB9CgogICAgICAgIGZvciAoIGkgPSBtbTsgaSA+PSBt
MTsgaS0tICkKICAgeyBjID0gcCA9IDA7CiAgICAgIGYgPSAtIChxKTsKICAgICAgY2kgPSBmaSA9
IGk7CiAgICAgIHBpID0gaSArIDE7CiAgICAgIGNqID0gZmogPSBwaiA9IG5uICsgMTsKCiAgICAg
IGlmICggbnNlcSA9PSAyIHx8IG4xID4gaSApCiAgbGltaXQgPSBuMTsKICAgICAgZWxzZQogIGxp
bWl0ID0gaSArIDE7CiAgICAgIGZvciAoIGogPSBubjsgaiA+PSBsaW1pdCA7IGotLSApCiAgICAg
ICAgeyBmID0gZiAtIHI7CiAgICBjID0gYyAtIHFyOwogICAgeyBpZiAoIGYgPCBjICkgeyBmID0g
YzsgZmkgPSBjaTsgZmogPSBjajsgfSBlbHNlIGlmICggZiA9PSBjICkgeyBpZiAoIGZpIDwgY2kg
KSB7IGZpID0gY2k7IGZqID0gY2o7IH0gZWxzZSBpZiAoIGZpID09IGNpICYmIGZqIDwgY2ogKSBm
aiA9IGNqOyB9IH0KICAgIGMgPSBDQ1tqXSAtIHFyOwogICAgY2kgPSBSUltqXTsKICAgIGNqID0g
RUVbal07CiAgICBkID0gRERbal0gLSByOwogICAgZGkgPSBTU1tqXTsKICAgIGRqID0gRkZbal07
CiAgICB7IGlmICggZCA8IGMgKSB7IGQgPSBjOyBkaSA9IGNpOyBkaiA9IGNqOyB9IGVsc2UgaWYg
KCBkID09IGMgKSB7IGlmICggZGkgPCBjaSApIHsgZGkgPSBjaTsgZGogPSBjajsgfSBlbHNlIGlm
ICggZGkgPT0gY2kgJiYgZGogPCBjaiApIGRqID0gY2o7IH0gfQogICAgYyA9IDA7CiAgICB7IGZv
ciAoIHR0ID0gMSwgeiA9IHJvd1soaSldOyB6ICE9IChwYWlycHRyKSgodm9pZCAqKTApOyB6ID0g
ei0+TkVYVCApIGlmICggei0+Q09MID09IChqKSApIHsgdHQgPSAwOyBicmVhazsgfSBpZiAoIHR0
ICkgYyA9ICggcCsoKENMLT5nZXRfZHBfY29zdCkoQWxuLCBwb3MsIG5zWzBdLCBsX3NbMF0sIEFb
aS0xXSwgcG9zLCBuc1sxXSwgbF9zWzFdLCBCW2otMV0sIENMKSkgKTsgfQogICAgaWYgKCBjIDw9
IDAgKQogICAgICB7IGMgPSAwOyBjaSA9IGk7IGNqID0gajsgfQogICAgZWxzZQogICAgICB7IGNp
ID0gcGk7IGNqID0gcGo7IH0KICAgIHsgaWYgKCBjIDwgZCApIHsgYyA9IGQ7IGNpID0gZGk7IGNq
ID0gZGo7IH0gZWxzZSBpZiAoIGMgPT0gZCApIHsgaWYgKCBjaSA8IGRpICkgeyBjaSA9IGRpOyBj
aiA9IGRqOyB9IGVsc2UgaWYgKCBjaSA9PSBkaSAmJiBjaiA8IGRqICkgY2ogPSBkajsgfSB9CiAg
ICB7IGlmICggYyA8IGYgKSB7IGMgPSBmOyBjaSA9IGZpOyBjaiA9IGZqOyB9IGVsc2UgaWYgKCBj
ID09IGYgKSB7IGlmICggY2kgPCBmaSApIHsgY2kgPSBmaTsgY2ogPSBmajsgfSBlbHNlIGlmICgg
Y2kgPT0gZmkgJiYgY2ogPCBmaiApIGNqID0gZmo7IH0gfQogICAgcCA9IENDW2pdOwogICAgQ0Nb
al0gPSBjOwogICAgcGkgPSBSUltqXTsKICAgIHBqID0gRUVbal07CiAgICBSUltqXSA9IGNpOwog
ICAgRUVbal0gPSBjajsKICAgIEREW2pdID0gZDsKICAgIFNTW2pdID0gZGk7CiAgICBGRltqXSA9
IGRqOwogICAgaWYgKCBjID4gbG1pbiApCiAgICAgIGZsYWcgPSAxOwogICAgICAgICB9CiAgICAg
IGlmICggbnNlcSA9PSAyIHx8IGkgPCBuMSApCiAgICAgICAgeyBISFtpXSA9IENDW24xXTsKICAg
ICAgICAgIElJW2ldID0gUlJbbjFdOwogICAgICAgICAgSkpbaV0gPSBFRVtuMV07CiAgICAgICAg
ICBXV1tpXSA9IEREW24xXTsKICAgICAgICAgIFhYW2ldID0gU1NbbjFdOwogICAgICAgICAgWVlb
aV0gPSBGRltuMV07CiAgICAgICAgfQogICB9CgogIGZvciAoIHJsID0gbTEsIGNsID0gbjE7IDsg
KQogICAgeyBmb3IgKCByZmxhZyA9IGNmbGFnID0gMTsgKCByZmxhZyAmJiBtMSA+IDEgKSB8fCAo
IGNmbGFnICYmIG4xID4gMSApIDsgKQogICAgICAgIHsgaWYgKCByZmxhZyAmJiBtMSA+IDEgKQog
ICAgICAgICAgICB7IHJmbGFnID0gMDsKICAgICAgIG0xLS07CiAgICAgICAgICAgICBjID0gcCA9
IDA7CiAgICAgICBmID0gLSAocSk7CiAgICAgICBjaSA9IGZpID0gbTE7CiAgICAgICBwaSA9IG0x
ICsgMTsKICAgICAgIGNqID0gZmogPSBwaiA9IG5uICsgMTsKCiAgICAgICBmb3IgKCBqID0gbm47
IGogPj0gbjEgOyBqLS0gKQogICAgICAgICB7IGYgPSBmIC0gcjsKICAgIGMgPSBjIC0gcXI7CiAg
ICB7IGlmICggZiA8IGMgKSB7IGYgPSBjOyBmaSA9IGNpOyBmaiA9IGNqOyB9IGVsc2UgaWYgKCBm
ID09IGMgKSB7IGlmICggZmkgPCBjaSApIHsgZmkgPSBjaTsgZmogPSBjajsgfSBlbHNlIGlmICgg
ZmkgPT0gY2kgJiYgZmogPCBjaiApIGZqID0gY2o7IH0gfQogICAgYyA9IENDW2pdIC0gcXI7CiAg
ICBjaSA9IFJSW2pdOwogICAgY2ogPSBFRVtqXTsKICAgIGQgPSBERFtqXSAtIHI7CiAgICBkaSA9
IFNTW2pdOwogICAgZGogPSBGRltqXTsKICAgIHsgaWYgKCBkIDwgYyApIHsgZCA9IGM7IGRpID0g
Y2k7IGRqID0gY2o7IH0gZWxzZSBpZiAoIGQgPT0gYyApIHsgaWYgKCBkaSA8IGNpICkgeyBkaSA9
IGNpOyBkaiA9IGNqOyB9IGVsc2UgaWYgKCBkaSA9PSBjaSAmJiBkaiA8IGNqICkgZGogPSBjajsg
fSB9CiAgICBjID0gMDsKICAgIHsgZm9yICggdHQgPSAxLCB6ID0gcm93WyhtMSldOyB6ICE9IChw
YWlycHRyKSgodm9pZCAqKTApOyB6ID0gei0+TkVYVCApIGlmICggei0+Q09MID09IChqKSApIHsg
dHQgPSAwOyBicmVhazsgfSBpZiAoIHR0ICkgYyA9ICggKChDTC0+Z2V0X2RwX2Nvc3QpKEFsbiwg
cG9zLCBuc1swXSwgbF9zWzBdLCBBW20xLTFdLCBwb3MsIG5zWzFdLCBsX3NbMV0sIEJbai0xXSwg
Q0wpKSApOyB9CiAgICBpZiAoIGMgPD0gMCApCiAgICAgIHsgYyA9IDA7IGNpID0gbTE7IGNqID0g
ajsgfQogICAgZWxzZQogICAgICB7IGNpID0gcGk7IGNqID0gcGo7IH0KICAgIHsgaWYgKCBjIDwg
ZCApIHsgYyA9IGQ7IGNpID0gZGk7IGNqID0gZGo7IH0gZWxzZSBpZiAoIGMgPT0gZCApIHsgaWYg
KCBjaSA8IGRpICkgeyBjaSA9IGRpOyBjaiA9IGRqOyB9IGVsc2UgaWYgKCBjaSA9PSBkaSAmJiBj
aiA8IGRqICkgY2ogPSBkajsgfSB9CiAgICB7IGlmICggYyA8IGYgKSB7IGMgPSBmOyBjaSA9IGZp
OyBjaiA9IGZqOyB9IGVsc2UgaWYgKCBjID09IGYgKSB7IGlmICggY2kgPCBmaSApIHsgY2kgPSBm
aTsgY2ogPSBmajsgfSBlbHNlIGlmICggY2kgPT0gZmkgJiYgY2ogPCBmaiApIGNqID0gZmo7IH0g
fQogICAgcCA9IENDW2pdOwogICAgQ0Nbal0gPSBjOwogICAgcGkgPSBSUltqXTsKICAgIHBqID0g
RUVbal07CiAgICBSUltqXSA9IGNpOwogICAgRUVbal0gPSBjajsKICAgIEREW2pdID0gZDsKICAg
IFNTW2pdID0gZGk7CiAgICBGRltqXSA9IGRqOwogICAgaWYgKCBjID4gbG1pbiApCiAgICAgICBm
bGFnID0gMTsKICAgIGlmICggISByZmxhZyAmJiAoIGNpID4gcmwgJiYgY2ogPiBjbCB8fCBkaSA+
IHJsICYmIGRqID4gY2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBmaSA+IHJs
ICYmIGZqID4gY2wgKSApCiAgICAgICAgcmZsYWcgPSAxOwogICAgICAgICB9CiAgICAgICBISFtt
MV0gPSBDQ1tuMV07CiAgICAgICBJSVttMV0gPSBSUltuMV07CiAgICAgICBKSlttMV0gPSBFRVtu
MV07CiAgICAgICBXV1ttMV0gPSBERFtuMV07CiAgICAgICBYWFttMV0gPSBTU1tuMV07CiAgICAg
ICBZWVttMV0gPSBGRltuMV07CiAgICAgICBpZiAoICEgY2ZsYWcgJiYgKCBjaSA+IHJsICYmIGNq
ID4gY2wgfHwgZGkgPiBybCAmJiBkaiA+IGNsCiAgICAgICAgfHwgZmkgPiBybCAmJiBmaiA+IGNs
ICkgKQogICAgICAgICAgY2ZsYWcgPSAxOwogICAgIH0KCiAgIGlmICggbnNlcSA9PSAxICYmIG4x
ID09IChtMSArIDEpICYmICEgcmZsYWcgKQogICAgICBjZmxhZyA9IDA7CiAgIGlmICggY2ZsYWcg
JiYgbjEgPiAxICkKICAgICB7IGNmbGFnID0gMDsKICAgICAgIG4xLS07CiAgICAgICBjID0gMDsK
ICAgICAgIGYgPSAtIChxKTsKICAgICAgIGNqID0gZmogPSBuMTsKICAgICAgIGlmICggbnNlcSA9
PSAyIHx8IG1tIDwgbjEgKQogIHsgcCA9IDA7CiAgICAgICAgICAgY2kgPSBmaSA9IHBpID0gbW0g
KyAxOwogICAgICAgICAgIHBqID0gbjEgKyAxOwogICAgbGltaXQgPSBtbTsKICB9CiAgICAgICBl
bHNlCiAgeyBwID0gSEhbbjFdOwogICAgcGkgPSBJSVtuMV07CiAgICBwaiA9IEpKW24xXTsKICAg
ICAgICAgICBjaSA9IGZpID0gbjE7CiAgICBsaW1pdCA9IG4xIC0gMTsKICB9CiAgICAgICBmb3Ig
KCBpID0gbGltaXQ7IGkgPj0gbTEgOyBpLS0gKQogICAgICAgICB7IGYgPSBmIC0gcjsKICAgIGMg
PSBjIC0gcXI7CiAgICB7IGlmICggZiA8IGMgKSB7IGYgPSBjOyBmaSA9IGNpOyBmaiA9IGNqOyB9
IGVsc2UgaWYgKCBmID09IGMgKSB7IGlmICggZmkgPCBjaSApIHsgZmkgPSBjaTsgZmogPSBjajsg
fSBlbHNlIGlmICggZmkgPT0gY2kgJiYgZmogPCBjaiApIGZqID0gY2o7IH0gfQogICAgYyA9IEhI
W2ldIC0gcXI7CiAgICBjaSA9IElJW2ldOwogICAgY2ogPSBKSltpXTsKICAgIGQgPSBXV1tpXSAt
IHI7CiAgICBkaSA9IFhYW2ldOwogICAgZGogPSBZWVtpXTsKICAgIHsgaWYgKCBkIDwgYyApIHsg
ZCA9IGM7IGRpID0gY2k7IGRqID0gY2o7IH0gZWxzZSBpZiAoIGQgPT0gYyApIHsgaWYgKCBkaSA8
IGNpICkgeyBkaSA9IGNpOyBkaiA9IGNqOyB9IGVsc2UgaWYgKCBkaSA9PSBjaSAmJiBkaiA8IGNq
ICkgZGogPSBjajsgfSB9CiAgICBjID0gMDsKICAgICAgICAgICB7IGZvciAoIHR0ID0gMSwgeiA9
IHJvd1soaSldOyB6ICE9IChwYWlycHRyKSgodm9pZCAqKTApOyB6ID0gei0+TkVYVCApIGlmICgg
ei0+Q09MID09IChuMSkgKSB7IHR0ID0gMDsgYnJlYWs7IH0gaWYgKCB0dCApIGMgPSAoIHArKChD
TC0+Z2V0X2RwX2Nvc3QpKEFsbiwgcG9zLCBuc1swXSwgbF9zWzBdLCBBW2ktMV0sIHBvcywgbnNb
MV0sIGxfc1sxXSwgQltuMS0xXSwgQ0wpKSApOyB9CiAgICBpZiAoIGMgPD0gMCApCiAgICAgIHsg
YyA9IDA7IGNpID0gaTsgY2ogPSBuMTsgfQogICAgZWxzZQogICAgICB7IGNpID0gcGk7IGNqID0g
cGo7IH0KICAgIHsgaWYgKCBjIDwgZCApIHsgYyA9IGQ7IGNpID0gZGk7IGNqID0gZGo7IH0gZWxz
ZSBpZiAoIGMgPT0gZCApIHsgaWYgKCBjaSA8IGRpICkgeyBjaSA9IGRpOyBjaiA9IGRqOyB9IGVs
c2UgaWYgKCBjaSA9PSBkaSAmJiBjaiA8IGRqICkgY2ogPSBkajsgfSB9CiAgICB7IGlmICggYyA8
IGYgKSB7IGMgPSBmOyBjaSA9IGZpOyBjaiA9IGZqOyB9IGVsc2UgaWYgKCBjID09IGYgKSB7IGlm
ICggY2kgPCBmaSApIHsgY2kgPSBmaTsgY2ogPSBmajsgfSBlbHNlIGlmICggY2kgPT0gZmkgJiYg
Y2ogPCBmaiApIGNqID0gZmo7IH0gfQogICAgcCA9IEhIW2ldOwogICAgSEhbaV0gPSBjOwogICAg
cGkgPSBJSVtpXTsKICAgIHBqID0gSkpbaV07CiAgICBJSVtpXSA9IGNpOwogICAgSkpbaV0gPSBj
ajsKICAgIFdXW2ldID0gZDsKICAgIFhYW2ldID0gZGk7CiAgICBZWVtpXSA9IGRqOwogICAgaWYg
KCBjID4gbG1pbiApCiAgICAgICBmbGFnID0gMTsKICAgICAgICAgICBpZiAoICEgY2ZsYWcgJiYg
KCBjaSA+IHJsICYmIGNqID4gY2wgfHwgZGkgPiBybCAmJiBkaiA+IGNsCiAgICAgICAgICAgICAg
ICAgfHwgZmkgPiBybCAmJiBmaiA+IGNsICkgKQogICAgICAgY2ZsYWcgPSAxOwogICAgICAgICB9
CiAgICAgICBDQ1tuMV0gPSBISFttMV07CiAgICAgICBSUltuMV0gPSBJSVttMV07CiAgICAgICBF
RVtuMV0gPSBKSlttMV07CiAgICAgICBERFtuMV0gPSBXV1ttMV07CiAgICAgICBTU1tuMV0gPSBY
WFttMV07CiAgICAgICBGRltuMV0gPSBZWVttMV07CiAgICAgICBpZiAoICEgcmZsYWcgJiYgKCBj
aSA+IHJsICYmIGNqID4gY2wgfHwgZGkgPiBybCAmJiBkaiA+IGNsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgZmkgPiBybCAmJiBmaiA+IGNsICkgKQogICAgICAgICAgcmZs
YWcgPSAxOwogICAgIH0KIH0KICAgICAgaWYgKCBtMSA9PSAxICYmIG4xID09IDEgfHwgbm9fY3Jv
c3MoKSApCiAgYnJlYWs7CiAgIH0KICBtMS0tOwogIG4xLS07CnJldHVybiAxOwp9CgoKc21hbGxf
cGFzcyhBLEIsY291bnQsbnNlcSkgaW50IEFbXSwgQltdOyBpbnQgY291bnQsIG5zZXE7CnsgcmVn
aXN0ZXIgaW50IGksIGo7CiAgcmVnaXN0ZXIgaW50IGM7CiAgcmVnaXN0ZXIgaW50IGY7CiAgcmVn
aXN0ZXIgaW50IGQ7CiAgcmVnaXN0ZXIgaW50IHA7CiAgcmVnaXN0ZXIgaW50IGNpLCBjajsKICBy
ZWdpc3RlciBpbnQgZGksIGRqOwogIHJlZ2lzdGVyIGludCBmaSwgZmo7CiAgcmVnaXN0ZXIgaW50
IHBpLCBwajsKICBpbnQgYWRkbm9kZSgpOwogIGludCBsaW1pdDsKCiBmb3IgKCBqID0gbjEgKyAx
OyBqIDw9IG5uIDsgaisrICkKICAgeyBDQ1tqXSA9IDA7CiAgICAgIFJSW2pdID0gbTE7CiAgICAg
IEVFW2pdID0gajsKICAgICAgRERbal0gPSAtIChxKTsKICAgICAgU1Nbal0gPSBtMTsKICAgICAg
RkZbal0gPSBqOwogICB9CiBmb3IgKCBpID0gbTEgKyAxOyBpIDw9IG1tOyBpKyspCiAgIHsgYyA9
IDA7CiAgICAgIGYgPSAtIChxKTsKICAgICAgY2kgPSBmaSA9IGk7CgogICAgICBpZiAoIG5zZXEg
PT0gMiB8fCBpIDw9IG4xICkKICAgICAgICB7IHAgPSAwOwogICAgICAgICAgcGkgPSBpIC0gMTsK
ICAgICAgICAgIGNqID0gZmogPSBwaiA9IG4xOwogICBsaW1pdCA9IG4xICsgMTsKICAgICAgICB9
CiAgICAgIGVsc2UKICAgICAgICB7IHAgPSBDQ1tpXTsKICAgcGkgPSBSUltpXTsKICAgcGogPSBF
RVtpXTsKICAgICAgICAgIGNqID0gZmogPSBpOwogICBsaW1pdCA9IGkgKyAxOwogICAgICAgIH0K
ICAgICAgZm9yICggaiA9IGxpbWl0IDsgaiA8PSBubiA7IGorKyApCiAgICAgICAgeyBmID0gZiAt
IHI7CiAgICBjID0gYyAtIHFyOwogICAgeyBpZiAoIGYgPCBjICkgeyBmID0gYzsgZmkgPSBjaTsg
ZmogPSBjajsgfSBlbHNlIGlmICggZiA9PSBjICkgeyBpZiAoIGZpIDwgY2kgKSB7IGZpID0gY2k7
IGZqID0gY2o7IH0gZWxzZSBpZiAoIGZpID09IGNpICYmIGZqIDwgY2ogKSBmaiA9IGNqOyB9IH0K
ICAgIGMgPSBDQ1tqXSAtIHFyOwogICAgY2kgPSBSUltqXTsKICAgIGNqID0gRUVbal07CiAgICBk
ID0gRERbal0gLSByOwogICAgZGkgPSBTU1tqXTsKICAgIGRqID0gRkZbal07CiAgICB7IGlmICgg
ZCA8IGMgKSB7IGQgPSBjOyBkaSA9IGNpOyBkaiA9IGNqOyB9IGVsc2UgaWYgKCBkID09IGMgKSB7
IGlmICggZGkgPCBjaSApIHsgZGkgPSBjaTsgZGogPSBjajsgfSBlbHNlIGlmICggZGkgPT0gY2kg
JiYgZGogPCBjaiApIGRqID0gY2o7IH0gfQogICAgYyA9IDA7CiAgICB7IGZvciAoIHR0ID0gMSwg
eiA9IHJvd1soaSldOyB6ICE9IChwYWlycHRyKSgodm9pZCAqKTApOyB6ID0gei0+TkVYVCApIGlm
ICggei0+Q09MID09IChqKSApIHsgdHQgPSAwOyBicmVhazsgfSBpZiAoIHR0ICkgYyA9ICggcCso
KENMLT5nZXRfZHBfY29zdCkoQWxuLCBwb3MsIG5zWzBdLCBsX3NbMF0sIEFbaS0xXSwgcG9zLCBu
c1sxXSwgbF9zWzFdLCBCW2otMV0sIENMKSkgKTsgfQogICAgaWYgKCBjIDw9IDAgKQogICAgICB7
IGMgPSAwOyBjaSA9IGk7IGNqID0gajsgfQogICAgZWxzZQogICAgICB7IGNpID0gcGk7IGNqID0g
cGo7IH0KICAgIHsgaWYgKCBjIDwgZCApIHsgYyA9IGQ7IGNpID0gZGk7IGNqID0gZGo7IH0gZWxz
ZSBpZiAoIGMgPT0gZCApIHsgaWYgKCBjaSA8IGRpICkgeyBjaSA9IGRpOyBjaiA9IGRqOyB9IGVs
c2UgaWYgKCBjaSA9PSBkaSAmJiBjaiA8IGRqICkgY2ogPSBkajsgfSB9CiAgICB7IGlmICggYyA8
IGYgKSB7IGMgPSBmOyBjaSA9IGZpOyBjaiA9IGZqOyB9IGVsc2UgaWYgKCBjID09IGYgKSB7IGlm
ICggY2kgPCBmaSApIHsgY2kgPSBmaTsgY2ogPSBmajsgfSBlbHNlIGlmICggY2kgPT0gZmkgJiYg
Y2ogPCBmaiApIGNqID0gZmo7IH0gfQogICAgcCA9IENDW2pdOwogICAgQ0Nbal0gPSBjOwogICAg
cGkgPSBSUltqXTsKICAgIHBqID0gRUVbal07CiAgICBSUltqXSA9IGNpOwogICAgRUVbal0gPSBj
ajsKICAgIEREW2pdID0gZDsKICAgIFNTW2pdID0gZGk7CiAgICBGRltqXSA9IGRqOwogICAgaWYg
KCBjID4gbG1pbiApCiAgICAgIGxtaW4gPSBhZGRub2RlKGMsIGNpLCBjaiwgaSwgaiwgY291bnQs
IGxtaW4pOwogICAgICAgICB9CiAgIH0KcmV0dXJuIDE7Cn0KCgoKaW50IGFkZG5vZGUoYywgY2ks
IGNqLCBpLCBqLCBLLCBjb3N0KSBpbnQgYywgY2ksIGNqLCBpLCBqLCBLLCBjb3N0Owp7IGludCBm
b3VuZDsKICByZWdpc3RlciBpbnQgZDsKCiAgZm91bmQgPSAwOwogIGlmICggbW9zdCAhPSAwICYm
IG1vc3QtPlNJTV9TVEFSSSA9PSBjaSAmJiBtb3N0LT5TSU1fU1RBUkogPT0gY2ogKQogICAgZm91
bmQgPSAxOwogIGVsc2UKICAgICBmb3IgKCBkID0gMDsgZCA8IG51bW5vZGUgOyBkKysgKQogeyBt
b3N0ID0gTElTVFtkXTsKICAgaWYgKCBtb3N0LT5TSU1fU1RBUkkgPT0gY2kgJiYgbW9zdC0+U0lN
X1NUQVJKID09IGNqICkKICAgICB7IGZvdW5kID0gMTsKICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICAgICB9CiAgaWYgKCBmb3VuZCApCiAgICB7IGlmICggbW9zdC0+U0lNX1NDT1JFIDwgYyApCiAg
ICAgICAgeyBtb3N0LT5TSU1fU0NPUkUgPSBjOwogICAgICAgICAgbW9zdC0+U0lNX0VOREkgPSBp
OwogICAgICAgICAgbW9zdC0+U0lNX0VOREogPSBqOwogICAgICAgIH0KICAgICAgaWYgKCBtb3N0
LT5TSU1fVE9QID4gaSApIG1vc3QtPlNJTV9UT1AgPSBpOwogICAgICBpZiAoIG1vc3QtPlNJTV9C
T1QgPCBpICkgbW9zdC0+U0lNX0JPVCA9IGk7CiAgICAgIGlmICggbW9zdC0+U0lNX0xFRlQgPiBq
ICkgbW9zdC0+U0lNX0xFRlQgPSBqOwogICAgICBpZiAoIG1vc3QtPlNJTV9SSUdIVCA8IGogKSBt
b3N0LT5TSU1fUklHSFQgPSBqOwogICAgfQogIGVsc2UKICAgIHsgaWYgKCBudW1ub2RlID09IEsg
KQogIG1vc3QgPSBsb3c7CiAgICAgIGVsc2UKICAgICAgICAgbW9zdCA9IExJU1RbbnVtbm9kZSsr
XTsKICAgICAgbW9zdC0+U0lNX1NDT1JFID0gYzsKICAgICAgbW9zdC0+U0lNX1NUQVJJID0gY2k7
CiAgICAgIG1vc3QtPlNJTV9TVEFSSiA9IGNqOwogICAgICBtb3N0LT5TSU1fRU5ESSA9IGk7CiAg
ICAgIG1vc3QtPlNJTV9FTkRKID0gajsKICAgICAgbW9zdC0+U0lNX1RPUCA9IG1vc3QtPlNJTV9C
T1QgPSBpOwogICAgICBtb3N0LT5TSU1fTEVGVCA9IG1vc3QtPlNJTV9SSUdIVCA9IGo7CiAgICB9
CiAgaWYgKCBudW1ub2RlID09IEsgKQogICAgeyBpZiAoIGxvdyA9PSBtb3N0IHx8ICEgbG93ICkK
ICAgICAgICB7IGZvciAoIGxvdyA9IExJU1RbMF0sIGQgPSAxOyBkIDwgbnVtbm9kZSA7IGQrKyAp
CiAgICAgICAgICAgIGlmICggTElTVFtkXS0+U0lNX1NDT1JFIDwgbG93LT5TSU1fU0NPUkUgKQog
ICAgICAgICAgICAgIGxvdyA9IExJU1RbZF07CiB9CiAgICAgIHJldHVybiAoIGxvdy0+U0lNX1ND
T1JFICkgOwogICAgfQogIGVsc2UKICAgIHJldHVybiBjb3N0Owp9CgoKCnZlcnRleHB0ciBmaW5k
bWF4KCkKeyB2ZXJ0ZXhwdHIgY3VyOwogIHJlZ2lzdGVyIGludCBpLCBqOwoKICBmb3IgKCBqID0g
MCwgaSA9IDE7IGkgPCBudW1ub2RlIDsgaSsrICkKICAgIGlmICggTElTVFtpXS0+U0lNX1NDT1JF
ID4gTElTVFtqXS0+U0lNX1NDT1JFICkKICAgICAgIGogPSBpOwogIGN1ciA9IExJU1Rbal07CiAg
aWYgKCBqICE9IC0tbnVtbm9kZSApCiAgICB7IExJU1Rbal0gPSBMSVNUW251bW5vZGVdOwogICAg
ICBMSVNUW251bW5vZGVdID0gY3VyOwogICAgfQogIG1vc3QgPSBMSVNUWzBdOwogIGlmICggbG93
ID09IGN1ciApIGxvdyA9IExJU1RbMF07CiAgcmV0dXJuICggY3VyICk7Cn0KCgoKbm9fY3Jvc3Mo
KQp7IHZlcnRleHB0ciBjdXI7CiAgcmVnaXN0ZXIgaW50IGk7CgogICAgICBmb3IgKCBpID0gMDsg
aSA8IG51bW5vZGU7IGkrKyApCiB7IGN1ciA9IExJU1RbaV07CiAgIGlmICggY3VyLT5TSU1fU1RB
UkkgPD0gbW0gJiYgY3VyLT5TSU1fU1RBUkogPD0gbm4gJiYgY3VyLT5TSU1fQk9UID49IG0xLTEg
JiYKICAgICAgICBjdXItPlNJTV9SSUdIVCA+PSBuMS0xICYmICggY3VyLT5TSU1fU1RBUkkgPCBy
bCB8fCBjdXItPlNJTV9TVEFSSiA8IGNsICkpCiAgICAgIHsgaWYgKCBjdXItPlNJTV9TVEFSSSA8
IHJsICkgcmwgPSBjdXItPlNJTV9TVEFSSTsKICAgICAgICBpZiAoIGN1ci0+U0lNX1NUQVJKIDwg
Y2wgKSBjbCA9IGN1ci0+U0lNX1NUQVJKOwogICAgICAgIGZsYWcgPSAxOwogICAgICAgIGJyZWFr
OwogICAgICB9CiB9CiAgICAgIGlmICggaSA9PSBudW1ub2RlICkKIHJldHVybiAxOwogICAgICBl
bHNlCiByZXR1cm4gMDsKfQoKCgoKCmludCBkaWZmX3NpbShBLEIsTSxOLHRiLHRlKSBpbnQgKkEs
ICpCOyBpbnQgTSwgTjsgaW50IHRiLCB0ZTsKCnsgaW50IG1pZGksIG1pZGosIHR5cGU7CiAgaW50
IG1pZGM7Cgp7IHJlZ2lzdGVyIGludCBpLCBqOwogIHJlZ2lzdGVyIGludCBjLCBlLCBkLCBzOwog
ICAgICAgICAgIGludCB0OwoKCgoKICBpZiAoTiA8PSAwKQogICAgeyBpZiAoTSA+IDApIHsgSSAr
PSBNOyBhbF9sZW4gKz0gTTsgaWYgKGxhc3QgPCAwKSBsYXN0ID0gc2FwcFstMV0gLT0gKE0pOyBl
bHNlIGxhc3QgPSAqc2FwcCsrID0gLShNKTsgfQogICAgICByZXR1cm4gLSAoKE0pIDw9IDAgPyAw
IDogcStyKihNKSk7CiAgICB9CiAgaWYgKE0gPD0gMSkKICAgIHsgaWYgKE0gPD0gMCkKICAgICAg
ICB7IHsgSiArPSBOOyBhbF9sZW4gKz0gTjsgaWYgKGxhc3QgPCAwKSB7IHNhcHBbLTFdID0gKE4p
OyAqc2FwcCsrID0gbGFzdDsgfSBlbHNlIGxhc3QgPSAqc2FwcCsrID0gKE4pOyB9OwogICAgICAg
ICAgcmV0dXJuIC0gKChOKSA8PSAwID8gMCA6IHErciooTikpOwogICAgICAgIH0KICAgICAgaWYg
KHRiID4gdGUpIHRiID0gdGU7CiAgICAgIG1pZGMgPSAtICh0YiArIHIgKyAoKE4pIDw9IDAgPyAw
IDogcStyKihOKSkgKTsKICAgICAgbWlkaiA9IDA7CgogICAgICBmb3IgKGogPSAxOyBqIDw9IE47
IGorKykKICAgICAgICB7IGZvciAoIHR0ID0gMSwgeiA9IHJvd1tJKzFdOyB6ICE9IChwYWlycHRy
KSgodm9pZCAqKTApOyB6ID0gei0+TkVYVCApCiAgICAgICAgICAgICAgaWYgKCB6LT5DT0wgPT0g
aitKICkKICAgICAgICAgIHsgdHQgPSAwOyBicmVhazsgfQogICAgICAgICAgIGlmICggdHQgKQog
ICAgICAgICAgICB7IGMgPSAoKENMLT5nZXRfZHBfY29zdCkoQWxuLCBwb3MsIG5zWzBdLCBsX3Nb
MF0sIEFbMF0sIHBvcywgbnNbMV0sIGxfc1sxXSwgQltqLTFdLCBDTCkpIC0gKCAoKGotMSkgPD0g
MCA/IDAgOiBxK3IqKGotMSkpICsgKChOLWopIDw9IDAgPyAwIDogcStyKihOLWopKSApOwogICAg
ICAgICAgICAgIGlmIChjID4gbWlkYykKICAgICAgICAgICAgICAgeyBtaWRjID0gYzsKICAgICAg
ICAgICAgICAgICBtaWRqID0gajsKICAgICAgICAgICAgICAgfQogICAgIH0KIH0KICAgICAgaWYg
KG1pZGogPT0gMCkKICAgICAgICB7IHsgSiArPSBOOyBhbF9sZW4gKz0gTjsgaWYgKGxhc3QgPCAw
KSB7IHNhcHBbLTFdID0gKE4pOyAqc2FwcCsrID0gbGFzdDsgfSBlbHNlIGxhc3QgPSAqc2FwcCsr
ID0gKE4pOyB9IHsgSSArPSAxOyBhbF9sZW4gKz0gMTsgaWYgKGxhc3QgPCAwKSBsYXN0ID0gc2Fw
cFstMV0gLT0gKDEpOyBlbHNlIGxhc3QgPSAqc2FwcCsrID0gLSgxKTsgfSB9CiAgICAgIGVsc2UK
ICAgICAgICB7IGlmIChtaWRqID4gMSkgeyBKICs9IG1pZGotMTsgYWxfbGVuICs9IG1pZGotMTsg
aWYgKGxhc3QgPCAwKSB7IHNhcHBbLTFdID0gKG1pZGotMSk7ICpzYXBwKysgPSBsYXN0OyB9IGVs
c2UgbGFzdCA9ICpzYXBwKysgPSAobWlkai0xKTsgfQogICAgICAgICAgeyBsYXN0ID0gKnNhcHAr
KyA9IDA7IGFsX2xlbiArPSAxOyB9CiAgIGlmICggQVsxXSA9PSBCW21pZGpdICkKICAgICAgbm9f
bWF0ICs9IDE7CiAgIGVsc2UKICAgICAgbm9fbWlzICs9IDE7CgogICAgICAgICAgSSsrOyBKKys7
CgoKICAgeiA9ICggcGFpcnB0ciApc2ltX3ZjYWxsb2MoMSxzaXplb2YocGFpcikpOwogICAgICAg
ICAgei0+Q09MID0gSjsKICAgICAgICAgIHotPk5FWFQgPSByb3dbSV07CiAgIHJvd1tJXSA9IHo7
CiAgICAgICAgICBpZiAobWlkaiA8IE4pIHsgSiArPSBOLW1pZGo7IGFsX2xlbiArPSBOLW1pZGo7
IGlmIChsYXN0IDwgMCkgeyBzYXBwWy0xXSA9IChOLW1pZGopOyAqc2FwcCsrID0gbGFzdDsgfSBl
bHNlIGxhc3QgPSAqc2FwcCsrID0gKE4tbWlkaik7IH0KICAgICAgICB9CiAgICAgIHJldHVybiBt
aWRjOwogICAgfQoKCgogIG1pZGkgPSBNLzI7CiAgQ0NbMF0gPSAwOwogIHQgPSAtcTsKICBmb3Ig
KGogPSAxOyBqIDw9IE47IGorKykKICAgIHsgQ0Nbal0gPSB0ID0gdC1yOwogICAgICBERFtqXSA9
IHQtcTsKICAgIH0KICB0ID0gLXRiOwogIGZvciAoaSA9IDE7IGkgPD0gbWlkaTsgaSsrKQogICAg
eyBzID0gQ0NbMF07CiAgICAgIENDWzBdID0gYyA9IHQgPSB0LXI7CiAgICAgIGUgPSB0LXE7Cgog
ICAgICBmb3IgKGogPSAxOyBqIDw9IE47IGorKykKICAgICAgICB7IGlmICgoYyA9IGMgLSBxcikg
PiAoZSA9IGUgLSByKSkgZSA9IGM7CiAgICAgICAgICBpZiAoKGMgPSBDQ1tqXSAtIHFyKSA+IChk
ID0gRERbal0gLSByKSkgZCA9IGM7CiAgIHsgZm9yICggdHQgPSAxLCB6ID0gcm93WyhpK0kpXTsg
eiAhPSAocGFpcnB0cikoKHZvaWQgKikwKTsgeiA9IHotPk5FWFQgKSBpZiAoIHotPkNPTCA9PSAo
aitKKSApIHsgdHQgPSAwOyBicmVhazsgfSBpZiAoIHR0ICkgYyA9ICggcysoKENMLT5nZXRfZHBf
Y29zdCkoQWxuLCBwb3MsIG5zWzBdLCBsX3NbMF0sIEFbaS0xXSwgcG9zLCBuc1sxXSwgbF9zWzFd
LCBCW2otMV0sIENMKSkgKTsgfQogICAgICAgICAgaWYgKGMgPCBkKSBjID0gZDsKICAgICAgICAg
IGlmIChjIDwgZSkgYyA9IGU7CiAgICAgICAgICBzID0gQ0Nbal07CiAgICAgICAgICBDQ1tqXSA9
IGM7CiAgICAgICAgICBERFtqXSA9IGQ7CiAgICAgICAgfQogICAgfQogIEREWzBdID0gQ0NbMF07
CgogIFJSW05dID0gMDsKICB0ID0gLXE7CiAgZm9yIChqID0gTi0xOyBqID49IDA7IGotLSkKICAg
IHsgUlJbal0gPSB0ID0gdC1yOwogICAgICBTU1tqXSA9IHQtcTsKICAgIH0KICB0ID0gLXRlOwog
IGZvciAoaSA9IE0tMTsgaSA+PSBtaWRpOyBpLS0pCiAgICB7IHMgPSBSUltOXTsKICAgICAgUlJb
Tl0gPSBjID0gdCA9IHQtcjsKICAgICAgZSA9IHQtcTsKCiAgICAgIGZvciAoaiA9IE4tMTsgaiA+
PSAwOyBqLS0pCiAgICAgICAgeyBpZiAoKGMgPSBjIC0gcXIpID4gKGUgPSBlIC0gcikpIGUgPSBj
OwogICAgICAgICAgaWYgKChjID0gUlJbal0gLSBxcikgPiAoZCA9IFNTW2pdIC0gcikpIGQgPSBj
OwogICB7IGZvciAoIHR0ID0gMSwgeiA9IHJvd1soaSsxK0kpXTsgeiAhPSAocGFpcnB0cikoKHZv
aWQgKikwKTsgeiA9IHotPk5FWFQgKSBpZiAoIHotPkNPTCA9PSAoaisxK0opICkgeyB0dCA9IDA7
IGJyZWFrOyB9IGlmICggdHQgKSBjID0gKCBzKygoQ0wtPmdldF9kcF9jb3N0KShBbG4sIHBvcywg
bnNbMF0sIGxfc1swXSwgQVtpXSwgcG9zLCBuc1sxXSwgbF9zWzFdLCBCW2pdLCBDTCkpICk7IH0K
ICAgICAgICAgIGlmIChjIDwgZCkgYyA9IGQ7CiAgICAgICAgICBpZiAoYyA8IGUpIGMgPSBlOwog
ICAgICAgICAgcyA9IFJSW2pdOwogICAgICAgICAgUlJbal0gPSBjOwogICAgICAgICAgU1Nbal0g
PSBkOwogICAgICAgIH0KICAgIH0KICBTU1tOXSA9IFJSW05dOwoKICBtaWRjID0gQ0NbMF0rUlJb
MF07CiAgbWlkaiA9IDA7CiAgdHlwZSA9IDE7CiAgZm9yIChqID0gMDsgaiA8PSBOOyBqKyspCiAg
ICBpZiAoKGMgPSBDQ1tqXSArIFJSW2pdKSA+PSBtaWRjKQogICAgICBpZiAoYyA+IG1pZGMgfHwg
Q0Nbal0gIT0gRERbal0gJiYgUlJbal0gPT0gU1Nbal0pCiAgICAgICAgeyBtaWRjID0gYzsKICAg
ICAgICAgIG1pZGogPSBqOwogICAgICAgIH0KICBmb3IgKGogPSBOOyBqID49IDA7IGotLSkKICAg
IGlmICgoYyA9IEREW2pdICsgU1Nbal0gKyBxKSA+IG1pZGMpCiAgICAgIHsgbWlkYyA9IGM7CiAg
ICAgICAgbWlkaiA9IGo7CiAgICAgICAgdHlwZSA9IDI7CiAgICAgIH0KfQoKCgogIGlmICh0eXBl
ID09IDEpCiAgICB7IGRpZmZfc2ltKEEsQixtaWRpLG1pZGosdGIscSk7CiAgICAgIGRpZmZfc2lt
KEErbWlkaSxCK21pZGosTS1taWRpLE4tbWlkaixxLHRlKTsKICAgIH0KICBlbHNlCiAgICB7IGRp
ZmZfc2ltKEEsQixtaWRpLTEsbWlkaix0Yix6ZXJvKTsKICAgICAgeyBJICs9IDI7IGFsX2xlbiAr
PSAyOyBpZiAobGFzdCA8IDApIGxhc3QgPSBzYXBwWy0xXSAtPSAoMik7IGVsc2UgbGFzdCA9ICpz
YXBwKysgPSAtKDIpOyB9OwogICAgICBkaWZmX3NpbShBK21pZGkrMSxCK21pZGosTS1taWRpLTEs
Ti1taWRqLHplcm8sdGUpOwogICAgfQogIHJldHVybiBtaWRjOwp9CgoKCgppbnQgY2FsY29ucyhp
bnQgKmFhMCxpbnQgbjAsaW50ICphYTEsaW50IG4xLGludCAqcmVzLGludCAqbmMsaW50ICpuaWRl
bnQsIEFsaWdubWVudCAqQSwgaW50ICpucywgaW50ICoqbF9zLCBDb25zdHJhaW50X2xpc3QgQ0wp
CnsKICBpbnQgaTAsIGkxOwogIGludCBvcCwgbmlkLCBsZW5jLCBuZDsKICBpbnQgKnNwMCwgKnNw
MTsKICBpbnQgKnJwOwogIGludCBhLCBiLCBpZF9jb2wsIHRvdF9jb2wsIHIwLCByMTsKCiAgbWlu
MC0tOyBtaW4xLS07CgogIHNwMCA9IHNlcWMwK21pbnM7CiAgc3AxID0gc2VxYzErbWluczsKICBy
cCA9IHJlczsKICBsZW5jID0gbmlkID0gb3AgPSAwOwogIGkwID0gbWluMDsKICBpMSA9IG1pbjE7
CgogIHdoaWxlIChpMCA8IG1heDAgfHwgaTEgPCBtYXgxKSB7CiAgICBpZiAob3AgPT0gMCAmJiAq
cnAgPT0gMCkgewogICAgICBvcCA9ICpycCsrOwogICAgICAqc3AwID0gYWEwW2kwKytdOwogICAg
ICAqc3AxID0gYWExW2kxKytdOwoKCiAgICAgIGZvciAoaWRfY29sPXRvdF9jb2w9MCxhPTA7IGE8
IG5zWzBdOyBhKyspCiBmb3IgKCBiPTA7IGI8IG5zWzFdOyBiKyspCiAgIHsKICAgICByMD1BbG4t
PnNlcV9hbFtsX3NbMF1bYV1dWypzcDAtMV07CiAgICAgcjE9QWxuLT5zZXFfYWxbbF9zWzFdW2Fd
XVsqc3AxLTFdOwoKICAgICBpZiAoICFpc19nYXAocjApICYmIHIxPT1yMClpZF9jb2wrKzsKICAg
ICBpZiAoICFpc19nYXAocjApICYmICFpc19nYXAocjEpKXRvdF9jb2wrKzsKICAgfQogICAgICBu
aWQrPSh0b3RfY29sKT8oaWRfY29sL3RvdF9jb2wpOjA7CiAgICAgIGxlbmMrKzsKICAgICAgc3Aw
Kys7IHNwMSsrOwogICAgfQogICAgZWxzZSB7CiAgICAgIGlmIChvcD09MCkgb3AgPSAqcnArKzsK
ICAgICAgaWYgKG9wPjApIHsKICpzcDArKyA9IC0xOwogKnNwMSsrID0gYWExW2kxKytdOwogb3At
LTsKIGxlbmMrKzsKICAgICAgfQogICAgICBlbHNlIHsKICpzcDArKyA9IGFhMFtpMCsrXTsKICpz
cDErKyA9IC0xOwogb3ArKzsKIGxlbmMrKzsKICAgICAgfQogICAgfQogIH0KCiAgKm5pZGVudCA9
IG5pZDsKICAqbmMgPSBsZW5jOwoKICBuZCA9IDA7CiAgcmV0dXJuIG1pbnMrbGVuYytuZDsKfQoK
CnN0cnVjdCBNZW0KICAgIHsKICAgIHZvaWQgKnA7CiAgICBzdHJ1Y3QgTWVtICpuZXh0OwogICAg
fTsKCnR5cGVkZWYgc3RydWN0IE1lbSBNZW07CgpNZW0gKmZpcnN0X21lbTsKTWVtICpsYXN0X21l
bTsKCnZvaWQgKnNpbV92Y2FsbG9jICggc2l6ZV90IG5vYmosIHNpemVfdCBzaXplKQp7CiAgdm9p
ZCAqcDsKICBNZW0gKm5ld19tZW07CgogIHA9dmNhbGxvYyAobm9iaiwgc2l6ZSk7CgoKICBuZXdf
bWVtPXZjYWxsb2MgKDEsIHNpemVvZiAoTWVtKSk7CiAgaWYgKCBsYXN0X21lbT09KCh2b2lkICop
MCkpZmlyc3RfbWVtPWxhc3RfbWVtPW5ld19tZW07CiAgZWxzZQogICAgewogICAgICBsYXN0X21l
bS0+bmV4dD1uZXdfbWVtOwogICAgICBsYXN0X21lbT1uZXdfbWVtOwogICAgfQogIGxhc3RfbWVt
LT5wPXA7CiAgcmV0dXJuIHA7Cn0KCnZvaWQgc2ltX2ZyZWVfYWxsKCkKewogIE1lbSAqcDEsICpw
MjsKICBwMT1maXJzdF9tZW07CgoKICB3aGlsZSAocDEpCiAgICB7CiAgICAgIHAyPXAxLT5uZXh0
OwogICAgICB2ZnJlZShwMS0+cCk7CiAgICAgIHZmcmVlKHAxKTsKICAgICAgcDE9cDI7CiAgICB9
CiAgZmlyc3RfbWVtPWxhc3RfbWVtPSgodm9pZCAqKTApOwogIHNpbV9yZXNldF9zdGF0aWNfdmFy
aWFibGUoKTsKfQo=
</data>        

          </attachment>
    </bug>

</bugzilla>