<?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>194346</bug_id>
          
          <creation_ts>2007-10-01 07:18 0000</creation_ts>
          <short_desc>ntfsprogs-2.0.0 has bad list.h redefinitions (causes testdisk failures)</short_desc>
          <delta_ts>2008-02-10 14:09:47 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>2007.0</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208918</blocked>
          
          <everconfirmed>1</everconfirmed>
          <reporter>rose@rz.uni-potsdam.de</reporter>
          <assigned_to>base-system@gentoo.org</assigned_to>
          <cc>andre@terpstra.nu</cc>
    
    <cc>dliana@frontiernet.net</cc>
    
    <cc>forensics@gentoo.org</cc>
    
    <cc>jan.simons@web.de</cc>
    
    <cc>le.retired@gmail.com</cc>
    
    <cc>maggu2810@web.de</cc>
    
    <cc>midnightflash@gmx.de</cc>
    
    <cc>pageexec@freemail.hu</cc>
    
    <cc>robbat2@gentoo.org</cc>
    
    <cc>tetromino@gmail.com</cc>
    
    <cc>voyageur@gentoo.org</cc>

      

      
          <long_desc isprivate="0">
            <who>rose@rz.uni-potsdam.de</who>
            <bug_when>2007-10-01 07:18:57 0000</bug_when>
            <thetext>emerge testdisk fails since ntfsprogs-2.0.0 with

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..     -O3 -march=pentium4 -fomit-frame-pointer -pipe -Wall -MD -Wpointer-arith -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wwrite-strings -W -Wcast-align -Waggregate-return -Wbad-function-cast -Wcast-qual -Wundef -Wredundant-decls -Wsign-compare -Wnested-externs -Winline -Wdeclaration-after-statement -MT ntfs_dir.o -MD -MP -MF &quot;.deps/ntfs_dir.Tpo&quot; -c -o ntfs_dir.o ntfs_dir.c; \
        then mv -f &quot;.deps/ntfs_dir.Tpo&quot; &quot;.deps/ntfs_dir.Po&quot;; else rm -f &quot;.deps/ntfs_dir.Tpo&quot;; exit 1; fi
In file included from dir.h:24,
                 from ntfs_dir.c:65:
list.h:59: error: redefinition of &apos;struct list_head&apos;
list.h:81: error: redefinition of &apos;__list_add&apos;
/usr/include/ntfs/list.h:61: error: previous definition of &apos;__list_add&apos; was here
list.h:97: error: redefinition of &apos;list_add&apos;
/usr/include/ntfs/list.h:77: error: previous definition of &apos;list_add&apos; was here
list.h:110: error: redefinition of &apos;list_add_tail&apos;
/usr/include/ntfs/list.h:90: error: previous definition of &apos;list_add_tail&apos; was here
list.h:122: error: redefinition of &apos;__list_del&apos;
/usr/include/ntfs/list.h:106: error: previous definition of &apos;__list_del&apos; was here
list.h:134: error: redefinition of &apos;list_del&apos;
/usr/include/ntfs/list.h:119: error: previous definition of &apos;list_del&apos; was here
list.h:145: error: redefinition of &apos;list_del_init&apos;
/usr/include/ntfs/list.h:128: error: previous definition of &apos;list_del_init&apos; was here
list.h:178: error: conflicting types for &apos;list_empty&apos;
/usr/include/ntfs/list.h:138: error: previous definition of &apos;list_empty&apos; was here
list.h:220: error: redefinition of &apos;list_splice&apos;
/usr/include/ntfs/list.h:149: error: previous definition of &apos;list_splice&apos; was here
ntfs_dir.c: In function &apos;ntfs_list_entry&apos;:
ntfs_dir.c:145: warning: unused parameter &apos;pos&apos;
ntfs_dir.c: In function &apos;ntfs_dir&apos;:
ntfs_dir.c:275: warning: unused parameter &apos;disk_car&apos;
ntfs_dir.c:275: warning: unused parameter &apos;partition&apos;
ntfs_dir.c: In function &apos;ntfs_copy&apos;:
ntfs_dir.c:307: warning: unused parameter &apos;disk_car&apos;
ntfs_dir.c:307: warning: unused parameter &apos;partition&apos;
make[2]: *** [ntfs_dir.o] Error 1


Reproducible: Always




root@bornholm:/root(3)# emerge --info
Portage 2.1.3.11 (default-linux/x86/2007.0, gcc-4.1.2, glibc-2.6.1-r0, 2.6.22.1 i686)
=================================================================
System uname: 2.6.22.1 i686 Intel(R) Xeon(TM) CPU 2.80GHz
Timestamp of tree: Mon, 01 Oct 2007 06:30:09 +0000
distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled]
ccache version 2.4 [disabled]
app-shells/bash:     3.2_p17-r1
dev-java/java-config: 1.3.7, 2.0.33-r1
dev-lang/python:     2.4.4-r4, 2.5.1-r2
dev-python/pycrypto: 2.0.1-r6
dev-util/ccache:     2.4-r7
sys-apps/baselayout: 1.12.10-r5
sys-apps/sandbox:    1.2.18.1
sys-devel/autoconf:  2.13, 2.61-r1
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10
sys-devel/binutils:  2.18
sys-devel/gcc-config: 1.4.0-r2
sys-devel/libtool:   1.5.24
virtual/os-headers:  2.6.22-r2
ACCEPT_KEYWORDS=&quot;x86 ~x86&quot;
CBUILD=&quot;i686-pc-linux-gnu&quot;
CFLAGS=&quot;-O3 -march=pentium4 -fomit-frame-pointer -pipe&quot;
CHOST=&quot;i686-pc-linux-gnu&quot;
CONFIG_PROTECT=&quot;/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config /var/bind&quot;
CONFIG_PROTECT_MASK=&quot;/etc/env.d /etc/env.d/java/ /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5
/ext-active/ /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c /etc/udev/rules.d&quot;
CXXFLAGS=&quot;-O3 -march=pentium4 -fomit-frame-pointer -pipe&quot;
DISTDIR=&quot;/usr/portage/distfiles&quot;
FEATURES=&quot;distlocks metadata-transfer sandbox sfperms strict unmerge-orphans userfetch&quot;
GENTOO_MIRRORS=&quot;http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/ rsync://ftp.fi
.muni.cz/pub/linux/gentoo/ ftp://gd.tuwien.ac.at/opsys/linux/gentoo/ ftp://ftp.tu-clausthal.de/pub/linux/gentoo/&quot;
LINGUAS=&quot;de fr&quot;
MAKEOPTS=&quot;-j1&quot;
PKGDIR=&quot;/usr/portage/packages&quot;
PORTAGE_RSYNC_OPTS=&quot;--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeou
t=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*&quot;
PORTAGE_TMPDIR=&quot;/var/tmp&quot;
PORTDIR=&quot;/usr/portage&quot;
PORTDIR_OVERLAY=&quot;/usr/portage/local/layman/science /usr/local/portage&quot;
SYNC=&quot;rsync://rsync.gentoo.org/gentoo-portage&quot;
USE=&quot;X Xaw3d a52 aac acl acpi aiglx alsa amrr ao aotuv apache2 asf atlas auctex audacious audiofile automount beagle berkdb bitmap-fonts blas
 bonobo boo bzip2 cairo cdda cddb cdf cdio cdparanoia cdr cgi chm cli corba cracklib crypt cups curl daap dbus device-mapper dga divx dlloade
r dmi dri dv dvb dvd dvdr dvi dxr3 dynagraph effects elf emacs emboss encode epiphany esd evo evolution examples exif expat fam fame ffmpeg f
ftw firefox fits flac fltk foomaticdb fortran fpx galago gdal gdbm geos gif gimp gimpprint ginac glade glitz gml gmp gnome gnuplot gnutls gph
oto2 gpm graphviz grass gs gsl gsm gstreamer gtk guile hal hardened hddtemp hdf hdf5 hlapi iconv icq id3 imagemagick innodb ipv6 isdnlog jabb
er java jbig john jp2 jpeg jpeg2k kexi ladspa lame lapack latex lcms ldap libgda libsamplerate lirc lm_sensors lua lzo lzw mad math matroska 
midi mmx mmxext mng mod mono motif mozdevelop mozilla mozsvg mozxmlterm mp3 mp4live mpeg mpeg2 mplayer mudflap musicbrainz mysql mysqli nauti
lus ncurses neXt netcdf network nfs nls nntp nptl nptlonly ntfs numarray numeric ocaml octave odbc ogdi ogg ole opengl openmp pam pcre pdf pe
rl plotutils plugin png posix postgres pppd proj python qhull quicktime readline real reflection reiserfs rhythmbox rle rrdcgi rrdtool samba 
sdl session slang slp smp sndfile snmp sox speex spell spl sqlite sse sse2 ssl subtitles svg t1lib tcltk tcpd tetex theora threads thunderbir
d tidy tiff tk truetype truetype-fonts type1-fonts unicode userlocales v4l2 win32codecs wmf x86 xatrr xemacs xext xine xml xml2 xmlreader xml
rpc xorg xpm xv xvid xvmc zlib zvbi&quot; ALSA_CARDS=&quot;ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1
938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci&quot; ALSA_PCM_PLUGINS=&quot;adpcm alaw asym copy
 dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol&quot; ELI
BC=&quot;glibc&quot; INPUT_DEVICES=&quot;keyboard mouse&quot; KERNEL=&quot;linux&quot; LCD_DEVICES=&quot;bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text&quot; 
LINGUAS=&quot;de fr&quot; USERLAND=&quot;GNU&quot; VIDEO_CARDS=&quot;ati vesa fbdev&quot;
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>robbat2@gentoo.org</who>
            <bug_when>2007-10-02 10:22:10 0000</bug_when>
            <thetext>vapier: 
There is some badness in the new ntfsprogs headers</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>vapier@gentoo.org</who>
            <bug_when>2007-10-05 03:37:53 0000</bug_when>
            <thetext>the list.h header has not changed</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2007-11-05 16:53:00 0000</bug_when>
            <thetext>*** Bug 198184 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>andre@terpstra.nu</who>
            <bug_when>2007-11-20 16:47:09 0000</bug_when>
            <thetext>Same error has been hitting me for some time now (on ~amd64, ccache disabled too). Is someone working on this one?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>sgsell@web.de</who>
            <bug_when>2007-11-27 21:26:04 0000</bug_when>
            <thetext>Same problem here. 

As a workaround, I just downloaded the static builds from the TestDisk-homepage: http://www.cgsecurity.org/wiki/TestDisk_Download

They work just fine.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>GNUtoo@no-log.org</who>
            <bug_when>2007-12-07 20:10:50 0000</bug_when>
            <thetext>same problem here...</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>pageexec@freemail.hu</who>
            <bug_when>2007-12-22 22:37:45 0000</bug_when>
            <thetext>the problem is name space collision as two packages define list functions. probably the proper way to resolve this would be to change testdisk to not use its own list.h when it uses libntfs.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>grenier@cgsecurity.org</who>
            <bug_when>2007-12-24 10:34:28 0000</bug_when>
            <thetext>Created an attachment (id=139241)
Rename testdisk list functions

This patch renames testdisk list functions to avoid the conflict with ntfsprogs 2.0</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>neil@digimed.co.uk</who>
            <bug_when>2007-12-27 11:34:15 0000</bug_when>
            <thetext>The patch appears to work here, in that the emerge succeeds, although I haven&apos;t tried running the program yet.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>maekke@gentoo.org</who>
            <bug_when>2008-02-10 14:09:47 0000</bug_when>
            <thetext>Thanks for the patch, added in app-admin/testdisk-6.8-r1 with dragonheart&apos;s permission.</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139241</attachid>
            <date>2007-12-24 10:34 0000</date>
            <desc>Rename testdisk list functions</desc>
            <filename>testdisk68_list.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtcnV3IHRlc3RkaXNrLTYuOC5vcmcvc3JjL2Rpci5oIHRlc3RkaXNrLTYuOC9zcmMvZGly
LmgKLS0tIHRlc3RkaXNrLTYuOC5vcmcvc3JjL2Rpci5oCTIwMDctMDUtMTEgMTE6MTY6MTcuMDAw
MDAwMDAwICswMjAwCisrKyB0ZXN0ZGlzay02Ljgvc3JjL2Rpci5oCTIwMDctMTItMDIgMjI6NDE6
NTkuMDAwMDAwMDAwICswMTAwCkBAIC01MSw3ICs1MSw3IEBACiB9OwogCiBzdHJ1Y3QgZmlsZV9p
bmZvIHsKLSAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OworICBzdHJ1Y3QgdGRfbGlzdF9oZWFkIGxp
c3Q7CiAgIGNoYXIgbmFtZVs0MDk2XTsKICAgc3RydWN0IHN0YXQgc3RhdDsKIH07CmRpZmYgLXJ1
dyB0ZXN0ZGlzay02Ljgub3JnL3NyYy9maWxlZ2VuLmggdGVzdGRpc2stNi44L3NyYy9maWxlZ2Vu
LmgKLS0tIHRlc3RkaXNrLTYuOC5vcmcvc3JjL2ZpbGVnZW4uaAkyMDA3LTA2LTAzIDIzOjUyOjQx
LjAwMDAwMDAwMCArMDIwMAorKysgdGVzdGRpc2stNi44L3NyYy9maWxlZ2VuLmgJMjAwNy0xMi0w
MiAyMjo0MTo1OS4wMDAwMDAwMDAgKzAxMDAKQEAgLTg4LDcgKzg4LDcgQEAKIAogc3RydWN0IGFs
bG9jX2RhdGFfc3RydWN0CiB7Ci0gIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKyAgc3RydWN0IHRk
X2xpc3RfaGVhZCBsaXN0OwogICB1aW50NjRfdCBzdGFydDsKICAgdWludDY0X3QgZW5kOwogICBm
aWxlX3N0YXRfdCAqZmlsZV9zdGF0OwpkaWZmIC1ydXcgdGVzdGRpc2stNi44Lm9yZy9zcmMvaW50
cmZhY2UuYyB0ZXN0ZGlzay02Ljgvc3JjL2ludHJmYWNlLmMKLS0tIHRlc3RkaXNrLTYuOC5vcmcv
c3JjL2ludHJmYWNlLmMJMjAwNy0wNy0xOCAxOToxMDoxMC4wMDAwMDAwMDAgKzAyMDAKKysrIHRl
c3RkaXNrLTYuOC9zcmMvaW50cmZhY2UuYwkyMDA3LTEyLTAyIDIyOjQxOjU5LjAwMDAwMDAwMCAr
MDEwMApAQCAtMTA4MCwxNSArMTA4MCwxNSBAQAogCiBzdGF0aWMgbGlzdF9wYXJ0X3QgKmludGVy
ZmFjZV9sb2FkKGRpc2tfdCAqZGlza19jYXIsbGlzdF9wYXJ0X3QgKmxpc3RfcGFydCwgY29uc3Qg
aW50IGRlYnVnKQogewotICBzdHJ1Y3QgbGlzdF9oZWFkICpiYWNrdXBfd2Fsa2VyPU5VTEw7Cisg
IHN0cnVjdCB0ZF9saXN0X2hlYWQgKmJhY2t1cF93YWxrZXI9TlVMTDsKICAgYmFja3VwX2Rpc2tf
dCAqYmFja3VwX2xpc3Q9cGFydGl0aW9uX2xvYWQoZGlza19jYXIsZGVidWcpOwogICB7CiAgICAg
bG9nX2luZm8oImludGVyZmFjZV9sb2FkXG4iKTsKLSAgICBsaXN0X2Zvcl9lYWNoKGJhY2t1cF93
YWxrZXIsJmJhY2t1cF9saXN0LT5saXN0KQorICAgIHRkX2xpc3RfZm9yX2VhY2goYmFja3VwX3dh
bGtlciwmYmFja3VwX2xpc3QtPmxpc3QpCiAgICAgewogICAgICAgbGlzdF9wYXJ0X3QgKmVsZW1l
bnQ7CiAgICAgICBiYWNrdXBfZGlza190ICpiYWNrdXA7Ci0gICAgICBiYWNrdXA9bGlzdF9lbnRy
eShiYWNrdXBfd2Fsa2VyLCBiYWNrdXBfZGlza190LCBsaXN0KTsKKyAgICAgIGJhY2t1cD10ZF9s
aXN0X2VudHJ5KGJhY2t1cF93YWxrZXIsIGJhY2t1cF9kaXNrX3QsIGxpc3QpOwogICAgICAgbG9n
X2luZm8oIiVzICVzIixiYWNrdXAtPmRlc2NyaXB0aW9uLGN0aW1lKCZiYWNrdXAtPm15X3RpbWUp
KTsKICAgICAgIGZvcihlbGVtZW50PWJhY2t1cC0+bGlzdF9wYXJ0O2VsZW1lbnQhPU5VTEw7ZWxl
bWVudD1lbGVtZW50LT5uZXh0KQogCWxvZ19wYXJ0aXRpb24oZGlza19jYXIsZWxlbWVudC0+cGFy
dCk7CkBAIC0xMTAwLDcgKzExMDAsNyBAQAogICAgIGludCBiYWNrdXBfY3VycmVudF9udW09MDsK
ICAgICBpbnQgcmV3cml0ZT0xOwogICAgIHVuc2lnbmVkIGludCBtZW51PTM7ICAgLyogZGVmYXVs
dCA6IHF1aXQgKi8KLSAgICBzdHJ1Y3QgbGlzdF9oZWFkICpiYWNrdXBfY3VycmVudD1iYWNrdXBf
bGlzdC0+bGlzdC5uZXh0OworICAgIHN0cnVjdCB0ZF9saXN0X2hlYWQgKmJhY2t1cF9jdXJyZW50
PWJhY2t1cF9saXN0LT5saXN0Lm5leHQ7CiAgICAgc3RydWN0IE1lbnVJdGVtIG1lbnVMb2FkQmFj
a3VwW109CiAgICAgewogICAgICAgeyAnUCcsICJQcmV2aW91cyIsIiJ9LApAQCAtMTEzNCw3ICsx
MTM0LDcgQEAKIAlmb3IoaT0wLGJhY2t1cF93YWxrZXI9YmFja3VwX2xpc3QtPmxpc3QubmV4dDso
YmFja3VwX3dhbGtlciE9JmJhY2t1cF9saXN0LT5saXN0KSAmJiAoaTxvZmZzZXQpO2JhY2t1cF93
YWxrZXI9YmFja3VwX3dhbGtlci0+bmV4dCxpKyspOwogCWZvcihpPW9mZnNldDsoYmFja3VwX3dh
bGtlciE9JmJhY2t1cF9saXN0LT5saXN0KSAmJigoaS1vZmZzZXQpPElOVEVSX1NUUlVDVFVSRSk7
aSsrLGJhY2t1cF93YWxrZXI9YmFja3VwX3dhbGtlci0+bmV4dCkKIAl7Ci0JICBiYWNrdXA9bGlz
dF9lbnRyeShiYWNrdXBfd2Fsa2VyLCBiYWNrdXBfZGlza190LCBsaXN0KTsKKwkgIGJhY2t1cD10
ZF9saXN0X2VudHJ5KGJhY2t1cF93YWxrZXIsIGJhY2t1cF9kaXNrX3QsIGxpc3QpOwogCSAgd21v
dmUoc3Rkc2NyLDgraS1vZmZzZXQsMCk7CiAJICB3Y2xydG9lb2woc3Rkc2NyKTsJLyogYmVmb3Jl
IGFkZHN0ciBmb3IgQlNEIGNvbXBhdGliaWxpdHkgKi8KIAkgIGlmKGJhY2t1cF93YWxrZXI9PWJh
Y2t1cF9jdXJyZW50KQpAQCAtMTIyMiw3ICsxMjIyLDcgQEAKICAgICB7CiAgICAgICBsaXN0X3Bh
cnRfdCAqcGFydGl0aW9uOwogICAgICAgYmFja3VwX2Rpc2tfdCAqYmFja3VwOwotICAgICAgYmFj
a3VwPWxpc3RfZW50cnkoYmFja3VwX2N1cnJlbnQsIGJhY2t1cF9kaXNrX3QsIGxpc3QpOworICAg
ICAgYmFja3VwPXRkX2xpc3RfZW50cnkoYmFja3VwX2N1cnJlbnQsIGJhY2t1cF9kaXNrX3QsIGxp
c3QpOwogICAgICAgZm9yKHBhcnRpdGlvbj1iYWNrdXAtPmxpc3RfcGFydDtwYXJ0aXRpb24hPU5V
TEw7cGFydGl0aW9uPXBhcnRpdGlvbi0+bmV4dCkKICAgICAgIHsKIAkvKiBDaGVjayBwYXJ0aXRp
b24gYW5kIGxvYWQgcGFydGl0aW9uIG5hbWUgKi8KQEAgLTEyMzIsMTEgKzEyMzIsMTEgQEAKICAg
ICB9CiAgIH0KICAgeyAvKiBDbGVhbnVwICovCi0gICAgc3RydWN0IGxpc3RfaGVhZCAqYmFja3Vw
X3dhbGtlcl9uZXh0ID0gTlVMTDsKLSAgICBsaXN0X2Zvcl9lYWNoX3NhZmUoYmFja3VwX3dhbGtl
cixiYWNrdXBfd2Fsa2VyX25leHQsJmJhY2t1cF9saXN0LT5saXN0KQorICAgIHN0cnVjdCB0ZF9s
aXN0X2hlYWQgKmJhY2t1cF93YWxrZXJfbmV4dCA9IE5VTEw7CisgICAgdGRfbGlzdF9mb3JfZWFj
aF9zYWZlKGJhY2t1cF93YWxrZXIsYmFja3VwX3dhbGtlcl9uZXh0LCZiYWNrdXBfbGlzdC0+bGlz
dCkKICAgICB7CiAgICAgICBiYWNrdXBfZGlza190ICpiYWNrdXA7Ci0gICAgICBiYWNrdXA9bGlz
dF9lbnRyeShiYWNrdXBfd2Fsa2VyLCBiYWNrdXBfZGlza190LCBsaXN0KTsKKyAgICAgIGJhY2t1
cD10ZF9saXN0X2VudHJ5KGJhY2t1cF93YWxrZXIsIGJhY2t1cF9kaXNrX3QsIGxpc3QpOwogICAg
ICAgZGVsZXRlX2xpc3RfcGFydChiYWNrdXAtPmxpc3RfcGFydCk7CiAgICAgICBmcmVlKGJhY2t1
cCk7CiAgICAgfQpkaWZmIC1ydXcgdGVzdGRpc2stNi44Lm9yZy9zcmMvaW50cmYuYyB0ZXN0ZGlz
ay02Ljgvc3JjL2ludHJmLmMKLS0tIHRlc3RkaXNrLTYuOC5vcmcvc3JjL2ludHJmLmMJMjAwNy0w
Ny0xOSAyMzo0NDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHRlc3RkaXNrLTYuOC9zcmMvaW50cmYu
YwkyMDA3LTEyLTAyIDIyOjQxOjU5LjAwMDAwMDAwMCArMDEwMApAQCAtMTU0OCwxMSArMTU0OCwx
MSBAQAogICBkbwogICB7CiAgICAgRElSKiBkaXI7Ci0gICAgc3RydWN0IGxpc3RfaGVhZCAqZGly
X2N1cnJlbnQ7CisgICAgc3RydWN0IHRkX2xpc3RfaGVhZCAqZGlyX2N1cnJlbnQ7CiAgICAgaW50
IG9mZnNldD0wOwogICAgIGludCBwb3NfbnVtPTA7CiAgICAgc3RhdGljIHN0cnVjdCBmaWxlX2lu
Zm8gZGlyX2xpc3QgPSB7Ci0gICAgICAubGlzdCA9IExJU1RfSEVBRF9JTklUKGRpcl9saXN0Lmxp
c3QpLAorICAgICAgLmxpc3QgPSBURF9MSVNUX0hFQURfSU5JVChkaXJfbGlzdC5saXN0KSwKICAg
ICAgIC5uYW1lID0gezB9CiAgICAgfTsKICAgICB3bW92ZSh3aW5kb3csNywwKTsKQEAgLTE1NzYs
NyArMTU3Niw3IEBACiAJbmV3X2RyaXZlLT5uYW1lWzJdPVBBVEhfU0VQOwogCW5ld19kcml2ZS0+
bmFtZVszXT0nXDAnOwogCW5ld19kcml2ZS0+c3RhdC5zdF9tb2RlPUxJTlVYX1NfSUZESVJ8TElO
VVhfU19JUldYVUdPOwotCWxpc3RfYWRkX3RhaWwoJm5ld19kcml2ZS0+bGlzdCwmZGlyX2xpc3Qu
bGlzdCk7CisJdGRfbGlzdF9hZGRfdGFpbCgmbmV3X2RyaXZlLT5saXN0LCZkaXJfbGlzdC5saXN0
KTsKICAgICAgIH0KICAgICAgIGRpcj1OVUxMOwogICAgIH0KQEAgLTE2MzMsNyArMTYzMyw3IEBA
CiAJICAgICAgfQogI2VuZGlmCiAJICAgICAgc3RybmNweShkaXJfaW5mby0+bmFtZSxkaXJfZW50
cmllLT5kX25hbWUsc2l6ZW9mKGRpcl9pbmZvLT5uYW1lKSk7Ci0JICAgICAgbGlzdF9hZGRfdGFp
bCgmZGlyX2luZm8tPmxpc3QsJmRpcl9saXN0Lmxpc3QpOworCSAgICAgIHRkX2xpc3RfYWRkX3Rh
aWwoJmRpcl9pbmZvLT5saXN0LCZkaXJfbGlzdC5saXN0KTsKIAkgICAgICBkaXJfaW5mbz0oc3Ry
dWN0IGZpbGVfaW5mbyopTUFMTE9DKHNpemVvZigqZGlyX2luZm8pKTsKIAkgICAgfQogCSAgfQpA
QCAtMTY2NSwxNCArMTY2NSwxNCBAQAogCXdkb3ByaW50Zih3aW5kb3csIlRvIHNlbGVjdCBhbm90
aGVyIGRpcmVjdG9yeSwgdXNlIHRoZSBhcnJvdyBrZXlzLiIpOwogI2VuZGlmCiAJewotCSAgc3Ry
dWN0IGxpc3RfaGVhZCAqZGlyX3dhbGtlciA9IE5VTEw7CisJICBzdHJ1Y3QgdGRfbGlzdF9oZWFk
ICpkaXJfd2Fsa2VyID0gTlVMTDsKIAkgIGludCBpPTA7Ci0JICBsaXN0X2Zvcl9lYWNoKGRpcl93
YWxrZXIsJmRpcl9saXN0Lmxpc3QpCisJICB0ZF9saXN0X2Zvcl9lYWNoKGRpcl93YWxrZXIsJmRp
cl9saXN0Lmxpc3QpCiAJICB7CiAJICAgIGlmKG9mZnNldDw9aSkKIAkgICAgewogCSAgICAgIHN0
cnVjdCBmaWxlX2luZm8gKmRpcl9pbmZvOwotCSAgICAgIGRpcl9pbmZvPWxpc3RfZW50cnkoZGly
X3dhbGtlciwgc3RydWN0IGZpbGVfaW5mbywgbGlzdCk7CisJICAgICAgZGlyX2luZm89dGRfbGlz
dF9lbnRyeShkaXJfd2Fsa2VyLCBzdHJ1Y3QgZmlsZV9pbmZvLCBsaXN0KTsKIAkgICAgICB3bW92
ZSh3aW5kb3csOCtpLW9mZnNldCwwKTsKIAkgICAgICB3Y2xydG9lb2wod2luZG93KTsJLyogYmVm
b3JlIGFkZHN0ciBmb3IgQlNEIGNvbXBhdGliaWxpdHkgKi8KIAkgICAgICBpZihkaXJfd2Fsa2Vy
PT1kaXJfY3VycmVudCkKQEAgLTE3OTIsNyArMTc5Miw3IEBACiAJICAgICAgaWYoZGlyX2N1cnJl
bnQhPSZkaXJfbGlzdC5saXN0KQogCSAgICAgIHsKIAkJc3RydWN0IGZpbGVfaW5mbyAqZGlyX2lu
Zm87Ci0JCWRpcl9pbmZvPWxpc3RfZW50cnkoZGlyX2N1cnJlbnQsIHN0cnVjdCBmaWxlX2luZm8s
IGxpc3QpOworCQlkaXJfaW5mbz10ZF9saXN0X2VudHJ5KGRpcl9jdXJyZW50LCBzdHJ1Y3QgZmls
ZV9pbmZvLCBsaXN0KTsKIAkJaWYoc3RyY21wKGRpcl9pbmZvLT5uYW1lLCIuIik9PTApCiAJCXsK
IAkJfQpAQCAtMTgxOSwxMyArMTgxOSwxMyBAQAogCX0gd2hpbGUocXVpdD09MCk7CiAgICAgICB9
IHdoaWxlKHF1aXQ9PTEpOwogICAgICAgewotCXN0cnVjdCBsaXN0X2hlYWQgKmRpcl93YWxrZXIg
PSBOVUxMOwotCXN0cnVjdCBsaXN0X2hlYWQgKmRpcl93YWxrZXJfbmV4dCA9IE5VTEw7Ci0JbGlz
dF9mb3JfZWFjaF9zYWZlKGRpcl93YWxrZXIsZGlyX3dhbGtlcl9uZXh0LCZkaXJfbGlzdC5saXN0
KQorCXN0cnVjdCB0ZF9saXN0X2hlYWQgKmRpcl93YWxrZXIgPSBOVUxMOworCXN0cnVjdCB0ZF9s
aXN0X2hlYWQgKmRpcl93YWxrZXJfbmV4dCA9IE5VTEw7CisJdGRfbGlzdF9mb3JfZWFjaF9zYWZl
KGRpcl93YWxrZXIsZGlyX3dhbGtlcl9uZXh0LCZkaXJfbGlzdC5saXN0KQogCXsKIAkgIHN0cnVj
dCBmaWxlX2luZm8gKmRpcl9pbmZvOwotCSAgZGlyX2luZm89bGlzdF9lbnRyeShkaXJfd2Fsa2Vy
LCBzdHJ1Y3QgZmlsZV9pbmZvLCBsaXN0KTsKLQkgIGxpc3RfZGVsKGRpcl93YWxrZXIpOworCSAg
ZGlyX2luZm89dGRfbGlzdF9lbnRyeShkaXJfd2Fsa2VyLCBzdHJ1Y3QgZmlsZV9pbmZvLCBsaXN0
KTsKKwkgIHRkX2xpc3RfZGVsKGRpcl93YWxrZXIpOwogCSAgZnJlZShkaXJfaW5mbyk7CiAJfQog
ICAgICAgfQpkaWZmIC1ydXcgdGVzdGRpc2stNi44Lm9yZy9zcmMvbGlzdC5jIHRlc3RkaXNrLTYu
OC9zcmMvbGlzdC5jCi0tLSB0ZXN0ZGlzay02Ljgub3JnL3NyYy9saXN0LmMJMjAwNy0wNy0wNiAx
ODo0ODoyNS4wMDAwMDAwMDAgKzAyMDAKKysrIHRlc3RkaXNrLTYuOC9zcmMvbGlzdC5jCTIwMDct
MTItMDIgMjI6NDE6NTkuMDAwMDAwMDAwICswMTAwCkBAIC04NywxNCArODcsMTQgQEAKICAgICAg
IGlmKGZpbGVfc2l6ZT49c2l6ZSkKICAgICAgIHsKIAllbGVtZW50LT5lbmQtPShmaWxlX3NpemUt
c2l6ZSk7Ci0JbGlzdF9kZWxldGUoZWxlbWVudC0+bmV4dCk7Ci0vLwllbGVtZW50LT5uZXh0PU5V
TEw7CWFscmVhZHkgZG9uZSBieSBsaXN0X2RlbGV0ZQorCXRkX2xpc3RfZGVsZXRlKGVsZW1lbnQt
Pm5leHQpOworLy8JZWxlbWVudC0+bmV4dD1OVUxMOwlhbHJlYWR5IGRvbmUgYnkgdGRfbGlzdF9k
ZWxldGUKICAgICAgIH0KICAgICB9CiAgIH0KIH0KIAotdm9pZCBsaXN0X2RlbGV0ZShhbGxvY19s
aXN0X3QgKmxpc3QpCit2b2lkIHRkX2xpc3RfZGVsZXRlKGFsbG9jX2xpc3RfdCAqbGlzdCkKIHsK
ICAgYWxsb2NfbGlzdF90ICpuZXh0OwogICBpZihsaXN0IT1OVUxMICYmIGxpc3QtPnByZXYhPU5V
TEwpCmRpZmYgLXJ1dyB0ZXN0ZGlzay02Ljgub3JnL3NyYy9saXN0LmggdGVzdGRpc2stNi44L3Ny
Yy9saXN0LmgKLS0tIHRlc3RkaXNrLTYuOC5vcmcvc3JjL2xpc3QuaAkyMDA3LTA2LTA1IDIzOjAx
OjA2LjAwMDAwMDAwMCArMDIwMAorKysgdGVzdGRpc2stNi44L3NyYy9saXN0LmgJMjAwNy0xMi0w
MiAyMjo0MTo1OS4wMDAwMDAwMDAgKzAxMDAKQEAgLTM0LDcgKzM0LDcgQEAKIAogdm9pZCBsaXN0
X2FwcGVuZF9ibG9jayhhbGxvY19saXN0X3QgKmxpc3QsIGNvbnN0IHVpbnQ2NF90IG9mZnNldCwg
Y29uc3QgdWludDY0X3QgYmxvY2tzaXplLCBjb25zdCBpbnQgZGF0YSk7CiB2b2lkIGxpc3RfdHJ1
bmNhdGUoYWxsb2NfbGlzdF90ICpsaXN0LCB1aW50NjRfdCBzaXplKTsKLXZvaWQgbGlzdF9kZWxl
dGUoYWxsb2NfbGlzdF90ICpsaXN0KTsKK3ZvaWQgdGRfbGlzdF9kZWxldGUoYWxsb2NfbGlzdF90
ICpsaXN0KTsKIAogCiAvKgpAQCAtNTYsMTYgKzU2LDE2IEBACiAgKiB1c2luZyB0aGUgZ2VuZXJp
YyBzaW5nbGUtZW50cnkgcm91dGluZXMuCiAgKi8KIAotc3RydWN0IGxpc3RfaGVhZCB7Ci0Jc3Ry
dWN0IGxpc3RfaGVhZCAqbmV4dCwgKnByZXY7CitzdHJ1Y3QgdGRfbGlzdF9oZWFkIHsKKwlzdHJ1
Y3QgdGRfbGlzdF9oZWFkICpuZXh0LCAqcHJldjsKIH07CiAKLSNkZWZpbmUgTElTVF9IRUFEX0lO
SVQobmFtZSkgeyAmKG5hbWUpLCAmKG5hbWUpIH0KKyNkZWZpbmUgVERfTElTVF9IRUFEX0lOSVQo
bmFtZSkgeyAmKG5hbWUpLCAmKG5hbWUpIH0KIAotI2RlZmluZSBMSVNUX0hFQUQobmFtZSkgXAot
CXN0cnVjdCBsaXN0X2hlYWQgbmFtZSA9IExJU1RfSEVBRF9JTklUKG5hbWUpCisjZGVmaW5lIFRE
X0xJU1RfSEVBRChuYW1lKSBcCisJc3RydWN0IHRkX2xpc3RfaGVhZCBuYW1lID0gVERfTElTVF9I
RUFEX0lOSVQobmFtZSkKIAotI2RlZmluZSBJTklUX0xJU1RfSEVBRChwdHIpIGRvIHsgXAorI2Rl
ZmluZSBJTklUX1REX0xJU1RfSEVBRChwdHIpIGRvIHsgXAogCShwdHIpLT5uZXh0ID0gKHB0cik7
IChwdHIpLT5wcmV2ID0gKHB0cik7IFwKIH0gd2hpbGUgKDApCiAKQEAgLTc1LDkgKzc1LDkgQEAK
ICAqIFRoaXMgaXMgb25seSBmb3IgaW50ZXJuYWwgbGlzdCBtYW5pcHVsYXRpb24gd2hlcmUgd2Ug
a25vdwogICogdGhlIHByZXYvbmV4dCBlbnRyaWVzIGFscmVhZHkhCiAgKi8KLXN0YXRpYyBpbmxp
bmUgdm9pZCBfX2xpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywKLQkJCSAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgKnByZXYsCi0JCQkgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0KQorc3Rh
dGljIGlubGluZSB2b2lkIF9fdGRfbGlzdF9hZGQoc3RydWN0IHRkX2xpc3RfaGVhZCAqbmV3LAor
CQkJICAgICAgc3RydWN0IHRkX2xpc3RfaGVhZCAqcHJldiwKKwkJCSAgICAgIHN0cnVjdCB0ZF9s
aXN0X2hlYWQgKm5leHQpCiB7CiAJbmV4dC0+cHJldiA9IG5ldzsKIAluZXctPm5leHQgPSBuZXh0
OwpAQCAtODYsMjkgKzg2LDI5IEBACiB9CiAKIC8qKgotICogbGlzdF9hZGQgLSBhZGQgYSBuZXcg
ZW50cnkKKyAqIHRkX2xpc3RfYWRkIC0gYWRkIGEgbmV3IGVudHJ5CiAgKiBAbmV3OiBuZXcgZW50
cnkgdG8gYmUgYWRkZWQKICAqIEBoZWFkOiBsaXN0IGhlYWQgdG8gYWRkIGl0IGFmdGVyCiAgKgog
ICogSW5zZXJ0IGEgbmV3IGVudHJ5IGFmdGVyIHRoZSBzcGVjaWZpZWQgaGVhZC4KICAqIFRoaXMg
aXMgZ29vZCBmb3IgaW1wbGVtZW50aW5nIHN0YWNrcy4KICAqLwotc3RhdGljIGlubGluZSB2b2lk
IGxpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkK
K3N0YXRpYyBpbmxpbmUgdm9pZCB0ZF9saXN0X2FkZChzdHJ1Y3QgdGRfbGlzdF9oZWFkICpuZXcs
IHN0cnVjdCB0ZF9saXN0X2hlYWQgKmhlYWQpCiB7Ci0JX19saXN0X2FkZChuZXcsIGhlYWQsIGhl
YWQtPm5leHQpOworCV9fdGRfbGlzdF9hZGQobmV3LCBoZWFkLCBoZWFkLT5uZXh0KTsKIH0KIAog
LyoqCi0gKiBsaXN0X2FkZF90YWlsIC0gYWRkIGEgbmV3IGVudHJ5CisgKiB0ZF9saXN0X2FkZF90
YWlsIC0gYWRkIGEgbmV3IGVudHJ5CiAgKiBAbmV3OiBuZXcgZW50cnkgdG8gYmUgYWRkZWQKICAq
IEBoZWFkOiBsaXN0IGhlYWQgdG8gYWRkIGl0IGJlZm9yZQogICoKICAqIEluc2VydCBhIG5ldyBl
bnRyeSBiZWZvcmUgdGhlIHNwZWNpZmllZCBoZWFkLgogICogVGhpcyBpcyB1c2VmdWwgZm9yIGlt
cGxlbWVudGluZyBxdWV1ZXMuCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X2FkZF90YWls
KHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKK3N0YXRpYyBp
bmxpbmUgdm9pZCB0ZF9saXN0X2FkZF90YWlsKHN0cnVjdCB0ZF9saXN0X2hlYWQgKm5ldywgc3Ry
dWN0IHRkX2xpc3RfaGVhZCAqaGVhZCkKIHsKLQlfX2xpc3RfYWRkKG5ldywgaGVhZC0+cHJldiwg
aGVhZCk7CisJX190ZF9saXN0X2FkZChuZXcsIGhlYWQtPnByZXYsIGhlYWQpOwogfQogCiAvKgpA
QCAtMTE4LDkxICsxMTgsOTEgQEAKICAqIFRoaXMgaXMgb25seSBmb3IgaW50ZXJuYWwgbGlzdCBt
YW5pcHVsYXRpb24gd2hlcmUgd2Uga25vdwogICogdGhlIHByZXYvbmV4dCBlbnRyaWVzIGFscmVh
ZHkhCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQg
KiBwcmV2LCBzdHJ1Y3QgbGlzdF9oZWFkICogbmV4dCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX3Rk
X2xpc3RfZGVsKHN0cnVjdCB0ZF9saXN0X2hlYWQgKiBwcmV2LCBzdHJ1Y3QgdGRfbGlzdF9oZWFk
ICogbmV4dCkKIHsKIAluZXh0LT5wcmV2ID0gcHJldjsKIAlwcmV2LT5uZXh0ID0gbmV4dDsKIH0K
IAogLyoqCi0gKiBsaXN0X2RlbCAtIGRlbGV0ZXMgZW50cnkgZnJvbSBsaXN0LgorICogdGRfbGlz
dF9kZWwgLSBkZWxldGVzIGVudHJ5IGZyb20gbGlzdC4KICAqIEBlbnRyeTogdGhlIGVsZW1lbnQg
dG8gZGVsZXRlIGZyb20gdGhlIGxpc3QuCi0gKiBOb3RlOiBsaXN0X2VtcHR5IG9uIGVudHJ5IGRv
ZXMgbm90IHJldHVybiB0cnVlIGFmdGVyIHRoaXMsIHRoZSBlbnRyeSBpcworICogTm90ZTogdGRf
bGlzdF9lbXB0eSBvbiBlbnRyeSBkb2VzIG5vdCByZXR1cm4gdHJ1ZSBhZnRlciB0aGlzLCB0aGUg
ZW50cnkgaXMKICAqIGluIGFuIHVuZGVmaW5lZCBzdGF0ZS4KICAqLwotc3RhdGljIGlubGluZSB2
b2lkIGxpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQorc3RhdGljIGlubGluZSB2b2lk
IHRkX2xpc3RfZGVsKHN0cnVjdCB0ZF9saXN0X2hlYWQgKmVudHJ5KQogewotCV9fbGlzdF9kZWwo
ZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKKwlfX3RkX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBl
bnRyeS0+bmV4dCk7CiAJZW50cnktPm5leHQgPSBMSVNUX1BPSVNPTjE7CiAJZW50cnktPnByZXYg
PSBMSVNUX1BPSVNPTjI7CiB9CiAKIC8qKgotICogbGlzdF9kZWxfaW5pdCAtIGRlbGV0ZXMgZW50
cnkgZnJvbSBsaXN0IGFuZCByZWluaXRpYWxpemUgaXQuCisgKiB0ZF9saXN0X2RlbF9pbml0IC0g
ZGVsZXRlcyBlbnRyeSBmcm9tIGxpc3QgYW5kIHJlaW5pdGlhbGl6ZSBpdC4KICAqIEBlbnRyeTog
dGhlIGVsZW1lbnQgdG8gZGVsZXRlIGZyb20gdGhlIGxpc3QuCiAgKi8KLXN0YXRpYyBpbmxpbmUg
dm9pZCBsaXN0X2RlbF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQorc3RhdGljIGlubGlu
ZSB2b2lkIHRkX2xpc3RfZGVsX2luaXQoc3RydWN0IHRkX2xpc3RfaGVhZCAqZW50cnkpCiB7Ci0J
X19saXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5leHQpOwotCUlOSVRfTElTVF9IRUFEKGVu
dHJ5KTsKKwlfX3RkX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBlbnRyeS0+bmV4dCk7CisJSU5JVF9U
RF9MSVNUX0hFQUQoZW50cnkpOwogfQogCiAvKioKLSAqIGxpc3RfbW92ZSAtIGRlbGV0ZSBmcm9t
IG9uZSBsaXN0IGFuZCBhZGQgYXMgYW5vdGhlcidzIGhlYWQKKyAqIHRkX2xpc3RfbW92ZSAtIGRl
bGV0ZSBmcm9tIG9uZSBsaXN0IGFuZCBhZGQgYXMgYW5vdGhlcidzIGhlYWQKICAqIEBsaXN0OiB0
aGUgZW50cnkgdG8gbW92ZQogICogQGhlYWQ6IHRoZSBoZWFkIHRoYXQgd2lsbCBwcmVjZWRlIG91
ciBlbnRyeQogICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9tb3ZlKHN0cnVjdCBsaXN0X2hl
YWQgKmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCitzdGF0aWMgaW5saW5lIHZvaWQgdGRf
bGlzdF9tb3ZlKHN0cnVjdCB0ZF9saXN0X2hlYWQgKmxpc3QsIHN0cnVjdCB0ZF9saXN0X2hlYWQg
KmhlYWQpCiB7Ci0gICAgICAgIF9fbGlzdF9kZWwobGlzdC0+cHJldiwgbGlzdC0+bmV4dCk7Ci0g
ICAgICAgIGxpc3RfYWRkKGxpc3QsIGhlYWQpOworICAgICAgICBfX3RkX2xpc3RfZGVsKGxpc3Qt
PnByZXYsIGxpc3QtPm5leHQpOworICAgICAgICB0ZF9saXN0X2FkZChsaXN0LCBoZWFkKTsKIH0K
IAogLyoqCi0gKiBsaXN0X21vdmVfdGFpbCAtIGRlbGV0ZSBmcm9tIG9uZSBsaXN0IGFuZCBhZGQg
YXMgYW5vdGhlcidzIHRhaWwKKyAqIHRkX2xpc3RfbW92ZV90YWlsIC0gZGVsZXRlIGZyb20gb25l
IGxpc3QgYW5kIGFkZCBhcyBhbm90aGVyJ3MgdGFpbAogICogQGxpc3Q6IHRoZSBlbnRyeSB0byBt
b3ZlCiAgKiBAaGVhZDogdGhlIGhlYWQgdGhhdCB3aWxsIGZvbGxvdyBvdXIgZW50cnkKICAqLwot
c3RhdGljIGlubGluZSB2b2lkIGxpc3RfbW92ZV90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3Qs
Ci0JCQkJICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQorc3RhdGljIGlubGluZSB2b2lkIHRkX2xp
c3RfbW92ZV90YWlsKHN0cnVjdCB0ZF9saXN0X2hlYWQgKmxpc3QsCisJCQkJICBzdHJ1Y3QgdGRf
bGlzdF9oZWFkICpoZWFkKQogewotICAgICAgICBfX2xpc3RfZGVsKGxpc3QtPnByZXYsIGxpc3Qt
Pm5leHQpOwotICAgICAgICBsaXN0X2FkZF90YWlsKGxpc3QsIGhlYWQpOworICAgICAgICBfX3Rk
X2xpc3RfZGVsKGxpc3QtPnByZXYsIGxpc3QtPm5leHQpOworICAgICAgICB0ZF9saXN0X2FkZF90
YWlsKGxpc3QsIGhlYWQpOwogfQogCiAvKioKLSAqIGxpc3RfZW1wdHkgLSB0ZXN0cyB3aGV0aGVy
IGEgbGlzdCBpcyBlbXB0eQorICogdGRfbGlzdF9lbXB0eSAtIHRlc3RzIHdoZXRoZXIgYSBsaXN0
IGlzIGVtcHR5CiAgKiBAaGVhZDogdGhlIGxpc3QgdG8gdGVzdC4KICAqLwotc3RhdGljIGlubGlu
ZSBpbnQgbGlzdF9lbXB0eShjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQorc3RhdGljIGlu
bGluZSBpbnQgdGRfbGlzdF9lbXB0eShjb25zdCBzdHJ1Y3QgdGRfbGlzdF9oZWFkICpoZWFkKQog
ewogCXJldHVybiBoZWFkLT5uZXh0ID09IGhlYWQ7CiB9CiAKIC8qKgotICogbGlzdF9lbXB0eV9j
YXJlZnVsIC0gdGVzdHMgd2hldGhlciBhIGxpc3QgaXMKKyAqIHRkX2xpc3RfZW1wdHlfY2FyZWZ1
bCAtIHRlc3RzIHdoZXRoZXIgYSBsaXN0IGlzCiAgKiBlbXB0eSBfYW5kXyBjaGVja3MgdGhhdCBu
byBvdGhlciBDUFUgbWlnaHQgYmUKICAqIGluIHRoZSBwcm9jZXNzIG9mIHN0aWxsIG1vZGlmeWlu
ZyBlaXRoZXIgbWVtYmVyCiAgKgotICogTk9URTogdXNpbmcgbGlzdF9lbXB0eV9jYXJlZnVsKCkg
d2l0aG91dCBzeW5jaHJvbml6YXRpb24KKyAqIE5PVEU6IHVzaW5nIHRkX2xpc3RfZW1wdHlfY2Fy
ZWZ1bCgpIHdpdGhvdXQgc3luY2hyb25pemF0aW9uCiAgKiBjYW4gb25seSBiZSBzYWZlIGlmIHRo
ZSBvbmx5IGFjdGl2aXR5IHRoYXQgY2FuIGhhcHBlbgotICogdG8gdGhlIGxpc3QgZW50cnkgaXMg
bGlzdF9kZWxfaW5pdCgpLiBFZy4gaXQgY2Fubm90IGJlIHVzZWQKLSAqIGlmIGFub3RoZXIgQ1BV
IGNvdWxkIHJlLWxpc3RfYWRkKCkgaXQuCisgKiB0byB0aGUgbGlzdCBlbnRyeSBpcyB0ZF9saXN0
X2RlbF9pbml0KCkuIEVnLiBpdCBjYW5ub3QgYmUgdXNlZAorICogaWYgYW5vdGhlciBDUFUgY291
bGQgcmUtdGRfbGlzdF9hZGQoKSBpdC4KICAqCiAgKiBAaGVhZDogdGhlIGxpc3QgdG8gdGVzdC4K
ICAqLwotc3RhdGljIGlubGluZSBpbnQgbGlzdF9lbXB0eV9jYXJlZnVsKGNvbnN0IHN0cnVjdCBs
aXN0X2hlYWQgKmhlYWQpCitzdGF0aWMgaW5saW5lIGludCB0ZF9saXN0X2VtcHR5X2NhcmVmdWwo
Y29uc3Qgc3RydWN0IHRkX2xpc3RfaGVhZCAqaGVhZCkKIHsKLQlzdHJ1Y3QgbGlzdF9oZWFkICpu
ZXh0ID0gaGVhZC0+bmV4dDsKKwlzdHJ1Y3QgdGRfbGlzdF9oZWFkICpuZXh0ID0gaGVhZC0+bmV4
dDsKIAlyZXR1cm4gKG5leHQgPT0gaGVhZCkgJiYgKG5leHQgPT0gaGVhZC0+cHJldik7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgdm9pZCBfX2xpc3Rfc3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3Qs
Ci0JCQkJIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCitzdGF0aWMgaW5saW5lIHZvaWQgX190ZF9s
aXN0X3NwbGljZShzdHJ1Y3QgdGRfbGlzdF9oZWFkICpsaXN0LAorCQkJCSBzdHJ1Y3QgdGRfbGlz
dF9oZWFkICpoZWFkKQogewotCXN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0ID0gbGlzdC0+bmV4dDsK
LQlzdHJ1Y3QgbGlzdF9oZWFkICpsYXN0ID0gbGlzdC0+cHJldjsKLQlzdHJ1Y3QgbGlzdF9oZWFk
ICphdCA9IGhlYWQtPm5leHQ7CisJc3RydWN0IHRkX2xpc3RfaGVhZCAqZmlyc3QgPSBsaXN0LT5u
ZXh0OworCXN0cnVjdCB0ZF9saXN0X2hlYWQgKmxhc3QgPSBsaXN0LT5wcmV2OworCXN0cnVjdCB0
ZF9saXN0X2hlYWQgKmF0ID0gaGVhZC0+bmV4dDsKIAogCWZpcnN0LT5wcmV2ID0gaGVhZDsKIAlo
ZWFkLT5uZXh0ID0gZmlyc3Q7CkBAIC0yMTIsMTI1ICsyMTIsMTI1IEBACiB9CiAKIC8qKgotICog
bGlzdF9zcGxpY2UgLSBqb2luIHR3byBsaXN0cworICogdGRfbGlzdF9zcGxpY2UgLSBqb2luIHR3
byBsaXN0cwogICogQGxpc3Q6IHRoZSBuZXcgbGlzdCB0byBhZGQuCiAgKiBAaGVhZDogdGhlIHBs
YWNlIHRvIGFkZCBpdCBpbiB0aGUgZmlyc3QgbGlzdC4KICAqLwotc3RhdGljIGlubGluZSB2b2lk
IGxpc3Rfc3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQgKmhl
YWQpCitzdGF0aWMgaW5saW5lIHZvaWQgdGRfbGlzdF9zcGxpY2Uoc3RydWN0IHRkX2xpc3RfaGVh
ZCAqbGlzdCwgc3RydWN0IHRkX2xpc3RfaGVhZCAqaGVhZCkKIHsKLQlpZiAoIWxpc3RfZW1wdHko
bGlzdCkpCi0JCV9fbGlzdF9zcGxpY2UobGlzdCwgaGVhZCk7CisJaWYgKCF0ZF9saXN0X2VtcHR5
KGxpc3QpKQorCQlfX3RkX2xpc3Rfc3BsaWNlKGxpc3QsIGhlYWQpOwogfQogCiAvKioKLSAqIGxp
c3Rfc3BsaWNlX2luaXQgLSBqb2luIHR3byBsaXN0cyBhbmQgcmVpbml0aWFsaXNlIHRoZSBlbXB0
aWVkIGxpc3QuCisgKiB0ZF9saXN0X3NwbGljZV9pbml0IC0gam9pbiB0d28gbGlzdHMgYW5kIHJl
aW5pdGlhbGlzZSB0aGUgZW1wdGllZCBsaXN0LgogICogQGxpc3Q6IHRoZSBuZXcgbGlzdCB0byBh
ZGQuCiAgKiBAaGVhZDogdGhlIHBsYWNlIHRvIGFkZCBpdCBpbiB0aGUgZmlyc3QgbGlzdC4KICAq
CiAgKiBUaGUgbGlzdCBhdCBAbGlzdCBpcyByZWluaXRpYWxpc2VkCiAgKi8KLXN0YXRpYyBpbmxp
bmUgdm9pZCBsaXN0X3NwbGljZV9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCi0JCQkJICAg
IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCitzdGF0aWMgaW5saW5lIHZvaWQgdGRfbGlzdF9zcGxp
Y2VfaW5pdChzdHJ1Y3QgdGRfbGlzdF9oZWFkICpsaXN0LAorCQkJCSAgICBzdHJ1Y3QgdGRfbGlz
dF9oZWFkICpoZWFkKQogewotCWlmICghbGlzdF9lbXB0eShsaXN0KSkgewotCQlfX2xpc3Rfc3Bs
aWNlKGxpc3QsIGhlYWQpOwotCQlJTklUX0xJU1RfSEVBRChsaXN0KTsKKwlpZiAoIXRkX2xpc3Rf
ZW1wdHkobGlzdCkpIHsKKwkJX190ZF9saXN0X3NwbGljZShsaXN0LCBoZWFkKTsKKwkJSU5JVF9U
RF9MSVNUX0hFQUQobGlzdCk7CiAJfQogfQogCiAvKioKLSAqIGxpc3RfZW50cnkgLSBnZXQgdGhl
IHN0cnVjdCBmb3IgdGhpcyBlbnRyeQotICogQHB0cjoJdGhlICZzdHJ1Y3QgbGlzdF9oZWFkIHBv
aW50ZXIuCisgKiB0ZF9saXN0X2VudHJ5IC0gZ2V0IHRoZSBzdHJ1Y3QgZm9yIHRoaXMgZW50cnkK
KyAqIEBwdHI6CXRoZSAmc3RydWN0IHRkX2xpc3RfaGVhZCBwb2ludGVyLgogICogQHR5cGU6CXRo
ZSB0eXBlIG9mIHRoZSBzdHJ1Y3QgdGhpcyBpcyBlbWJlZGRlZCBpbi4KICAqIEBtZW1iZXI6CXRo
ZSBuYW1lIG9mIHRoZSBsaXN0X3N0cnVjdCB3aXRoaW4gdGhlIHN0cnVjdC4KICAqLwotI2RlZmlu
ZSBsaXN0X2VudHJ5KHB0ciwgdHlwZSwgbWVtYmVyKSBcCisjZGVmaW5lIHRkX2xpc3RfZW50cnko
cHRyLCB0eXBlLCBtZW1iZXIpIFwKIAkoKHR5cGUgKikoKGNoYXIgKikocHRyKS0odW5zaWduZWQg
bG9uZykoJigodHlwZSAqKTApLT5tZW1iZXIpKSkKIAogLyoqCi0gKiBfX2xpc3RfZm9yX2VhY2gJ
LQlpdGVyYXRlIG92ZXIgYSBsaXN0Ci0gKiBAcG9zOgl0aGUgJnN0cnVjdCBsaXN0X2hlYWQgdG8g
dXNlIGFzIGEgbG9vcCBjb3VudGVyLgorICogX190ZF9saXN0X2Zvcl9lYWNoCS0JaXRlcmF0ZSBv
dmVyIGEgbGlzdAorICogQHBvczoJdGhlICZzdHJ1Y3QgdGRfbGlzdF9oZWFkIHRvIHVzZSBhcyBh
IGxvb3AgY291bnRlci4KICAqIEBoZWFkOgl0aGUgaGVhZCBmb3IgeW91ciBsaXN0LgogICoKICAq
LwotI2RlZmluZSBsaXN0X2Zvcl9lYWNoKHBvcywgaGVhZCkgXAorI2RlZmluZSB0ZF9saXN0X2Zv
cl9lYWNoKHBvcywgaGVhZCkgXAogCWZvciAocG9zID0gKGhlYWQpLT5uZXh0OyBwb3MgIT0gKGhl
YWQpOyBwb3MgPSBwb3MtPm5leHQpCiAKIC8qKgotICogbGlzdF9mb3JfZWFjaF9wcmV2CS0JaXRl
cmF0ZSBvdmVyIGEgbGlzdCBiYWNrd2FyZHMKLSAqIEBwb3M6CXRoZSAmc3RydWN0IGxpc3RfaGVh
ZCB0byB1c2UgYXMgYSBsb29wIGNvdW50ZXIuCisgKiB0ZF9saXN0X2Zvcl9lYWNoX3ByZXYJLQlp
dGVyYXRlIG92ZXIgYSBsaXN0IGJhY2t3YXJkcworICogQHBvczoJdGhlICZzdHJ1Y3QgdGRfbGlz
dF9oZWFkIHRvIHVzZSBhcyBhIGxvb3AgY291bnRlci4KICAqIEBoZWFkOgl0aGUgaGVhZCBmb3Ig
eW91ciBsaXN0LgogICovCi0jZGVmaW5lIGxpc3RfZm9yX2VhY2hfcHJldihwb3MsIGhlYWQpIFwK
KyNkZWZpbmUgdGRfbGlzdF9mb3JfZWFjaF9wcmV2KHBvcywgaGVhZCkgXAogCWZvciAocG9zID0g
KGhlYWQpLT5wcmV2OyBwb3MgIT0gKGhlYWQpOyBcCiAgICAgICAgIAlwb3MgPSBwb3MtPnByZXYp
CiAKIC8qKgotICogbGlzdF9mb3JfZWFjaF9zYWZlCS0JaXRlcmF0ZSBvdmVyIGEgbGlzdCBzYWZl
IGFnYWluc3QgcmVtb3ZhbCBvZiBsaXN0IGVudHJ5Ci0gKiBAcG9zOgl0aGUgJnN0cnVjdCBsaXN0
X2hlYWQgdG8gdXNlIGFzIGEgbG9vcCBjb3VudGVyLgotICogQG46CQlhbm90aGVyICZzdHJ1Y3Qg
bGlzdF9oZWFkIHRvIHVzZSBhcyB0ZW1wb3Jhcnkgc3RvcmFnZQorICogdGRfbGlzdF9mb3JfZWFj
aF9zYWZlCS0JaXRlcmF0ZSBvdmVyIGEgbGlzdCBzYWZlIGFnYWluc3QgcmVtb3ZhbCBvZiBsaXN0
IGVudHJ5CisgKiBAcG9zOgl0aGUgJnN0cnVjdCB0ZF9saXN0X2hlYWQgdG8gdXNlIGFzIGEgbG9v
cCBjb3VudGVyLgorICogQG46CQlhbm90aGVyICZzdHJ1Y3QgdGRfbGlzdF9oZWFkIHRvIHVzZSBh
cyB0ZW1wb3Jhcnkgc3RvcmFnZQogICogQGhlYWQ6CXRoZSBoZWFkIGZvciB5b3VyIGxpc3QuCiAg
Ki8KLSNkZWZpbmUgbGlzdF9mb3JfZWFjaF9zYWZlKHBvcywgbiwgaGVhZCkgXAorI2RlZmluZSB0
ZF9saXN0X2Zvcl9lYWNoX3NhZmUocG9zLCBuLCBoZWFkKSBcCiAJZm9yIChwb3MgPSAoaGVhZCkt
Pm5leHQsIG4gPSBwb3MtPm5leHQ7IHBvcyAhPSAoaGVhZCk7IFwKIAkJcG9zID0gbiwgbiA9IHBv
cy0+bmV4dCkKIAogLyoqCi0gKiBsaXN0X2Zvcl9lYWNoX2VudHJ5CS0JaXRlcmF0ZSBvdmVyIGxp
c3Qgb2YgZ2l2ZW4gdHlwZQorICogdGRfbGlzdF9mb3JfZWFjaF9lbnRyeQktCWl0ZXJhdGUgb3Zl
ciBsaXN0IG9mIGdpdmVuIHR5cGUKICAqIEBwb3M6CXRoZSB0eXBlICogdG8gdXNlIGFzIGEgbG9v
cCBjb3VudGVyLgogICogQGhlYWQ6CXRoZSBoZWFkIGZvciB5b3VyIGxpc3QuCiAgKiBAbWVtYmVy
Ogl0aGUgbmFtZSBvZiB0aGUgbGlzdF9zdHJ1Y3Qgd2l0aGluIHRoZSBzdHJ1Y3QuCiAgKi8KLSNk
ZWZpbmUgbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsIGhlYWQsIG1lbWJlcikJCQkJXAotCWZvciAo
cG9zID0gbGlzdF9lbnRyeSgoaGVhZCktPm5leHQsIHR5cGVvZigqcG9zKSwgbWVtYmVyKTsJXAor
I2RlZmluZSB0ZF9saXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgaGVhZCwgbWVtYmVyKQkJCQlcCisJ
Zm9yIChwb3MgPSB0ZF9saXN0X2VudHJ5KChoZWFkKS0+bmV4dCwgdHlwZW9mKCpwb3MpLCBtZW1i
ZXIpOwlcCiAJICAgICAmcG9zLT5tZW1iZXIgIT0gKGhlYWQpOyAJXAotCSAgICAgcG9zID0gbGlz
dF9lbnRyeShwb3MtPm1lbWJlci5uZXh0LCB0eXBlb2YoKnBvcyksIG1lbWJlcikpCisJICAgICBw
b3MgPSB0ZF9saXN0X2VudHJ5KHBvcy0+bWVtYmVyLm5leHQsIHR5cGVvZigqcG9zKSwgbWVtYmVy
KSkKIAogLyoqCi0gKiBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UgLSBpdGVyYXRlIGJhY2t3
YXJkcyBvdmVyIGxpc3Qgb2YgZ2l2ZW4gdHlwZS4KKyAqIHRkX2xpc3RfZm9yX2VhY2hfZW50cnlf
cmV2ZXJzZSAtIGl0ZXJhdGUgYmFja3dhcmRzIG92ZXIgbGlzdCBvZiBnaXZlbiB0eXBlLgogICog
QHBvczoJdGhlIHR5cGUgKiB0byB1c2UgYXMgYSBsb29wIGNvdW50ZXIuCiAgKiBAaGVhZDoJdGhl
IGhlYWQgZm9yIHlvdXIgbGlzdC4KICAqIEBtZW1iZXI6CXRoZSBuYW1lIG9mIHRoZSBsaXN0X3N0
cnVjdCB3aXRoaW4gdGhlIHN0cnVjdC4KICAqLwotI2RlZmluZSBsaXN0X2Zvcl9lYWNoX2VudHJ5
X3JldmVyc2UocG9zLCBoZWFkLCBtZW1iZXIpCQkJXAotCWZvciAocG9zID0gbGlzdF9lbnRyeSgo
aGVhZCktPnByZXYsIHR5cGVvZigqcG9zKSwgbWVtYmVyKTsJXAorI2RlZmluZSB0ZF9saXN0X2Zv
cl9lYWNoX2VudHJ5X3JldmVyc2UocG9zLCBoZWFkLCBtZW1iZXIpCQkJXAorCWZvciAocG9zID0g
dGRfbGlzdF9lbnRyeSgoaGVhZCktPnByZXYsIHR5cGVvZigqcG9zKSwgbWVtYmVyKTsJXAogCSAg
ICAgJnBvcy0+bWVtYmVyICE9IChoZWFkKTsgCVwKLQkgICAgIHBvcyA9IGxpc3RfZW50cnkocG9z
LT5tZW1iZXIucHJldiwgdHlwZW9mKCpwb3MpLCBtZW1iZXIpKQorCSAgICAgcG9zID0gdGRfbGlz
dF9lbnRyeShwb3MtPm1lbWJlci5wcmV2LCB0eXBlb2YoKnBvcyksIG1lbWJlcikpCiAKIC8qKgot
ICogbGlzdF9wcmVwYXJlX2VudHJ5IC0gcHJlcGFyZSBhIHBvcyBlbnRyeSBmb3IgdXNlIGFzIGEg
c3RhcnQgcG9pbnQgaW4KLSAqCQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZQorICogdGRf
bGlzdF9wcmVwYXJlX2VudHJ5IC0gcHJlcGFyZSBhIHBvcyBlbnRyeSBmb3IgdXNlIGFzIGEgc3Rh
cnQgcG9pbnQgaW4KKyAqCQkJdGRfbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZQogICogQHBv
czoJdGhlIHR5cGUgKiB0byB1c2UgYXMgYSBzdGFydCBwb2ludAogICogQGhlYWQ6CXRoZSBoZWFk
IG9mIHRoZSBsaXN0CiAgKiBAbWVtYmVyOgl0aGUgbmFtZSBvZiB0aGUgbGlzdF9zdHJ1Y3Qgd2l0
aGluIHRoZSBzdHJ1Y3QuCiAgKi8KLSNkZWZpbmUgbGlzdF9wcmVwYXJlX2VudHJ5KHBvcywgaGVh
ZCwgbWVtYmVyKSBcCi0JKChwb3MpID8gOiBsaXN0X2VudHJ5KGhlYWQsIHR5cGVvZigqcG9zKSwg
bWVtYmVyKSkKKyNkZWZpbmUgdGRfbGlzdF9wcmVwYXJlX2VudHJ5KHBvcywgaGVhZCwgbWVtYmVy
KSBcCisJKChwb3MpID8gOiB0ZF9saXN0X2VudHJ5KGhlYWQsIHR5cGVvZigqcG9zKSwgbWVtYmVy
KSkKIAogLyoqCi0gKiBsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlIC0JaXRlcmF0ZSBvdmVy
IGxpc3Qgb2YgZ2l2ZW4gdHlwZQorICogdGRfbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZSAt
CWl0ZXJhdGUgb3ZlciBsaXN0IG9mIGdpdmVuIHR5cGUKICAqCQkJY29udGludWluZyBhZnRlciBl
eGlzdGluZyBwb2ludAogICogQHBvczoJdGhlIHR5cGUgKiB0byB1c2UgYXMgYSBsb29wIGNvdW50
ZXIuCiAgKiBAaGVhZDoJdGhlIGhlYWQgZm9yIHlvdXIgbGlzdC4KICAqIEBtZW1iZXI6CXRoZSBu
YW1lIG9mIHRoZSBsaXN0X3N0cnVjdCB3aXRoaW4gdGhlIHN0cnVjdC4KICAqLwotI2RlZmluZSBs
aXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlKHBvcywgaGVhZCwgbWVtYmVyKSAJCVwKLQlmb3Ig
KHBvcyA9IGxpc3RfZW50cnkocG9zLT5tZW1iZXIubmV4dCwgdHlwZW9mKCpwb3MpLCBtZW1iZXIp
OwlcCisjZGVmaW5lIHRkX2xpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWUocG9zLCBoZWFkLCBt
ZW1iZXIpIAkJXAorCWZvciAocG9zID0gdGRfbGlzdF9lbnRyeShwb3MtPm1lbWJlci5uZXh0LCB0
eXBlb2YoKnBvcyksIG1lbWJlcik7CVwKIAkgICAgICZwb3MtPm1lbWJlciAhPSAoaGVhZCk7CVwK
LQkgICAgIHBvcyA9IGxpc3RfZW50cnkocG9zLT5tZW1iZXIubmV4dCwgdHlwZW9mKCpwb3MpLCBt
ZW1iZXIpKQorCSAgICAgcG9zID0gdGRfbGlzdF9lbnRyeShwb3MtPm1lbWJlci5uZXh0LCB0eXBl
b2YoKnBvcyksIG1lbWJlcikpCiAKIC8qKgotICogbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlIC0g
aXRlcmF0ZSBvdmVyIGxpc3Qgb2YgZ2l2ZW4gdHlwZSBzYWZlIGFnYWluc3QgcmVtb3ZhbCBvZiBs
aXN0IGVudHJ5CisgKiB0ZF9saXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUgLSBpdGVyYXRlIG92ZXIg
bGlzdCBvZiBnaXZlbiB0eXBlIHNhZmUgYWdhaW5zdCByZW1vdmFsIG9mIGxpc3QgZW50cnkKICAq
IEBwb3M6CXRoZSB0eXBlICogdG8gdXNlIGFzIGEgbG9vcCBjb3VudGVyLgogICogQG46CQlhbm90
aGVyIHR5cGUgKiB0byB1c2UgYXMgdGVtcG9yYXJ5IHN0b3JhZ2UKICAqIEBoZWFkOgl0aGUgaGVh
ZCBmb3IgeW91ciBsaXN0LgogICogQG1lbWJlcjoJdGhlIG5hbWUgb2YgdGhlIGxpc3Rfc3RydWN0
IHdpdGhpbiB0aGUgc3RydWN0LgogICovCi0jZGVmaW5lIGxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm
ZShwb3MsIG4sIGhlYWQsIG1lbWJlcikJCQlcCi0JZm9yIChwb3MgPSBsaXN0X2VudHJ5KChoZWFk
KS0+bmV4dCwgdHlwZW9mKCpwb3MpLCBtZW1iZXIpLAlcCi0JCW4gPSBsaXN0X2VudHJ5KHBvcy0+
bWVtYmVyLm5leHQsIHR5cGVvZigqcG9zKSwgbWVtYmVyKTsJXAorI2RlZmluZSB0ZF9saXN0X2Zv
cl9lYWNoX2VudHJ5X3NhZmUocG9zLCBuLCBoZWFkLCBtZW1iZXIpCQkJXAorCWZvciAocG9zID0g
dGRfbGlzdF9lbnRyeSgoaGVhZCktPm5leHQsIHR5cGVvZigqcG9zKSwgbWVtYmVyKSwJXAorCQlu
ID0gdGRfbGlzdF9lbnRyeShwb3MtPm1lbWJlci5uZXh0LCB0eXBlb2YoKnBvcyksIG1lbWJlcik7
CVwKIAkgICAgICZwb3MtPm1lbWJlciAhPSAoaGVhZCk7IAkJCQkJXAotCSAgICAgcG9zID0gbiwg
biA9IGxpc3RfZW50cnkobi0+bWVtYmVyLm5leHQsIHR5cGVvZigqbiksIG1lbWJlcikpCisJICAg
ICBwb3MgPSBuLCBuID0gdGRfbGlzdF9lbnRyeShuLT5tZW1iZXIubmV4dCwgdHlwZW9mKCpuKSwg
bWVtYmVyKSkKIAogCiAjZW5kaWYKZGlmZiAtcnV3IHRlc3RkaXNrLTYuOC5vcmcvc3JjL250ZnMu
YyB0ZXN0ZGlzay02Ljgvc3JjL250ZnMuYwotLS0gdGVzdGRpc2stNi44Lm9yZy9zcmMvbnRmcy5j
CTIwMDctMDctMTkgMjM6NDQ6MDUuMDAwMDAwMDAwICswMjAwCisrKyB0ZXN0ZGlzay02Ljgvc3Jj
L250ZnMuYwkyMDA3LTEyLTAyIDIyOjQxOjU5LjAwMDAwMDAwMCArMDEwMApAQCAtMjMzLDcgKzIz
Myw3IEBACiAgICAgewogICAgICAgdW5zaWduZWQgaW50IGF0dHJfdmFsdWVfbGVuZ3RoPU5URlNf
R0VUVTE2KGF0dHJfcmVjb3JkKzB4MTApOwogICAgICAgdW5zaWduZWQgaW50IGF0dHJfdmFsdWVf
b2Zmc2V0PU5URlNfR0VUVTE2KGF0dHJfcmVjb3JkKzB4MTQpOwotICAgICAgY29uc3QgY2hhciAq
YXR0cl9saXN0X2VudHJ5PWF0dHJfcmVjb3JkK2F0dHJfdmFsdWVfb2Zmc2V0OworICAgICAgY29u
c3QgY2hhciAqYXR0cl90ZF9saXN0X2VudHJ5PWF0dHJfcmVjb3JkK2F0dHJfdmFsdWVfb2Zmc2V0
OwogICAgICAgaWYoYXR0cl92YWx1ZV9vZmZzZXQlOCE9MCkKICAgICAgIHsKICNpZmRlZiBOVEZT
X0RFQlVHCkBAIC0yNDEsMTUgKzI0MSwxNSBAQAogI2VuZGlmCiAJcmV0dXJuIDI7CiAgICAgICB9
Ci0gICAgICBpZihhdHRyX2xpc3RfZW50cnkrMjY+PWVuZCkKKyAgICAgIGlmKGF0dHJfdGRfbGlz
dF9lbnRyeSsyNj49ZW5kKQogICAgICAgewogI2lmZGVmIE5URlNfREVCVUcKLQlsb2dfZGVidWco
Im50ZnNfZ2V0X2F0dHIgYXR0cl9saXN0X2VudHJ5KzI2PSVwLCBlbmQ9JXBcbiIsYXR0cl9saXN0
X2VudHJ5KzI2LGVuZCk7CisJbG9nX2RlYnVnKCJudGZzX2dldF9hdHRyIGF0dHJfdGRfbGlzdF9l
bnRyeSsyNj0lcCwgZW5kPSVwXG4iLGF0dHJfdGRfbGlzdF9lbnRyeSsyNixlbmQpOwogI2VuZGlm
CiAJcmV0dXJuIDI7CiAgICAgICB9CiAgICAgICAvKiBXZSBmb3VuZCB0aGUgYXR0cmlidXRlIHR5
cGUuIElzIHRoZSBuYW1lIGNvcnJlY3QsIHRvbz8gKi8KLSAgICAgIGlmKChhdHRyX3ZhbHVlX29m
ZnNldCthdHRyX3ZhbHVlX2xlbmd0aD5hdHRyX2xlbikgfHwgKGF0dHJfbGlzdF9lbnRyeSthdHRy
X2xlbiA+PSBlbmQpKQorICAgICAgaWYoKGF0dHJfdmFsdWVfb2Zmc2V0K2F0dHJfdmFsdWVfbGVu
Z3RoPmF0dHJfbGVuKSB8fCAoYXR0cl90ZF9saXN0X2VudHJ5K2F0dHJfbGVuID49IGVuZCkpCiAg
ICAgICB7CiAjaWZkZWYgTlRGU19ERUJVRwogCS8vIGxvZ19kZWJ1ZygibnRmc19nZXRfYXR0ciBc
biIpOwpAQCAtMjYyLDcgKzI2Miw3IEBACiAJewogCSAgY2FzZSAweDMwOgkvKiBBVF9GSUxFX05B
TUUgKi8KIAkgICAgewotCSAgICAgIGNvbnN0IGNoYXIgKmZpbGVfbmFtZV9hdHRyPWF0dHJfbGlz
dF9lbnRyeTsKKwkgICAgICBjb25zdCBjaGFyICpmaWxlX25hbWVfYXR0cj1hdHRyX3RkX2xpc3Rf
ZW50cnk7CiAJICAgICAgdW5zaWduZWQgaW50IGZpbGVfbmFtZV9sZW5ndGg7CiAJICAgICAgY29u
c3QgY2hhciAqbmFtZV9pdDsKIAkgICAgICBpZihmaWxlX25hbWVfYXR0cisweDQyPj1lbmQpCkBA
IC0zMDMsMTMgKzMwMywxMyBAQAogCSAgICAgIHZvbHVtZV9uYW1lX2xlbmd0aC89MjsJLyogVW5p
Y29kZSAqLwogCSAgICAgIGlmKHZvbHVtZV9uYW1lX2xlbmd0aD5zaXplb2YocGFydGl0aW9uLT5u
YW1lKS0xKQogCQl2b2x1bWVfbmFtZV9sZW5ndGg9c2l6ZW9mKHBhcnRpdGlvbi0+bmFtZSktMTsK
LQkgICAgICBmb3IobmFtZV9pdD1hdHRyX2xpc3RfZW50cnk7KHZvbHVtZV9uYW1lX2xlbmd0aD4w
KSAmJiAoKm5hbWVfaXQhPSdcMCcpICYmIChuYW1lX2l0WzFdPT0nXDAnKTsgbmFtZV9pdCs9Mix2
b2x1bWVfbmFtZV9sZW5ndGgtLSkKKwkgICAgICBmb3IobmFtZV9pdD1hdHRyX3RkX2xpc3RfZW50
cnk7KHZvbHVtZV9uYW1lX2xlbmd0aD4wKSAmJiAoKm5hbWVfaXQhPSdcMCcpICYmIChuYW1lX2l0
WzFdPT0nXDAnKTsgbmFtZV9pdCs9Mix2b2x1bWVfbmFtZV9sZW5ndGgtLSkKIAkJKmRlc3QrKz0q
bmFtZV9pdDsKIAkgICAgICAqZGVzdCsrPSdcMCc7IC8qIDI3IGphbnVhcnkgMjAwMzogQ29ycmVj
dCBhIGJ1ZyBmb3VuZCBieSBBbmRyZWFzIGR1IFBsZXNzaXMtRGVueiAqLwogCSAgICB9CiAJICAg
IHJldHVybiAxOwogCSAgY2FzZSAweDkwOgkvKiBBVF9JTkRFWF9ST09UICovCi0JICAgIHJldHVy
biBOVEZTX0dFVFUzMihhdHRyX2xpc3RfZW50cnkrOCk7CS8qIGluZGV4X2Jsb2NrX3NpemUgKi8K
KwkgICAgcmV0dXJuIE5URlNfR0VUVTMyKGF0dHJfdGRfbGlzdF9lbnRyeSs4KTsJLyogaW5kZXhf
YmxvY2tfc2l6ZSAqLwogCX0KICAgICAgIH0KICAgICB9CmRpZmYgLXJ1dyB0ZXN0ZGlzay02Ljgu
b3JnL3NyYy9udGZzX2Rpci5jIHRlc3RkaXNrLTYuOC9zcmMvbnRmc19kaXIuYwotLS0gdGVzdGRp
c2stNi44Lm9yZy9zcmMvbnRmc19kaXIuYwkyMDA3LTA3LTEwIDEzOjQ2OjA3LjAwMDAwMDAwMCAr
MDIwMAorKysgdGVzdGRpc2stNi44L3NyYy9udGZzX2Rpci5jCTIwMDctMTItMDIgMjI6NDE6NTku
MDAwMDAwMDAwICswMTAwCkBAIC05Myw3ICs5Myw3IEBACiBleHRlcm4gdTY0IG50ZnNfaW5vZGVf
bG9va3VwX2J5X25hbWUobnRmc19pbm9kZSAqZGlyX25pLAogICAgICAgICAgICAgICAgIGNvbnN0
IG50ZnNjaGFyICp1bmFtZSwgY29uc3QgaW50IHVuYW1lX2xlbik7CiBzdGF0aWMgdGltZV90IG50
ZnMydXRjIChzNjQgbnRmc3RpbWUpOwotc3RhdGljIGludCBudGZzX2xpc3RfZW50cnkoICBzdHJ1
Y3QgbnRmc19kaXJfc3RydWN0ICpscywgY29uc3QgbnRmc2NoYXIgKm5hbWUsIAorc3RhdGljIGlu
dCBudGZzX3RkX2xpc3RfZW50cnkoICBzdHJ1Y3QgbnRmc19kaXJfc3RydWN0ICpscywgY29uc3Qg
bnRmc2NoYXIgKm5hbWUsIAogCQljb25zdCBpbnQgbmFtZV9sZW4sIGNvbnN0IGludCBuYW1lX3R5
cGUsIGNvbnN0IHM2NCBwb3MsCiAJCWNvbnN0IE1GVF9SRUYgbXJlZiwgY29uc3QgdW5zaWduZWQg
ZHRfdHlwZSk7CiBzdGF0aWMgZmlsZV9kYXRhX3QgKm50ZnNfZGlyKGRpc2tfdCAqZGlza19jYXIs
IGNvbnN0IHBhcnRpdGlvbl90ICpwYXJ0aXRpb24sIGRpcl9kYXRhX3QgKmRpcl9kYXRhLCBjb25z
dCB1bnNpZ25lZCBsb25nIGludCBjbHVzdGVyKTsKQEAgLTEzOCwxMCArMTM4LDEwIEBACiB9CiAK
IC8qKgotICogbnRmc19saXN0X2VudHJ5CisgKiBudGZzX3RkX2xpc3RfZW50cnkKICAqIEZJWE1F
OiBTaG91bGQgd2UgcHJpbnQgZXJyb3JzIGFzIHdlIGdvIGFsb25nPyAoQUlBKQogICovCi1zdGF0
aWMgaW50IG50ZnNfbGlzdF9lbnRyeSggIHN0cnVjdCBudGZzX2Rpcl9zdHJ1Y3QgKmxzLCBjb25z
dCBudGZzY2hhciAqbmFtZSwgCitzdGF0aWMgaW50IG50ZnNfdGRfbGlzdF9lbnRyeSggIHN0cnVj
dCBudGZzX2Rpcl9zdHJ1Y3QgKmxzLCBjb25zdCBudGZzY2hhciAqbmFtZSwgCiAJCWNvbnN0IGlu
dCBuYW1lX2xlbiwgY29uc3QgaW50IG5hbWVfdHlwZSwgY29uc3QgczY0IHBvcywKIAkJY29uc3Qg
TUZUX1JFRiBtcmVmLCBjb25zdCB1bnNpZ25lZCBkdF90eXBlKQogewpAQCAtMTUwLDcgKzE1MCw3
IEBACiAgIGZpbGVuYW1lID0gY2FsbG9jICgxLCBNQVhfUEFUSCk7CiAgIGlmICghZmlsZW5hbWUp
CiAgIHsKLSAgICBsb2dfY3JpdGljYWwoIm50ZnNfbGlzdF9lbnRyeSBjYWxsb2MgZmFpbGVkXG4i
KTsKKyAgICBsb2dfY3JpdGljYWwoIm50ZnNfdGRfbGlzdF9lbnRyeSBjYWxsb2MgZmFpbGVkXG4i
KTsKICAgICByZXR1cm4gLTE7CiAgIH0KIApAQCAtMjkyLDcgKzI5Miw3IEBACiAgICAqLwogICBw
b3MgPSAwOwogICBpZiAoaW5vZGUtPm1yZWMtPmZsYWdzICYgTUZUX1JFQ09SRF9JU19ESVJFQ1RP
UlkpIHsKLSAgICBpZihudGZzX3JlYWRkaXIoaW5vZGUsICZwb3MsIGxzLCAobnRmc19maWxsZGly
X3QpbnRmc19saXN0X2VudHJ5KTwwKQorICAgIGlmKG50ZnNfcmVhZGRpcihpbm9kZSwgJnBvcywg
bHMsIChudGZzX2ZpbGxkaXJfdCludGZzX3RkX2xpc3RfZW50cnkpPDApCiAgICAgewogICAgICAg
bG9nX2Vycm9yKCJudGZzX3JlYWRkaXIgZmFpbGVkXG4iKTsKICAgICB9CmRpZmYgLXJ1dyB0ZXN0
ZGlzay02Ljgub3JnL3NyYy9waG90b3JlYy5jIHRlc3RkaXNrLTYuOC9zcmMvcGhvdG9yZWMuYwot
LS0gdGVzdGRpc2stNi44Lm9yZy9zcmMvcGhvdG9yZWMuYwkyMDA3LTA3LTIwIDIwOjQ0OjEzLjAw
MDAwMDAwMCArMDIwMAorKysgdGVzdGRpc2stNi44L3NyYy9waG90b3JlYy5jCTIwMDctMTItMDIg
MjI6NDE6NTkuMDAwMDAwMDAwICswMTAwCkBAIC0yMjMsMTQgKzIyMywxNCBAQAogCiBzdGF0aWMg
dm9pZCBsaXN0X2ZyZWVfYWRkKGNvbnN0IGZpbGVfcmVjb3ZlcnlfdCAqZmlsZV9yZWNvdmVyeSwg
YWxsb2NfZGF0YV90ICpsaXN0X3NlYXJjaF9zcGFjZSkKIHsKLSAgc3RydWN0IGxpc3RfaGVhZCAq
c2VhcmNoX3dhbGtlciA9IE5VTEw7CisgIHN0cnVjdCB0ZF9saXN0X2hlYWQgKnNlYXJjaF93YWxr
ZXIgPSBOVUxMOwogI2lmZGVmIERFQlVHX0ZSRUUKICAgbG9nX3RyYWNlKCJsaXN0X2ZyZWVfYWRk
ICVsdVxuIiwobG9uZyB1bnNpZ25lZCkoZmlsZV9yZWNvdmVyeS0+bG9jYXRpb24uc3RhcnQvNTEy
KSk7CiAjZW5kaWYKLSAgbGlzdF9mb3JfZWFjaChzZWFyY2hfd2Fsa2VyLCAmbGlzdF9zZWFyY2hf
c3BhY2UtPmxpc3QpCisgIHRkX2xpc3RfZm9yX2VhY2goc2VhcmNoX3dhbGtlciwgJmxpc3Rfc2Vh
cmNoX3NwYWNlLT5saXN0KQogICB7CiAgICAgYWxsb2NfZGF0YV90ICpjdXJyZW50X3NlYXJjaF9z
cGFjZTsKLSAgICBjdXJyZW50X3NlYXJjaF9zcGFjZT1saXN0X2VudHJ5KHNlYXJjaF93YWxrZXIs
IGFsbG9jX2RhdGFfdCwgbGlzdCk7CisgICAgY3VycmVudF9zZWFyY2hfc3BhY2U9dGRfbGlzdF9l
bnRyeShzZWFyY2hfd2Fsa2VyLCBhbGxvY19kYXRhX3QsIGxpc3QpOwogICAgIGlmKGN1cnJlbnRf
c2VhcmNoX3NwYWNlLT5zdGFydCA8IGZpbGVfcmVjb3ZlcnktPmxvY2F0aW9uLnN0YXJ0ICYmIGZp
bGVfcmVjb3ZlcnktPmxvY2F0aW9uLnN0YXJ0IDwgY3VycmVudF9zZWFyY2hfc3BhY2UtPmVuZCkK
ICAgICB7CiAgICAgICBhbGxvY19kYXRhX3QgKm5ld19mcmVlX3NwYWNlOwpAQCAtMjM5LDcgKzIz
OSw3IEBACiAgICAgICBuZXdfZnJlZV9zcGFjZS0+ZW5kPWN1cnJlbnRfc2VhcmNoX3NwYWNlLT5l
bmQ7CiAgICAgICBuZXdfZnJlZV9zcGFjZS0+ZmlsZV9zdGF0PU5VTEw7CiAgICAgICBjdXJyZW50
X3NlYXJjaF9zcGFjZS0+ZW5kPWZpbGVfcmVjb3ZlcnktPmxvY2F0aW9uLnN0YXJ0LTE7Ci0gICAg
ICBsaXN0X2FkZCgmbmV3X2ZyZWVfc3BhY2UtPmxpc3QsIHNlYXJjaF93YWxrZXIpOworICAgICAg
dGRfbGlzdF9hZGQoJm5ld19mcmVlX3NwYWNlLT5saXN0LCBzZWFyY2hfd2Fsa2VyKTsKICAgICB9
CiAgICAgaWYoY3VycmVudF9zZWFyY2hfc3BhY2UtPnN0YXJ0PT1maWxlX3JlY292ZXJ5LT5sb2Nh
dGlvbi5zdGFydCkKICAgICB7CkBAIC0yNTIsMjIgKzI1MiwyMiBAQAogc3RhdGljIGFsbG9jX2Rh
dGFfdCAqdXBkYXRlX3NlYXJjaF9zcGFjZShjb25zdCBmaWxlX3JlY292ZXJ5X3QgKmZpbGVfcmVj
b3ZlcnksIGFsbG9jX2RhdGFfdCAqbGlzdF9zZWFyY2hfc3BhY2UsIGFsbG9jX2RhdGFfdCAqKm5l
d19jdXJyZW50X3NlYXJjaF9zcGFjZSwgdWludDY0X3QgKm9mZnNldCwgY29uc3QgdW5zaWduZWQg
aW50IGJsb2Nrc2l6ZSkKIHsKICAgY29uc3QgYWxsb2NfbGlzdF90ICplbGVtZW50OwotICBzdHJ1
Y3QgbGlzdF9oZWFkICpzZWFyY2hfd2Fsa2VyID0gTlVMTDsKKyAgc3RydWN0IHRkX2xpc3RfaGVh
ZCAqc2VhcmNoX3dhbGtlciA9IE5VTEw7CiAjaWZkZWYgREVCVUdfVVBEQVRFX1NFQVJDSF9TUEFD
RQogICBsb2dfdHJhY2UoInVwZGF0ZV9zZWFyY2hfc3BhY2VcbiIpOwotICBsaXN0X2Zvcl9lYWNo
KHNlYXJjaF93YWxrZXIsICZsaXN0X3NlYXJjaF9zcGFjZS0+bGlzdCkKKyAgdGRfbGlzdF9mb3Jf
ZWFjaChzZWFyY2hfd2Fsa2VyLCAmbGlzdF9zZWFyY2hfc3BhY2UtPmxpc3QpCiAgIHsKICAgICBh
bGxvY19kYXRhX3QgKmN1cl9mcmVlX3NwYWNlOwotICAgIGN1cl9mcmVlX3NwYWNlPWxpc3RfZW50
cnkoc2VhcmNoX3dhbGtlciwgYWxsb2NfZGF0YV90LCBsaXN0KTsKKyAgICBjdXJfZnJlZV9zcGFj
ZT10ZF9saXN0X2VudHJ5KHNlYXJjaF93YWxrZXIsIGFsbG9jX2RhdGFfdCwgbGlzdCk7CiAgICAg
bG9nX3RyYWNlKCIgJWxsdS0lbGx1IiwobG9uZyBsb25nIHVuc2lnbmVkKShjdXJfZnJlZV9zcGFj
ZS0+c3RhcnQvNTEyKSwKIAkobG9uZyBsb25nIHVuc2lnbmVkKShjdXJfZnJlZV9zcGFjZS0+ZW5k
LzUxMikpOwogICB9CiAgIGxvZ190cmFjZSgiXG4iKTsKICNlbmRpZgotICBsaXN0X2Zvcl9lYWNo
KHNlYXJjaF93YWxrZXIsICZsaXN0X3NlYXJjaF9zcGFjZS0+bGlzdCkKKyAgdGRfbGlzdF9mb3Jf
ZWFjaChzZWFyY2hfd2Fsa2VyLCAmbGlzdF9zZWFyY2hfc3BhY2UtPmxpc3QpCiAgIHsKICAgICBh
bGxvY19kYXRhX3QgKmN1cnJlbnRfc2VhcmNoX3NwYWNlOwotICAgIGN1cnJlbnRfc2VhcmNoX3Nw
YWNlPWxpc3RfZW50cnkoc2VhcmNoX3dhbGtlciwgYWxsb2NfZGF0YV90LCBsaXN0KTsKKyAgICBj
dXJyZW50X3NlYXJjaF9zcGFjZT10ZF9saXN0X2VudHJ5KHNlYXJjaF93YWxrZXIsIGFsbG9jX2Rh
dGFfdCwgbGlzdCk7CiAgICAgaWYoY3VycmVudF9zZWFyY2hfc3BhY2UtPnN0YXJ0IDw9IGZpbGVf
cmVjb3ZlcnktPmxvY2F0aW9uLnN0YXJ0ICYmCiAJZmlsZV9yZWNvdmVyeS0+bG9jYXRpb24uc3Rh
cnQgPD0gY3VycmVudF9zZWFyY2hfc3BhY2UtPmVuZCkKICAgICB7CkBAIC0yOTEsNyArMjkxLDcg
QEAKIAogc3RhdGljIGFsbG9jX2RhdGFfdCAqdXBkYXRlX3NlYXJjaF9zcGFjZV9hdXgoYWxsb2Nf
ZGF0YV90ICpsaXN0X3NlYXJjaF9zcGFjZSwgdWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGVuZCwg
YWxsb2NfZGF0YV90ICoqbmV3X2N1cnJlbnRfc2VhcmNoX3NwYWNlLCB1aW50NjRfdCAqb2Zmc2V0
KQogewotICBzdHJ1Y3QgbGlzdF9oZWFkICpzZWFyY2hfd2Fsa2VyID0gTlVMTDsKKyAgc3RydWN0
IHRkX2xpc3RfaGVhZCAqc2VhcmNoX3dhbGtlciA9IE5VTEw7CiAjaWZkZWYgREVCVUdfVVBEQVRF
X1NFQVJDSF9TUEFDRQogICAgIGxvZ190cmFjZSgidXBkYXRlX3NlYXJjaF9zcGFjZV9hdXggb2Zm
c2V0PSVsbHUgcmVtb3ZlIFslbGx1LSVsbHVdXG4iLAogCShsb25nIGxvbmcgdW5zaWduZWQpKCgq
b2Zmc2V0KS81MTIpLApAQCAtMzAwLDEwICszMDAsMTAgQEAKICNlbmRpZgogICBpZihzdGFydCA+
PSBlbmQpCiAgICAgcmV0dXJuIGxpc3Rfc2VhcmNoX3NwYWNlOwotICBsaXN0X2Zvcl9lYWNoKHNl
YXJjaF93YWxrZXIsICZsaXN0X3NlYXJjaF9zcGFjZS0+bGlzdCkKKyAgdGRfbGlzdF9mb3JfZWFj
aChzZWFyY2hfd2Fsa2VyLCAmbGlzdF9zZWFyY2hfc3BhY2UtPmxpc3QpCiAgIHsKICAgICBhbGxv
Y19kYXRhX3QgKmN1cnJlbnRfc2VhcmNoX3NwYWNlOwotICAgIGN1cnJlbnRfc2VhcmNoX3NwYWNl
PWxpc3RfZW50cnkoc2VhcmNoX3dhbGtlciwgYWxsb2NfZGF0YV90LCBsaXN0KTsKKyAgICBjdXJy
ZW50X3NlYXJjaF9zcGFjZT10ZF9saXN0X2VudHJ5KHNlYXJjaF93YWxrZXIsIGFsbG9jX2RhdGFf
dCwgbGlzdCk7CiAjaWZkZWYgREVCVUdfVVBEQVRFX1NFQVJDSF9TUEFDRQogICAgIGxvZ190cmFj
ZSgidXBkYXRlX3NlYXJjaF9zcGFjZV9hdXggb2Zmc2V0PSVsbHUgcmVtb3ZlIFslbGx1LSVsbHVd
IGluIFslbGx1LSVsbHVdXG4iLAogCShsb25nIGxvbmcgdW5zaWduZWQpKCgqb2Zmc2V0KS81MTIp
LApAQCAtMzI4LDE0ICszMjgsMTQgQEAKICAgICAgIC8qIGN1cnJlbnRfc2VhcmNoX3NwYWNlLT5z
dGFydD09c3RhcnQgY3VycmVudF9zZWFyY2hfc3BhY2UtPmVuZDw9ZW5kICovCiAgICAgICBzdGFy
dD1jdXJyZW50X3NlYXJjaF9zcGFjZS0+ZW5kKzE7CiAgICAgICBpZihsaXN0X3NlYXJjaF9zcGFj
ZT09Y3VycmVudF9zZWFyY2hfc3BhY2UpCi0JbGlzdF9zZWFyY2hfc3BhY2U9bGlzdF9lbnRyeShj
dXJyZW50X3NlYXJjaF9zcGFjZS0+bGlzdC5uZXh0LCBhbGxvY19kYXRhX3QsIGxpc3QpOworCWxp
c3Rfc2VhcmNoX3NwYWNlPXRkX2xpc3RfZW50cnkoY3VycmVudF9zZWFyY2hfc3BhY2UtPmxpc3Qu
bmV4dCwgYWxsb2NfZGF0YV90LCBsaXN0KTsKICAgICAgIGlmKG9mZnNldCE9TlVMTCAmJiBuZXdf
Y3VycmVudF9zZWFyY2hfc3BhY2UhPU5VTEwgJiYKIAkgIGN1cnJlbnRfc2VhcmNoX3NwYWNlLT5z
dGFydDw9Km9mZnNldCAmJiAqb2Zmc2V0PD1jdXJyZW50X3NlYXJjaF9zcGFjZS0+ZW5kKQogICAg
ICAgewotCSpuZXdfY3VycmVudF9zZWFyY2hfc3BhY2U9bGlzdF9lbnRyeShjdXJyZW50X3NlYXJj
aF9zcGFjZS0+bGlzdC5uZXh0LCBhbGxvY19kYXRhX3QsIGxpc3QpOworCSpuZXdfY3VycmVudF9z
ZWFyY2hfc3BhY2U9dGRfbGlzdF9lbnRyeShjdXJyZW50X3NlYXJjaF9zcGFjZS0+bGlzdC5uZXh0
LCBhbGxvY19kYXRhX3QsIGxpc3QpOwogCSpvZmZzZXQ9KCpuZXdfY3VycmVudF9zZWFyY2hfc3Bh
Y2UpLT5zdGFydDsKICAgICAgIH0KLSAgICAgIGxpc3RfZGVsKHNlYXJjaF93YWxrZXIpOworICAg
ICAgdGRfbGlzdF9kZWwoc2VhcmNoX3dhbGtlcik7CiAgICAgICBmcmVlKGN1cnJlbnRfc2VhcmNo
X3NwYWNlKTsKICAgICAgIHJldHVybiB1cGRhdGVfc2VhcmNoX3NwYWNlX2F1eChsaXN0X3NlYXJj
aF9zcGFjZSwgc3RhcnQsZW5kLCBuZXdfY3VycmVudF9zZWFyY2hfc3BhY2UsIG9mZnNldCk7CiAg
ICAgfQpAQCAtMzQ5LDcgKzM0OSw3IEBACiAJaWYob2Zmc2V0IT1OVUxMICYmIG5ld19jdXJyZW50
X3NlYXJjaF9zcGFjZSE9TlVMTCAmJgogCSAgc3RhcnQ8PSpvZmZzZXQgJiYgKm9mZnNldDw9Y3Vy
cmVudF9zZWFyY2hfc3BhY2UtPmVuZCkKIAl7Ci0JICAqbmV3X2N1cnJlbnRfc2VhcmNoX3NwYWNl
PWxpc3RfZW50cnkoY3VycmVudF9zZWFyY2hfc3BhY2UtPmxpc3QubmV4dCwgYWxsb2NfZGF0YV90
LCBsaXN0KTsKKwkgICpuZXdfY3VycmVudF9zZWFyY2hfc3BhY2U9dGRfbGlzdF9lbnRyeShjdXJy
ZW50X3NlYXJjaF9zcGFjZS0+bGlzdC5uZXh0LCBhbGxvY19kYXRhX3QsIGxpc3QpOwogCSAgKm9m
ZnNldD0oKm5ld19jdXJyZW50X3NlYXJjaF9zcGFjZSktPnN0YXJ0OwogCX0KIAljdXJyZW50X3Nl
YXJjaF9zcGFjZS0+ZW5kPXN0YXJ0LTE7CkBAIC0zNTgsMTQgKzM1OCwxNCBAQAogICAgICAgLyog
c3RhcnQ8PWN1cnJlbnRfc2VhcmNoX3NwYWNlLT5zdGFydCBjdXJyZW50X3NlYXJjaF9zcGFjZS0+
ZW5kPT1lbmQgKi8KICAgICAgIGVuZD1jdXJyZW50X3NlYXJjaF9zcGFjZS0+c3RhcnQtMTsKICAg
ICAgIGlmKGxpc3Rfc2VhcmNoX3NwYWNlPT1jdXJyZW50X3NlYXJjaF9zcGFjZSkKLQlsaXN0X3Nl
YXJjaF9zcGFjZT1saXN0X2VudHJ5KGN1cnJlbnRfc2VhcmNoX3NwYWNlLT5saXN0Lm5leHQsIGFs
bG9jX2RhdGFfdCwgbGlzdCk7CisJbGlzdF9zZWFyY2hfc3BhY2U9dGRfbGlzdF9lbnRyeShjdXJy
ZW50X3NlYXJjaF9zcGFjZS0+bGlzdC5uZXh0LCBhbGxvY19kYXRhX3QsIGxpc3QpOwogICAgICAg
aWYob2Zmc2V0IT1OVUxMICYmIG5ld19jdXJyZW50X3NlYXJjaF9zcGFjZSE9TlVMTCAmJgogCSAg
Y3VycmVudF9zZWFyY2hfc3BhY2UtPnN0YXJ0PD0qb2Zmc2V0ICYmICpvZmZzZXQ8PWN1cnJlbnRf
c2VhcmNoX3NwYWNlLT5lbmQpCiAgICAgICB7Ci0JKm5ld19jdXJyZW50X3NlYXJjaF9zcGFjZT1s
aXN0X2VudHJ5KGN1cnJlbnRfc2VhcmNoX3NwYWNlLT5saXN0Lm5leHQsIGFsbG9jX2RhdGFfdCwg
bGlzdCk7CisJKm5ld19jdXJyZW50X3NlYXJjaF9zcGFjZT10ZF9saXN0X2VudHJ5KGN1cnJlbnRf
c2VhcmNoX3NwYWNlLT5saXN0Lm5leHQsIGFsbG9jX2RhdGFfdCwgbGlzdCk7CiAJKm9mZnNldD0o
Km5ld19jdXJyZW50X3NlYXJjaF9zcGFjZSktPnN0YXJ0OwogICAgICAgfQotICAgICAgbGlzdF9k
ZWwoc2VhcmNoX3dhbGtlcik7CisgICAgICB0ZF9saXN0X2RlbChzZWFyY2hfd2Fsa2VyKTsKICAg
ICAgIGZyZWUoY3VycmVudF9zZWFyY2hfc3BhY2UpOwogICAgICAgcmV0dXJuIHVwZGF0ZV9zZWFy
Y2hfc3BhY2VfYXV4KGxpc3Rfc2VhcmNoX3NwYWNlLCBzdGFydCxlbmQsIG5ld19jdXJyZW50X3Nl
YXJjaF9zcGFjZSwgb2Zmc2V0KTsKICAgICB9CkBAIC0zODgsNyArMzg4LDcgQEAKICAgICAgIG5l
d19mcmVlX3NwYWNlLT5lbmQ9Y3VycmVudF9zZWFyY2hfc3BhY2UtPmVuZDsKICAgICAgIG5ld19m
cmVlX3NwYWNlLT5maWxlX3N0YXQ9TlVMTDsKICAgICAgIGN1cnJlbnRfc2VhcmNoX3NwYWNlLT5l
bmQ9c3RhcnQtMTsKLSAgICAgIGxpc3RfYWRkKCZuZXdfZnJlZV9zcGFjZS0+bGlzdCxzZWFyY2hf
d2Fsa2VyKTsKKyAgICAgIHRkX2xpc3RfYWRkKCZuZXdfZnJlZV9zcGFjZS0+bGlzdCxzZWFyY2hf
d2Fsa2VyKTsKICAgICAgIGlmKG9mZnNldCE9TlVMTCAmJiBuZXdfY3VycmVudF9zZWFyY2hfc3Bh
Y2UhPU5VTEwgJiYKIAkgIG5ld19mcmVlX3NwYWNlLT5zdGFydDw9Km9mZnNldCAmJiAqb2Zmc2V0
PD1uZXdfZnJlZV9zcGFjZS0+ZW5kKQogICAgICAgewpAQCAtNDE4LDEzICs0MTgsMTMgQEAKIAog
dm9pZCBmcmVlX2xpc3Rfc2VhcmNoX3NwYWNlKGFsbG9jX2RhdGFfdCAqbGlzdF9zZWFyY2hfc3Bh
Y2UpCiB7Ci0gIHN0cnVjdCBsaXN0X2hlYWQgKnNlYXJjaF93YWxrZXIgPSBOVUxMOwotICBzdHJ1
Y3QgbGlzdF9oZWFkICpzZWFyY2hfd2Fsa2VyX25leHQgPSBOVUxMOwotICBsaXN0X2Zvcl9lYWNo
X3NhZmUoc2VhcmNoX3dhbGtlcixzZWFyY2hfd2Fsa2VyX25leHQsJmxpc3Rfc2VhcmNoX3NwYWNl
LT5saXN0KQorICBzdHJ1Y3QgdGRfbGlzdF9oZWFkICpzZWFyY2hfd2Fsa2VyID0gTlVMTDsKKyAg
c3RydWN0IHRkX2xpc3RfaGVhZCAqc2VhcmNoX3dhbGtlcl9uZXh0ID0gTlVMTDsKKyAgdGRfbGlz
dF9mb3JfZWFjaF9zYWZlKHNlYXJjaF93YWxrZXIsc2VhcmNoX3dhbGtlcl9uZXh0LCZsaXN0X3Nl
YXJjaF9zcGFjZS0+bGlzdCkKICAgewogICAgIGFsbG9jX2RhdGFfdCAqY3VycmVudF9zZWFyY2hf
c3BhY2U7Ci0gICAgY3VycmVudF9zZWFyY2hfc3BhY2U9bGlzdF9lbnRyeShzZWFyY2hfd2Fsa2Vy
LCBhbGxvY19kYXRhX3QsIGxpc3QpOwotICAgIGxpc3RfZGVsKHNlYXJjaF93YWxrZXIpOworICAg
IGN1cnJlbnRfc2VhcmNoX3NwYWNlPXRkX2xpc3RfZW50cnkoc2VhcmNoX3dhbGtlciwgYWxsb2Nf
ZGF0YV90LCBsaXN0KTsKKyAgICB0ZF9saXN0X2RlbChzZWFyY2hfd2Fsa2VyKTsKICAgICBmcmVl
KGN1cnJlbnRfc2VhcmNoX3NwYWNlKTsKICAgfQogfQpAQCAtNTE0LDcgKzUxNCw3IEBACiBzdGF0
aWMgdm9pZCBnZXRfcHJldl9oZWFkZXIoYWxsb2NfZGF0YV90ICpsaXN0X3NlYXJjaF9zcGFjZSwg
YWxsb2NfZGF0YV90ICoqY3VycmVudF9zZWFyY2hfc3BhY2UsIHVpbnQ2NF90ICpvZmZzZXQpCiB7
CiAgIGlmKCgqY3VycmVudF9zZWFyY2hfc3BhY2UpICE9IGxpc3Rfc2VhcmNoX3NwYWNlKQotICAg
ICpjdXJyZW50X3NlYXJjaF9zcGFjZT1saXN0X2VudHJ5KCgqY3VycmVudF9zZWFyY2hfc3BhY2Up
LT5saXN0LnByZXYsIGFsbG9jX2RhdGFfdCwgbGlzdCk7CisgICAgKmN1cnJlbnRfc2VhcmNoX3Nw
YWNlPXRkX2xpc3RfZW50cnkoKCpjdXJyZW50X3NlYXJjaF9zcGFjZSktPmxpc3QucHJldiwgYWxs
b2NfZGF0YV90LCBsaXN0KTsKICAgKm9mZnNldD0oKmN1cnJlbnRfc2VhcmNoX3NwYWNlKS0+c3Rh
cnQ7CiB9CiAjZW5kaWYKQEAgLTUyNSw3ICs1MjUsNyBAQAogICBhbGxvY19kYXRhX3QgKmZpbGVf
c3BhY2U9KmN1cnJlbnRfc2VhcmNoX3NwYWNlOwogICBmb3IobmJyPTA7bmJyPDU7bmJyKyspCiAg
IHsKLSAgICBmaWxlX3NwYWNlPWxpc3RfZW50cnkoZmlsZV9zcGFjZS0+bGlzdC5wcmV2LCBhbGxv
Y19kYXRhX3QsIGxpc3QpOworICAgIGZpbGVfc3BhY2U9dGRfbGlzdF9lbnRyeShmaWxlX3NwYWNl
LT5saXN0LnByZXYsIGFsbG9jX2RhdGFfdCwgbGlzdCk7CiAgICAgaWYoZmlsZV9zcGFjZT09bGlz
dF9zZWFyY2hfc3BhY2UpCiAgICAgICByZXR1cm4gLTE7CiAgICAgaWYoZmlsZV9zcGFjZS0+Zmls
ZV9zdGF0IT1OVUxMKQpAQCAtNTQwLDggKzU0MCw4IEBACiAKIHZvaWQgZm9yZ2V0KGFsbG9jX2Rh
dGFfdCAqbGlzdF9zZWFyY2hfc3BhY2UsIGFsbG9jX2RhdGFfdCAqY3VycmVudF9zZWFyY2hfc3Bh
Y2UpCiB7Ci0gIHN0cnVjdCBsaXN0X2hlYWQgKnNlYXJjaF93YWxrZXIgPSBOVUxMOwotICBzdHJ1
Y3QgbGlzdF9oZWFkICpwcmV2PSBOVUxMOworICBzdHJ1Y3QgdGRfbGlzdF9oZWFkICpzZWFyY2hf
d2Fsa2VyID0gTlVMTDsKKyAgc3RydWN0IHRkX2xpc3RfaGVhZCAqcHJldj0gTlVMTDsKICAgaW50
IG5icj0wOwogICBpZihjdXJyZW50X3NlYXJjaF9zcGFjZT09bGlzdF9zZWFyY2hfc3BhY2UpCiAg
ICAgcmV0dXJuIDsKQEAgLTU1Myw4ICs1NTMsOCBAQAogICAgIGlmKG5icj4xMDAwMCkKICAgICB7
CiAgICAgICBhbGxvY19kYXRhX3QgKnRtcDsKLSAgICAgIHRtcD1saXN0X2VudHJ5KHNlYXJjaF93
YWxrZXIsIGFsbG9jX2RhdGFfdCwgbGlzdCk7Ci0gICAgICBsaXN0X2RlbCgmdG1wLT5saXN0KTsK
KyAgICAgIHRtcD10ZF9saXN0X2VudHJ5KHNlYXJjaF93YWxrZXIsIGFsbG9jX2RhdGFfdCwgbGlz
dCk7CisgICAgICB0ZF9saXN0X2RlbCgmdG1wLT5saXN0KTsKICAgICAgIGZyZWUodG1wKTsKICAg
ICB9CiAgICAgZWxzZQpAQCAtNTY0LDE0ICs1NjQsMTQgQEAKIAogdm9pZCBsaXN0X2NsdXN0ZXJf
ZnJlZShsaXN0X2NsdXN0ZXJfdCAqbGlzdF9jbHVzdGVyKQogewotICBzdHJ1Y3QgbGlzdF9oZWFk
ICpkaXJfd2Fsa2VyID0gTlVMTDsKLSAgc3RydWN0IGxpc3RfaGVhZCAqZGlyX3dhbGtlcl9uZXh0
ID0gTlVMTDsKLSAgbGlzdF9mb3JfZWFjaF9zYWZlKGRpcl93YWxrZXIsZGlyX3dhbGtlcl9uZXh0
LCZsaXN0X2NsdXN0ZXItPmxpc3QpCisgIHN0cnVjdCB0ZF9saXN0X2hlYWQgKmRpcl93YWxrZXIg
PSBOVUxMOworICBzdHJ1Y3QgdGRfbGlzdF9oZWFkICpkaXJfd2Fsa2VyX25leHQgPSBOVUxMOwor
ICB0ZF9saXN0X2Zvcl9lYWNoX3NhZmUoZGlyX3dhbGtlcixkaXJfd2Fsa2VyX25leHQsJmxpc3Rf
Y2x1c3Rlci0+bGlzdCkKICAgewogICAgIGxpc3RfY2x1c3Rlcl90ICppbmZvOwotICAgIGluZm89
bGlzdF9lbnRyeShkaXJfd2Fsa2VyLCBsaXN0X2NsdXN0ZXJfdCwgbGlzdCk7CisgICAgaW5mbz10
ZF9saXN0X2VudHJ5KGRpcl93YWxrZXIsIGxpc3RfY2x1c3Rlcl90LCBsaXN0KTsKICAgICBkZWxl
dGVfbGlzdF9maWxlKGluZm8tPmRpcl9saXN0KTsKLSAgICBsaXN0X2RlbChkaXJfd2Fsa2VyKTsK
KyAgICB0ZF9saXN0X2RlbChkaXJfd2Fsa2VyKTsKICAgICBmcmVlKGluZm8pOwogICB9CiB9CkBA
IC01ODksMTYgKzU4OSwxNiBAQAogCiB2b2lkIHVwZGF0ZV9zdGF0cyhmaWxlX3N0YXRfdCAqZmls
ZV9zdGF0cywgYWxsb2NfZGF0YV90ICpsaXN0X3NlYXJjaF9zcGFjZSkKIHsKLSAgc3RydWN0IGxp
c3RfaGVhZCAqc2VhcmNoX3dhbGtlciA9IE5VTEw7CisgIHN0cnVjdCB0ZF9saXN0X2hlYWQgKnNl
YXJjaF93YWxrZXIgPSBOVUxMOwogICBpbnQgaTsKICAgLyogUmVzZXQgKi8KICAgZm9yKGk9MDtm
aWxlX3N0YXRzW2ldLmZpbGVfaGludCE9TlVMTDtpKyspCiAgICAgZmlsZV9zdGF0c1tpXS5ub3Rf
cmVjb3ZlcmVkPTA7CiAgIC8qIFVwZGF0ZSAqLwotICBsaXN0X2Zvcl9lYWNoKHNlYXJjaF93YWxr
ZXIsICZsaXN0X3NlYXJjaF9zcGFjZS0+bGlzdCkKKyAgdGRfbGlzdF9mb3JfZWFjaChzZWFyY2hf
d2Fsa2VyLCAmbGlzdF9zZWFyY2hfc3BhY2UtPmxpc3QpCiAgIHsKICAgICBhbGxvY19kYXRhX3Qg
KmN1cnJlbnRfc2VhcmNoX3NwYWNlOwotICAgIGN1cnJlbnRfc2VhcmNoX3NwYWNlPWxpc3RfZW50
cnkoc2VhcmNoX3dhbGtlciwgYWxsb2NfZGF0YV90LCBsaXN0KTsKKyAgICBjdXJyZW50X3NlYXJj
aF9zcGFjZT10ZF9saXN0X2VudHJ5KHNlYXJjaF93YWxrZXIsIGFsbG9jX2RhdGFfdCwgbGlzdCk7
CiAgICAgaWYoY3VycmVudF9zZWFyY2hfc3BhY2UtPmZpbGVfc3RhdCE9TlVMTCkKICAgICB7CiAg
ICAgICBjdXJyZW50X3NlYXJjaF9zcGFjZS0+ZmlsZV9zdGF0LT5ub3RfcmVjb3ZlcmVkKys7CkBA
IC03MDUsMTMgKzcwNSwxMyBAQAogICB1bnNpZ25lZCBpbnQgbmJyX21heD0wOwogICBmb3IoY2x1
c3Rlcl9zaXplPWRlZmF1bHRfYmxvY2tzaXplO2NsdXN0ZXJfc2l6ZTw9MTI4KjUxMjtjbHVzdGVy
X3NpemUqPTIpCiAgIHsKLSAgICBzdHJ1Y3QgbGlzdF9oZWFkICpkaXJfd2Fsa2VyID0gTlVMTDsK
KyAgICBzdHJ1Y3QgdGRfbGlzdF9oZWFkICpkaXJfd2Fsa2VyID0gTlVMTDsKICAgICBjbHVzdGVy
X29mZnNldF90IGNsdXN0ZXJfb2Zmc2V0WzEwMDBdOwogICAgIHVuc2lnbmVkIGludCBuYnJfc29s
PTA7Ci0gICAgbGlzdF9mb3JfZWFjaChkaXJfd2Fsa2VyLCZsaXN0X2NsdXN0ZXItPmxpc3QpCisg
ICAgdGRfbGlzdF9mb3JfZWFjaChkaXJfd2Fsa2VyLCZsaXN0X2NsdXN0ZXItPmxpc3QpCiAgICAg
ewogICAgICAgbGlzdF9jbHVzdGVyX3QgKmluZm87Ci0gICAgICBpbmZvPWxpc3RfZW50cnkoZGly
X3dhbGtlciwgbGlzdF9jbHVzdGVyX3QsIGxpc3QpOworICAgICAgaW5mbz10ZF9saXN0X2VudHJ5
KGRpcl93YWxrZXIsIGxpc3RfY2x1c3Rlcl90LCBsaXN0KTsKICAgICAgIGlmKGluZm8tPmNsdXN0
ZXI+PTIgJiYgKGluZm8tPmNsdXN0ZXItMikqY2x1c3Rlcl9zaXplPGluZm8tPm9mZnNldCkKICAg
ICAgIHsKIAl1bnNpZ25lZCBpbnQgc29sX2N1cjsKQEAgLTc1MywxNSArNzUzLDE1IEBACiAgIGlu
dCBibG9ja3NpemVfb2s9MDsKICAgdW5zaWduZWQgaW50IGJsb2Nrc2l6ZTsKICAgKm9mZnNldD0w
OwotICBpZihsaXN0X2VtcHR5KCZsaXN0X2ZpbGUtPmxpc3QpKQorICBpZih0ZF9saXN0X2VtcHR5
KCZsaXN0X2ZpbGUtPmxpc3QpKQogICAgIHJldHVybiBkZWZhdWx0X2Jsb2Nrc2l6ZTsKICAgZm9y
KGJsb2Nrc2l6ZT0xMjgqNTEyO2Jsb2Nrc2l6ZT49ZGVmYXVsdF9ibG9ja3NpemUgJiYgYmxvY2tz
aXplX29rPT0wO2Jsb2Nrc2l6ZT1ibG9ja3NpemU+PjEpCiAgIHsKLSAgICBzdHJ1Y3QgbGlzdF9o
ZWFkICpzZWFyY2hfd2Fsa2VyID0gTlVMTDsKKyAgICBzdHJ1Y3QgdGRfbGlzdF9oZWFkICpzZWFy
Y2hfd2Fsa2VyID0gTlVMTDsKICAgICBibG9ja3NpemVfb2s9MTsKICAgICB7CiAgICAgICBhbGxv
Y19kYXRhX3QgKnRtcDsKLSAgICAgIHRtcD1saXN0X2VudHJ5KGxpc3RfZmlsZS0+bGlzdC5uZXh0
LCBhbGxvY19kYXRhX3QsIGxpc3QpOworICAgICAgdG1wPXRkX2xpc3RfZW50cnkobGlzdF9maWxl
LT5saXN0Lm5leHQsIGFsbG9jX2RhdGFfdCwgbGlzdCk7CiAgICAgICAqb2Zmc2V0PXRtcC0+c3Rh
cnQlYmxvY2tzaXplOwogICAgIH0KICAgICBmb3Ioc2VhcmNoX3dhbGtlcj1saXN0X2ZpbGUtPmxp
c3QubmV4dDsKQEAgLTc2OSw3ICs3NjksNyBAQAogICAgICAgc2VhcmNoX3dhbGtlcj1zZWFyY2hf
d2Fsa2VyLT5uZXh0KQogICAgIHsKICAgICAgIGFsbG9jX2RhdGFfdCAqY3VycmVudF9maWxlOwot
ICAgICAgY3VycmVudF9maWxlPWxpc3RfZW50cnkoc2VhcmNoX3dhbGtlciwgYWxsb2NfZGF0YV90
LCBsaXN0KTsKKyAgICAgIGN1cnJlbnRfZmlsZT10ZF9saXN0X2VudHJ5KHNlYXJjaF93YWxrZXIs
IGFsbG9jX2RhdGFfdCwgbGlzdCk7CiAgICAgICBpZihjdXJyZW50X2ZpbGUtPnN0YXJ0JWJsb2Nr
c2l6ZSE9Km9mZnNldCkKIAlibG9ja3NpemVfb2s9MDsKICAgICB9CkBAIC03ODAsMTggKzc4MCwx
OCBAQAogCiBhbGxvY19kYXRhX3QgKiB1cGRhdGVfYmxvY2tzaXplKHVuc2lnbmVkIGludCBibG9j
a3NpemUsIGFsbG9jX2RhdGFfdCAqbGlzdF9zZWFyY2hfc3BhY2UsIGNvbnN0IHVpbnQ2NF90IG9m
ZnNldCkKIHsKLSAgc3RydWN0IGxpc3RfaGVhZCAqc2VhcmNoX3dhbGtlciA9IE5VTEw7Ci0gIHN0
cnVjdCBsaXN0X2hlYWQgKnNlYXJjaF93YWxrZXJfbmV4dCA9IE5VTEw7Ci0gIGxpc3RfZm9yX2Vh
Y2hfc2FmZShzZWFyY2hfd2Fsa2VyLHNlYXJjaF93YWxrZXJfbmV4dCwmbGlzdF9zZWFyY2hfc3Bh
Y2UtPmxpc3QpCisgIHN0cnVjdCB0ZF9saXN0X2hlYWQgKnNlYXJjaF93YWxrZXIgPSBOVUxMOwor
ICBzdHJ1Y3QgdGRfbGlzdF9oZWFkICpzZWFyY2hfd2Fsa2VyX25leHQgPSBOVUxMOworICB0ZF9s
aXN0X2Zvcl9lYWNoX3NhZmUoc2VhcmNoX3dhbGtlcixzZWFyY2hfd2Fsa2VyX25leHQsJmxpc3Rf
c2VhcmNoX3NwYWNlLT5saXN0KQogICB7CiAgICAgYWxsb2NfZGF0YV90ICpjdXJyZW50X3NlYXJj
aF9zcGFjZTsKLSAgICBjdXJyZW50X3NlYXJjaF9zcGFjZT1saXN0X2VudHJ5KHNlYXJjaF93YWxr
ZXIsIGFsbG9jX2RhdGFfdCwgbGlzdCk7CisgICAgY3VycmVudF9zZWFyY2hfc3BhY2U9dGRfbGlz
dF9lbnRyeShzZWFyY2hfd2Fsa2VyLCBhbGxvY19kYXRhX3QsIGxpc3QpOwogICAgIGN1cnJlbnRf
c2VhcmNoX3NwYWNlLT5zdGFydD0oY3VycmVudF9zZWFyY2hfc3BhY2UtPnN0YXJ0LW9mZnNldCVi
bG9ja3NpemUrYmxvY2tzaXplLTEpL2Jsb2Nrc2l6ZSpibG9ja3NpemUrb2Zmc2V0JWJsb2Nrc2l6
ZTsKICAgICBpZihjdXJyZW50X3NlYXJjaF9zcGFjZS0+c3RhcnQ+Y3VycmVudF9zZWFyY2hfc3Bh
Y2UtPmVuZCkKICAgICB7Ci0gICAgICBsaXN0X2RlbChzZWFyY2hfd2Fsa2VyKTsKKyAgICAgIHRk
X2xpc3RfZGVsKHNlYXJjaF93YWxrZXIpOwogICAgICAgaWYobGlzdF9zZWFyY2hfc3BhY2U9PWN1
cnJlbnRfc2VhcmNoX3NwYWNlKQotCWxpc3Rfc2VhcmNoX3NwYWNlPWxpc3RfZW50cnkoc2VhcmNo
X3dhbGtlcl9uZXh0LCBhbGxvY19kYXRhX3QsIGxpc3QpOworCWxpc3Rfc2VhcmNoX3NwYWNlPXRk
X2xpc3RfZW50cnkoc2VhcmNoX3dhbGtlcl9uZXh0LCBhbGxvY19kYXRhX3QsIGxpc3QpOwogICAg
ICAgZnJlZShjdXJyZW50X3NlYXJjaF9zcGFjZSk7CiAgICAgfQogICB9CkBAIC0xMjQwLDE0ICsx
MjQwLDE0IEBACiAgICAgICBsaXN0X2ZyZWVfYWRkKGZpbGVfcmVjb3ZlcnksIGxpc3Rfc2VhcmNo
X3NwYWNlKTsKICAgICAgIGlmKCgqY3VycmVudF9zZWFyY2hfc3BhY2UpIT1saXN0X3NlYXJjaF9z
cGFjZSAmJgogCSAgISgoKmN1cnJlbnRfc2VhcmNoX3NwYWNlKS0+c3RhcnQgPD0gKm9mZnNldCAm
JiAqb2Zmc2V0IDw9ICgqY3VycmVudF9zZWFyY2hfc3BhY2UpLT5lbmQpKQotCSpjdXJyZW50X3Nl
YXJjaF9zcGFjZT1saXN0X2VudHJ5KCgqY3VycmVudF9zZWFyY2hfc3BhY2UpLT5saXN0Lm5leHQs
IGFsbG9jX2RhdGFfdCwgbGlzdCk7CisJKmN1cnJlbnRfc2VhcmNoX3NwYWNlPXRkX2xpc3RfZW50
cnkoKCpjdXJyZW50X3NlYXJjaF9zcGFjZSktPmxpc3QubmV4dCwgYWxsb2NfZGF0YV90LCBsaXN0
KTsKICAgICB9CiAgICAgZWxzZSBpZihzdGF0dXMhPVNUQVRVU19FWFQyX09OX1NBVkVfRVZFUllU
SElORyAmJiBzdGF0dXMhPVNUQVRVU19FWFQyX09GRl9TQVZFX0VWRVJZVEhJTkcgJiYgc3RhdHVz
IT1TVEFUVVNfRklORF9PRkZTRVQpCiAgICAgewogICAgICAgbGlzdF9zZWFyY2hfc3BhY2U9dXBk
YXRlX3NlYXJjaF9zcGFjZShmaWxlX3JlY292ZXJ5LGxpc3Rfc2VhcmNoX3NwYWNlLGN1cnJlbnRf
c2VhcmNoX3NwYWNlLG9mZnNldCxibG9ja3NpemUpOwogICAgICAgZmlsZV9yZWNvdmVyZWQ9MTsK
ICAgICB9Ci0gICAgbGlzdF9kZWxldGUoZmlsZV9yZWNvdmVyeS0+bG9jYXRpb24ubmV4dCk7Cisg
ICAgdGRfbGlzdF9kZWxldGUoZmlsZV9yZWNvdmVyeS0+bG9jYXRpb24ubmV4dCk7CiAgICAgZmls
ZV9yZWNvdmVyeS0+bG9jYXRpb24ubmV4dD1OVUxMOwogICB9CiAgIGlmKGZpbGVfcmVjb3Zlcnkt
PmZpbGVfc2l6ZT09MCAmJiBmaWxlX3JlY292ZXJ5LT5vZmZzZXRfZXJyb3IhPTApCmRpZmYgLXJ1
dyB0ZXN0ZGlzay02Ljgub3JnL3NyYy9waG90b3JlYy5oIHRlc3RkaXNrLTYuOC9zcmMvcGhvdG9y
ZWMuaAotLS0gdGVzdGRpc2stNi44Lm9yZy9zcmMvcGhvdG9yZWMuaAkyMDA3LTA3LTE3IDE5OjI0
OjA0LjAwMDAwMDAwMCArMDIwMAorKysgdGVzdGRpc2stNi44L3NyYy9waG90b3JlYy5oCTIwMDct
MTItMDIgMjI6NDE6NTkuMDAwMDAwMDAwICswMTAwCkBAIC05LDcgKzksNyBAQAogdHlwZWRlZiBz
dHJ1Y3QgbGlzdF9jbHVzdGVyX3N0cnVjdCBsaXN0X2NsdXN0ZXJfdDsKIHN0cnVjdCBsaXN0X2Ns
dXN0ZXJfc3RydWN0CiB7Ci0gIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKyAgc3RydWN0IHRkX2xp
c3RfaGVhZCBsaXN0OwogICB1aW50NjRfdCBvZmZzZXQ7CiAgIHVpbnQzMl90IGNsdXN0ZXI7CiAg
IGZpbGVfZGF0YV90ICpkaXJfbGlzdDsKZGlmZiAtcnV3IHRlc3RkaXNrLTYuOC5vcmcvc3JjL3Bo
cmVjbi5jIHRlc3RkaXNrLTYuOC9zcmMvcGhyZWNuLmMKLS0tIHRlc3RkaXNrLTYuOC5vcmcvc3Jj
L3BocmVjbi5jCTIwMDctMDctMTkgMjM6Mzk6MjYuMDAwMDAwMDAwICswMjAwCisrKyB0ZXN0ZGlz
ay02Ljgvc3JjL3BocmVjbi5jCTIwMDctMTItMDIgMjI6NDE6NTkuMDAwMDAwMDAwICswMTAwCkBA
IC0zNjUsOCArMzY1LDggQEAKIAogc3RhdGljIGludCBwaG90b3JlY19iZihkaXNrX3QgKmRpc2tf
Y2FyLCBwYXJ0aXRpb25fdCAqcGFydGl0aW9uLCBjb25zdCBpbnQgZGVidWcsIGNvbnN0IGludCBw
YXJhbm9pZCwgY29uc3QgY2hhciAqcmVjdXBfZGlyLCBjb25zdCBpbnQgaW50ZXJmYWNlLCBmaWxl
X3N0YXRfdCAqZmlsZV9zdGF0cywgdW5zaWduZWQgaW50ICpmaWxlX25iciwgdW5zaWduZWQgaW50
ICpibG9ja3NpemUsIGFsbG9jX2RhdGFfdCAqbGlzdF9zZWFyY2hfc3BhY2UsIGNvbnN0IHRpbWVf
dCByZWFsX3N0YXJ0X3RpbWUsIHVuc2lnbmVkIGludCAqZGlyX251bSwgY29uc3QgcGhvdG9yZWNf
c3RhdHVzX3Qgc3RhdHVzLCBjb25zdCB1bnNpZ25lZCBpbnQgcGFzcywgY29uc3QgdW5zaWduZWQg
aW50IGV4cGVydCwgY29uc3QgdW5zaWduZWQgaW50IGxvd21lbSkKIHsKLSAgc3RydWN0IGxpc3Rf
aGVhZCAqc2VhcmNoX3dhbGtlciA9IE5VTEw7Ci0gIHN0cnVjdCBsaXN0X2hlYWQgKm49IE5VTEw7
CisgIHN0cnVjdCB0ZF9saXN0X2hlYWQgKnNlYXJjaF93YWxrZXIgPSBOVUxMOworICBzdHJ1Y3Qg
dGRfbGlzdF9oZWFkICpuPSBOVUxMOwogICB1bnNpZ25lZCBjaGFyICpidWZmZXJfc3RhcnQ7CiAg
IHVuc2lnbmVkIGludCByZWFkX3NpemU7CiAgIHVuc2lnbmVkIGludCBidWZmZXJfc2l6ZTsKQEAg
LTM4NSw3ICszODUsNyBAQAogICAgIHVpbnQ2NF90IG9mZnNldDsKICAgICBpbnQgbmVlZF90b19j
aGVja19maWxlOwogICAgIGZpbGVfcmVjb3ZlcnlfdCBmaWxlX3JlY292ZXJ5OwotICAgIGN1cnJl
bnRfc2VhcmNoX3NwYWNlPWxpc3RfZW50cnkoc2VhcmNoX3dhbGtlciwgYWxsb2NfZGF0YV90LCBs
aXN0KTsKKyAgICBjdXJyZW50X3NlYXJjaF9zcGFjZT10ZF9saXN0X2VudHJ5KHNlYXJjaF93YWxr
ZXIsIGFsbG9jX2RhdGFfdCwgbGlzdCk7CiAgICAgb2Zmc2V0PWN1cnJlbnRfc2VhcmNoX3NwYWNl
LT5zdGFydDsKICAgICBidWZmZXJfb2xkZGF0YT1idWZmZXJfc3RhcnQ7CiAgICAgYnVmZmVyPWJ1
ZmZlcl9vbGRkYXRhKygqYmxvY2tzaXplKTsKQEAgLTM5NCwxMiArMzk0LDEyIEBACiAgICAgZGlz
a19jYXItPnJlYWQoZGlza19jYXIsUkVBRF9TSVpFLCBidWZmZXIsIG9mZnNldCk7CiAjaWZkZWYg
REVCVUdfQkYKICAgICB7Ci0gICAgICBzdHJ1Y3QgbGlzdF9oZWFkICp0bXA9IE5VTEw7CisgICAg
ICBzdHJ1Y3QgdGRfbGlzdF9oZWFkICp0bXA9IE5VTEw7CiAgICAgICBsb2dfZGVidWcoIkV4cGxv
cmUgIik7Ci0gICAgICBsaXN0X2Zvcl9lYWNoKHRtcCwgJmxpc3Rfc2VhcmNoX3NwYWNlLT5saXN0
KQorICAgICAgdGRfbGlzdF9mb3JfZWFjaCh0bXAsICZsaXN0X3NlYXJjaF9zcGFjZS0+bGlzdCkK
ICAgICAgIHsKIAlhbGxvY19kYXRhX3QgKmN1cl9mcmVlX3NwYWNlOwotCWN1cl9mcmVlX3NwYWNl
PWxpc3RfZW50cnkodG1wLCBhbGxvY19kYXRhX3QsIGxpc3QpOworCWN1cl9mcmVlX3NwYWNlPXRk
X2xpc3RfZW50cnkodG1wLCBhbGxvY19kYXRhX3QsIGxpc3QpOwogCWxvZ19kZWJ1ZygiICVsdS0l
bHUiLChsb25nIHVuc2lnbmVkKShjdXJfZnJlZV9zcGFjZS0+c3RhcnQvZGlza19jYXItPnNlY3Rv
cl9zaXplKSwKIAkgICAgKGxvbmcgdW5zaWduZWQpKGN1cl9mcmVlX3NwYWNlLT5lbmQvZGlza19j
YXItPnNlY3Rvcl9zaXplKSk7CiAJaWYoY3VyX2ZyZWVfc3BhY2U9PWN1cnJlbnRfc2VhcmNoX3Nw
YWNlKQpAQCAtNTM4LDcgKzUzOCw3IEBACiAgICAgewogICAgICAgaWYoZmlsZV9maW5pc2goJmZp
bGVfcmVjb3ZlcnkscmVjdXBfZGlyLHBhcmFub2lkLGZpbGVfbmJyLCAqYmxvY2tzaXplLCBsaXN0
X3NlYXJjaF9zcGFjZSwgJmN1cnJlbnRfc2VhcmNoX3NwYWNlLCAmb2Zmc2V0LCBkaXJfbnVtLHN0
YXR1cyxkaXNrX2Nhci0+c2VjdG9yX3NpemUsZGlza19jYXIpPDApCiAgICAgICB7IC8qIEJGICov
Ci0JY3VycmVudF9zZWFyY2hfc3BhY2U9bGlzdF9lbnRyeShzZWFyY2hfd2Fsa2VyLCBhbGxvY19k
YXRhX3QsIGxpc3QpOworCWN1cnJlbnRfc2VhcmNoX3NwYWNlPXRkX2xpc3RfZW50cnkoc2VhcmNo
X3dhbGtlciwgYWxsb2NfZGF0YV90LCBsaXN0KTsKIAlpbmRfc3RvcD1waG90b3JlY19iZl9hdXgo
ZGlza19jYXIsIHBhcnRpdGlvbiwgcGFyYW5vaWQsIHJlY3VwX2RpciwgaW50ZXJmYWNlLCBmaWxl
X3N0YXRzLCBmaWxlX25iciwgJmZpbGVfcmVjb3ZlcnksICpibG9ja3NpemUsIGxpc3Rfc2VhcmNo
X3NwYWNlLCBjdXJyZW50X3NlYXJjaF9zcGFjZSwgcmVhbF9zdGFydF90aW1lLCBkaXJfbnVtLCBz
dGF0dXMsIHBhc3MyKTsKIAlwYXNzMisrOwogICAgICAgfQpAQCAtNjE5LDExICs2MTksMTEgQEAK
IAkgIGV4dHJhYmxvY2tfb2Zmc2V0PWVsZW1lbnQtPmVuZC9ibG9ja3NpemUqYmxvY2tzaXplOwog
ICAgICAgfQogICAgICAgLyogR2V0IHRoZSBjb3JyZXNwb25kaW5nIHNlYXJjaF9wbGFjZSAqLwot
ICAgICAgZXh0cmFjdGJsb2NrX3NlYXJjaF9zcGFjZT1saXN0X2VudHJ5KGxpc3Rfc2VhcmNoX3Nw
YWNlLT5saXN0Lm5leHQsIGFsbG9jX2RhdGFfdCwgbGlzdCk7CisgICAgICBleHRyYWN0YmxvY2tf
c2VhcmNoX3NwYWNlPXRkX2xpc3RfZW50cnkobGlzdF9zZWFyY2hfc3BhY2UtPmxpc3QubmV4dCwg
YWxsb2NfZGF0YV90LCBsaXN0KTsKICAgICAgIHdoaWxlKGV4dHJhY3RibG9ja19zZWFyY2hfc3Bh
Y2UgIT0gbGlzdF9zZWFyY2hfc3BhY2UgJiYKIAkgICEoZXh0cmFjdGJsb2NrX3NlYXJjaF9zcGFj
ZS0+c3RhcnQgPD0gZXh0cmFibG9ja19vZmZzZXQgJiYKIAkgICAgZXh0cmFibG9ja19vZmZzZXQg
PD0gZXh0cmFjdGJsb2NrX3NlYXJjaF9zcGFjZS0+ZW5kKSkKLQlleHRyYWN0YmxvY2tfc2VhcmNo
X3NwYWNlPWxpc3RfZW50cnkoZXh0cmFjdGJsb2NrX3NlYXJjaF9zcGFjZS0+bGlzdC5uZXh0LCBh
bGxvY19kYXRhX3QsIGxpc3QpOworCWV4dHJhY3RibG9ja19zZWFyY2hfc3BhY2U9dGRfbGlzdF9l
bnRyeShleHRyYWN0YmxvY2tfc2VhcmNoX3NwYWNlLT5saXN0Lm5leHQsIGFsbG9jX2RhdGFfdCwg
bGlzdCk7CiAgICAgICAvKiBVcGRhdGUgZXh0cmFjdGJsb2NrX3NlYXJjaF9zcGFjZSAmIGV4dHJh
YmxvY2tfb2Zmc2V0ICovCiAgICAgICBnZXRfbmV4dF9zZWN0b3IobGlzdF9zZWFyY2hfc3BhY2Us
ICZleHRyYWN0YmxvY2tfc2VhcmNoX3NwYWNlLCAmZXh0cmFibG9ja19vZmZzZXQsIGJsb2Nrc2l6
ZSk7CiAgICAgICAvKiAqLwpAQCAtNzMwLDEwICs3MzAsMTAgQEAKICAgYWxsb2NfZGF0YV90ICpj
dXJyZW50X3NlYXJjaF9zcGFjZTsKICAgZmlsZV9yZWNvdmVyeV90IGZpbGVfcmVjb3Zlcnk7CiAg
IHN0YXRpYyBhbGxvY19kYXRhX3QgbGlzdF9maWxlPXsKLSAgICAubGlzdCA9IExJU1RfSEVBRF9J
TklUKGxpc3RfZmlsZS5saXN0KQorICAgIC5saXN0ID0gVERfTElTVF9IRUFEX0lOSVQobGlzdF9m
aWxlLmxpc3QpCiAgIH07CiAgIHN0YXRpYyBsaXN0X2NsdXN0ZXJfdCBsaXN0X2NsdXN0ZXI9IHsK
LSAgICAubGlzdCA9IExJU1RfSEVBRF9JTklUKGxpc3RfY2x1c3Rlci5saXN0KQorICAgIC5saXN0
ID0gVERfTElTVF9IRUFEX0lOSVQobGlzdF9jbHVzdGVyLmxpc3QpCiAgIH07CiAjZGVmaW5lIFJF
QURfU0laRSAyNTYqNTEyCiAgIHJlYWRfc2l6ZT0oKCpibG9ja3NpemUpPjgxOTI/KCpibG9ja3Np
emUpOjgxOTIpOwpAQCAtNzQ3LDE4ICs3NDcsMTggQEAKICAgbWVtc2V0KGJ1ZmZlcl9vbGRkYXRh
LDAsKCpibG9ja3NpemUpKTsKICAgaWYoZGVidWc+MSkKICAgewotICAgIHN0cnVjdCBsaXN0X2hl
YWQgKnNlYXJjaF93YWxrZXIgPSBOVUxMOworICAgIHN0cnVjdCB0ZF9saXN0X2hlYWQgKnNlYXJj
aF93YWxrZXIgPSBOVUxMOwogICAgIGxvZ19kZWJ1ZygiRXhwbG9yZSAiKTsKLSAgICBsaXN0X2Zv
cl9lYWNoKHNlYXJjaF93YWxrZXIsICZsaXN0X3NlYXJjaF9zcGFjZS0+bGlzdCkKKyAgICB0ZF9s
aXN0X2Zvcl9lYWNoKHNlYXJjaF93YWxrZXIsICZsaXN0X3NlYXJjaF9zcGFjZS0+bGlzdCkKICAg
ICB7CiAgICAgICBhbGxvY19kYXRhX3QgKmN1cl9mcmVlX3NwYWNlOwotICAgICAgY3VyX2ZyZWVf
c3BhY2U9bGlzdF9lbnRyeShzZWFyY2hfd2Fsa2VyLCBhbGxvY19kYXRhX3QsIGxpc3QpOworICAg
ICAgY3VyX2ZyZWVfc3BhY2U9dGRfbGlzdF9lbnRyeShzZWFyY2hfd2Fsa2VyLCBhbGxvY19kYXRh
X3QsIGxpc3QpOwogICAgICAgbG9nX2RlYnVnKCIgJWx1LSVsdSIsKGxvbmcgdW5zaWduZWQpKGN1
cl9mcmVlX3NwYWNlLT5zdGFydC9kaXNrX2Nhci0+c2VjdG9yX3NpemUpLAogCSAgKGxvbmcgdW5z
aWduZWQpKGN1cl9mcmVlX3NwYWNlLT5lbmQvZGlza19jYXItPnNlY3Rvcl9zaXplKSk7CiAgICAg
fQogICAgIGxvZ19kZWJ1ZygiXG4iKTsKICAgfQotICBjdXJyZW50X3NlYXJjaF9zcGFjZT1saXN0
X2VudHJ5KGxpc3Rfc2VhcmNoX3NwYWNlLT5saXN0Lm5leHQsIGFsbG9jX2RhdGFfdCwgbGlzdCk7
CisgIGN1cnJlbnRfc2VhcmNoX3NwYWNlPXRkX2xpc3RfZW50cnkobGlzdF9zZWFyY2hfc3BhY2Ut
Pmxpc3QubmV4dCwgYWxsb2NfZGF0YV90LCBsaXN0KTsKICAgaWYoY3VycmVudF9zZWFyY2hfc3Bh
Y2UhPWxpc3Rfc2VhcmNoX3NwYWNlKQogICAgIG9mZnNldD1jdXJyZW50X3NlYXJjaF9zcGFjZS0+
c3RhcnQ7CiAgIGRpc2tfY2FyLT5yZWFkKGRpc2tfY2FyLFJFQURfU0laRSwgYnVmZmVyLCBvZmZz
ZXQpOwpAQCAtODMyLDcgKzgzMiw3IEBACiAJICAgICAgbmV3X2ZpbGVfYWxsb2M9KGFsbG9jX2Rh
dGFfdCopTUFMTE9DKHNpemVvZigqbmV3X2ZpbGVfYWxsb2MpKTsKIAkgICAgICBuZXdfZmlsZV9h
bGxvYy0+c3RhcnQ9ZmlsZV9yZWNvdmVyeS5sb2NhdGlvbi5zdGFydDsKIAkgICAgICBuZXdfZmls
ZV9hbGxvYy0+ZW5kPTA7Ci0JICAgICAgbGlzdF9hZGRfdGFpbCgmbmV3X2ZpbGVfYWxsb2MtPmxp
c3QsJmxpc3RfZmlsZS5saXN0KTsKKwkgICAgICB0ZF9saXN0X2FkZF90YWlsKCZuZXdfZmlsZV9h
bGxvYy0+bGlzdCwmbGlzdF9maWxlLmxpc3QpOwogCSAgICAgICgqZmlsZV9uYnIpKys7CiAJICAg
IH0KIAkgICAgaWYoZmlsZV9yZWNvdmVyeS5maWxlX3N0YXQtPmZpbGVfaGludD09JmZpbGVfaGlu
dF9kaXIpCkBAIC0xMDgwLDcgKzEwODAsNyBAQAogICBhZmZfYnVmZmVyKEJVRkZFUl9SRVNFVCwi
USIpOwogICBsb2dfaW5mbygiXG5BbmFseXNlXG4iKTsKICAgbG9nX3BhcnRpdGlvbihkaXNrX2Nh
cixwYXJ0aXRpb24pOwotICBpZihibG9ja3NpemU9PTAgfHwgbGlzdF9lbXB0eSgmbGlzdF9zZWFy
Y2hfc3BhY2UtPmxpc3QpKQorICBpZihibG9ja3NpemU9PTAgfHwgdGRfbGlzdF9lbXB0eSgmbGlz
dF9zZWFyY2hfc3BhY2UtPmxpc3QpKQogICB7CiAgICAgYmxvY2tzaXplPWRpc2tfY2FyLT5zZWN0
b3Jfc2l6ZTsKICAgICBibG9ja3NpemVfaXNfa25vd249MDsKQEAgLTEwODgsMTAgKzEwODgsMTAg
QEAKICAgZWxzZQogICAgIGJsb2Nrc2l6ZV9pc19rbm93bj0xOwogCi0gIGlmKGxpc3RfZW1wdHko
Jmxpc3Rfc2VhcmNoX3NwYWNlLT5saXN0KSkKKyAgaWYodGRfbGlzdF9lbXB0eSgmbGlzdF9zZWFy
Y2hfc3BhY2UtPmxpc3QpKQogICB7CiAgICAgYWxsb2NfZGF0YV90ICp0bXA9aW5pdF9zZWFyY2hf
c3BhY2UocGFydGl0aW9uLGRpc2tfY2FyKTsKLSAgICBsaXN0X2FkZF90YWlsKCZ0bXAtPmxpc3Qs
ICZsaXN0X3NlYXJjaF9zcGFjZS0+bGlzdCk7CisgICAgdGRfbGlzdF9hZGRfdGFpbCgmdG1wLT5s
aXN0LCAmbGlzdF9zZWFyY2hfc3BhY2UtPmxpc3QpOwogICAgIGlmKG1vZGVfZXh0Mj09MCAmJiBj
YXJ2ZV9mcmVlX3NwYWNlX29ubHk+MCkKICAgICB7CiAgICAgICBibG9ja3NpemU9cmVtb3ZlX3Vz
ZWRfc3BhY2UoZGlza19jYXIsIHBhcnRpdGlvbiwgbGlzdF9zZWFyY2hfc3BhY2UpOwpAQCAtMTEw
MywxMSArMTEwMywxMSBAQAogICB9CiAgIGVsc2UKICAgeyAvKiBDb3JyZWN0IHRoZSB2YWx1ZXMg
Ki8KLSAgICBzdHJ1Y3QgbGlzdF9oZWFkICpzZWFyY2hfd2Fsa2VyID0gTlVMTDsKLSAgICBsaXN0
X2Zvcl9lYWNoKHNlYXJjaF93YWxrZXIsICZsaXN0X3NlYXJjaF9zcGFjZS0+bGlzdCkKKyAgICBz
dHJ1Y3QgdGRfbGlzdF9oZWFkICpzZWFyY2hfd2Fsa2VyID0gTlVMTDsKKyAgICB0ZF9saXN0X2Zv
cl9lYWNoKHNlYXJjaF93YWxrZXIsICZsaXN0X3NlYXJjaF9zcGFjZS0+bGlzdCkKICAgICB7CiAg
ICAgICBhbGxvY19kYXRhX3QgKmN1cnJlbnRfc2VhcmNoX3NwYWNlOwotICAgICAgY3VycmVudF9z
ZWFyY2hfc3BhY2U9bGlzdF9lbnRyeShzZWFyY2hfd2Fsa2VyLCBhbGxvY19kYXRhX3QsIGxpc3Qp
OworICAgICAgY3VycmVudF9zZWFyY2hfc3BhY2U9dGRfbGlzdF9lbnRyeShzZWFyY2hfd2Fsa2Vy
LCBhbGxvY19kYXRhX3QsIGxpc3QpOwogICAgICAgY3VycmVudF9zZWFyY2hfc3BhY2UtPnN0YXJ0
PWN1cnJlbnRfc2VhcmNoX3NwYWNlLT5zdGFydCpkaXNrX2Nhci0+c2VjdG9yX3NpemU7CiAgICAg
ICBjdXJyZW50X3NlYXJjaF9zcGFjZS0+ZW5kPWN1cnJlbnRfc2VhcmNoX3NwYWNlLT5lbmQqZGlz
a19jYXItPnNlY3Rvcl9zaXplK2Rpc2tfY2FyLT5zZWN0b3Jfc2l6ZS0xOwogICAgIH0KQEAgLTEy
NjYsMTUgKzEyNjYsMTUgQEAKICAgICB9CiAgIH0KICAgewotICAgIHN0cnVjdCBsaXN0X2hlYWQg
KnNlYXJjaF93YWxrZXIgPSBOVUxMOwotICAgIHN0cnVjdCBsaXN0X2hlYWQgKnNlYXJjaF93YWxr
ZXJfbmV4dCA9IE5VTEw7CisgICAgc3RydWN0IHRkX2xpc3RfaGVhZCAqc2VhcmNoX3dhbGtlciA9
IE5VTEw7CisgICAgc3RydWN0IHRkX2xpc3RfaGVhZCAqc2VhcmNoX3dhbGtlcl9uZXh0ID0gTlVM
TDsKICAgICB1bnNpZ25lZCBsb25nIGludCBuYnJfaGVhZGVycz0wOwogICAgIHVpbnQ2NF90IHNl
Y3RvcnNfd2l0aF91bmtub3duX2RhdGE9MDsKICAgICAvKiBGcmVlIG1lbW9yeSAqLwotICAgIGxp
c3RfZm9yX2VhY2hfc2FmZShzZWFyY2hfd2Fsa2VyLHNlYXJjaF93YWxrZXJfbmV4dCwmbGlzdF9z
ZWFyY2hfc3BhY2UtPmxpc3QpCisgICAgdGRfbGlzdF9mb3JfZWFjaF9zYWZlKHNlYXJjaF93YWxr
ZXIsc2VhcmNoX3dhbGtlcl9uZXh0LCZsaXN0X3NlYXJjaF9zcGFjZS0+bGlzdCkKICAgICB7CiAg
ICAgICBhbGxvY19kYXRhX3QgKmN1cnJlbnRfc2VhcmNoX3NwYWNlOwotICAgICAgY3VycmVudF9z
ZWFyY2hfc3BhY2U9bGlzdF9lbnRyeShzZWFyY2hfd2Fsa2VyLCBhbGxvY19kYXRhX3QsIGxpc3Qp
OworICAgICAgY3VycmVudF9zZWFyY2hfc3BhY2U9dGRfbGlzdF9lbnRyeShzZWFyY2hfd2Fsa2Vy
LCBhbGxvY19kYXRhX3QsIGxpc3QpOwogICAgICAgaWYoY3VycmVudF9zZWFyY2hfc3BhY2UtPmZp
bGVfc3RhdCE9TlVMTCkKICAgICAgIHsKIAluYnJfaGVhZGVycysrOwpAQCAtMTI5MCw3ICsxMjkw
LDcgQEAKIAkgICAgICBjdXJyZW50X3NlYXJjaF9zcGFjZS0+ZmlsZV9zdGF0LT5maWxlX2hpbnQt
PmV4dGVuc2lvbjoiIik6CiAJICAgICAiKG51bGwpIikpOwogICAgICAgfQotICAgICAgbGlzdF9k
ZWwoc2VhcmNoX3dhbGtlcik7CisgICAgICB0ZF9saXN0X2RlbChzZWFyY2hfd2Fsa2VyKTsKICAg
ICAgIGZyZWUoY3VycmVudF9zZWFyY2hfc3BhY2UpOwogICAgIH0KICAgICBsb2dfaW5mbygiJWxs
dSBzZWN0b3JzIGNvbnRhaW5zIHVua25vd24gZGF0YSwgJWx1IGludmFsaWQgZmlsZXMgZm91bmQg
JXMuXG4iLApAQCAtMTUzMywxMiArMTUzMywxMiBAQAogICB9OwogICBjaGFyICpjdXJyZW50X2Nt
ZD1jbWRfcnVuOwogICBhbGxvY19kYXRhX3QgbGlzdF9zZWFyY2hfc3BhY2U9ewotICAgIC5saXN0
ID0gTElTVF9IRUFEX0lOSVQobGlzdF9zZWFyY2hfc3BhY2UubGlzdCkKKyAgICAubGlzdCA9IFRE
X0xJU1RfSEVBRF9JTklUKGxpc3Rfc2VhcmNoX3NwYWNlLmxpc3QpCiAgIH07CiAgIGlmKGNtZF9k
ZXZpY2U9PU5VTEwpCiAgIHsKICAgICBzZXNzaW9uX2xvYWQoJmNtZF9kZXZpY2UsICZjdXJyZW50
X2NtZCwmbGlzdF9zZWFyY2hfc3BhY2UpOwotICAgIGlmKGNtZF9kZXZpY2UhPU5VTEwgJiYgY3Vy
cmVudF9jbWQhPU5VTEwgJiYgIWxpc3RfZW1wdHkoJmxpc3Rfc2VhcmNoX3NwYWNlLmxpc3QpICYm
IGFza19jb25maXJtYXRpb24oIkNvbnRpbnVlIHByZXZpb3VzIHNlc3Npb24gPyAoWS9OKSIpIT0w
KQorICAgIGlmKGNtZF9kZXZpY2UhPU5VTEwgJiYgY3VycmVudF9jbWQhPU5VTEwgJiYgIXRkX2xp
c3RfZW1wdHkoJmxpc3Rfc2VhcmNoX3NwYWNlLmxpc3QpICYmIGFza19jb25maXJtYXRpb24oIkNv
bnRpbnVlIHByZXZpb3VzIHNlc3Npb24gPyAoWS9OKSIpIT0wKQogICAgIHsKICAgICAgIC8qIHll
cyAqLwogICAgIH0KQEAgLTIwNDEsNyArMjA0MSw3IEBACiAgICAgICAodW5zaWduZWQgbG9uZyBs
b25nKSgoKmN1cnJlbnRfc2VhcmNoX3NwYWNlKS0+ZW5kKS81MTIpOwogI2VuZGlmCiAgIGlmKCgq
Y3VycmVudF9zZWFyY2hfc3BhY2UpICE9IGxpc3Rfc2VhcmNoX3NwYWNlKQotICAgICpjdXJyZW50
X3NlYXJjaF9zcGFjZT1saXN0X2VudHJ5KCgqY3VycmVudF9zZWFyY2hfc3BhY2UpLT5saXN0Lm5l
eHQsIGFsbG9jX2RhdGFfdCwgbGlzdCk7CisgICAgKmN1cnJlbnRfc2VhcmNoX3NwYWNlPXRkX2xp
c3RfZW50cnkoKCpjdXJyZW50X3NlYXJjaF9zcGFjZSktPmxpc3QubmV4dCwgYWxsb2NfZGF0YV90
LCBsaXN0KTsKICAgKm9mZnNldD0oKmN1cnJlbnRfc2VhcmNoX3NwYWNlKS0+c3RhcnQ7CiB9CiAK
ZGlmZiAtcnV3IHRlc3RkaXNrLTYuOC5vcmcvc3JjL3NhdmVoZHIuYyB0ZXN0ZGlzay02Ljgvc3Jj
L3NhdmVoZHIuYwotLS0gdGVzdGRpc2stNi44Lm9yZy9zcmMvc2F2ZWhkci5jCTIwMDctMDctMDYg
MTY6MzU6NDUuMDAwMDAwMDAwICswMjAwCisrKyB0ZXN0ZGlzay02Ljgvc3JjL3NhdmVoZHIuYwky
MDA3LTEyLTAyIDIyOjQxOjU5LjAwMDAwMDAwMCArMDEwMApAQCAtMTM3LDcgKzEzNyw3IEBACiAJ
bG9nX2RlYnVnKCJuZXcgZGlzazogJXNcbiIscG9zKTsKICAgICAgIH0KICAgICAgIGlmKG5ld19i
YWNrdXAhPU5VTEwpCi0JbGlzdF9hZGRfdGFpbCgmbmV3X2JhY2t1cC0+bGlzdCwmbGlzdF9iYWNr
dXAtPmxpc3QpOworCXRkX2xpc3RfYWRkX3RhaWwoJm5ld19iYWNrdXAtPmxpc3QsJmxpc3RfYmFj
a3VwLT5saXN0KTsKICAgICAgIG5ld19iYWNrdXA9KGJhY2t1cF9kaXNrX3QqKU1BTExPQyhzaXpl
b2YoKm5ld19iYWNrdXApKTsKICAgICAgIG5ld19iYWNrdXAtPmRlc2NyaXB0aW9uWzBdPSdcMCc7
CiAgICAgICBuZXdfYmFja3VwLT5saXN0X3BhcnQ9TlVMTDsKQEAgLTE5Niw3ICsxOTYsNyBAQAog
ICAgIH0KICAgfQogICBpZihuZXdfYmFja3VwIT1OVUxMKQotICAgIGxpc3RfYWRkX3RhaWwoJm5l
d19iYWNrdXAtPmxpc3QsJmxpc3RfYmFja3VwLT5saXN0KTsKKyAgICB0ZF9saXN0X2FkZF90YWls
KCZuZXdfYmFja3VwLT5saXN0LCZsaXN0X2JhY2t1cC0+bGlzdCk7CiAgIGZjbG9zZShmX2JhY2t1
cCk7CiAgIGZyZWUoYnVmZmVyKTsKICAgcmV0dXJuIGxpc3RfYmFja3VwOwpkaWZmIC1ydXcgdGVz
dGRpc2stNi44Lm9yZy9zcmMvc2F2ZWhkci5oIHRlc3RkaXNrLTYuOC9zcmMvc2F2ZWhkci5oCi0t
LSB0ZXN0ZGlzay02Ljgub3JnL3NyYy9zYXZlaGRyLmgJMjAwNy0wNS0xMSAxMToxNjo0MC4wMDAw
MDAwMDAgKzAyMDAKKysrIHRlc3RkaXNrLTYuOC9zcmMvc2F2ZWhkci5oCTIwMDctMTItMDIgMjI6
NDE6NTkuMDAwMDAwMDAwICswMTAwCkBAIC0yMyw3ICsyMyw3IEBACiB0eXBlZGVmIHN0cnVjdCBi
YWNrdXBfZGlzayBiYWNrdXBfZGlza190Owogc3RydWN0IGJhY2t1cF9kaXNrCiB7Ci0gIHN0cnVj
dCBsaXN0X2hlYWQgbGlzdDsKKyAgc3RydWN0IHRkX2xpc3RfaGVhZCBsaXN0OwogICB0aW1lX3Qg
bXlfdGltZTsKICAgY2hhciBkZXNjcmlwdGlvblsxMjhdOwogICBsaXN0X3BhcnRfdCAqbGlzdF9w
YXJ0OwpkaWZmIC1ydXcgdGVzdGRpc2stNi44Lm9yZy9zcmMvc2Vzc2lvbnAuYyB0ZXN0ZGlzay02
Ljgvc3JjL3Nlc3Npb25wLmMKLS0tIHRlc3RkaXNrLTYuOC5vcmcvc3JjL3Nlc3Npb25wLmMJMjAw
Ny0wNy0wNiAxNjozMjo0Mi4wMDAwMDAwMDAgKzAyMDAKKysrIHRlc3RkaXNrLTYuOC9zcmMvc2Vz
c2lvbnAuYwkyMDA3LTEyLTAyIDIyOjQxOjU5LjAwMDAwMDAwMCArMDEwMApAQCAtMTQyLDcgKzE0
Miw3IEBACiAJICBuZXdfZnJlZV9zcGFjZS0+c3RhcnQ9c3RhcnQ7CiAJICBuZXdfZnJlZV9zcGFj
ZS0+ZW5kPWVuZDsKIAkgIG5ld19mcmVlX3NwYWNlLT5maWxlX3N0YXQ9TlVMTDsKLQkgIGxpc3Rf
YWRkX3RhaWwoJm5ld19mcmVlX3NwYWNlLT5saXN0LCAmbGlzdF9mcmVlX3NwYWNlLT5saXN0KTsK
KwkgIHRkX2xpc3RfYWRkX3RhaWwoJm5ld19mcmVlX3NwYWNlLT5saXN0LCAmbGlzdF9mcmVlX3Nw
YWNlLT5saXN0KTsKICNpZmRlZiBERUJVRwogCSAgbG9nX3RyYWNlKCI+JWx1LSVsdTxcbiIsc3Rh
cnQsZW5kKTsKICNlbmRpZgpAQCAtMTYxLDcgKzE2MSw3IEBACiAKIGludCBzZXNzaW9uX3NhdmUo
YWxsb2NfZGF0YV90ICpsaXN0X2ZyZWVfc3BhY2UsIGRpc2tfdCAqZGlza19jYXIsIGNvbnN0IHBh
cnRpdGlvbl90ICpwYXJ0aXRpb24sIGNvbnN0IGZpbGVfZW5hYmxlX3QgKmZpbGVzX2VuYWJsZSwg
Y29uc3QgdW5zaWduZWQgaW50IGJsb2Nrc2l6ZSwgY29uc3QgaW50IGRlYnVnKQogewotICBzdHJ1
Y3QgbGlzdF9oZWFkICpmcmVlX3dhbGtlciA9IE5VTEw7CisgIHN0cnVjdCB0ZF9saXN0X2hlYWQg
KmZyZWVfd2Fsa2VyID0gTlVMTDsKICAgRklMRSAqZl9zZXNzaW9uOwogICB1bnNpZ25lZCBpbnQg
aTsKICAgaWYoZGVidWc+MSkKQEAgLTE4MywxMCArMTgzLDEwIEBACiAgICAgfQogICB9CiAgIGZw
cmludGYoZl9zZXNzaW9uLCJzZWFyY2gsaW50ZXJcbiIpOwotICBsaXN0X2Zvcl9lYWNoKGZyZWVf
d2Fsa2VyLCAmbGlzdF9mcmVlX3NwYWNlLT5saXN0KQorICB0ZF9saXN0X2Zvcl9lYWNoKGZyZWVf
d2Fsa2VyLCAmbGlzdF9mcmVlX3NwYWNlLT5saXN0KQogICB7CiAgICAgYWxsb2NfZGF0YV90ICpj
dXJyZW50X2ZyZWVfc3BhY2U7Ci0gICAgY3VycmVudF9mcmVlX3NwYWNlPWxpc3RfZW50cnkoZnJl
ZV93YWxrZXIsIGFsbG9jX2RhdGFfdCwgbGlzdCk7CisgICAgY3VycmVudF9mcmVlX3NwYWNlPXRk
X2xpc3RfZW50cnkoZnJlZV93YWxrZXIsIGFsbG9jX2RhdGFfdCwgbGlzdCk7CiAgICAgZnByaW50
ZihmX3Nlc3Npb24sIiVsdS0lbHVcbiIsKGxvbmcgdW5zaWduZWQpKGN1cnJlbnRfZnJlZV9zcGFj
ZS0+c3RhcnQvZGlza19jYXItPnNlY3Rvcl9zaXplKSwKIAkobG9uZyB1bnNpZ25lZCkoY3VycmVu
dF9mcmVlX3NwYWNlLT5lbmQvZGlza19jYXItPnNlY3Rvcl9zaXplKSk7CiAgIH0K
</data>        

          </attachment>
    </bug>

</bugzilla>