<?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>167229</bug_id>
          
          <creation_ts>2007-02-16 16:55 0000</creation_ts>
          <short_desc>media-sound/lastfmplayer-1.1.3 not detecting soundcard</short_desc>
          <delta_ts>2007-03-20 21:50:41 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>2006.1</version>
          <rep_platform>AMD64</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>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>den_m@hotmail.ru</reporter>
          <assigned_to>genstef@gentoo.org</assigned_to>
          <cc>bfx81@yahoo.it</cc>
    
    <cc>davidgrant@gmail.com</cc>
    
    <cc>mail@kraymer.de</cc>
    
    <cc>matrixhax0r@gmail.com</cc>
    
    <cc>william@skellenger.net</cc>

      

      
          <long_desc isprivate="0">
            <who>den_m@hotmail.ru</who>
            <bug_when>2007-02-16 16:55:41 0000</bug_when>
            <thetext>media-sound/lastfmplayer-1.1.3 not detecting soundcard.

I have configured alsa soundcard hda-intel. Audacious, Psi, MPlayer, GNOME playing sounds very well, but when I push button &quot;Play&quot; in LastFMplayer it shows error &quot;No soundcard detected&quot;.
Also as in bug #149618 there is no any soundcard in &quot;Tools-&gt;Options-&gt;Radio-Soundcard&quot; and one system &quot;alsa&quot;.

I tried this application with alsa-driver and alsa kernel modules, result be the same.


Reproducible: Always




Portage 2.1.2-r9 (default-linux/amd64/2006.1, gcc-4.1.2, glibc-2.5-r0, 2.6.20-gentoo.nicevt.den_m x86_64)
=================================================================
System uname: 2.6.20-gentoo.nicevt.den_m x86_64 Intel(R) Pentium(R) D CPU 3.00GHz
Gentoo Base System version 1.12.9
Timestamp of tree: Fri, 16 Feb 2007 09:58:01 +0000
dev-java/java-config: 1.3.7, 2.0.31-r3
dev-lang/python:     2.4.4
dev-python/pycrypto: 2.0.1-r5
sys-apps/sandbox:    1.2.18.1
sys-devel/autoconf:  2.13, 2.61
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.17
sys-devel/gcc-config: 1.3.14
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.20
ACCEPT_KEYWORDS=&quot;amd64 ~amd64&quot;
AUTOCLEAN=&quot;yes&quot;
CBUILD=&quot;x86_64-pc-linux-gnu&quot;
CFLAGS=&quot;-march=nocona -O2 -pipe&quot;
CHOST=&quot;x86_64-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/X11/xkb /usr/share/config&quot;
CONFIG_PROTECT_MASK=&quot;/etc/env.d /etc/env.d/java/ /etc/gconf /etc/java-config/vms/ /etc/revdep-rebuild /etc/terminfo&quot;
CXXFLAGS=&quot;-march=nocona -O2 -pipe&quot;
DISTDIR=&quot;/usr/portage/distfiles&quot;
EMERGE_DEFAULT_OPTS=&quot;--quiet&quot;
FEATURES=&quot;autoconfig distlocks metadata-transfer parallel-fetch sandbox sfperms strict&quot;
GENTOO_MIRRORS=&quot;http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo&quot;
LANG=&quot;ru_RU.UTF-8&quot;
LC_ALL=&quot;en_US.UTF-8&quot;
LINGUAS=&quot;en ru&quot;
MAKEOPTS=&quot;-j3&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 --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages&quot;
PORTAGE_TMPDIR=&quot;/usr/src&quot;
PORTDIR=&quot;/usr/portage&quot;
SYNC=&quot;rsync://rsync.gentoo.org/gentoo-portage&quot;
USE=&quot;X a52 aac aalib acl acpi alsa amd64 ao audiofile bash-completion berkdb bidi bindist bitmap-fonts bonobo bzip2 cairo cddb cdparanoia cdr clamav cli cracklib crypt cups curl curlwrappers dbus dga dio directfb dlloader dri dts dv dvb dvd dvdr dvdread encode esd exif expat fbcon ffmpeg fftw firefox flac fortran gd gdbm gif gnome gpm graphviz gstreamer gtk gtk2 hal iconv imagemagick imlib ipv6 isdnlog jabber jack javascript jbig jpeg jpeg2k lcms libcaca libg++ libnotify libsamplerate lm_sensors mad matroska midi mikmod mime mng mp3 mpeg mplayer musepack ncurses nls nptl nptlonly offensive ogg openal opengl oss pam pcre pdf perl plotutils png portaudio posix ppds pppd python quicktime rdesktop readline reflection samba sdl session shorten sndfile sockets sound sox speex spell spl ssl startup-notification svg sysfs tcpd theora threads tiff truetype truetype-fonts type1-fonts unicode usb v4l v4l2 vcd vorbis wmf x264 xcomposite xine xinerama xml xorg xosd xpm xprint xscreensaver xv xvid zlib&quot; ALSA_CARDS=&quot;hda-intel&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; ELIBC=&quot;glibc&quot; INPUT_DEVICES=&quot;keyboard mouse evdev&quot; KERNEL=&quot;linux&quot; LCD_DEVICES=&quot;bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text&quot; LINGUAS=&quot;en ru&quot; USERLAND=&quot;GNU&quot; VIDEO_CARDS=&quot;fbdev i810 nv nvidia vga&quot;
Unset:  CTARGET, INSTALL_MASK, LDFLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>davidgrant@gmail.com</who>
            <bug_when>2007-02-20 22:32:36 0000</bug_when>
            <thetext>I&apos;ve got the same problem.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>bfx81@yahoo.it</who>
            <bug_when>2007-02-23 01:16:03 0000</bug_when>
            <thetext>even after starting with an empty configuration by root, no soundcard
I have an hda-intel
-----
Portage 2.1.2-r9 (default-linux/amd64/2006.1/desktop, gcc-4.1.1, glibc-2.5-r0, 2.6.19-gentoo-r5 x86_64)
=================================================================
System uname: 2.6.19-gentoo-r5 x86_64 AMD Athlon(tm) 64 Processor 3200+
Gentoo Base System release 1.12.9
Timestamp of tree: Thu, 22 Feb 2007 05:30:01 +0000
distcc[17254] (dcc_mkdir) ERROR: mkdir /var/tmp/portage/.distcc/state failed: No such file or directory [disabled]
dev-java/java-config: 1.3.7, 2.0.31
dev-lang/python:     2.4.3-r4
dev-python/pycrypto: 2.0.1-r5
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.61
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.16.1-r3
sys-devel/gcc-config: 1.3.14
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.17-r1
ACCEPT_KEYWORDS=&quot;amd64&quot;
AUTOCLEAN=&quot;yes&quot;
CBUILD=&quot;x86_64-pc-linux-gnu&quot;
CFLAGS=&quot;-march=k8 -O2 -mmmx -msse -msse2 -m3dnow -pipe -fomit-frame-pointer -ftracer -maccumulate-outgoing-args&quot;
CHOST=&quot;x86_64-pc-linux-gnu&quot;
CONFIG_PROTECT=&quot;/etc /opt/wildfire/resources/security/ /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config&quot;
CONFIG_PROTECT_MASK=&quot;/etc/env.d /etc/env.d/java/ /etc/gconf /etc/java-config/vms/ /etc/revdep-rebuild /etc/splash /etc/terminfo&quot;
CXXFLAGS=&quot;-march=k8 -O2 -mmmx -msse -msse2 -m3dnow -pipe -fomit-frame-pointer -ftracer -maccumulate-outgoing-args&quot;
DISTDIR=&quot;/var/tmp/distfiles&quot;
FEATURES=&quot;autoconfig distlocks metadata-transfer sandbox sfperms strict&quot;
GENTOO_MIRRORS=&quot;http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo&quot;
LANG=&quot;it_IT.UTF-8&quot;
LC_ALL=&quot;it_IT.UTF-8&quot;
LDFLAGS=&quot;-Wl,-O4&quot;
LINGUAS=&quot;it&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 --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages&quot;
PORTAGE_TMPDIR=&quot;/home/portage/tmp&quot;
PORTDIR=&quot;/usr/portage&quot;
PORTDIR_OVERLAY=&quot;/usr/local/portage /usr/local/overlays/sunrise /usr/local/overlays/enlightenment&quot;
SYNC=&quot;rsync://rsync.gentoo.org/gentoo-portage&quot;
USE=&quot;7zip X a52 aac acpi alsa amd64 amuled apache2 asf audacious avi bash-completion beagle berkdb bitmap-fonts browserplugin bzip2 cairo cddb cdparanoia cdr chm cli cracklib crypt cups curl dbus directfb dri dv dvd dvdr dvdread eds emboss encode esd ethereal exif expat fam fbcon fbsplash ffmpeg firefox flac gcj gd gdbm gif glut gnome gphoto2 gpm gstreamer gtk gtk2 gtkhtml hal iconv idn ieee1394 imagemagick innodb ipod ipv6 isdnlog java jpeg jpeg2k lcms ldap libg++ lirc lzo mad matroska midi mikmod mng mod modplug mono mozsvg mp3 mpeg musepack mysql mythtv ncurses nfs nls nptl nptlonly nsplugin nvidia objc odbc ogg oggvorbis openal openexr opengl pam pcre pdf perl png postgres ppds pppd python qt qt3 qt4 quicktime readline reflection samba scanner sdl seamonkey session skins sndfile speex spell spl sqlite sse3 ssl startup-notification stream streamout svg tcpd tga theora threads tiff truetype truetype-fonts type1-fonts unicode usb userlocales v4l vcd vorbis webservices wmf wxwindows xine xinerama xml xml2 xorg xosd xpm xv xvid xvmc zlib&quot; ALSA_CARDS=&quot;hda-intel&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; ELIBC=&quot;glibc&quot; INPUT_DEVICES=&quot;keyboard mouse evdev&quot; KERNEL=&quot;linux&quot; LCD_DEVICES=&quot;bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text&quot; LINGUAS=&quot;it&quot; USERLAND=&quot;GNU&quot; VIDEO_CARDS=&quot;nvidia&quot;
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, MAKEOPTS, PORTAGE_RSYNC_EXTRA_OPTS

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>william@skellenger.net</who>
            <bug_when>2007-03-08 02:53:02 0000</bug_when>
            <thetext>I&apos;ve got the same problem guys, and found that some people on the Last.FM forum are using OSS.  Here&apos;s why I love Gentoo:

ebuild /path/to/media-sound/lastfmplayer/lastfmplayer-1.1.3.ebuild fetch
ebuild /path/to/media-sound/lastfmplayer/lastfmplayer-1.1.3.ebuild unpack

Now move to:
/var/tmp/portage/lastfmplayer-1.1.3/work/last.fm-1.1.3/src/rtaudioplayback

And edit the file rtaudioplayback.cpp, at line 206:

        #ifdef Q_WS_X11
        //api = RtAudio::LINUX_ALSA;
        api = RtAudio::LINUX_OSS;
        #endif

Then:
ebuild /path/to/media-sound/lastfmplayer/lastfmplayer-1.1.3.ebuild compile
ebuild /path/to/media-sound/lastfmplayer/lastfmplayer-1.1.3.ebuild qmerge

I&apos;m listening to the Last.fm player right now.  :)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>william@skellenger.net</who>
            <bug_when>2007-03-10 20:25:47 0000</bug_when>
            <thetext>Oops, don&apos;t forgot the &quot;install&quot; step:

  ebuild /path/to/media-sound/lastfmplayer/lastfmplayer-1.1.3.ebuild compile
+ ebuild /path/to/media-sound/lastfmplayer/lastfmplayer-1.1.3.ebuild install
  ebuild /path/to/media-sound/lastfmplayer/lastfmplayer-1.1.3.ebuild qmerge

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>davidgrant@gmail.com</who>
            <bug_when>2007-03-11 00:28:18 0000</bug_when>
            <thetext>Created an attachment (id=112874)
lastfmplayer-1.1.3-OSS.patch

Patch to modify the source as Bill mentioned.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>davidgrant@gmail.com</who>
            <bug_when>2007-03-11 00:29:49 0000</bug_when>
            <thetext>Created an attachment (id=112875)
lastfmplayer-1.1.3-r1.ebuild

updated ebuild to apply the OSS patch.

Works, but wasn&apos;t much help for me as I wasn&apos;t able to start lastfm and have it work, unless I shut down all other sound-card-using programs first. It would be nice if it worked with ALSA.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>william@skellenger.net</who>
            <bug_when>2007-03-11 19:29:03 0000</bug_when>
            <thetext>
&gt; Works, but wasn&apos;t much help for me as I wasn&apos;t able to start lastfm and have it
&gt; work, unless I shut down all other sound-card-using programs first. It would be
&gt; nice if it worked with ALSA.

Agreed, this is the sentiment on the Last.fm forum as well.  A couple more points:

1.  When you close the lastfm player (after it was compiled to use OSS), make sure to also kill the tray icon that it creates.  You may find that it seems to still have some sort of lock on the audio device.  I did:

wskellenger@gladstone ~ $ ps -ae | grep last
 6359 ?        00:00:00 last.fm
 6361 ?        00:03:04 last.fm.app

And had to kill these processes manually, then I got control of the card back.

2.  Back to the ALSA issue: lastfm does a little bit of logging in /opt/lastfm, but you&apos;ll either have to change permissions for that directory or run lastfm from the console as root to see what&apos;s going on.

Check the playback.log file and see what kind of error message you get when compiled with ALSA support.  This is what I&apos;m getting:

070308 01:05:02 - 3072001712 - L1
  Initialising RtAudio failed. RtAudio error type: 7 Message: RtApi: unable to open specified device(s) with given stream parameters: 
    RtApiAlsa: error setting sample rate (44100) on device (hw:AudioPCI,0): Invalid argument.



</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>matrixhax0r@gmail.com</who>
            <bug_when>2007-03-12 10:31:40 0000</bug_when>
            <thetext>Hmm, that&apos;s weird. A lot of apps should not work or play correctly if your sound card doesn&apos;t support 44.1 KHz: Audios CD&apos;s and generally a lot of music files are 44.1 KHz. If that&apos;s the case, you should probably look into using the samplerate converter in alsa-plugins (USE=libsamplerate).</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>bfx81@yahoo.it</who>
            <bug_when>2007-03-19 01:01:48 0000</bug_when>
            <thetext>maybe can be useful to solve alsa issues... i&apos;m going to bed now, it&apos;s quite late here... somebody want make the first try? (take care, the alsa diff patch it&apos;s very invasive...)

night

http://mehercule.net/staticpages/index.php/lastfm</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>davidgrant@gmail.com</who>
            <bug_when>2007-03-19 04:01:38 0000</bug_when>
            <thetext>Here goes, I got the patch to apply and it is compiling right now. Just in case anyone else was starting on this...</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>davidgrant@gmail.com</who>
            <bug_when>2007-03-19 04:12:06 0000</bug_when>
            <thetext>Patch applied and works great. I tested it and ran it at the same time as amarok. Definitely using alsa and dmix. I would disagree that this patch is invasive. It only changes a few lines of code and adds the alsa stuff in a directory. Thanks fabio.

Here&apos;s the description of the alsa patch from mehercule.net: &quot;Linux only: Use a new alsaaudio plugin based on xmms. It supports ALSA&apos;s default device, plays nicely with dmix, does format, rate, and channel conversion, is easier to debug, and probably fixes the following bugs: #354405, #366977, #373239, #388064. It also makes a great espresso.&quot; (those are debian bugs by the way). The original patch failed because it assumed a translation patch had been applied first.

Too bad these patches aren&apos;t in upstream. Also too bad that there are so many patches. It&apos;s a bitch to maintain them. Better to use branches in svn. If people really want a lot of these patches in lastfm, then maybe I&apos;ll maintain a branch and track the vendor sources and then provide a master patch.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>davidgrant@gmail.com</who>
            <bug_when>2007-03-19 04:14:54 0000</bug_when>
            <thetext>Created an attachment (id=113753)
lastfmplayer-1.1.3-r2.ebuild

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>davidgrant@gmail.com</who>
            <bug_when>2007-03-19 04:16:05 0000</bug_when>
            <thetext>Created an attachment (id=113754)
13_alsa-r1.diff

Sorry for the bad name. I wanted to stay true to the original name so it&apos;s clear which patch it is but I added the -r1 to show that it was modified a bit.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>bfx81@yahoo.it</who>
            <bug_when>2007-03-19 15:22:56 0000</bug_when>
            <thetext>(In reply to comment #11)
&gt; Patch applied and works great. I tested it and ran it at the same time as
&gt; amarok. Definitely using alsa and dmix. I would disagree that this patch is
&gt; invasive. It only changes a few lines of code and adds the alsa stuff in a
&gt; directory. Thanks fabio.
&gt; 
Thanks to you for testing it!
It&apos;s really amazing wake up in the &quot;morning&quot; and see issues solved. Looking the patch now i&apos;m awake i agree with you about it&apos;s invasiveness. 
Really &quot;I LOVE THIS GAME!&quot;.

&gt; Too bad these patches aren&apos;t in upstream. Also too bad that there are so many
&gt; patches. It&apos;s a bitch to maintain them. Better to use branches in svn. If
&gt; people really want a lot of these patches in lastfm, then maybe I&apos;ll maintain a
&gt; branch and track the vendor sources and then provide a master patch.
&gt; 

I posted a comment on the official announce about merging the patch upstream (where is it?) ...keep hoping!

http://www.lastfm.fr/user/muesli/journal/2007/01/26/326678/</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>genstef@gentoo.org</who>
            <bug_when>2007-03-20 21:46:33 0000</bug_when>
            <thetext>*** Bug 171573 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>genstef@gentoo.org</who>
            <bug_when>2007-03-20 21:50:41 0000</bug_when>
            <thetext>thank you committed!</thetext>
          </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112874</attachid>
            <date>2007-03-11 00:28 0000</date>
            <desc>lastfmplayer-1.1.3-OSS.patch</desc>
            <filename>lastfmplayer-1.1.3-OSS.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtciAtdSBsYXN0LmZtLTEuMS4zLm9yaWcvc3JjL3J0YXVkaW9wbGF5YmFjay9ydGF1ZGlv
cGxheWJhY2suY3BwIGxhc3QuZm0tMS4xLjMvc3JjL3J0YXVkaW9wbGF5YmFjay9ydGF1ZGlvcGxh
eWJhY2suY3BwCi0tLSBsYXN0LmZtLTEuMS4zLm9yaWcvc3JjL3J0YXVkaW9wbGF5YmFjay9ydGF1
ZGlvcGxheWJhY2suY3BwCTIwMDctMDMtMTAgMTU6Mzk6MTUuMDAwMDAwMDAwIC0wODAwCisrKyBs
YXN0LmZtLTEuMS4zL3NyYy9ydGF1ZGlvcGxheWJhY2svcnRhdWRpb3BsYXliYWNrLmNwcAkyMDA3
LTAzLTEwIDE1OjQwOjI1LjAwMDAwMDAwMCAtMDgwMApAQCAtMjA0LDcgKzIwNCw4IEBACiAgICAg
ICAgIExPR0woIDMsICJDYXJkIElEICIgPDwgc2V0dGluZ3NTZXJ2aWNlKCktPnNvdW5kQ2FyZCgp
IDw8ICIgLSB0cmFuc2xhdGVkIHRvIGludGVybmFsIElEICIgPDwgY2FyZCApOwogCiAgICAgICAg
ICNpZmRlZiBRX1dTX1gxMQotICAgICAgICBhcGkgPSBSdEF1ZGlvOjpMSU5VWF9BTFNBOworICAg
ICAgICAvL2FwaSA9IFJ0QXVkaW86OkxJTlVYX0FMU0E7CisJYXBpID0gUnRBdWRpbzo6TElOVVhf
T1NTOwogICAgICAgICAjZW5kaWYKIAogICAgICAgICBSdEF1ZGlvRGV2aWNlSW5mbyBpbmZvID0g
bV9hdWRpby0+Z2V0RGV2aWNlSW5mbyggY2FyZCApOwo=
</data>        

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>112875</attachid>
            <date>2007-03-11 00:29 0000</date>
            <desc>lastfmplayer-1.1.3-r1.ebuild</desc>
            <filename>lastfmplayer-1.1.3-r1.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA3IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L21lZGlhLXNvdW5kL2xhc3RmbXBsYXllci9sYXN0
Zm1wbGF5ZXItMS4xLjMuZWJ1aWxkLHYgMS4yIDIwMDcvMDIvMTIgMTM6NTU6MzggYmx1YmIgRXhw
ICQKCmluaGVyaXQgZXV0aWxzIHZlcnNpb25hdG9yCgpERVNDUklQVElPTj0iVGhlIHBsYXllciBh
bGxvd3MgeW91IHRvIGxpc3RlbiB0byBsYXN0LmZtIHJhZGlvIHN0cmVhbXMiCkhPTUVQQUdFPSJo
dHRwOi8vd3d3Lmxhc3QuZm0vaGVscC9wbGF5ZXIiCk1ZX1A9IiR7UC9sYXN0Zm1wbGF5ZXIvbGFz
dC5mbX0iClNSQ19VUkk9Imh0dHA6Ly9zdGF0aWMubGFzdC5mbS9jbGllbnQvTGludXgvJHtNWV9Q
fS5zcmMudGFyLmJ6MiIKCkxJQ0VOU0U9IkdQTC0yIgpTTE9UPSIwIgpLRVlXT1JEUz0ifng4NiB+
YW1kNjQiCklVU0U9IiIKUkVTVFJJQ1Q9Im5vbWlycm9yIgpTPSIke1dPUktESVJ9LyR7TVlfUH0i
CgpERVBFTkQ9Ij49eDExLWxpYnMvcXQtNC4yCgltZWRpYS1saWJzL2Fsc2EtbGliIgoKc3JjX2Nv
bXBpbGUoKSB7CgkuL2NvbmZpZ3VyZQoJZW1ha2UgLWoxIHFtYWtlX2FsbCB8fCBkaWUgImVtYWtl
IHFtYWtlX2FsbCBmYWlsZWQiCgllcGF0Y2ggJHtGSUxFU0RJUn0vJHtQfS1waWMucGF0Y2gKCWVw
YXRjaCAke0ZJTEVTRElSfS8ke1B9LU9TUy5wYXRjaAoKCWVtYWtlIC1qMSB8fCBkaWUgImVtYWtl
IGZhaWxlZCIKfQoKc3JjX2luc3RhbGwoKSB7CgkjIERvY3MKCWRvZG9jIENoYW5nZUxvZyBSRUFE
TUUKCgkjIFRoZSByb290IGF0IHdoaWNoIHRoZSBwbGF5ZXIsIGRhdGEsIGFuZCBjYWNoZQoJIyBh
cmUgdG8gYmUgaW5zdGFsbGVkCglsb2NhbCBkZXN0aW5hdGlvbj0iL29wdC9sYXN0Zm0iCgljZCBi
aW4KCgkjIE1ha2UgJHtkZXN0aW5hdGlvbn0gd3JpdGFibGUgYnkgYXVkaW8gZ3JvdXAKCWRpcm9w
dHMgLW0wNzc1IC1nIGF1ZGlvCglkb2RpciAke2Rlc3RpbmF0aW9ufQoKCSMgSW5zdGFsbCB0aGUg
cGxheWVyCgljcCAtUiAqICR7RH0vJHtkZXN0aW5hdGlvbn0KCgkjIE1ha2UgYSBmb2xkZXIgc3Vj
aCB0aGF0IGFsYnVtIGFydCBjYWNoZSB3b3JrcwoJZGlyb3B0cyAtbTA3NzUgLWcgYXVkaW8KCWRv
ZGlyICR7ZGVzdGluYXRpb259L2NhY2hlCglrZWVwZGlyICR7ZGVzdGluYXRpb259L2NhY2hlCgoJ
IyBJY29uLCBtZW51LCBwcm90Y29sCgltYWtlX3dyYXBwZXIgbGFzdGZtIC4vbGFzdC5mbSAke2Rl
c3RpbmF0aW9ufSAke2Rlc3RpbmF0aW9ufQoJbmV3aWNvbiBkYXRhL2ljb25zL2FzLnBuZyBsYXN0
Zm0ucG5nCgltYWtlX2Rlc2t0b3BfZW50cnkgbGFzdGZtICJMYXN0LmZtIFBsYXllciIgbGFzdGZt
LnBuZwoKCWluc2ludG8gL3Vzci9zaGFyZS9zZXJ2aWNlcwoJZG9pbnMgJHtGSUxFU0RJUn0vbGFz
dGZtLnByb3RvY29sCn0KCnBrZ19wb3N0aW5zdCgpIHsKCWVpbmZvICJUbyB1c2UgdGhlIExhc3Qu
Zm0gcGxheWVyIHdpdGggYSBtb3ppbGxhIGJhc2VkIGJyb3dzZXI6IgoJZWluZm8gIiAxLiBHbyB0
byBhYm91dDpjb25maWcgaW4gdGhlIGJyb3dzZXIiCgllaW5mbyAiIDIuIFJpZ2h0LWNsaWNrIG9u
IHRoZSBwYWdlIgoJZWluZm8gIiAzLiBTZWxlY3QgTmV3IGFuZCB0aGVuIFN0cmluZyIKCWVpbmZv
ICIgNC4gRm9yIHRoZSBuYW1lOiBuZXR3b3JrLnByb3RvY29sLWhhbmRsZXIuYXBwLmxhc3RmbSIK
CWVpbmZvICIgNS4gRm9yIHRoZSB2YWx1ZTogL3Vzci9iaW4vbGFzdGZtIgoJZWluZm8KCWVpbmZv
ICJJZiB5b3UgZXhwZXJpYW5jZSBhd2t3YXJkIGZvbnRzIG9yIHdpZGdldHMsIHRyeSBydW5uaW5n
IHF0Y29uZmlnLiIKfQo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>113753</attachid>
            <date>2007-03-19 04:14 0000</date>
            <desc>lastfmplayer-1.1.3-r2.ebuild</desc>
            <filename>lastfmplayer-1.1.3-r2.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA3IEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgojICRIZWFk
ZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L21lZGlhLXNvdW5kL2xhc3RmbXBsYXllci9sYXN0
Zm1wbGF5ZXItMS4xLjMuZWJ1aWxkLHYgMS4yIDIwMDcvMDIvMTIgMTM6NTU6MzggYmx1YmIgRXhw
ICQKCmluaGVyaXQgZXV0aWxzIHZlcnNpb25hdG9yCgpERVNDUklQVElPTj0iVGhlIHBsYXllciBh
bGxvd3MgeW91IHRvIGxpc3RlbiB0byBsYXN0LmZtIHJhZGlvIHN0cmVhbXMiCkhPTUVQQUdFPSJo
dHRwOi8vd3d3Lmxhc3QuZm0vaGVscC9wbGF5ZXIiCk1ZX1A9IiR7UC9sYXN0Zm1wbGF5ZXIvbGFz
dC5mbX0iClNSQ19VUkk9Imh0dHA6Ly9zdGF0aWMubGFzdC5mbS9jbGllbnQvTGludXgvJHtNWV9Q
fS5zcmMudGFyLmJ6MiIKCkxJQ0VOU0U9IkdQTC0yIgpTTE9UPSIwIgpLRVlXT1JEUz0ifng4NiB+
YW1kNjQiCklVU0U9IiIKUkVTVFJJQ1Q9Im5vbWlycm9yIgpTPSIke1dPUktESVJ9LyR7TVlfUH0i
CgpERVBFTkQ9Ij49eDExLWxpYnMvcXQtNC4yCgltZWRpYS1saWJzL2Fsc2EtbGliIgoKc3JjX3Vu
cGFjaygpIHsKCXVucGFjayAke0F9CgllcGF0Y2ggJHtGSUxFU0RJUn0vMTNfYWxzYS1yMS5kaWZm
Cn0KCnNyY19jb21waWxlKCkgewoJLi9jb25maWd1cmUKCWVtYWtlIC1qMSBxbWFrZV9hbGwgfHwg
ZGllICJlbWFrZSBxbWFrZV9hbGwgZmFpbGVkIgoJZXBhdGNoICR7RklMRVNESVJ9LyR7UH0tcGlj
LnBhdGNoCgoJZW1ha2UgLWoxIHx8IGRpZSAiZW1ha2UgZmFpbGVkIgp9CgpzcmNfaW5zdGFsbCgp
IHsKCSMgRG9jcwoJZG9kb2MgQ2hhbmdlTG9nIFJFQURNRQoKCSMgVGhlIHJvb3QgYXQgd2hpY2gg
dGhlIHBsYXllciwgZGF0YSwgYW5kIGNhY2hlCgkjIGFyZSB0byBiZSBpbnN0YWxsZWQKCWxvY2Fs
IGRlc3RpbmF0aW9uPSIvb3B0L2xhc3RmbSIKCWNkIGJpbgoKCSMgTWFrZSAke2Rlc3RpbmF0aW9u
fSB3cml0YWJsZSBieSBhdWRpbyBncm91cAoJZGlyb3B0cyAtbTA3NzUgLWcgYXVkaW8KCWRvZGly
ICR7ZGVzdGluYXRpb259CgoJIyBJbnN0YWxsIHRoZSBwbGF5ZXIKCWNwIC1SICogJHtEfS8ke2Rl
c3RpbmF0aW9ufQoKCSMgTWFrZSBhIGZvbGRlciBzdWNoIHRoYXQgYWxidW0gYXJ0IGNhY2hlIHdv
cmtzCglkaXJvcHRzIC1tMDc3NSAtZyBhdWRpbwoJZG9kaXIgJHtkZXN0aW5hdGlvbn0vY2FjaGUK
CWtlZXBkaXIgJHtkZXN0aW5hdGlvbn0vY2FjaGUKCgkjIEljb24sIG1lbnUsIHByb3Rjb2wKCW1h
a2Vfd3JhcHBlciBsYXN0Zm0gLi9sYXN0LmZtICR7ZGVzdGluYXRpb259ICR7ZGVzdGluYXRpb259
CgluZXdpY29uIGRhdGEvaWNvbnMvYXMucG5nIGxhc3RmbS5wbmcKCW1ha2VfZGVza3RvcF9lbnRy
eSBsYXN0Zm0gIkxhc3QuZm0gUGxheWVyIiBsYXN0Zm0ucG5nCgoJaW5zaW50byAvdXNyL3NoYXJl
L3NlcnZpY2VzCglkb2lucyAke0ZJTEVTRElSfS9sYXN0Zm0ucHJvdG9jb2wKfQoKcGtnX3Bvc3Rp
bnN0KCkgewoJZWluZm8gIlRvIHVzZSB0aGUgTGFzdC5mbSBwbGF5ZXIgd2l0aCBhIG1vemlsbGEg
YmFzZWQgYnJvd3NlcjoiCgllaW5mbyAiIDEuIEdvIHRvIGFib3V0OmNvbmZpZyBpbiB0aGUgYnJv
d3NlciIKCWVpbmZvICIgMi4gUmlnaHQtY2xpY2sgb24gdGhlIHBhZ2UiCgllaW5mbyAiIDMuIFNl
bGVjdCBOZXcgYW5kIHRoZW4gU3RyaW5nIgoJZWluZm8gIiA0LiBGb3IgdGhlIG5hbWU6IG5ldHdv
cmsucHJvdG9jb2wtaGFuZGxlci5hcHAubGFzdGZtIgoJZWluZm8gIiA1LiBGb3IgdGhlIHZhbHVl
OiAvdXNyL2Jpbi9sYXN0Zm0iCgllaW5mbwoJZWluZm8gIklmIHlvdSBleHBlcmlhbmNlIGF3a3dh
cmQgZm9udHMgb3Igd2lkZ2V0cywgdHJ5IHJ1bm5pbmcgcXRjb25maWcuIgp9Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113754</attachid>
            <date>2007-03-19 04:16 0000</date>
            <desc>13_alsa-r1.diff</desc>
            <filename>13_alsa-r1.diff</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtdXJOIGxhc3QuZm0tMS4xLjMub3JpZy9MYXN0Rk0ucHJvIGxhc3QuZm0tMS4xLjMvTGFz
dEZNLnBybwotLS0gbGFzdC5mbS0xLjEuMy5vcmlnL0xhc3RGTS5wcm8JMjAwNy0wMy0xOCAyMDo1
NzoyMy4wMDAwMDAwMDAgLTA3MDAKKysrIGxhc3QuZm0tMS4xLjMvTGFzdEZNLnBybwkyMDA3LTAz
LTE4IDIwOjU5OjM2LjAwMDAwMDAwMCAtMDcwMApAQCAtNSw4ICs1LDE5IEBACiAgICAgICAgICAg
IHNyYy93ZWJzZXJ2aWNlLyBzcmMvc2V0dGluZ3NzZXJ2aWNlLyBcCiAgICAgICAgICAgIHNyYy9o
dHRwaW5wdXQvIFwKICAgICAgICAgICAgc3JjL21wM3RyYW5zY29kZS8gXAotICAgICAgICAgICBz
cmMvcnRhdWRpb3BsYXliYWNrLyBcCiAgICAgICAgICAgIHNyYy9tZXRhZGF0YWV4dGVuc2lvbi8g
c3JjL3NpZGViYXJleHRlbnNpb24vIHNyYy9zZWFyY2hleHRlbnNpb24vIHNyYy91c2VyaW5mb2V4
dGVuc2lvbi8gXAogICAgICAgICAgICBzcmMvbWVkaWFkZXZpY2VzL2l0dW5lcy8KIAogVFJBTlNM
QVRJT05TID0gaTE4bi9sYXN0Zm1fanBfSlAudHMKKword2luMzIgeworICAgIFNVQkRJUlMgKz0g
c3JjL3J0YXVkaW9wbGF5YmFjay8KK30KKwordW5peDohbGludXgtZysrIHsKKyAgICBTVUJESVJT
ICs9IHNyYy9ydGF1ZGlvcGxheWJhY2svCit9CisKK3VuaXg6bGludXgtZysrIHsKKyAgICBTVUJE
SVJTICs9IHNyYy9hbHNhcGxheWJhY2svCit9CmRpZmYgLXVyTiBsYXN0LmZtLTEuMS4zLm9yaWcv
c3JjL2Fsc2FwbGF5YmFjay9hbHNhYXVkaW8uY3BwIGxhc3QuZm0tMS4xLjMvc3JjL2Fsc2FwbGF5
YmFjay9hbHNhYXVkaW8uY3BwCi0tLSBsYXN0LmZtLTEuMS4zLm9yaWcvc3JjL2Fsc2FwbGF5YmFj
ay9hbHNhYXVkaW8uY3BwCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyBs
YXN0LmZtLTEuMS4zL3NyYy9hbHNhcGxheWJhY2svYWxzYWF1ZGlvLmNwcAkyMDA3LTAzLTE4IDIw
OjU3OjI4LjAwMDAwMDAwMCAtMDcwMApAQCAtMCwwICsxLDg1MSBAQAorLyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgorICogICBDb3B5cmlnaHQgKEMpIDIwMDcgYnkgSm9obiBTdGFtcCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBqc3RhbXBAdXNlcnMuc291cmNlZm9yZ2Uu
bmV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKgorICogICBMYXJnZSBwb3J0aW9ucyBvZiB0aGlzIGNvZGUgYXJlIHNoYW1lbGVz
c2x5IGNvcGllZCBmcm9tIGF1ZGlvLmM6ICAgICAgKgorICogICBUaGUgWE1NUyBBTFNBIG91dHB1
dCBwbHVnaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICog
ICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMyBNYXR0aGlldSBTb3plYXUgPG1hdHRhbUBhbHRlcm4u
b3JnPiAgICAgICAgICAgKgorICogICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMyAgUGV0ZXIgQWxt
LCBNaWthZWwgQWxtLCBPbGxlIEhhbGxuYXMsICAgICAgICAgKgorICogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGhvbWFzIE5pbHNzb24gYW5kIDRGcm9udCBUZWNobm9sb2dpZXMgICAgICAg
KgorICogICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNiAgSGFhdmFyZCBLdmFhbGVuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKgorICogICBDb3B5cmlnaHQgKEMpIDIwMDUgICAgICAgVGFr
YXNoaSBJd2FpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKgorICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgKgorICogICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSAgKgorICogICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAgICAgKgorICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgor
ICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwgICAgICAgKgorICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgKgorICogICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlICAgICAg
ICAgKgorICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSAgICAgKgorICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICog
ICA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVT
QS4gICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNpbmNsdWRlICJhbHNhYXVk
aW8uaCIKKyNpbmNsdWRlICJMb3FxZXIuaCIKKyNpbmNsdWRlIDxxZW5kaWFuLmg+CisKKyNpbmNs
dWRlIDxRRGVidWc+CisKKyNkZWZpbmUgTUlOKCBhLCBiICkgICggKCAoIGEgKSA8ICggYiApICkg
PyAoIGEgKSA6ICggYiApICkKKyNkZWZpbmUgTUFYX0JVRkZFUl9TSVpFIDUKKworUU11dGV4IEFs
c2FBdWRpbzo6bXV0ZXg7CitwdGhyZWFkX3QgQWxzYUF1ZGlvOjphdWRpb190aHJlYWQ7CisKK1FC
eXRlQXJyYXkgQWxzYUF1ZGlvOjphdWRpb0RhdGE7CitzbmRfb3V0cHV0X3QqIEFsc2FBdWRpbzo6
bG9ncyA9IE5VTEw7Citib29sIEFsc2FBdWRpbzo6Z29pbmcgPSBmYWxzZTsKK3NuZF9wY21fdCAq
QWxzYUF1ZGlvOjphbHNhX3BjbSA9IE5VTEw7CisKK2ludCBBbHNhQXVkaW86Omh3X3BlcmlvZF9z
aXplX2luID0gMDsKK3NuZF9mb3JtYXQqIEFsc2FBdWRpbzo6aW5wdXRmID0gTlVMTDsKK3NuZF9m
b3JtYXQqIEFsc2FBdWRpbzo6b3V0cHV0ZiA9IE5VTEw7CitmbG9hdCBBbHNhQXVkaW86OnZvbHVt
ZSA9IDEuMDsKKworY29udmVydF9mdW5jX3QgICAgICAgICBBbHNhQXVkaW86OmFsc2FfY29udmVy
dF9mdW5jID0gTlVMTDsKK2NvbnZlcnRfY2hhbm5lbF9mdW5jX3QgQWxzYUF1ZGlvOjphbHNhX3N0
ZXJlb19jb252ZXJ0X2Z1bmMgPU5VTEw7Citjb252ZXJ0X2ZyZXFfZnVuY190ICAgIEFsc2FBdWRp
bzo6YWxzYV9mcmVxdWVuY3lfY29udmVydF9mdW5jID1OVUxMOworeG1tc19jb252ZXJ0X2J1ZmZl
cnMgICAqQWxzYUF1ZGlvOjpjb252ZXJ0YiA9IE5VTEw7Citib29sIEFsc2FBdWRpbzo6dXNlX21t
YXAgPSBmYWxzZTsKKworCitBbHNhQXVkaW86OkFsc2FBdWRpbygpCit7CisgICAgbWF4QnVmZmVy
U2l6ZSA9IDA7Cit9CisKKworQWxzYUF1ZGlvOjp+QWxzYUF1ZGlvKCkKK3sKK30KKworCisvKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCisgICAgRGV2aWNlIERldGVjdGlvbgorKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqLworCitpbnQgQWxzYUF1ZGlvOjpnZXRDYXJkcyggdm9pZCApCit7CisgICAgaW50IGNh
cmQgPSAtMTsKKyAgICBpbnQgZXJyID0gMDsKKyAgICBfZGV2aWNlcy5jbGVhcigpOworCisgICAg
aWYgKCAoIGVyciA9IHNuZF9jYXJkX25leHQoICZjYXJkICkgKSAhPSAwICkKKyAgICB7CisgICAg
ICAgIExPR0woIDEsICJBbHNhQXVkaW86OmdldENhcmRzKCkgZmFpbGVkOiAiIDw8IHNuZF9zdHJl
cnJvciggLWVyciApICk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB3aGlsZSAo
IGNhcmQgPiAtMSApCisgICAgeworICAgICAgICBnZXREZXZpY2VzRm9yQ2FyZCggY2FyZCApOwor
ICAgICAgICBpZiAoICggZXJyID0gc25kX2NhcmRfbmV4dCggJmNhcmQgKSApICE9IDAgKQorICAg
ICAgICB7CisgICAgICAgICAgICBMT0dMKCAxLCAiQWxzYUF1ZGlvOjpnZXRDYXJkcygpIGZhaWxl
ZDogIiA8PCBzbmRfc3RyZXJyb3IoIC1lcnIgKSApOworICAgICAgICAgICAgcmV0dXJuIC0xOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBfZGV2aWNlcy5zaXplKCk7Cit9CisKKwordm9p
ZCBBbHNhQXVkaW86OmdldERldmljZXNGb3JDYXJkKCBpbnQgY2FyZCApCit7CisgICAgaW50IHBj
bV9kZXZpY2UgPSAtMSwgZXJyOworICAgIHNuZF9wY21faW5mb190ICpwY21faW5mbzsKKyAgICBz
bmRfY3RsX3QgKmN0bDsKKyAgICBjaGFyIGRldk5hbWVbNjRdLCAqY2FyZF9uYW1lOworCisgICAg
c3ByaW50ZiggZGV2TmFtZSwgImh3OiVpIiwgY2FyZCApOworCisgICAgaWYgKCAoIGVyciA9IHNu
ZF9jdGxfb3BlbiggJmN0bCwgZGV2TmFtZSwgMCApICkgPCAwICkKKyAgICB7CisgICAgICAgIExP
R0woIDEsICJBbHNhQXVkaW86OmdldERldmljZXNGb3JDYXJkKCkgZmFpbGVkOiAiIDw8IHNuZF9z
dHJlcnJvciggLWVyciApICk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoICgg
ZXJyID0gc25kX2NhcmRfZ2V0X25hbWUoIGNhcmQsICZjYXJkX25hbWUgKSApICE9IDAgKQorICAg
IHsKKyAgICAgICAgTE9HTCggMSwgIkFsc2FBdWRpbzo6Z2V0RGV2aWNlc0ZvckNhcmQoKSBmYWls
ZWQ6ICIgPDwgc25kX3N0cmVycm9yKCAtZXJyICkgKTsKKyAgICAgICAgY2FyZF9uYW1lID0gIlVu
a25vd24gc291bmRjYXJkIjsKKyAgICB9CisKKyAgICAvLyBFYWNoIGNhcmQgaGFzIGl0cyBvd24g
ZGVmYXVsdCBkZXZpY2UKKyAgICAvLyBCdXQgdGVzdCwganVzdCB0byBiZSBzdXJlIGl0J3MgdGhl
cmUKKyAgICBBbHNhRGV2aWNlSW5mbyBkZXY7CisgICAgZGV2Lm5hbWUgPSBRU3RyaW5nKCAiJTE6
IERlZmF1bHQgRGV2aWNlIChkZWZhdWx0OiUyKSIgKS5hcmcoIGNhcmRfbmFtZSApLmFyZyggY2Fy
ZCApOworICAgIGRldi5kZXZpY2UgPSBRU3RyaW5nKCAiZGVmYXVsdDolMSIgKS5hcmcoIGNhcmQg
KTsKKyAgICBzbmRfcGNtX3QgKnRlc3RfcGNtOworICAgIGVyciA9IHNuZF9wY21fb3BlbiggJnRl
c3RfcGNtLCBkZXYuZGV2aWNlLnRvU3RkU3RyaW5nKCkuY19zdHIoKSwgU05EX1BDTV9TVFJFQU1f
UExBWUJBQ0ssIFNORF9QQ01fTk9OQkxPQ0sgKTsKKyAgICBpZiAoIGVyciA+PSAwICkKKyAgICAg
ICAgc25kX3BjbV9jbG9zZSggdGVzdF9wY20gKTsKKyAgICBpZiAoIGVyciA9PSAwIHx8IGVyciA9
PSAtRUJVU1kgKQorICAgICAgICBfZGV2aWNlcy5wdXNoX2JhY2soIGRldiApOworCisgICAgc25k
X3BjbV9pbmZvX2FsbG9jYSggJnBjbV9pbmZvICk7CisKKyAgICBmb3IgKCA7OyApCisgICAgewor
ICAgICAgICBjaGFyIGRldmljZVs2NF0sIGRlc2NyWzEyOF07CisgICAgICAgIGlmICggKCBlcnIg
PSBzbmRfY3RsX3BjbV9uZXh0X2RldmljZSggY3RsLCAmcGNtX2RldmljZSApICkgPCAwICkKKyAg
ICAgICAgeworICAgICAgICAgICAgTE9HTCggMSwgIkFsc2FBdWRpbzo6Z2V0RGV2aWNlc0ZvckNh
cmQoKSBmYWlsZWQ6ICIgPDwgc25kX3N0cmVycm9yKCAtZXJyICkgKTsKKyAgICAgICAgICAgIHBj
bV9kZXZpY2UgPSAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIHBjbV9kZXZpY2UgPCAwICkK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHNuZF9wY21faW5mb19zZXRfZGV2aWNlKCBw
Y21faW5mbywgcGNtX2RldmljZSApOworICAgICAgICBzbmRfcGNtX2luZm9fc2V0X3N1YmRldmlj
ZSggcGNtX2luZm8sIDAgKTsKKyAgICAgICAgc25kX3BjbV9pbmZvX3NldF9zdHJlYW0oIHBjbV9p
bmZvLCBTTkRfUENNX1NUUkVBTV9QTEFZQkFDSyApOworCisgICAgICAgIGlmICggKCBlcnIgPSBz
bmRfY3RsX3BjbV9pbmZvKCBjdGwsIHBjbV9pbmZvICkgKSA8IDAgKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIGVyciAhPSAtRU5PRU5UICkKKyAgICAgICAgICAgICAgICBMT0dMKCAxLCAi
QWxzYUF1ZGlvOjpnZXREZXZpY2VzRm9yQ2FyZDogc25kX2N0bF9wY21faW5mbygpIGZhaWxlZCAo
IgorICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGNhcmQgPDwgIjoiIDw8IHBjbV9kZXZpY2Ug
PDwgIik6ICIgPDwgc25kX3N0cmVycm9yKCAtZXJyICkgKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKKyAgICAgICAgc3ByaW50ZiggZGV2aWNlLCAiaHc6JWQsJWQiLCBjYXJk
LCBwY21fZGV2aWNlICk7CisgICAgICAgIHNwcmludGYoIGRlc2NyLCAiJXM6ICVzICglcykiLCBj
YXJkX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmRfcGNt
X2luZm9fZ2V0X25hbWUoIHBjbV9pbmZvICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2UgKTsKKyAgICAgICAgZGV2Lm5hbWUgPSBkZXNjcjsKKyAgICAgICAg
ZGV2LmRldmljZSA9IGRldmljZTsKKyAgICAgICAgX2RldmljZXMucHVzaF9iYWNrKCBkZXYgKTsK
KyAgICB9CisKKyAgICBzbmRfY3RsX2Nsb3NlKCBjdGwgKTsKK30KKworCitBbHNhRGV2aWNlSW5m
byBBbHNhQXVkaW86OmdldERldmljZUluZm8oIGludCBkZXZpY2UgKQoreworICAgIHJldHVybiBf
ZGV2aWNlc1tkZXZpY2VdOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICBEZXZp
Y2UgU2V0dXAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworYm9vbCBBbHNhQXVkaW86OmFsc2FT
ZXR1cCggUVN0cmluZyBkZXZpY2UsIHNuZF9wY21fdWZyYW1lc190IHBlcmlvZFNpemUsIHVpbnQg
cGVyaW9kQ291bnQsIHNuZF9mb3JtYXQgKmYgKQoreworICAgIGludCBlcnIsIGh3X3BlcmlvZF9z
aXplOworICAgIHNuZF9wY21faHdfcGFyYW1zX3QgKmh3cGFyYW1zOworICAgIHNuZF9wY21fc3df
cGFyYW1zX3QgKnN3cGFyYW1zOworICAgIHNuZF9wY21fdWZyYW1lc190IGFsc2FfYnVmZmVyX3Np
emUsIGFsc2FfcGVyaW9kX3NpemU7CisgICAgc25kX3BjbV9hY2Nlc3NfbWFza190ICptYXNrOwor
CisjaWZuZGVmIFFUX05PX0RFQlVHCisgICAgcURlYnVnKCkgPDwgIkFsc2FBdWRpbzo6YWxzYVNl
dHVwKCkiOworICAgIHNuZF9vdXRwdXRfc3RkaW9fYXR0YWNoKCAmbG9ncywgc3RkZXJyLCAwICk7
CisjZW5kaWYKKworICAgIGFsc2FfY29udmVydF9mdW5jID0gTlVMTDsKKyAgICBhbHNhX3N0ZXJl
b19jb252ZXJ0X2Z1bmMgPSBOVUxMOworICAgIGFsc2FfZnJlcXVlbmN5X2NvbnZlcnRfZnVuYyA9
IE5VTEw7CisKKyAgICBmcmVlKCBvdXRwdXRmICk7CisgICAgb3V0cHV0ZiA9IHNuZF9mb3JtYXRf
ZnJvbV94bW1zKCBmLT54bW1zX2Zvcm1hdCwgZi0+cmF0ZSwgZi0+Y2hhbm5lbHMgKTsKKworI2lm
bmRlZiBRVF9OT19ERUJVRworICAgIHFEZWJ1ZygpIDw8ICJPcGVuaW5nIGRldmljZToiIDw8IGRl
dmljZTsKKyNlbmRpZgorICAgIC8vIEZJWE1FOiBDYW4gc25kX3BjbV9vcGVuKCkgcmV0dXJuIEVB
R0FJTj8KKyAgICBpZiAoICggZXJyID0gc25kX3BjbV9vcGVuKCAmYWxzYV9wY20sIGRldmljZS50
b1N0ZFN0cmluZygpLmNfc3RyKCksCisgICAgICAgICAgICAgICAgIFNORF9QQ01fU1RSRUFNX1BM
QVlCQUNLLAorICAgICAgICAgICAgICAgICBTTkRfUENNX05PTkJMT0NLICkgKSA8IDAgKQorICAg
IHsKKyAgICAgICAgTE9HTCggMSwgIkFsc2FBdWRpbzo6YWxzYVNldHVwKCk6IEZhaWxlZCB0byBv
cGVuIHBjbSBkZXZpY2UgKCIgPDwgZGV2aWNlIDw8ICIpOiAiIDw8IHNuZF9zdHJlcnJvciggLWVy
ciApICk7CisgICAgICAgIGFsc2FfcGNtID0gTlVMTDsKKyAgICAgICAgZnJlZSggb3V0cHV0ZiAp
OworICAgICAgICBvdXRwdXRmID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworI2lmbmRlZiBRVF9OT19ERUJVRworICAgIHNuZF9wY21faW5mb190ICppbmZvOworICAgIGlu
dCBhbHNhX2NhcmQsIGFsc2FfZGV2aWNlLCBhbHNhX3N1YmRldmljZTsKKworICAgIHNuZF9wY21f
aW5mb19hbGxvY2EoICZpbmZvICk7CisgICAgc25kX3BjbV9pbmZvKCBhbHNhX3BjbSwgaW5mbyAp
OworICAgIGFsc2FfY2FyZCA9IHNuZF9wY21faW5mb19nZXRfY2FyZCggaW5mbyApOworICAgIGFs
c2FfZGV2aWNlID0gc25kX3BjbV9pbmZvX2dldF9kZXZpY2UoIGluZm8gKTsKKyAgICBhbHNhX3N1
YmRldmljZSA9IHNuZF9wY21faW5mb19nZXRfc3ViZGV2aWNlKCBpbmZvICk7CisgICAgcURlYnVn
KCkgPDwgIkNhcmQ6IiA8PCBhbHNhX2NhcmQgPDwgIkRldmljZToiIDw8IGFsc2FfZGV2aWNlIDw8
ICJTdWJkZXZpY2U6IiA8PCBhbHNhX3N1YmRldmljZTsKKyNlbmRpZgorCisgICAgc25kX3BjbV9o
d19wYXJhbXNfYWxsb2NhKCAmaHdwYXJhbXMgKTsKKworICAgIGlmICggKCBlcnIgPSBzbmRfcGNt
X2h3X3BhcmFtc19hbnkoIGFsc2FfcGNtLCBod3BhcmFtcyApICkgPCAwICkKKyAgICB7CisgICAg
ICAgIExPR0woIDEsICJBbHNhQXVkaW86OmFsc2FTZXR1cCgpOiBObyBjb25maWd1cmF0aW9uIGF2
YWlsYWJsZSBmb3IgcGxheWJhY2s6ICIgPDwgc25kX3N0cmVycm9yKCAtZXJyICkgKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEZpcnN0IHRyeSB0byBzZXQgdXAgbW1h
cHBlZCBhY2Nlc3MKKyAgICBtYXNrID0gKHNuZF9wY21fYWNjZXNzX21hc2tfdCopYWxsb2NhKHNu
ZF9wY21fYWNjZXNzX21hc2tfc2l6ZW9mKCkpOworICAgIHNuZF9wY21fYWNjZXNzX21hc2tfbm9u
ZShtYXNrKTsKKyAgICBzbmRfcGNtX2FjY2Vzc19tYXNrX3NldChtYXNrLCBTTkRfUENNX0FDQ0VT
U19NTUFQX0lOVEVSTEVBVkVEKTsKKyAgICBzbmRfcGNtX2FjY2Vzc19tYXNrX3NldChtYXNrLCBT
TkRfUENNX0FDQ0VTU19NTUFQX05PTklOVEVSTEVBVkVEKTsKKyAgICBzbmRfcGNtX2FjY2Vzc19t
YXNrX3NldChtYXNrLCBTTkRfUENNX0FDQ0VTU19NTUFQX0NPTVBMRVgpOworCisjaWZuZGVmIFFU
X05PX0RFQlVHCisgICAgcURlYnVnKCkgPDwgIlRyeWluZyB0byBzZXQgbW1hcHBlZCB3cml0ZSBt
b2RlIjsKKyNlbmRpZgorICAgIGlmICggKCBlcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19zZXRfYWNj
ZXNzX21hc2soIGFsc2FfcGNtLCBod3BhcmFtcywgbWFzayApICkgPCAwICkKKyAgICB7CisgICAg
ICAgIHVzZV9tbWFwID0gZmFsc2U7CisjaWZuZGVmIFFUX05PX0RFQlVHCisgICAgICAgIHFEZWJ1
ZygpIDw8ICJTZXR0aW5nIG1tYXBwZWQgd3JpdGUgbW9kZSBmYWlsZWQ6ICIgPDwgc25kX3N0cmVy
cm9yKCAtZXJyICkgPDwgIlxuIFRyeWluZyBub3JtYWwgd3JpdGUgbW9kZSI7CisjZW5kaWYKKyAg
ICAgICAgaWYgKCAoIGVyciA9IHNuZF9wY21faHdfcGFyYW1zX3NldF9hY2Nlc3MoIGFsc2FfcGNt
LCBod3BhcmFtcywKKyAgICAgICAgICAgICAgIFNORF9QQ01fQUNDRVNTX1JXX0lOVEVSTEVBVkVE
ICkgKSA8IDAgKQorICAgICAgICB7CisgICAgICAgICAgICBMT0dMKCAxLCAiQWxzYUF1ZGlvOjph
bHNhU2V0dXAoKTogQ2Fubm90IHNldCBub3JtYWwgd3JpdGUgbW9kZTogIiA8PCBzbmRfc3RyZXJy
b3IoIC1lcnIgKSApOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorICAgIGVsc2UKKyAgICAgICAgdXNlX21tYXAgPSB0cnVlOworCisgICAgaWYgKCAoIGVyciA9
IHNuZF9wY21faHdfcGFyYW1zX3NldF9mb3JtYXQoIGFsc2FfcGNtLCBod3BhcmFtcywgb3V0cHV0
Zi0+Zm9ybWF0ICkgKSA8IDAgKQorICAgIHsKKyAgICAgICAgLy9UcnkgaWYgb25lIG9mIHRoZXNl
IGZvcm1hdCB3b3JrIChvbmUgb2YgdGhlbSBzaG91bGQgd29yaworICAgICAgICAvL29uIGFsbW9z
dCBhbGwgc291bmRjYXJkcykKKworICAgICAgICBzbmRfcGNtX2Zvcm1hdF90IGZvcm1hdHNbXSA9
IHsgU05EX1BDTV9GT1JNQVRfUzE2X0xFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU05EX1BDTV9GT1JNQVRfUzE2X0JFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU05EX1BDTV9GT1JNQVRfVTgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICB1aW50IGk7CisKKyAgICAgICAgZm9yICggaSA9IDA7
IGkgPCBzaXplb2YoIGZvcm1hdHMgKSAvIHNpemVvZiggZm9ybWF0c1swXSApOyBpKysgKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIHNuZF9wY21faHdfcGFyYW1zX3NldF9mb3JtYXQoIGFs
c2FfcGNtLCBod3BhcmFtcywgZm9ybWF0c1tpXSApID09IDAgKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG91dHB1dGYtPmZvcm1hdCA9IGZvcm1hdHNbaV07CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCBvdXRwdXRm
LT5mb3JtYXQgIT0gZi0+Zm9ybWF0ICkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0cHV0Zi0+
eG1tc19mb3JtYXQgPSAoQUZvcm1hdClmb3JtYXRfZnJvbV9hbHNhKCBvdXRwdXRmLT5mb3JtYXQg
KTsKKyNpZm5kZWYgUVRfTk9fREVCVUcKKyAgICAgICAgICAgIHFEZWJ1ZygpIDw8ICJDb252ZXJ0
aW5nIGZvcm1hdCBmcm9tIiA8PCBmLT54bW1zX2Zvcm1hdCA8PCAidG8iIDw8IG91dHB1dGYtPnht
bXNfZm9ybWF0OworI2VuZGlmCisgICAgICAgICAgICBpZiAoIG91dHB1dGYtPnhtbXNfZm9ybWF0
IDwgMCApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgYWxzYV9jb252
ZXJ0X2Z1bmMgPSB4bW1zX2NvbnZlcnRfZ2V0X2Z1bmMoIG91dHB1dGYtPnhtbXNfZm9ybWF0LCBm
LT54bW1zX2Zvcm1hdCApOworICAgICAgICAgICAgaWYgKCBhbHNhX2NvbnZlcnRfZnVuYyA9PSBO
VUxMICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMT0dMKCAxLCAiRm9ybWF0IHRy
YW5zbGF0aW9uIG5lZWRlZCwgYnV0IG5vdCBhdmFpbGFibGUuICBJbnB1dDogIiA8PCBmLT54bW1z
X2Zvcm1hdCA8PCAiOyBPdXRwdXQ6ICIgPDwgb3V0cHV0Zi0+eG1tc19mb3JtYXQgKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBMT0dMKCAxLCAiQWxzYUF1ZGlvOjphbHNh
U2V0dXAoKTogU2FtcGxlIGZvcm1hdCBub3QgYXZhaWxhYmxlIGZvciBwbGF5YmFjazogIiA8PCBz
bmRfc3RyZXJyb3IoIC1lcnIgKSApOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCisgICAgc25kX3BjbV9od19wYXJhbXNfc2V0X2NoYW5uZWxzX25lYXIoIGFs
c2FfcGNtLCBod3BhcmFtcywgJm91dHB1dGYtPmNoYW5uZWxzICk7CisgICAgaWYgKCBvdXRwdXRm
LT5jaGFubmVscyAhPSBmLT5jaGFubmVscyApCisgICAgeworI2lmbmRlZiBRVF9OT19ERUJVRwor
ICAgICAgICBxRGVidWcoKSA8PCAiQ29udmVydGluZyBjaGFubmVscyBmcm9tIiA8PCBmLT5jaGFu
bmVscyA8PCAidG8iIDw8IG91dHB1dGYtPmNoYW5uZWxzOworI2VuZGlmCisgICAgICAgIGFsc2Ff
c3RlcmVvX2NvbnZlcnRfZnVuYyA9CisgICAgICAgICAgICAgICAgeG1tc19jb252ZXJ0X2dldF9j
aGFubmVsX2Z1bmMoIG91dHB1dGYtPnhtbXNfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRmLT5jaGFubmVscywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Y2hhbm5lbHMgKTsKKyAgICAg
ICAgaWYgKCBhbHNhX3N0ZXJlb19jb252ZXJ0X2Z1bmMgPT0gTlVMTCApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIExPR0woIDEsICJObyBzdGVyZW8gY29udmVyc2lvbiBhdmFpbGFibGUuICBGb3Jt
YXQ6ICIgPDwgb3V0cHV0Zi0+eG1tc19mb3JtYXQgPDwgIjsgSW5wdXQgQ2hhbm5lbHM6ICIgPDwg
Zi0+Y2hhbm5lbHMgPDwgIjsgT3V0cHV0IENoYW5uZWxzOiAiIDw8IG91dHB1dGYtPmNoYW5uZWxz
ICk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBz
bmRfcGNtX2h3X3BhcmFtc19zZXRfcmF0ZV9uZWFyKCBhbHNhX3BjbSwgaHdwYXJhbXMsICZvdXRw
dXRmLT5yYXRlLCAwICk7CisgICAgaWYgKCBvdXRwdXRmLT5yYXRlID09IDAgKQorICAgIHsKKyAg
ICAgICAgTE9HTCggMSwgIkFsc2FBdWRpbzo6YWxzYVNldHVwOiBObyB1c2FibGUgc2FtcGxlcmF0
ZSBhdmFpbGFibGUuIiApOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICgg
b3V0cHV0Zi0+cmF0ZSAhPSBmLT5yYXRlICkKKyAgICB7CisgICAgICAgIExPR0woIDMsICJDb252
ZXJ0aW5nIHNhbXBsZXJhdGUgZnJvbSAiIDw8IGYtPnJhdGUgPDwgIiAgdG8gIiA8PCBvdXRwdXRm
LT5yYXRlICk7CisgICAgICAgIGlmICggb3V0cHV0Zi0+Y2hhbm5lbHMgPCAxIHx8IG91dHB1dGYt
PmNoYW5uZWxzID4gMiApCisgICAgICAgIHsKKyAgICAgICAgICAgIExPR0woIDEsICJVbnN1cHBv
cnRlZCBudW1iZXIgb2YgY2hhbm5lbHM6ICIgPDwgb3V0cHV0Zi0+Y2hhbm5lbHMgPDwgIi4gUmVz
YW1wbGUgZnVuY3Rpb24gbm90IGF2YWlsYWJsZSIgKTsKKyAgICAgICAgICAgIGFsc2FfZnJlcXVl
bmN5X2NvbnZlcnRfZnVuYyA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgYWxzYV9mcmVxdWVuY3lfY29udmVydF9mdW5jID0KKyAgICAgICAgICAg
ICAgICB4bW1zX2NvbnZlcnRfZ2V0X2ZyZXF1ZW5jeV9mdW5jKCBvdXRwdXRmLT54bW1zX2Zvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRw
dXRmLT5jaGFubmVscyApOworICAgICAgICBpZiAoIGFsc2FfZnJlcXVlbmN5X2NvbnZlcnRfZnVu
YyA9PSBOVUxMICkKKyAgICAgICAgeworICAgICAgICAgICAgTE9HTCggMSwgIlJlc2FtcGxlIGZ1
bmN0aW9uIG5vdCBhdmFpbGFibGUuICBGb3JtYXQgIiA8PCBvdXRwdXRmLT54bW1zX2Zvcm1hdCAp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgb3V0
cHV0Zi0+c2FtcGxlX2JpdHMgPSBzbmRfcGNtX2Zvcm1hdF9waHlzaWNhbF93aWR0aCggb3V0cHV0
Zi0+Zm9ybWF0ICk7CisgICAgb3V0cHV0Zi0+YnBzID0gKCBvdXRwdXRmLT5yYXRlICogb3V0cHV0
Zi0+c2FtcGxlX2JpdHMgKiBvdXRwdXRmLT5jaGFubmVscyApID4+IDM7CisKKyAgICBpZiAoICgg
ZXJyID0gc25kX3BjbV9od19wYXJhbXNfc2V0X3BlcmlvZF9zaXplX25lYXIoIGFsc2FfcGNtLCBo
d3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZwZXJpb2RTaXplLCBOVUxMICkgKSA8IDAgKQorICAgIHsKKyAgICAgICAgTE9H
TCggMSwgIkFsc2FBdWRpbzo6YWxzYVNldHVwKCk6IFNldCBwZXJpb2Qgc2l6ZSBmYWlsZWQ6ICIg
PDwgc25kX3N0cmVycm9yKCAtZXJyICkgKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmICggKCBlcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19zZXRfcGVyaW9kc19uZWFyKCBh
bHNhX3BjbSwgaHdwYXJhbXMsCisgICAgICAgICAmcGVyaW9kQ291bnQsIDAgKSApIDwgMCApCisg
ICAgeworICAgICAgICBMT0dMKCAxLCAiQWxzYUF1ZGlvOjphbHNhU2V0dXAoKTogU2V0IHBlcmlv
ZCBjb3VudCBmYWlsZWQ6ICIgPDwgc25kX3N0cmVycm9yKCAtZXJyICkgKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICggc25kX3BjbV9od19wYXJhbXMoIGFsc2FfcGNt
LCBod3BhcmFtcyApIDwgMCApCisgICAgeworI2lmbmRlZiBRVF9OT19ERUJVRworICAgICAgICBz
bmRfcGNtX2h3X3BhcmFtc19kdW1wKCBod3BhcmFtcywgbG9ncyApOworI2VuZGlmCisgICAgICAg
IExPR0woIDEsICJBbHNhQXVkaW86OmFsc2FTZXR1cCgpOiBVbmFibGUgdG8gaW5zdGFsbCBodyBw
YXJhbXMiICk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoICggZXJy
ID0gc25kX3BjbV9od19wYXJhbXNfZ2V0X2J1ZmZlcl9zaXplKCBod3BhcmFtcywgJmFsc2FfYnVm
ZmVyX3NpemUgKSApIDwgMCApCisgICAgeworICAgICAgICBMT0dMKCAxLCAiQWxzYUF1ZGlvOjph
bHNhU2V0dXAoKTogc25kX3BjbV9od19wYXJhbXNfZ2V0X2J1ZmZlcl9zaXplKCkgZmFpbGVkOiAi
IDw8IHNuZF9zdHJlcnJvciggLWVyciApICk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAoICggZXJyID0gc25kX3BjbV9od19wYXJhbXNfZ2V0X3BlcmlvZF9zaXplKCBo
d3BhcmFtcywgJmFsc2FfcGVyaW9kX3NpemUsIDAgKSApIDwgMCApCisgICAgeworICAgICAgICBM
T0dMKCAxLCAiQWxzYUF1ZGlvOjphbHNhU2V0dXAoKTogc25kX3BjbV9od19wYXJhbXNfZ2V0X3Bl
cmlvZF9zaXplKCkgZmFpbGVkOiAiIDw8IHNuZF9zdHJlcnJvciggLWVyciApICk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgc25kX3BjbV9zd19wYXJhbXNfYWxsb2NhKCAmc3dw
YXJhbXMgKTsKKyAgICBzbmRfcGNtX3N3X3BhcmFtc19jdXJyZW50KCBhbHNhX3BjbSwgc3dwYXJh
bXMgKTsKKworICAgIGlmICggKCBlcnIgPSBzbmRfcGNtX3N3X3BhcmFtc19zZXRfc3RhcnRfdGhy
ZXNob2xkKCBhbHNhX3BjbSwKKyAgICAgICAgIHN3cGFyYW1zLCBhbHNhX2J1ZmZlcl9zaXplIC0g
YWxzYV9wZXJpb2Rfc2l6ZSApIDwgMCApICkKKyAgICAgICAgTE9HTCggMSwgIkFsc2FBdWRpbzo6
YWxzYVNldHVwKCk6IHNldHRpbmcgc3RhcnQgdGhyZXNob2xkIGZhaWxlZDogIiA8PCBzbmRfc3Ry
ZXJyb3IoIC1lcnIgKSApOworICAgIGlmICggc25kX3BjbV9zd19wYXJhbXMoIGFsc2FfcGNtLCBz
d3BhcmFtcyApIDwgMCApCisgICAgeworICAgICAgICBMT0dMKCAxLCAiQWxzYUF1ZGlvOjphbHNh
U2V0dXAoKTogVW5hYmxlIHRvIGluc3RhbGwgc3cgcGFyYW1zIiApOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisjaWZuZGVmIFFUX05PX0RFQlVHCisgICAgc25kX3BjbV9zd19wYXJh
bXNfZHVtcCggc3dwYXJhbXMsIGxvZ3MgKTsKKyAgICBzbmRfcGNtX2R1bXAoIGFsc2FfcGNtLCBs
b2dzICk7CisjZW5kaWYKKyAgICBod19wZXJpb2Rfc2l6ZSA9IHNuZF9wY21fZnJhbWVzX3RvX2J5
dGVzKCBhbHNhX3BjbSwgYWxzYV9wZXJpb2Rfc2l6ZSApOworICAgIGlmICggaW5wdXRmLT5icHMg
IT0gb3V0cHV0Zi0+YnBzICkKKyAgICB7CisgICAgICAgIGludCBhbGlnbiA9ICggaW5wdXRmLT5z
YW1wbGVfYml0cyAqIGlucHV0Zi0+Y2hhbm5lbHMgKSAvIDg7CisgICAgICAgIGh3X3BlcmlvZF9z
aXplX2luID0gKCAocXVpbnQ2NClod19wZXJpb2Rfc2l6ZSAqIGlucHV0Zi0+YnBzICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRmLT5icHMvMiApIC8gb3V0cHV0Zi0+YnBzOwor
ICAgICAgICBod19wZXJpb2Rfc2l6ZV9pbiAtPSBod19wZXJpb2Rfc2l6ZV9pbiAlIGFsaWduOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBod19wZXJpb2Rfc2l6ZV9pbiA9IGh3X3Bl
cmlvZF9zaXplOworICAgIH0KKworI2lmbmRlZiBRVF9OT19ERUJVRworICAgIHFEZWJ1ZygpIDw8
ICJEZXZpY2Ugc2V0dXA6IHBlcmlvZCBzaXplOiIgPDwgaHdfcGVyaW9kX3NpemU7CisgICAgcURl
YnVnKCkgPDwgImJpdHMgcGVyIHNhbXBsZToiIDw8ICBzbmRfcGNtX2Zvcm1hdF9waHlzaWNhbF93
aWR0aCggb3V0cHV0Zi0+Zm9ybWF0ICkgPDwKKyAgICAgICAgICAgICJmcmFtZSBzaXplOiIgPDwg
IHNuZF9wY21fZnJhbWVzX3RvX2J5dGVzKCBhbHNhX3BjbSwgMSApIDw8CisgICAgICAgICAgICAi
QnBzOiIgPDwgb3V0cHV0Zi0+YnBzOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgQWxzYUF1ZGlvOjphbHNhT3BlbiggUVN0cmluZyBkZXZpY2UsIEFGb3JtYXQgZm9ybWF0LCB1
bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNoYW5uZWxzLCB1bnNpZ25lZCBpbnQgYnVm
ZmVyX3RpbWUsIHVuc2lnbmVkIGludCBwZXJpb2RfdGltZSApCit7CisjaWZuZGVmIFFUX05PX0RF
QlVHCisgICAgcURlYnVnKCkgPDwgIk9wZW5pbmcgZGV2aWNlIjsKKyNlbmRpZgorICAgIGlucHV0
ZiA9IHNuZF9mb3JtYXRfZnJvbV94bW1zKCBmb3JtYXQsIHJhdGUsIGNoYW5uZWxzICk7CisKKyAg
ICAvLyBXZSdsbCBiZSB1c2luZyB0aGlzIGluIGFsc2FXcml0ZQorICAgIG1heEJ1ZmZlclNpemUg
PSBpbnB1dGYtPmJwcyAqIE1BWF9CVUZGRVJfU0laRTsKKyAgICAvLyBBbmQgY2xlYXIgdGhlIGJ1
ZmZlciwganVzdCBpbiBjYXNlCisgICAgY2xlYXJCdWZmZXIoKTsKKworICAgIGlmICggYWxzYVNl
dHVwKCBkZXZpY2UsIGJ1ZmZlcl90aW1lLCBwZXJpb2RfdGltZSwgaW5wdXRmICkgPT0gZmFsc2Ug
KQorICAgIHsKKyAgICAgICAgYWxzYUNsb3NlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBnb2luZyA9IHRydWU7CisgICAgY29udmVydGIgPSB4bW1zX2NvbnZlcnRfYnVm
ZmVyc19uZXcoKTsKKworICAgIEFsc2FBdWRpbyogYWFUaHJlYWQgPSBuZXcgQWxzYUF1ZGlvKCk7
CisjaWZuZGVmIFFUX05PX0RFQlVHCisgICAgcURlYnVnKCkgPDwgIlN0YXJ0aW5nIHRocmVhZCI7
CisjZW5kaWYKKyAgICBwdGhyZWFkX2NyZWF0ZSggJmF1ZGlvX3RocmVhZCwgTlVMTCwgJmFsc2Ff
bG9vcCwgKHZvaWQqKWFhVGhyZWFkICk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBB
bHNhQXVkaW86OmNsZWFyQnVmZmVyKCB2b2lkICkKK3sKKyAgICBtdXRleC5sb2NrKCk7CisgICAg
YXVkaW9EYXRhLmNsZWFyKCk7CisgICAgbXV0ZXgudW5sb2NrKCk7Cit9CisKKy8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKKyAgICBQbGF5IEludGVyZmFjZQorKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor
Cit2b2lkIEFsc2FBdWRpbzo6YWxzYVdyaXRlKCBjb25zdCBRQnl0ZUFycmF5KiBpbnB1dERhdGEg
KQoreworICAgIGlmICggKCBhdWRpb0RhdGEuc2l6ZSgpICsgaW5wdXREYXRhLT5zaXplKCkgKSA8
IG1heEJ1ZmZlclNpemUgKQorICAgIHsKKyAgICAgICAgbXV0ZXgubG9jaygpOworI2lmbmRlZiBR
VF9OT19ERUJVRworICAgIHFEZWJ1ZyggIm1heCBidWZmZXIgc2l6ZTogJWQ7IGJ1ZmZlciBkYXRh
OiAlZDsgaW5wdXQgZGF0YTogJWQiLCBtYXhCdWZmZXJTaXplLCBhdWRpb0RhdGEuc2l6ZSgpLCBp
bnB1dERhdGEtPnNpemUoKSApOworI2VuZGlmCisgICAgICAgIGF1ZGlvRGF0YS5hcHBlbmQoICpp
bnB1dERhdGEgKTsKKyAgICAgICAgbXV0ZXgudW5sb2NrKCk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIG11dGV4LmxvY2soKTsKKyAgICAgICAgaW50IGluU2l6ZSA9IG1heEJ1ZmZl
clNpemUgLSBhdWRpb0RhdGEuc2l6ZSgpOworI2lmbmRlZiBRVF9OT19ERUJVRworICAgIHFEZWJ1
ZyggIm1heCBidWZmZXIgc2l6ZTogJWQ7IGJ1ZmZlciBkYXRhOiAlZDsgaW5wdXQgZGF0YTogJWQ7
IHRydW5jYXRlZCB0bzogJWQiLCAKKyAgICAgICAgICAgIG1heEJ1ZmZlclNpemUsIGF1ZGlvRGF0
YS5zaXplKCksIGlucHV0RGF0YS0+c2l6ZSgpLCBpblNpemUgKTsKKyNlbmRpZgorICAgICAgICBh
dWRpb0RhdGEuYXBwZW5kKCBpbnB1dERhdGEtPmxlZnQoIGluU2l6ZSApICk7CisgICAgICAgIG11
dGV4LnVubG9jaygpOworICAgICAgICBMT0dMKCAxLCAiTWF4IGRhdGEgYnVmZmVyIHNpemUgcmVh
Y2hlZC4gIEJ5dGVzIGRyb3BwZWQ6ICIgPDwgaW5TaXplICk7CisgICAgfQorfQorCisKK2ludCBB
bHNhQXVkaW86OmJ1ZmZlclNpemUoIHZvaWQgKQoreworICAgIHJldHVybiBhdWRpb0RhdGEuc2l6
ZSgpOworfQorCit2b2lkIEFsc2FBdWRpbzo6c2V0Vm9sdW1lICggZmxvYXQgdm9sICkKK3sKKyAg
ICB2b2x1bWUgPSB2b2w7Cit9CisKKwordm9pZCBBbHNhQXVkaW86OmFsc2FDbG9zZSggdm9pZCAp
Cit7CisgICAgaWYgKCAhZ29pbmcgKQorICAgICAgICByZXR1cm47CisKKyNpZm5kZWYgUVRfTk9f
REVCVUcKKyAgICBxRGVidWcoKSA8PCAiQ2xvc2luZyBkZXZpY2UiOworI2VuZGlmCisKKyAgICBn
b2luZyA9IGZhbHNlOworCisgICAgcHRocmVhZF9qb2luKCBhdWRpb190aHJlYWQsIE5VTEwgKTsK
KworICAgIHhtbXNfY29udmVydF9idWZmZXJzX2Rlc3Ryb3koIGNvbnZlcnRiICk7CisgICAgY29u
dmVydGIgPSBOVUxMOworICAgIGZyZWUoIGlucHV0ZiApOworICAgIGlucHV0ZiA9IE5VTEw7Cisg
ICAgZnJlZSggb3V0cHV0ZiApOworICAgIG91dHB1dGYgPSBOVUxMOworCisjaWZuZGVmIFFUX05P
X0RFQlVHCisgICAgc25kX291dHB1dF9jbG9zZSggbG9ncyApOworICAgIHFEZWJ1ZygpIDw8ICJE
ZXZpY2UgY2xvc2VkIjsKKyNlbmRpZgorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAg
ICBQbGF5IFRocmVhZAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCit2b2lkKiBBbHNhQXVkaW86
OmFsc2FfbG9vcCggdm9pZCogcHRoaXMgKQoreworICBBbHNhQXVkaW8qIGFhVGhyZWFkID0gKEFs
c2FBdWRpbyopcHRoaXM7CisgIGFhVGhyZWFkLT5ydW4oKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisK
Kwordm9pZCBBbHNhQXVkaW86OnJ1biggdm9pZCApCit7CisgICAgaW50IG5wZmRzID0gc25kX3Bj
bV9wb2xsX2Rlc2NyaXB0b3JzX2NvdW50KCBhbHNhX3BjbSApOworICAgIHN0cnVjdCBwb2xsZmQg
KnBmZHM7CisgICAgdW5zaWduZWQgc2hvcnQgKnJldmVudHM7CisKKyAgICBpZiAoIG5wZmRzIDw9
IDAgKQorICAgICAgICBnb3RvIF9lcnJvcjsKKyAgICBwZmRzID0gKHN0cnVjdCBwb2xsZmQqKW1h
bGxvYyggc2l6ZW9mKCAqcGZkcyApICogbnBmZHMgKTsKKyAgICByZXZlbnRzID0gKHVuc2lnbmVk
IHNob3J0KiltYWxsb2MoIHNpemVvZiggKnJldmVudHMgKSAqIG5wZmRzICk7CisgICAgd2hpbGUg
KCBnb2luZyAmJiBhbHNhX3BjbSApCisgICAgeworICAgICAgICBpZiAoIGF1ZGlvRGF0YS5zaXpl
KCkgPiBod19wZXJpb2Rfc2l6ZV9pbiApCisgICAgICAgIHsKKyAgICAgICAgICAgIHNuZF9wY21f
cG9sbF9kZXNjcmlwdG9ycyggYWxzYV9wY20sIHBmZHMsIG5wZmRzICk7CisgICAgICAgICAgICBp
ZiAoIHBvbGwoIHBmZHMsIG5wZmRzLCAxMCApID4gMCApCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgLy8gbmVlZCB0byBjaGVjayByZXZlbnRzLiAgcG9sbCgpIHdpdGgKKyAgICAgICAg
ICAgICAgICAvLyBkbWl4IHJldHVybnMgYSBwb3N0aXZlIHZhbHVlIGV2ZW4KKyAgICAgICAgICAg
ICAgICAvLyBpZiBubyBkYXRhIGlzIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIGludCBpOwor
ICAgICAgICAgICAgICAgIHNuZF9wY21fcG9sbF9kZXNjcmlwdG9yc19yZXZlbnRzKCBhbHNhX3Bj
bSwgcGZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG5wZmRzLCByZXZlbnRzICk7CisgICAg
ICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBucGZkczsgaSsrICkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCByZXZlbnRzW2ldICYgUE9MTE9VVCApCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBwdW1wVGhyZWFkRGF0YSgpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVxOworICAg
ICAgICAgICAgcmVxLnR2X3NlYyA9IDA7CisgICAgICAgICAgICByZXEudHZfbnNlYyA9IDEwMDAw
MDAwOworICAgICAgICAgICAgbmFub3NsZWVwKCAmcmVxLCBOVUxMICk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgZnJlZSggcGZkcyApOworICAgIGZyZWUoIHJldmVudHMgKTsKKworIF9lcnJvcjoK
KyAgICBhbHNhX2Nsb3NlX3BjbSgpOworICAgIG11dGV4LmxvY2soKTsKKyAgICBhdWRpb0RhdGEu
Y2xlYXIoKTsKKyAgICBtdXRleC51bmxvY2soKTsKKyNpZm5kZWYgUVRfTk9fREVCVUcKKyAgICBx
RGVidWcoKSA8PCAiRXhpdGluZyB0aHJlYWQiOworI2VuZGlmCisgICAgcHRocmVhZF9leGl0KCBO
VUxMICk7Cit9CisKKworLyogdHJhbnNmZXIgYXVkaW8gZGF0YSBmcm9tIHRocmVhZCBidWZmZXIg
dG8gaC93ICovCit2b2lkIEFsc2FBdWRpbzo6cHVtcFRocmVhZERhdGEoIHZvaWQgKQoreworICAg
IGludCBsZW5ndGgsIGNudCwgYXZhaWwsIGRhdFNpemU7CisKKyAgICBkYXRTaXplID0gYXVkaW9E
YXRhLnNpemUoKTsKKyAgICBsZW5ndGggPSBNSU4oIGh3X3BlcmlvZF9zaXplX2luLCBkYXRTaXpl
ICk7CisgICAgYXZhaWwgPSBzbmRfcGNtX2ZyYW1lc190b19ieXRlcyggYWxzYV9wY20sIGdldEF2
YWlsYWJsZUZyYW1lcygpICk7CisgICAgbGVuZ3RoID0gTUlOKCBsZW5ndGgsIGF2YWlsICk7Cisg
ICAgd2hpbGUgKCBsZW5ndGggPiAwICkKKyAgICB7CisgICAgICAgIGNudCA9IE1JTiggbGVuZ3Ro
LCBkYXRTaXplICk7CisgICAgICAgIGNvbnZlcnREYXRhKCBhdWRpb0RhdGEubGVmdCggY250ICku
ZGF0YSgpLCBjbnQgKTsKKyAgICAgICAgbXV0ZXgubG9jaygpOworICAgICAgICBhdWRpb0RhdGEu
cmVtb3ZlKCAwLCBjbnQgKTsKKyAgICAgICAgbXV0ZXgudW5sb2NrKCk7CisgICAgICAgIGxlbmd0
aCAtPSBjbnQ7CisgICAgfQorfQorCisKKy8qIHVwZGF0ZSBhbmQgZ2V0IHRoZSBhdmFpbGFibGUg
c3BhY2Ugb24gaC93IGJ1ZmZlciAoaW4gZnJhbWVzKSAqLworc25kX3BjbV9zZnJhbWVzX3QgQWxz
YUF1ZGlvOjpnZXRBdmFpbGFibGVGcmFtZXMoIHZvaWQgKQoreworICAgIHNuZF9wY21fc2ZyYW1l
c190IHJldDsKKworICAgIGlmICggYWxzYV9wY20gPT0gTlVMTCApCisgICAgICAgIHJldHVybiAw
OworCisgICAgd2hpbGUgKCAoIHJldCA9IHNuZF9wY21fYXZhaWxfdXBkYXRlKCBhbHNhX3BjbSAp
ICkgPCAwICkKKyAgICB7CisgICAgICAgIHJldCA9IGFsc2FfaGFuZGxlX2Vycm9yKCByZXQgKTsK
KyAgICAgICAgaWYgKCByZXQgPCAwICkKKyAgICAgICAgeworICAgICAgICAgICAgTE9HTCggMSwg
ImFsc2FfZ2V0X2F2YWlsKCk6IHNuZF9wY21fYXZhaWxfdXBkYXRlKCkgZmFpbGVkOiAiIDw8IHNu
ZF9zdHJlcnJvciggLXJldCApICk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKworCisvKiB0cmFu
c2ZlciBkYXRhIHRvIGF1ZGlvIGgvdzsgbGVuZ3RoIGlzIGdpdmVuIGluIGJ5dGVzCisgKgorICog
ZGF0YSBjYW4gYmUgbW9kaWZpZWQgdmlhIHJhdGUgY29udmVyc2lvbiBvcgorICogc29mdHdhcmUg
dm9sdW1lIGJlZm9yZSBwYXNzZWQgdG8gYXVkaW8gaC93CisgKi8KK3ZvaWQgQWxzYUF1ZGlvOjpj
b252ZXJ0RGF0YSggdm9pZCogZGF0YSwgaW50IGxlbmd0aCApCit7CisgICAgaWYgKCBhbHNhX2Nv
bnZlcnRfZnVuYyAhPSBOVUxMICkKKyAgICAgICAgbGVuZ3RoID0gYWxzYV9jb252ZXJ0X2Z1bmMo
IGNvbnZlcnRiLCAmZGF0YSwgbGVuZ3RoICk7CisgICAgaWYgKCBhbHNhX3N0ZXJlb19jb252ZXJ0
X2Z1bmMgIT0gTlVMTCApCisgICAgICAgIGxlbmd0aCA9IGFsc2Ffc3RlcmVvX2NvbnZlcnRfZnVu
YyggY29udmVydGIsICZkYXRhLCBsZW5ndGggKTsKKyAgICBpZiAoIGFsc2FfZnJlcXVlbmN5X2Nv
bnZlcnRfZnVuYyAhPSBOVUxMICkKKyAgICB7CisgICAgICAgIGxlbmd0aCA9IGFsc2FfZnJlcXVl
bmN5X2NvbnZlcnRfZnVuYyggY29udmVydGIsICZkYXRhLCBsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRmLT5yYXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dGYtPnJhdGUgKTsKKyAg
ICB9CisKKyAgICBhZGp1c3RWb2x1bWUoIGRhdGEsIGxlbmd0aCwgb3V0cHV0Zi0+eG1tc19mb3Jt
YXQgKTsKKworICAgIHdyaXRlVG9DYXJkKCAoY2hhciopZGF0YSwgbGVuZ3RoICk7Cit9CisKKwor
I2RlZmluZSBWT0xVTUVfQURKVVNUKCB0eXBlLCBlbmRpYW4gKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdHlwZSAqcHRy
ID0gKHR5cGUqKWRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICpwdHIgPSBxVG8jI2VuZGlhbiggKHR5cGUpKCBxRnJvbSMjZW5kaWFuKCAqcHRyICkgKiB2
b2x1bWUgICkgKTsgICAgXAorICAgICAgICBwdHIrKzsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCit9IHdoaWxlICggMCApCisKKyNkZWZpbmUgVk9MVU1FX0FESlVTVDgoIHR5cGUgKSAgICAg
ICAgICAgXAorZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
dHlwZSAqcHRyID0gKHR5cGUqKWRhdGE7ICAgICAgICAgICAgIFwKKyAgICBmb3IgKCBpID0gMDsg
aSA8IGxlbmd0aDsgaSsrICkgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICpwdHIgPSAodHlwZSkoICpwdHIgKiB2b2x1bWUgKTsgIFwK
KyAgICAgICAgcHRyKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICggMCApCisKK3ZvaWQgQWxz
YUF1ZGlvOjphZGp1c3RWb2x1bWUoIHZvaWQqIGRhdGEsIGludCBsZW5ndGgsIEFGb3JtYXQgZm10
ICkKK3sKKyAgICBpbnQgaTsKKyAgICBpZiAoIHZvbHVtZSA9PSAxLjAgKQorICAgICAgICByZXR1
cm47CisKKyAgICBzd2l0Y2ggKCBmbXQgKQorICAgIHsKKyAgICAgICAgY2FzZSBGTVRfUzE2X0xF
OgorICAgICAgICAgICAgVk9MVU1FX0FESlVTVCggcWludDE2LCBMaXR0bGVFbmRpYW4gKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZNVF9VMTZfTEU6CisgICAgICAgICAgICBW
T0xVTUVfQURKVVNUKCBxdWludDE2LCBMaXR0bGVFbmRpYW4gKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEZNVF9TMTZfQkU6CisgICAgICAgICAgICBWT0xVTUVfQURKVVNUKCBx
aW50MTYsIEJpZ0VuZGlhbiApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRk1U
X1UxNl9CRToKKyAgICAgICAgICAgIFZPTFVNRV9BREpVU1QoIHF1aW50MTYsIEJpZ0VuZGlhbiAp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRk1UX1M4OgorICAgICAgICAgICAg
Vk9MVU1FX0FESlVTVDgoIHFpbnQ4ICk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBGTVRfVTg6CisgICAgICAgICAgICBWT0xVTUVfQURKVVNUOCggcXVpbnQ4ICk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPR0woIDEsICJBbHNh
QXVkaW86OmFkanVzdFZvbHVtZSgpOiB1bmhhbmRsZWQgZm9ybWF0OiAiIDw8IGZtdCApOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisKKy8qIHRyYW5zZmVyIGRhdGEgdG8gYXVkaW8g
aC93IHZpYSBub3JtYWwgd3JpdGUgKi8KK3ZvaWQgQWxzYUF1ZGlvOjp3cml0ZVRvQ2FyZCggY2hh
ciAqZGF0YSwgaW50IGxlbmd0aCApCit7CisgICAgc25kX3BjbV9zZnJhbWVzX3Qgd3JpdHRlbl9m
cmFtZXM7CisKKyAgICB3aGlsZSAoIGxlbmd0aCA+IDAgKQorICAgIHsKKyAgICAgICAgaW50IGZy
YW1lcyA9IHNuZF9wY21fYnl0ZXNfdG9fZnJhbWVzKCBhbHNhX3BjbSwgbGVuZ3RoICk7CisKKyAg
ICAgICAgaWYgKCB1c2VfbW1hcCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHdyaXR0ZW5fZnJh
bWVzID0gc25kX3BjbV9tbWFwX3dyaXRlaSggYWxzYV9wY20sIGRhdGEsIGZyYW1lcyApOworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdyaXR0ZW5fZnJhbWVzID0gc25kX3Bj
bV93cml0ZWkoIGFsc2FfcGNtLCBkYXRhLCBmcmFtZXMgKTsKKworICAgICAgICBpZiAoIHdyaXR0
ZW5fZnJhbWVzID4gMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCB3cml0dGVuID0gc25k
X3BjbV9mcmFtZXNfdG9fYnl0ZXMoIGFsc2FfcGNtLCB3cml0dGVuX2ZyYW1lcyApOworICAgICAg
ICAgICAgbGVuZ3RoIC09IHdyaXR0ZW47CisgICAgICAgICAgICBkYXRhICs9IHdyaXR0ZW47Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgZXJyID0g
YWxzYV9oYW5kbGVfZXJyb3IoIChpbnQpd3JpdHRlbl9mcmFtZXMgKTsKKyAgICAgICAgICAgIGlm
ICggZXJyIDwgMCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTE9HTCggMSwgIkFs
c2FBdWRpbzo6d3JpdGVUb0NhcmQoKTogd3JpdGUgZXJyb3I6ICIgPDwgc25kX3N0cmVycm9yKCAt
ZXJyICkgKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKworCisvKiBoYW5kbGUgZ2VuZXJpYyBlcnJvcnMgKi8KK2ludCBBbHNhQXVk
aW86OmFsc2FfaGFuZGxlX2Vycm9yKCBpbnQgZXJyICkKK3sKKyAgICBzd2l0Y2ggKCBlcnIgKQor
ICAgIHsKKyAgICAgICAgY2FzZSAtRVBJUEU6CisgICAgICAgICAgICByZXR1cm4geHJ1bl9yZWNv
dmVyKCk7CisgICAgICAgIGNhc2UgLUVTVFJQSVBFOgorICAgICAgICAgICAgcmV0dXJuIHN1c3Bl
bmRfcmVjb3ZlcigpOworICAgIH0KKworICAgIHJldHVybiBlcnI7Cit9CisKKworLyogY2xvc2Ug
UENNIGFuZCByZWxlYXNlIGFzc29jaWF0ZWQgcmVzb3VyY2VzICovCit2b2lkIEFsc2FBdWRpbzo6
YWxzYV9jbG9zZV9wY20oIHZvaWQgKQoreworICAgIGlmICggYWxzYV9wY20gKQorICAgIHsKKyAg
ICAgICAgaW50IGVycjsKKyAgICAgICAgc25kX3BjbV9kcm9wKCBhbHNhX3BjbSApOworICAgICAg
ICBpZiAoICggZXJyID0gc25kX3BjbV9jbG9zZSggYWxzYV9wY20gKSApIDwgMCApCisgICAgICAg
ICAgICBMT0dMKCAxLCAiYWxzYV9wY21fY2xvc2UoKSBmYWlsZWQ6ICIgPDwgc25kX3N0cmVycm9y
KCAtZXJyICkgKTsKKyAgICAgICAgYWxzYV9wY20gPSBOVUxMOworICAgIH0KK30KKworCitpbnQg
QWxzYUF1ZGlvOjpmb3JtYXRfZnJvbV9hbHNhKCBzbmRfcGNtX2Zvcm1hdF90IGZtdCApCit7Cisg
ICAgdWludCBpOworICAgIGZvciAoIGkgPSAwOyBpIDwgc2l6ZW9mKCBmb3JtYXRfdGFibGUgKSAv
IHNpemVvZiggZm9ybWF0X3RhYmxlWzBdICk7IGkrKyApCisgICAgICAgIGlmICggZm9ybWF0X3Rh
YmxlW2ldLmFsc2EgPT0gZm10ICkKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRfdGFibGVbaV0u
eG1tczsKKyAgICBMT0dMKCAxLCAiVW5zdXBwb3J0ZWQgZm9ybWF0OiAiIDw8IHNuZF9wY21fZm9y
bWF0X25hbWUoIGZtdCApICk7CisgICAgcmV0dXJuIC0xOworfQorCitzdHJ1Y3Qgc25kX2Zvcm1h
dCAqIEFsc2FBdWRpbzo6c25kX2Zvcm1hdF9mcm9tX3htbXMoIEFGb3JtYXQgZm10LCBpbnQgcmF0
ZSwgaW50IGNoYW5uZWxzICkKK3sKKyAgICBzdHJ1Y3Qgc25kX2Zvcm1hdCAqZiA9IChzdHJ1Y3Qg
c25kX2Zvcm1hdCopbWFsbG9jKCBzaXplb2YoIHN0cnVjdCBzbmRfZm9ybWF0ICkgKTsKKyAgICB1
aW50IGk7CisKKyAgICBmLT54bW1zX2Zvcm1hdCA9IGZtdDsKKyAgICBmLT5mb3JtYXQgPSBTTkRf
UENNX0ZPUk1BVF9VTktOT1dOOworCisgICAgZm9yICggaSA9IDA7IGkgPCBzaXplb2YoIGZvcm1h
dF90YWJsZSApIC8gc2l6ZW9mKCBmb3JtYXRfdGFibGVbMF0gKTsgaSsrICkKKyAgICB7CisgICAg
ICAgIGlmICggZm9ybWF0X3RhYmxlW2ldLnhtbXMgPT0gZm10ICkKKyAgICAgICAgeworICAgICAg
ICAgICAgZi0+Zm9ybWF0ID0gZm9ybWF0X3RhYmxlW2ldLmFsc2E7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEdldCByaWQgb2YgX05FICovCisgICAgZm9y
ICggaSA9IDA7IGkgPCBzaXplb2YoIGZvcm1hdF90YWJsZSApIC8gc2l6ZW9mKCBmb3JtYXRfdGFi
bGVbMF0gKTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggZm9ybWF0X3RhYmxlW2ldLmFsc2Eg
PT0gZi0+Zm9ybWF0ICkKKyAgICAgICAgeworICAgICAgICAgICAgZi0+eG1tc19mb3JtYXQgPSBm
b3JtYXRfdGFibGVbaV0ueG1tczsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgZi0+cmF0ZSA9IHJhdGU7CisgICAgZi0+Y2hhbm5lbHMgPSBjaGFubmVsczsKKyAg
ICBmLT5zYW1wbGVfYml0cyA9IHNuZF9wY21fZm9ybWF0X3BoeXNpY2FsX3dpZHRoKCBmLT5mb3Jt
YXQgKTsKKyAgICBmLT5icHMgPSAoIHJhdGUgKiBmLT5zYW1wbGVfYml0cyAqIGNoYW5uZWxzICkg
Pj4gMzsKKworICAgIHJldHVybiBmOworfQorCisKK2ludCBBbHNhQXVkaW86OnhydW5fcmVjb3Zl
ciggdm9pZCApCit7CisKKyNpZm5kZWYgUVRfTk9fREVCVUcKKyAgICBzbmRfcGNtX3N0YXR1c190
ICphbHNhX3N0YXR1czsKKyAgICBzbmRfcGNtX3N0YXR1c19hbGxvY2EoICZhbHNhX3N0YXR1cyAp
OworICAgIGlmICggc25kX3BjbV9zdGF0dXMoIGFsc2FfcGNtLCBhbHNhX3N0YXR1cyApIDwgMCAp
CisgICAgeworICAgICAgICBxRGVidWcoKSA8PCAiQWxzYUF1ZGlvOjp4cnVuX3JlY292ZXIoKTog
c25kX3BjbV9zdGF0dXMoKSBmYWlsZWQiOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBzbmRfcGNtX3N0YXR1c19kdW1wKCBhbHNhX3N0YXR1cywgbG9ncyApOworICAgICAgICBxRGVi
dWcoKSA8PCAiU3RhdHVzOlxuIiA8PCBsb2dzOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJu
IHNuZF9wY21fcHJlcGFyZSggYWxzYV9wY20gKTsKK30KKworaW50IEFsc2FBdWRpbzo6c3VzcGVu
ZF9yZWNvdmVyKCB2b2lkICkKK3sKKyAgICBpbnQgZXJyOworCisgICAgd2hpbGUgKCAoIGVyciA9
IHNuZF9wY21fcmVzdW1lKCBhbHNhX3BjbSApICkgPT0gLUVBR0FJTiApCisgICAgICAgIC8qIHdh
aXQgdW50aWwgc3VzcGVuZCBmbGFnIGlzIHJlbGVhc2VkICovCisgICAgICAgIHNsZWVwKCAxICk7
CisgICAgaWYgKCBlcnIgPCAwICkKKyAgICB7CisgICAgICAgIExPR0woIDMsICJhbHNhX2hhbmRs
ZV9lcnJvcigpOiBzbmRfcGNtX3Jlc3VtZSgpIGZhaWxlZC4iICk7CisgICAgICAgIHJldHVybiBz
bmRfcGNtX3ByZXBhcmUoIGFsc2FfcGNtICk7CisgICAgfQorICAgIHJldHVybiBlcnI7Cit9CmRp
ZmYgLXVyTiBsYXN0LmZtLTEuMS4zLm9yaWcvc3JjL2Fsc2FwbGF5YmFjay9hbHNhYXVkaW8uaCBs
YXN0LmZtLTEuMS4zL3NyYy9hbHNhcGxheWJhY2svYWxzYWF1ZGlvLmgKLS0tIGxhc3QuZm0tMS4x
LjMub3JpZy9zcmMvYWxzYXBsYXliYWNrL2Fsc2FhdWRpby5oCTE5NjktMTItMzEgMTY6MDA6MDAu
MDAwMDAwMDAwIC0wODAwCisrKyBsYXN0LmZtLTEuMS4zL3NyYy9hbHNhcGxheWJhY2svYWxzYWF1
ZGlvLmgJMjAwNy0wMy0xOCAyMDo1NzoyOC4wMDAwMDAwMDAgLTA3MDAKQEAgLTAsMCArMSwxMjEg
QEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgQ29weXJpZ2h0IChDKSAyMDA3IGJ5IEpvaG4g
U3RhbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAganN0YW1w
QHVzZXJzLnNvdXJjZWZvcmdlLm5ldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgICoKKyAqICAg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgICoKKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgICAgICoKKyAqICAgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoK
KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICoKKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgICAgICoKKyAqICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAg
ICAgICoKKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSAgICAgICAgICoKKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICoKKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgICAgICoKKyAqICAgYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAq
ICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICoKKyAqICAgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0
b24sIE1BICAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCisjaWZuZGVmIEFMU0FBVURJT19ICisjZGVmaW5lIEFMU0FBVURJT19ICisKKyNpbmNsdWRl
IDxhbHNhL2Fzb3VuZGxpYi5oPgorI2luY2x1ZGUgPFFCeXRlQXJyYXk+CisjaW5jbHVkZSA8UUxp
c3Q+CisjaW5jbHVkZSA8UVN0cmluZz4KKyNpbmNsdWRlIDxRTXV0ZXg+CisjaW5jbHVkZSAieGNv
bnZlcnQuaCIKKworc3RydWN0IEFsc2FEZXZpY2VJbmZvIHsKKyAgICBRU3RyaW5nIG5hbWU7Cisg
ICAgUVN0cmluZyBkZXZpY2U7Cit9OworCitzdHJ1Y3Qgc25kX2Zvcm1hdCB7CisgICAgdW5zaWdu
ZWQgaW50IHJhdGU7CisgICAgdW5zaWduZWQgaW50IGNoYW5uZWxzOworICAgIHNuZF9wY21fZm9y
bWF0X3QgZm9ybWF0OworICAgIEFGb3JtYXQgeG1tc19mb3JtYXQ7CisgICAgaW50IHNhbXBsZV9i
aXRzOworICAgIGludCBicHM7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHsKKyAgICBBRm9y
bWF0IHhtbXM7CisgICAgc25kX3BjbV9mb3JtYXRfdCBhbHNhOworfSBmb3JtYXRfdGFibGVbXSA9
CisgICAgICAgICAgICAgICAgICAgeyB7IEZNVF9TMTZfTEUsIFNORF9QQ01fRk9STUFUX1MxNl9M
RSB9LAorICAgICAgICAgICAgICAgICAgICAgeyBGTVRfUzE2X0JFLCBTTkRfUENNX0ZPUk1BVF9T
MTZfQkUgfSwKKyAgICAgICAgICAgICAgICAgICAgIHsgRk1UX1MxNl9ORSwgU05EX1BDTV9GT1JN
QVRfUzE2ICAgIH0sCisgICAgICAgICAgICAgICAgICAgICB7IEZNVF9VMTZfTEUsIFNORF9QQ01f
Rk9STUFUX1UxNl9MRSB9LAorICAgICAgICAgICAgICAgICAgICAgeyBGTVRfVTE2X0JFLCBTTkRf
UENNX0ZPUk1BVF9VMTZfQkUgfSwKKyAgICAgICAgICAgICAgICAgICAgIHsgRk1UX1UxNl9ORSwg
U05EX1BDTV9GT1JNQVRfVTE2ICAgIH0sCisgICAgICAgICAgICAgICAgICAgICB7IEZNVF9VOCwg
ICAgIFNORF9QQ01fRk9STUFUX1U4ICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgeyBGTVRf
UzgsICAgICBTTkRfUENNX0ZPUk1BVF9TOCAgICAgfSwKKyAgICAgICAgICAgICAgICAgICB9Owor
CitjbGFzcyBBbHNhQXVkaW8geworcHVibGljOgorICAgIEFsc2FBdWRpbygpOworCisgICAgfkFs
c2FBdWRpbygpOworCisgICAgaW50IGdldENhcmRzKCk7CisgICAgQWxzYURldmljZUluZm8gZ2V0
RGV2aWNlSW5mbyggaW50IGRldmljZSApOworCisgICAgYm9vbCBhbHNhT3BlbiggUVN0cmluZyBk
ZXZpY2UsIEFGb3JtYXQgZm9ybWF0LCB1bnNpZ25lZCBpbnQgcmF0ZSwKKyAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgY2hhbm5lbHMsIHVuc2lnbmVkIGludCBidWZmZXJfdGltZSwKKyAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGVyaW9kX3RpbWUgKTsKKyAgICB2b2lkIGFs
c2FXcml0ZSggY29uc3QgUUJ5dGVBcnJheSogaW5wdXREYXRhICk7CisKKyAgICB2b2lkIGFsc2FD
bG9zZSggdm9pZCApOworCisgICAgdm9pZCBzZXRWb2x1bWUgKCBmbG9hdCB2b2wgKTsKKyAgICBp
bnQgYnVmZmVyU2l6ZSggdm9pZCApOworICAgIHZvaWQgY2xlYXJCdWZmZXIoIHZvaWQgKTsKKwor
cHJpdmF0ZToKKyAgICBRTGlzdDxBbHNhRGV2aWNlSW5mbz4gX2RldmljZXM7CisKKyAgICBpbnQg
bWF4QnVmZmVyU2l6ZTsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcgc3RhdGljIHZhcmlhYmxlcyBh
cmUgY29uZmlndXJlZCBpbiBlaXRoZXIKKyAgICAvLyBhbHNhT3BlbiBvciBhbHNhU2V0dXAgYW5k
IHVzZWQgbGF0ZXIgaW4gdGhlIGF1ZGlvIHRocmVhZAorICAgIHN0YXRpYyBpbnQgaHdfcGVyaW9k
X3NpemVfaW47CisgICAgc3RhdGljIHNuZF9vdXRwdXRfdCAqbG9nczsKKyAgICBzdGF0aWMgYm9v
bCBnb2luZzsKKyAgICBzdGF0aWMgc25kX3BjbV90ICphbHNhX3BjbTsKKyAgICBzdGF0aWMgc25k
X2Zvcm1hdCogaW5wdXRmOworICAgIHN0YXRpYyBzbmRfZm9ybWF0KiBvdXRwdXRmOworICAgIHN0
YXRpYyBmbG9hdCB2b2x1bWU7CisgICAgc3RhdGljIFFCeXRlQXJyYXkgYXVkaW9EYXRhOworICAg
IHN0YXRpYyBjb252ZXJ0X2Z1bmNfdCBhbHNhX2NvbnZlcnRfZnVuYzsKKyAgICBzdGF0aWMgY29u
dmVydF9jaGFubmVsX2Z1bmNfdCBhbHNhX3N0ZXJlb19jb252ZXJ0X2Z1bmM7CisgICAgc3RhdGlj
IGNvbnZlcnRfZnJlcV9mdW5jX3QgYWxzYV9mcmVxdWVuY3lfY29udmVydF9mdW5jOworICAgIHN0
YXRpYyB4bW1zX2NvbnZlcnRfYnVmZmVycyAqY29udmVydGI7CisgICAgc3RhdGljIHB0aHJlYWRf
dCBhdWRpb190aHJlYWQ7CisgICAgc3RhdGljIFFNdXRleCBtdXRleDsKKyAgICBzdGF0aWMgYm9v
bCB1c2VfbW1hcDsKKworICAgIHZvaWQgZ2V0RGV2aWNlc0ZvckNhcmQoIGludCBjYXJkICk7Cisg
ICAgYm9vbCBhbHNhU2V0dXAoIFFTdHJpbmcgZGV2aWNlLCBzbmRfcGNtX3VmcmFtZXNfdCBwZXJp
b2RTaXplLCB1aW50IHBlcmlvZENvdW50LCBzbmRfZm9ybWF0ICpmICk7CisKKyAgICBzdGF0aWMg
dm9pZCogYWxzYV9sb29wKCB2b2lkKiApOworICAgIHZvaWQgcnVuKCB2b2lkICk7CisgICAgdm9p
ZCBwdW1wVGhyZWFkRGF0YSggdm9pZCApOworICAgIHZvaWQgY29udmVydERhdGEoIHZvaWQqIGRh
dGEsIGludCBsZW5ndGggKTsKKyAgICB2b2lkIGFkanVzdFZvbHVtZSggdm9pZCogZGF0YSwgaW50
IGxlbmd0aCwgQUZvcm1hdCBmbXQgKTsKKyAgICB2b2lkIHdyaXRlVG9DYXJkKCBjaGFyICpkYXRh
LCBpbnQgbGVuZ3RoICk7CisKKyAgICBzbmRfcGNtX3NmcmFtZXNfdCBnZXRBdmFpbGFibGVGcmFt
ZXMoIHZvaWQgKTsKKyAgICBpbnQgYWxzYV9oYW5kbGVfZXJyb3IoIGludCBlcnIgKTsKKyAgICBp
bnQgeHJ1bl9yZWNvdmVyKCB2b2lkICk7CisgICAgaW50IHN1c3BlbmRfcmVjb3Zlciggdm9pZCAp
OworICAgIGludCBmb3JtYXRfZnJvbV9hbHNhKCBzbmRfcGNtX2Zvcm1hdF90IGZtdCApOworICAg
IHNuZF9mb3JtYXQqIHNuZF9mb3JtYXRfZnJvbV94bW1zKCBBRm9ybWF0IGZtdCwgaW50IHJhdGUs
IGludCBjaGFubmVscyApOworCisgICAgdm9pZCBhbHNhX2Nsb3NlX3BjbSggdm9pZCApOworfTsK
KworI2VuZGlmCmRpZmYgLXVyTiBsYXN0LmZtLTEuMS4zLm9yaWcvc3JjL2Fsc2FwbGF5YmFjay9h
bHNhcGxheWJhY2suY3BwIGxhc3QuZm0tMS4xLjMvc3JjL2Fsc2FwbGF5YmFjay9hbHNhcGxheWJh
Y2suY3BwCi0tLSBsYXN0LmZtLTEuMS4zLm9yaWcvc3JjL2Fsc2FwbGF5YmFjay9hbHNhcGxheWJh
Y2suY3BwCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyBsYXN0LmZtLTEu
MS4zL3NyYy9hbHNhcGxheWJhY2svYWxzYXBsYXliYWNrLmNwcAkyMDA3LTAzLTE4IDIwOjU3OjI4
LjAwMDAwMDAwMCAtMDcwMApAQCAtMCwwICsxLDIwNSBAQAorLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor
ICogICBDb3B5cmlnaHQgKEMpIDIwMDUgLSAyMDA2IGJ5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKgorICogICAgICBDaHJpc3RpYW4gTXVlaGxoYWV1c2VyLCBMYXN0
LmZtIEx0ZCA8Y2hyaXNAbGFzdC5mbT4gICAgICAgICAgICAgICAgKgorICogICAgICBFcmlrIEph
ZWxldmlrLCBMYXN0LmZtIEx0ZCA8ZXJpa0BsYXN0LmZtPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAgKgorICogICBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSAgKgorICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAgICAgKgorICogICAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKgorICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAgKgorICogICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAg
KgorICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlICAgICAgICAgKgorICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKgorICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICAgKgorICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh
bTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKgorICogICA1MSBGcmFua2xpbiBTdGVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
KworI2luY2x1ZGUgPFF0R3VpPgorCisjaW5jbHVkZSAiYWxzYXBsYXliYWNrLmgiCisjaW5jbHVk
ZSAiY29udGFpbmVydXRpbHMuaCIKKyNpbmNsdWRlICJMb3FxZXIuaCIKKworZmxvYXQgQWxzYVBs
YXliYWNrOjptX3ZvbHVtZSA9IDAuNTsKKworCitBbHNhUGxheWJhY2s6OkFsc2FQbGF5YmFjaygp
IDoKKyAgICBtX2F1ZGlvKCAwICksCisgICAgbV90aW1lciggbmV3IFFUaW1lciggdGhpcyApICkK
K3sKKyAgICBnTG9nZ2VyLkluaXQoIHNhdmVQYXRoKCAicGxheWJhY2subG9nIiApLCBmYWxzZSAp
OworICAgIGdMb2dnZXIuU2V0TGV2ZWwoIDQgKTsKKworICAgIExPR0woIDMsICJJbml0aWFsaXNp
bmcgQWxzYUF1ZGlvIFBsYXliYWNrIiApOworICAgIGluaXRBdWRpbygpOworCisgICAgY29ubmVj
dCggbV90aW1lciwgU0lHTkFMKCB0aW1lb3V0KCkgKSwgdGhpcywgU0xPVCggY2hlY2tCdWZmZXIo
KSApICk7Cit9CisKK0Fsc2FQbGF5YmFjazo6fkFsc2FQbGF5YmFjaygpCit7CisgICAgZGVsZXRl
IG1fYXVkaW87Cit9CisKK3ZvaWQKK0Fsc2FQbGF5YmFjazo6c2V0Vm9sdW1lKCBpbnQgdm9sdW1l
ICkKK3sKKyAgICBpZiAoIG1fYXVkaW8gKQorICAgICAgICBtX2F1ZGlvLT5zZXRWb2x1bWUoIChm
bG9hdCl2b2x1bWUgLyAxMDAuMCApOworfQorCisKK1FTdHJpbmdMaXN0CitBbHNhUGxheWJhY2s6
OnNvdW5kU3lzdGVtcygpCit7CisgICAgUVN0cmluZ0xpc3QgbDsKKyAgICBsIDw8ICJBbHNhIjsK
KyAgICByZXR1cm4gbDsKK30KKworCitRU3RyaW5nTGlzdAorQWxzYVBsYXliYWNrOjpkZXZpY2Vz
KCkKK3sKKyNpZm5kZWYgUVRfTk9fREVCVUcKKyAgICBxRGVidWcoKSA8PCAiUXVlcnlpbmcgYXVk
aW8gZGV2aWNlcyI7CisjZW5kaWYKKyAgICBRU3RyaW5nTGlzdCBsOworCisgICAgaWYgKCAhbV9h
dWRpbyApCisgICAgICAgIHJldHVybiBsOworCisgICAgaW50IGNhcmRzID0gbV9hdWRpby0+Z2V0
Q2FyZHMoKTsKKyNpZm5kZWYgUVRfTk9fREVCVUcKKyAgICBxRGVidWcoKSA8PCAiRGV2aWNlIG51
bXM6IiA8PCBjYXJkczsKKyNlbmRpZgorCisgICAgZm9yICggaW50IGkgPSAwOyBpIDwgY2FyZHM7
IGkrKyApCisgICAgeworICAgICAgICBBbHNhRGV2aWNlSW5mbyBpbmZvOworICAgICAgICBpbmZv
ID0gbV9hdWRpby0+Z2V0RGV2aWNlSW5mbyggaSApOworI2lmbmRlZiBRVF9OT19ERUJVRworICAg
ICAgICBxRGVidWcoKSA8PCAiRGV2aWNlIG5hbWU6IiA8PCBpbmZvLm5hbWUgOworI2VuZGlmCisK
KyAgICAgICAgbCA8PCBpbmZvLm5hbWU7CisgICAgfQorCisgICAgcmV0dXJuIGw7Cit9CisKKwor
dm9pZAorQWxzYVBsYXliYWNrOjpzdGFydFBsYXliYWNrKCkKK3sKKyAgICBpbnQgY2hhbm5lbHMg
PSAyOworICAgIGludCBzYW1wbGVSYXRlID0gNDQxMDA7CisgICAgaW50IHBlcmlvZFNpemUgPSAx
MDI0OyAgLy8gQWNjb3JkaW5nIHRvIG1wbGF5ZXIsIHRoZXNlIHR3byBhcmUgZ29vZCBkZWZhdWx0
cy4KKyAgICBpbnQgcGVyaW9kQ291bnQgPSAxNjsgICAvLyBUaGV5IGNyZWF0ZSBhIGJ1ZmZlciBz
aXplIG9mIDE2Mzg0IGZyYW1lcy4KKyAgICBRU3RyaW5nIGNhcmREZXZpY2U7CisKKyAgICBpZiAo
ICFtX2F1ZGlvICkKKyAgICB7CisgICAgICAgIExPR0woIDEsICJObyBBbHNhQXVkaW8gaW5zdGFu
Y2UgYXZhaWxhYmxlLiIgKTsKKyAgICAgICAgZ290byBfZXJyb3I7CisgICAgfQorCisgICAgY2Fy
ZERldmljZSA9IGludGVybmFsU291bmRDYXJkSUQoKTsKKworICAgIGlmICggIW1fYXVkaW8tPmFs
c2FPcGVuKCBjYXJkRGV2aWNlLCBGTVRfUzE2X0xFLCBzYW1wbGVSYXRlLCBjaGFubmVscywgcGVy
aW9kU2l6ZSwgcGVyaW9kQ291bnQgKSApCisgICAgICAgIGdvdG8gX2Vycm9yOworCisgICAgaWYg
KCAhbV90aW1lci0+aXNBY3RpdmUoKSApCisgICAgICAgIG1fdGltZXItPnN0YXJ0KCAxNSApOwor
CisgICAgcmV0dXJuOworCitfZXJyb3I6CisgICAgLy8gV2UgbmVlZCB0byBzZW5kIGEgc3RvcCBz
aWduYWwgdG8gbV9pSW5wdXQgaGVyZSwgb3RoZXJ3aXNlCisgICAgLy8gaXQgd2lsbCBrZWVwIHJ1
bm5pbmcgYW5kIGZpbGxpbmcgdXAgdGhlIGJ1ZmZlcnMgZXZlbiB0aG91Z2gKKyAgICAvLyB0aGVy
ZSBpcyBubyBhdmFpbGFibGUgZGV2aWNlLgorICAgIGVtaXQgc3RvcCgpOworICAgIFFNZXNzYWdl
Qm94Ojpjcml0aWNhbCggcUFwcC0+YWN0aXZlV2luZG93KCksIHRyKCJBdWRpbyBFcnJvciIpLCB0
cigiTm8gc291bmRjYXJkIGF2YWlsYWJsZS4iKSk7CisgICAgcmV0dXJuOworfQorCisKK3ZvaWQK
K0Fsc2FQbGF5YmFjazo6c3RvcFBsYXliYWNrKCkKK3sKKyAgICBpZiAoICFtX2F1ZGlvICkKKyAg
ICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RpbWVyLT5zdG9wKCk7CisgICAg
bV9hdWRpby0+YWxzYUNsb3NlKCk7Cit9CisKKwordm9pZAorQWxzYVBsYXliYWNrOjppbml0QXVk
aW8oKQoreworICAgIG1fYXVkaW8gPSBuZXcgQWxzYUF1ZGlvKCk7CisKKyAgICBpZiAoIG1fYXVk
aW8gKQorICAgIHsKKyAgICAgICAgTE9HTCggMSwgIkFsc2FBdWRpbyBzdWNjZXNzZnVsbHkgaW5p
dGlhbGlzZWQuIiApOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBMT0dMKCAxLCAi
SW5pdGlhbGlzaW5nIEFsc2FBdWRpbyBmYWlsZWQuIiApOworICAgIH0KK30KKworCit2b2lkCitB
bHNhUGxheWJhY2s6OmRhdGFBdmFpbGFibGUoIGNvbnN0IFFCeXRlQXJyYXkgJmJ1ZmZlciApCit7
CisgICAgbV9hdWRpby0+YWxzYVdyaXRlKCAmYnVmZmVyICk7Cit9CisKKwordm9pZAorQWxzYVBs
YXliYWNrOjpjbGVhckJ1ZmZlcnMoKQoreworICAgIG1fYXVkaW8tPmNsZWFyQnVmZmVyKCk7Cit9
CisKKwordm9pZAorQWxzYVBsYXliYWNrOjpjaGVja0J1ZmZlcigpCit7CisgICAgLy8gTk9URTog
dGhpcyBpcyB3YXZlZGF0YSEgMTZrYiBvZiB3YXZlZGF0YSBhcHJveC4gZXF1YWxzIDEuNmtiIG9m
IG1wMworICAgIGlmICggbV9hdWRpby0+YnVmZmVyU2l6ZSgpIDwgMTYzODQgKiAxMiApCisgICAg
ICAgIGVtaXQgbmVlZERhdGEoKTsKK30KKworCitRU3RyaW5nCitBbHNhUGxheWJhY2s6OmludGVy
bmFsU291bmRDYXJkSUQoKQoreworICAgIGlmICggIW1fYXVkaW8gKQorICAgICAgICByZXR1cm4g
IiI7CisKKyAgICBpbnQgY2FyZHMgPSBtX2F1ZGlvLT5nZXRDYXJkcygpOworCisgICAgaW50IGNh
cmRudW0gPSBzZXR0aW5nc1NlcnZpY2UoKS0+c291bmRDYXJkKCk7CisKKyAgICBpZiAoIGNhcmRu
dW0gPCBjYXJkcyApCisgICAgeworICAgICAgICBBbHNhRGV2aWNlSW5mbyBpbmZvOworICAgICAg
ICBpbmZvID0gbV9hdWRpby0+Z2V0RGV2aWNlSW5mbyggY2FyZG51bSApOworICAgICAgICByZXR1
cm4gaW5mby5kZXZpY2U7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuICJkZWZhdWx0
IjsKK30KKworCitRX0VYUE9SVF9QTFVHSU4yKCBwbGF5YmFjaywgQWxzYVBsYXliYWNrICkKZGlm
ZiAtdXJOIGxhc3QuZm0tMS4xLjMub3JpZy9zcmMvYWxzYXBsYXliYWNrL2Fsc2FwbGF5YmFjay5o
IGxhc3QuZm0tMS4xLjMvc3JjL2Fsc2FwbGF5YmFjay9hbHNhcGxheWJhY2suaAotLS0gbGFzdC5m
bS0xLjEuMy5vcmlnL3NyYy9hbHNhcGxheWJhY2svYWxzYXBsYXliYWNrLmgJMTk2OS0xMi0zMSAx
NjowMDowMC4wMDAwMDAwMDAgLTA4MDAKKysrIGxhc3QuZm0tMS4xLjMvc3JjL2Fsc2FwbGF5YmFj
ay9hbHNhcGxheWJhY2suaAkyMDA3LTAzLTE4IDIwOjU3OjI4LjAwMDAwMDAwMCAtMDcwMApAQCAt
MCwwICsxLDcxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgIENvcHlyaWdodCAoQykgMjAw
NSAtIDIwMDYgYnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisg
KiAgICAgIENocmlzdGlhbiBNdWVobGhhZXVzZXIsIExhc3QuZm0gTHRkIDxjaHJpc0BsYXN0LmZt
PiAgICAgICAgICAgICAgICAqCisgKiAgICAgIEVyaWsgSmFlbGV2aWssIExhc3QuZm0gTHRkIDxl
cmlrQGxhc3QuZm0+ICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqCisgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqCisgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5ICAqCisgKiAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yICAgICAqCisgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAg
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLCAgICAgICAqCisgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAqCisgKiAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgICAgICAgICAq
CisgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAg
ICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
ICAgICAqCisgKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIDUx
IEZyYW5rbGluIFN0ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNywgVVNB
LiAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIEFMU0FQTEFZQkFD
S19ICisjZGVmaW5lIEFMU0FQTEFZQkFDS19ICisKKyNpbmNsdWRlIDxwbGF5YmFja2ludGVyZmFj
ZS5oPgorI2luY2x1ZGUgImFsc2FhdWRpby5oIgorCisjaW5jbHVkZSA8UU9iamVjdD4KKyNpbmNs
dWRlIDxRVGltZXI+CisKK2NsYXNzIEFsc2FQbGF5YmFjayA6IHB1YmxpYyBQbGF5YmFja0ludGVy
ZmFjZQoreworICAgIFFfT0JKRUNUCisgICAgUV9JTlRFUkZBQ0VTKCBQbGF5YmFja0ludGVyZmFj
ZSApCisKKyAgICBwdWJsaWM6CisgICAgICAgIEFsc2FQbGF5YmFjaygpOworICAgICAgICB+QWxz
YVBsYXliYWNrKCk7CisKKyAgICAgICAgdm9pZCBpbml0QXVkaW8oKTsKKyAgICAgICAgZmxvYXQg
dm9sdW1lKCkgeyByZXR1cm4gbV92b2x1bWU7IH0KKworICAgICAgICBRU3RyaW5nTGlzdCBzb3Vu
ZFN5c3RlbXMoKTsKKyAgICAgICAgUVN0cmluZ0xpc3QgZGV2aWNlcygpOworCisgICAgICAgIHN0
YXRpYyBmbG9hdCBtX3ZvbHVtZTsKKworICAgIHNpZ25hbHM6CisgICAgICAgIHZvaWQgbmVlZERh
dGEoKTsKKyAgICAgICAgdm9pZCBzdG9wKCk7ICAgIC8vIGNvbm5lY3RlZCB0byBtX2lJbnB1dDo6
c3RvcCgpCisKKyAgICBwdWJsaWMgc2xvdHM6CisgICAgICAgIHZvaWQgZGF0YUF2YWlsYWJsZSgg
Y29uc3QgUUJ5dGVBcnJheSAmYnVmZmVyICk7CisgICAgICAgIHZvaWQgY2xlYXJCdWZmZXJzKCk7
CisKKyAgICAgICAgdm9pZCBzdGFydFBsYXliYWNrKCk7CisgICAgICAgIHZvaWQgc3RvcFBsYXli
YWNrKCk7CisKKyAgICAgICAgdm9pZCBzZXRWb2x1bWUoIGludCB2b2x1bWUgKTsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIEFsc2FBdWRpbyAqbV9hdWRpbzsKKyAgICAgICAgUVRpbWVyICptX3Rp
bWVyOworCisgICAgICAgIFFTdHJpbmcgaW50ZXJuYWxTb3VuZENhcmRJRCgpOworCisgICAgcHJp
dmF0ZSBzbG90czoKKyAgICAgICAgdm9pZCBjaGVja0J1ZmZlcigpOworfTsKKworI2VuZGlmCmRp
ZmYgLXVyTiBsYXN0LmZtLTEuMS4zLm9yaWcvc3JjL2Fsc2FwbGF5YmFjay9hbHNhcGxheWJhY2su
cHJvIGxhc3QuZm0tMS4xLjMvc3JjL2Fsc2FwbGF5YmFjay9hbHNhcGxheWJhY2sucHJvCi0tLSBs
YXN0LmZtLTEuMS4zLm9yaWcvc3JjL2Fsc2FwbGF5YmFjay9hbHNhcGxheWJhY2sucHJvCTE5Njkt
MTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyBsYXN0LmZtLTEuMS4zL3NyYy9hbHNh
cGxheWJhY2svYWxzYXBsYXliYWNrLnBybwkyMDA3LTAzLTE4IDIwOjU3OjI4LjAwMDAwMDAwMCAt
MDcwMApAQCAtMCwwICsxLDE5IEBACitURU1QTEFURSAgICAgID0gbGliCitDT05GSUcgICAgICAg
Kz0gcGx1Z2luCitJTkNMVURFUEFUSCAgKz0gLi4vIC4uL2xpYkxhc3RGTVRvb2xzCitMT0dHRVJE
SVIgICAgID0gLi4vYnVpbGQKK0xJQlMgICAgICAgICArPSAtTC4uLy4uL2JpbiAtbExhc3RGTVRv
b2xzIC1sYXNvdW5kCitPQkpFQ1RTX0RJUiA9IC4uL2J1aWxkCitNT0NfRElSID0gLi4vYnVpbGQK
K1VJX0RJUiA9IC4uL2J1aWxkCitUQVJHRVQgID0gcGxheWJhY2tfYWxzYWF1ZGlvCitERVNURElS
ID0gLi4vLi4vYmluL3NlcnZpY2VzCisKK2luY2x1ZGUoLi4vLi4vZGVmaW5pdGlvbnMucHJvLmlu
YykKKworSEVBREVSUyAgICAgICA9IGFsc2FwbGF5YmFjay5oIGFsc2FhdWRpby5oIHhjb252ZXJ0
LmgKK1NPVVJDRVMgICAgICAgPSBhbHNhcGxheWJhY2suY3BwIGFsc2FhdWRpby5jcHAgeGNvbnZl
cnQuYworCitMSUJTICs9ICQkTE9HR0VSRElSL0xvcXFlci5vCisKK1FUICs9IGd1aSB4bWwgbmV0
d29yawpkaWZmIC11ck4gbGFzdC5mbS0xLjEuMy5vcmlnL3NyYy9hbHNhcGxheWJhY2svcHJlY29t
cGlsZWQuaCBsYXN0LmZtLTEuMS4zL3NyYy9hbHNhcGxheWJhY2svcHJlY29tcGlsZWQuaAotLS0g
bGFzdC5mbS0xLjEuMy5vcmlnL3NyYy9hbHNhcGxheWJhY2svcHJlY29tcGlsZWQuaAkxOTY5LTEy
LTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysgbGFzdC5mbS0xLjEuMy9zcmMvYWxzYXBs
YXliYWNrL3ByZWNvbXBpbGVkLmgJMjAwNy0wMy0xOCAyMDo1NzoyOC4wMDAwMDAwMDAgLTA3MDAK
QEAgLTAsMCArMSwzMCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgQ29weXJpZ2h0IChD
KSAyMDA1IC0gMjAwNiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICoNCisgKiAgICAgIENocmlzdGlhbiBNdWVobGhhZXVzZXIsIExhc3QuZm0gTHRkIDxjaHJpc0Bs
YXN0LmZtPiAgICAgICAgICAgICAgICAqDQorICogICAgICBFcmlrIEphZWxldmlrLCBMYXN0LmZt
IEx0ZCA8ZXJpa0BsYXN0LmZtPiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICoNCisgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5ICAqDQorICogICBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSAgKg0K
KyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgICAgICoNCisgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKg0KKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgICAgICoNCisgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAqDQorICog
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlICAgICAgICAgKg0KKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqDQorICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSAgICAgKg0KKyAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07
IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqDQorICogICA1MSBGcmFua2xpbiBTdGVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgKg0KKyAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
DQorDQorLyogQWRkIEMgaW5jbHVkZXMgaGVyZSAqLw0KKw0KKyNpZiBkZWZpbmVkIF9fY3BsdXNw
bHVzDQorICAgIC8qIEFkZCBDKysgaW5jbHVkZXMgaGVyZSAqLw0KKyAgICAjaW5jbHVkZSA8UXRD
b3JlPg0KKyAgICAjaW5jbHVkZSA8UXRHdWk+DQorICAgICNpbmNsdWRlIDxRdE5ldHdvcms+DQor
ICAgICNpbmNsdWRlIDxRdFhtbD4NCisjZW5kaWYgLy8gX19jcGx1c3BsdXMNCmRpZmYgLXVyTiBs
YXN0LmZtLTEuMS4zLm9yaWcvc3JjL2Fsc2FwbGF5YmFjay94Y29udmVydC5jIGxhc3QuZm0tMS4x
LjMvc3JjL2Fsc2FwbGF5YmFjay94Y29udmVydC5jCi0tLSBsYXN0LmZtLTEuMS4zLm9yaWcvc3Jj
L2Fsc2FwbGF5YmFjay94Y29udmVydC5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0w
ODAwCisrKyBsYXN0LmZtLTEuMS4zL3NyYy9hbHNhcGxheWJhY2sveGNvbnZlcnQuYwkyMDA3LTAz
LTE4IDIwOjU3OjI4LjAwMDAwMDAwMCAtMDcwMApAQCAtMCwwICsxLDc3MSBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDEtMjAwMyAgSGFhdmFyZCBLdmFhbGVuIDxoYXZhcmRrQHhtbXMub3Jn
PgorICoKKyAqICBMaWNlbnNlZCB1bmRlciBHTlUgTEdQTCB2ZXJzaW9uIDIuCisgKi8KKworI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgInhjb252ZXJ0
LmgiCisKKy8vIFRoZXNlIGFyZSBhZGFwdGVkIGZyb20gZGVmaW5lcyBpbiBndHlwZXMuaCBhbmQg
Z2xpYmNvbmZpZy5oCisjaWZuZGVmIEZBTFNFCisjZGVmaW5lIEZBTFNFICAgICggMCApCisjZW5k
aWYKKworI2lmbmRlZiBUUlVFCisjZGVmaW5lIFRSVUUgICAgKCAhRkFMU0UgKQorI2VuZGlmCisK
KyMgZGVmaW5lIEdVSU5UMTZfU1dBUF9MRV9CRSggdmFsICkgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAoICggdWludDE2X3QgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICggdWludDE2X3QgKSAoICggdWludDE2X3Qg
KSAoIHZhbCApID4+IDggKSB8ICAgIFwKKyAgICAgICAgICAgICggdWludDE2X3QgKSAoICggdWlu
dDE2X3QgKSAoIHZhbCApIDw8IDggKSAgICAgIFwKKyAgICAgICAgKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICApCisKKyMgZGVmaW5lIEdJ
TlQxNl9TV0FQX0xFX0JFKCB2YWwgKSAgICAoICggaW50MTZfdCApIEdVSU5UMTZfU1dBUF9MRV9C
RSAoIHZhbCApICkKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCisjIGRlZmluZSBJU19CSUdf
RU5ESUFOIFRSVUUKKworIyBkZWZpbmUgR0lOVDE2X1RPX0JFKCB2YWwgKSAgICAgICAoICggaW50
MTZfdCApICggdmFsICkgKQorIyBkZWZpbmUgR0lOVDE2X0ZST01fQkUoIHZhbCApICAgICAoICgg
aW50MTZfdCApICggdmFsICkgKQorIyBkZWZpbmUgR1VJTlQxNl9UT19CRSggdmFsICkgICAgICAo
ICggdWludDE2X3QgKSAoIHZhbCApICkKKyMgZGVmaW5lIEdVSU5UMTZfRlJPTV9CRSggdmFsICkg
ICAgKCAoIHVpbnQxNl90ICkgKCB2YWwgKSApCisKKyMgZGVmaW5lIEdVSU5UMTZfVE9fTEUoIHZh
bCApICAgICAgKCBHVUlOVDE2X1NXQVBfTEVfQkUgKCB2YWwgKSApCisjIGRlZmluZSBHVUlOVDE2
X0ZST01fTEUoIHZhbCApICAgICggR1VJTlQxNl9TV0FQX0xFX0JFICggdmFsICkgKQorIyBkZWZp
bmUgR0lOVDE2X1RPX0xFKCB2YWwgKSAgICAgICAoICggaW50MTZfdCApIEdVSU5UMTZfU1dBUF9M
RV9CRSAoIHZhbCApICkKKyMgZGVmaW5lIEdJTlQxNl9GUk9NX0xFKCB2YWwgKSAgICAgKCAoIGlu
dDE2X3QgKSBHVUlOVDE2X1NXQVBfTEVfQkUgKCB2YWwgKSApCisKKyNlbHNlCisKKyMgZGVmaW5l
IElTX0JJR19FTkRJQU4gRkFMU0UKKworIyBkZWZpbmUgR0lOVDE2X1RPX0xFKCB2YWwgKSAgICAg
ICAoICggaW50MTZfdCApICggdmFsICkgKQorIyBkZWZpbmUgR0lOVDE2X0ZST01fTEUoIHZhbCAp
ICAgICAoICggaW50MTZfdCApICggdmFsICkgKQorIyBkZWZpbmUgR1VJTlQxNl9UT19MRSggdmFs
ICkgICAgICAoICggdWludDE2X3QgKSAoIHZhbCApICkKKyMgZGVmaW5lIEdVSU5UMTZfRlJPTV9M
RSggdmFsICkgICAgKCAoIHVpbnQxNl90ICkgKCB2YWwgKSApCisKKyMgZGVmaW5lIEdVSU5UMTZf
VE9fQkUoIHZhbCApICAgICAgKCBHVUlOVDE2X1NXQVBfTEVfQkUgKCB2YWwgKSApCisjIGRlZmlu
ZSBHVUlOVDE2X0ZST01fQkUoIHZhbCApICAgICggR1VJTlQxNl9TV0FQX0xFX0JFICggdmFsICkg
KQorIyBkZWZpbmUgR0lOVDE2X1RPX0JFKCB2YWwgKSAgICAgICAoICggaW50MTZfdCApIEdVSU5U
MTZfU1dBUF9MRV9CRSAoIHZhbCApICkKKyMgZGVmaW5lIEdJTlQxNl9GUk9NX0JFKCB2YWwgKSAg
ICAgKCAoIGludDE2X3QgKSBHVUlOVDE2X1NXQVBfTEVfQkUgKCB2YWwgKSApCisKKyNlbmRpZgor
CisKK3N0cnVjdCBidWZmZXIgeworICAgIHZvaWQgKmJ1ZmZlcjsKKyAgICB1aW50IHNpemU7Cit9
OworCitzdHJ1Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMgeworICAgIHN0cnVjdCBidWZmZXIgZm9y
bWF0X2J1ZmZlciwgc3RlcmVvX2J1ZmZlciwgZnJlcV9idWZmZXI7Cit9OworCitzdHJ1Y3QgeG1t
c19jb252ZXJ0X2J1ZmZlcnMqIHhtbXNfY29udmVydF9idWZmZXJzX25ldyggdm9pZCApCit7Cisg
ICAgcmV0dXJuIGNhbGxvYyggMSwgc2l6ZW9mKCBzdHJ1Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMg
KSApOworfQorCitzdGF0aWMgdm9pZCogY29udmVydF9nZXRfYnVmZmVyKCBzdHJ1Y3QgYnVmZmVy
ICpidWZmZXIsIHNpemVfdCBzaXplICkKK3sKKyAgICBpZiAoIHNpemUgPiAwICYmIHNpemUgPD0g
YnVmZmVyLT5zaXplICkKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+YnVmZmVyOworCisgICAgYnVm
ZmVyLT5zaXplID0gc2l6ZTsKKyAgICBidWZmZXItPmJ1ZmZlciA9IHJlYWxsb2MoIGJ1ZmZlci0+
YnVmZmVyLCBzaXplICk7CisgICAgcmV0dXJuIGJ1ZmZlci0+YnVmZmVyOworfQorCit2b2lkIHht
bXNfY29udmVydF9idWZmZXJzX2ZyZWUoIHN0cnVjdCB4bW1zX2NvbnZlcnRfYnVmZmVycyogYnVm
ICkKK3sKKyAgICBjb252ZXJ0X2dldF9idWZmZXIoICZidWYtPmZvcm1hdF9idWZmZXIsIDAgKTsK
KyAgICBjb252ZXJ0X2dldF9idWZmZXIoICZidWYtPnN0ZXJlb19idWZmZXIsIDAgKTsKKyAgICBj
b252ZXJ0X2dldF9idWZmZXIoICZidWYtPmZyZXFfYnVmZmVyLCAwICk7Cit9CisKK3ZvaWQgeG1t
c19jb252ZXJ0X2J1ZmZlcnNfZGVzdHJveSggc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBi
dWYgKQoreworICAgIGlmICggIWJ1ZiApCisgICAgICAgIHJldHVybjsKKyAgICB4bW1zX2NvbnZl
cnRfYnVmZmVyc19mcmVlKCBidWYgKTsKKyAgICBmcmVlKCBidWYgKTsKK30KKworc3RhdGljIGlu
dCBjb252ZXJ0X3N3YXBfZW5kaWFuKCBzdHJ1Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1Ziwg
dm9pZCAqKmRhdGEsIGludCBsZW5ndGggKQoreworICAgIHVpbnQxNl90ICpwdHIgPSAqZGF0YTsK
KyAgICBpbnQgaTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAyLCBwdHIrKyAp
CisgICAgICAgICpwdHIgPSBHVUlOVDE2X1NXQVBfTEVfQkUoICpwdHIgKTsKKworICAgIHJldHVy
biBpOworfQorCitzdGF0aWMgaW50IGNvbnZlcnRfc3dhcF9zaWduX2FuZF9lbmRpYW5fdG9fbmF0
aXZlKCBzdHJ1Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1Ziwgdm9pZCAqKmRhdGEsIGludCBs
ZW5ndGggKQoreworICAgIHVpbnQxNl90ICpwdHIgPSAqZGF0YTsKKyAgICBpbnQgaTsKKyAgICBm
b3IgKCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAyLCBwdHIrKyApCisgICAgICAgICpwdHIgPSBH
VUlOVDE2X1NXQVBfTEVfQkUoICpwdHIgKSBeIDEgPDwgMTU7CisKKyAgICByZXR1cm4gaTsKK30K
Kworc3RhdGljIGludCBjb252ZXJ0X3N3YXBfc2lnbl9hbmRfZW5kaWFuX3RvX2FsaWVuKCBzdHJ1
Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1Ziwgdm9pZCAqKmRhdGEsIGludCBsZW5ndGggKQor
eworICAgIHVpbnQxNl90ICpwdHIgPSAqZGF0YTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKCBpID0g
MDsgaSA8IGxlbmd0aDsgaSArPSAyLCBwdHIrKyApCisgICAgICAgICpwdHIgPSBHVUlOVDE2X1NX
QVBfTEVfQkUoICpwdHIgXiAxIDw8IDE1ICk7CisKKyAgICByZXR1cm4gaTsKK30KKworc3RhdGlj
IGludCBjb252ZXJ0X3N3YXBfc2lnbjE2KCBzdHJ1Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1
Ziwgdm9pZCAqKmRhdGEsIGludCBsZW5ndGggKQoreworICAgIGludDE2X3QgKnB0ciA9ICpkYXRh
OworICAgIGludCBpOworICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDIsIHB0cisr
ICkKKyAgICAgICAgKnB0ciBePSAxIDw8IDE1OworCisgICAgcmV0dXJuIGk7Cit9CisKK3N0YXRp
YyBpbnQgY29udmVydF9zd2FwX3NpZ244KCBzdHJ1Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1
Ziwgdm9pZCAqKmRhdGEsIGludCBsZW5ndGggKQoreworICAgIGludDhfdCAqcHRyID0gKmRhdGE7
CisgICAgaW50IGk7CisgICAgZm9yICggaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApCisgICAgICAg
ICpwdHIrKyBePSAxIDw8IDc7CisKKyAgICByZXR1cm4gaTsKK30KKworc3RhdGljIGludCBjb252
ZXJ0X3RvXzhfbmF0aXZlX2VuZGlhbiggc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBidWYs
IHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoICkKK3sKKyAgICBpbnQ4X3QgKm91dHB1dCA9ICpkYXRh
OworICAgIGludDE2X3QgKmlucHV0ID0gKmRhdGE7CisgICAgaW50IGk7CisgICAgZm9yICggaSA9
IDA7IGkgPCBsZW5ndGggLyAyOyBpKysgKQorICAgICAgICAqb3V0cHV0KysgPSAqaW5wdXQrKyA+
PiA4OworCisgICAgcmV0dXJuIGk7Cit9CisKK3N0YXRpYyBpbnQgY29udmVydF90b184X25hdGl2
ZV9lbmRpYW5fc3dhcF9zaWduKCBzdHJ1Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1Ziwgdm9p
ZCAqKmRhdGEsIGludCBsZW5ndGggKQoreworICAgIGludDhfdCAqb3V0cHV0ID0gKmRhdGE7Cisg
ICAgaW50MTZfdCAqaW5wdXQgPSAqZGF0YTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKCBpID0gMDsg
aSA8IGxlbmd0aCAvIDI7IGkrKyApCisgICAgICAgICpvdXRwdXQrKyA9ICggKmlucHV0KysgPj4g
OCApIF4gKCAxIDw8IDcgKTsKKworICAgIHJldHVybiBpOworfQorCisKK3N0YXRpYyBpbnQgY29u
dmVydF90b184X2FsaWVuX2VuZGlhbiggc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBidWYs
IHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoICkKK3sKKyAgICBpbnQ4X3QgKm91dHB1dCA9ICpkYXRh
OworICAgIGludDE2X3QgKmlucHV0ID0gKmRhdGE7CisgICAgaW50IGk7CisgICAgZm9yICggaSA9
IDA7IGkgPCBsZW5ndGggLyAyOyBpKysgKQorICAgICAgICAqb3V0cHV0KysgPSAqaW5wdXQrKyAm
IDB4ZmY7CisKKyAgICByZXR1cm4gaTsKK30KKworc3RhdGljIGludCBjb252ZXJ0X3RvXzhfYWxp
ZW5fZW5kaWFuX3N3YXBfc2lnbiggc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBidWYsIHZv
aWQgKipkYXRhLCBpbnQgbGVuZ3RoICkKK3sKKyAgICBpbnQ4X3QgKm91dHB1dCA9ICpkYXRhOwor
ICAgIGludDE2X3QgKmlucHV0ID0gKmRhdGE7CisgICAgaW50IGk7CisgICAgZm9yICggaSA9IDA7
IGkgPCBsZW5ndGggLyAyOyBpKysgKQorICAgICAgICAqb3V0cHV0KysgPSAoICppbnB1dCsrICYg
MHhmZiApIF4gKCAxIDw8IDcgKTsKKworICAgIHJldHVybiBpOworfQorCitzdGF0aWMgaW50IGNv
bnZlcnRfdG9fMTZfbmF0aXZlX2VuZGlhbiggc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBi
dWYsIHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoICkKK3sKKyAgICB1aW50OF90ICppbnB1dCA9ICpk
YXRhOworICAgIHVpbnQxNl90ICpvdXRwdXQ7CisgICAgaW50IGk7CisgICAgKmRhdGEgPSBjb252
ZXJ0X2dldF9idWZmZXIoICZidWYtPmZvcm1hdF9idWZmZXIsIGxlbmd0aCAqIDIgKTsKKyAgICBv
dXRwdXQgPSAqZGF0YTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrICkKKyAgICAg
ICAgKm91dHB1dCsrID0gKmlucHV0KysgPDwgODsKKworICAgIHJldHVybiBpICogMjsKK30KKwor
c3RhdGljIGludCBjb252ZXJ0X3RvXzE2X25hdGl2ZV9lbmRpYW5fc3dhcF9zaWduKCBzdHJ1Y3Qg
eG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1Ziwgdm9pZCAqKmRhdGEsIGludCBsZW5ndGggKQorewor
ICAgIHVpbnQ4X3QgKmlucHV0ID0gKmRhdGE7CisgICAgdWludDE2X3QgKm91dHB1dDsKKyAgICBp
bnQgaTsKKyAgICAqZGF0YSA9IGNvbnZlcnRfZ2V0X2J1ZmZlciggJmJ1Zi0+Zm9ybWF0X2J1ZmZl
ciwgbGVuZ3RoICogMiApOworICAgIG91dHB1dCA9ICpkYXRhOworICAgIGZvciAoIGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKysgKQorICAgICAgICAqb3V0cHV0KysgPSAoICppbnB1dCsrIDw8IDggKSBe
ICggMSA8PCAxNSApOworCisgICAgcmV0dXJuIGkgKiAyOworfQorCisKK3N0YXRpYyBpbnQgY29u
dmVydF90b18xNl9hbGllbl9lbmRpYW4oIHN0cnVjdCB4bW1zX2NvbnZlcnRfYnVmZmVycyogYnVm
LCB2b2lkICoqZGF0YSwgaW50IGxlbmd0aCApCit7CisgICAgdWludDhfdCAqaW5wdXQgPSAqZGF0
YTsKKyAgICB1aW50MTZfdCAqb3V0cHV0OworICAgIGludCBpOworICAgICpkYXRhID0gY29udmVy
dF9nZXRfYnVmZmVyKCAmYnVmLT5mb3JtYXRfYnVmZmVyLCBsZW5ndGggKiAyICk7CisgICAgb3V0
cHV0ID0gKmRhdGE7CisgICAgZm9yICggaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApCisgICAgICAg
ICpvdXRwdXQrKyA9ICppbnB1dCsrOworCisgICAgcmV0dXJuIGkgKiAyOworfQorCitzdGF0aWMg
aW50IGNvbnZlcnRfdG9fMTZfYWxpZW5fZW5kaWFuX3N3YXBfc2lnbiggc3RydWN0IHhtbXNfY29u
dmVydF9idWZmZXJzKiBidWYsIHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoICkKK3sKKyAgICB1aW50
OF90ICppbnB1dCA9ICpkYXRhOworICAgIHVpbnQxNl90ICpvdXRwdXQ7CisgICAgaW50IGk7Cisg
ICAgKmRhdGEgPSBjb252ZXJ0X2dldF9idWZmZXIoICZidWYtPmZvcm1hdF9idWZmZXIsIGxlbmd0
aCAqIDIgKTsKKyAgICBvdXRwdXQgPSAqZGF0YTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrICkKKyAgICAgICAgKm91dHB1dCsrID0gKmlucHV0KysgXiAoIDEgPDwgNyApOworCisg
ICAgcmV0dXJuIGkgKiAyOworfQorCitzdGF0aWMgQUZvcm1hdCB1bm5hdGl2aXplKCBBRm9ybWF0
IGZtdCApCit7CisgICAgaWYgKCBmbXQgPT0gRk1UX1MxNl9ORSApCisgICAgeworICAgICAgICBp
ZiAoIElTX0JJR19FTkRJQU4gKQorICAgICAgICAgICAgcmV0dXJuIEZNVF9TMTZfQkU7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBGTVRfUzE2X0xFOworICAgIH0KKyAgICBpZiAo
IGZtdCA9PSBGTVRfVTE2X05FICkKKyAgICB7CisgICAgICAgIGlmICggSVNfQklHX0VORElBTiAp
CisgICAgICAgICAgICByZXR1cm4gRk1UX1UxNl9CRTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmV0dXJuIEZNVF9VMTZfTEU7CisgICAgfQorICAgIHJldHVybiBmbXQ7Cit9CisKK2NvbnZl
cnRfZnVuY190IHhtbXNfY29udmVydF9nZXRfZnVuYyggQUZvcm1hdCBvdXRwdXQsIEFGb3JtYXQg
aW5wdXQgKQoreworICAgIG91dHB1dCA9IHVubmF0aXZpemUoIG91dHB1dCApOworICAgIGlucHV0
ID0gdW5uYXRpdml6ZSggaW5wdXQgKTsKKworICAgIGlmICggb3V0cHV0ID09IGlucHV0ICkKKyAg
ICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoICggb3V0cHV0ID09IEZNVF9VMTZfQkUgJiYg
aW5wdXQgPT0gRk1UX1UxNl9MRSApIHx8CisgICAgICAgICAoIG91dHB1dCA9PSBGTVRfVTE2X0xF
ICYmIGlucHV0ID09IEZNVF9VMTZfQkUgKSB8fAorICAgICAgICAgKCBvdXRwdXQgPT0gRk1UX1Mx
Nl9CRSAmJiBpbnB1dCA9PSBGTVRfUzE2X0xFICkgfHwKKyAgICAgICAgICggb3V0cHV0ID09IEZN
VF9TMTZfTEUgJiYgaW5wdXQgPT0gRk1UX1MxNl9CRSApICkKKyAgICAgICAgcmV0dXJuIGNvbnZl
cnRfc3dhcF9lbmRpYW47CisKKyAgICBpZiAoICggb3V0cHV0ID09IEZNVF9VMTZfQkUgJiYgaW5w
dXQgPT0gRk1UX1MxNl9CRSApIHx8CisgICAgICAgICAoIG91dHB1dCA9PSBGTVRfVTE2X0xFICYm
IGlucHV0ID09IEZNVF9TMTZfTEUgKSB8fAorICAgICAgICAgKCBvdXRwdXQgPT0gRk1UX1MxNl9C
RSAmJiBpbnB1dCA9PSBGTVRfVTE2X0JFICkgfHwKKyAgICAgICAgICggb3V0cHV0ID09IEZNVF9T
MTZfTEUgJiYgaW5wdXQgPT0gRk1UX1UxNl9MRSApICkKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRf
c3dhcF9zaWduMTY7CisKKyAgICBpZiAoICggSVNfQklHX0VORElBTiAmJgorICAgICAgICAgKCAo
IG91dHB1dCA9PSBGTVRfVTE2X0JFICYmIGlucHV0ID09IEZNVF9TMTZfTEUgKSB8fAorICAgICAg
ICAgICAoIG91dHB1dCA9PSBGTVRfUzE2X0JFICYmIGlucHV0ID09IEZNVF9VMTZfTEUgKSApICkg
fHwKKyAgICAgICAgKCAhSVNfQklHX0VORElBTiAmJgorICAgICAgICAgKCAoIG91dHB1dCA9PSBG
TVRfVTE2X0xFICYmIGlucHV0ID09IEZNVF9TMTZfQkUgKSB8fAorICAgICAgICAgICAoIG91dHB1
dCA9PSBGTVRfUzE2X0xFICYmIGlucHV0ID09IEZNVF9VMTZfQkUgKSApICkgKQorICAgICAgICBy
ZXR1cm4gY29udmVydF9zd2FwX3NpZ25fYW5kX2VuZGlhbl90b19uYXRpdmU7CisKKyAgICBpZiAo
ICggIUlTX0JJR19FTkRJQU4gJiYKKyAgICAgICAgICggKCBvdXRwdXQgPT0gRk1UX1UxNl9CRSAm
JiBpbnB1dCA9PSBGTVRfUzE2X0xFICkgfHwKKyAgICAgICAgICAgKCBvdXRwdXQgPT0gRk1UX1Mx
Nl9CRSAmJiBpbnB1dCA9PSBGTVRfVTE2X0xFICkgKSApIHx8CisgICAgICAgICggSVNfQklHX0VO
RElBTiAmJgorICAgICAgICAgKCAoIG91dHB1dCA9PSBGTVRfVTE2X0xFICYmIGlucHV0ID09IEZN
VF9TMTZfQkUgKSB8fAorICAgICAgICAgICAoIG91dHB1dCA9PSBGTVRfUzE2X0xFICYmIGlucHV0
ID09IEZNVF9VMTZfQkUgKSApICkgKQorICAgICAgICByZXR1cm4gY29udmVydF9zd2FwX3NpZ25f
YW5kX2VuZGlhbl90b19hbGllbjsKKworICAgIGlmICggKCBJU19CSUdfRU5ESUFOICYmCisgICAg
ICAgICAoICggb3V0cHV0ID09IEZNVF9VOCAmJiBpbnB1dCA9PSBGTVRfVTE2X0JFICkgfHwKKyAg
ICAgICAgICAgKCBvdXRwdXQgPT0gRk1UX1M4ICYmIGlucHV0ID09IEZNVF9TMTZfQkUgKSApICkg
fHwKKyAgICAgICAgKCAhSVNfQklHX0VORElBTiAmJgorICAgICAgICAgKCAoIG91dHB1dCA9PSBG
TVRfVTggJiYgaW5wdXQgPT0gRk1UX1UxNl9MRSApIHx8CisgICAgICAgICAgICggb3V0cHV0ID09
IEZNVF9TOCAmJiBpbnB1dCA9PSBGTVRfUzE2X0xFICkgKSApICkKKyAgICAgICAgcmV0dXJuIGNv
bnZlcnRfdG9fOF9uYXRpdmVfZW5kaWFuOworCisgICAgaWYgKCAoIElTX0JJR19FTkRJQU4gJiYK
KyAgICAgICAgICggKCBvdXRwdXQgPT0gRk1UX1U4ICYmIGlucHV0ID09IEZNVF9TMTZfQkUgKSB8
fAorICAgICAgICAgICAoIG91dHB1dCA9PSBGTVRfUzggJiYgaW5wdXQgPT0gRk1UX1UxNl9CRSAp
ICkgKSB8fAorICAgICAgICAoICFJU19CSUdfRU5ESUFOICYmCisgICAgICAgICAoICggb3V0cHV0
ID09IEZNVF9VOCAmJiBpbnB1dCA9PSBGTVRfUzE2X0xFICkgfHwKKyAgICAgICAgICAgKCBvdXRw
dXQgPT0gRk1UX1M4ICYmIGlucHV0ID09IEZNVF9VMTZfTEUgKSApICkgKQorICAgICAgICByZXR1
cm4gY29udmVydF90b184X25hdGl2ZV9lbmRpYW5fc3dhcF9zaWduOworCisgICAgaWYgKCAoICFJ
U19CSUdfRU5ESUFOICYmCisgICAgICAgICAoICggb3V0cHV0ID09IEZNVF9VOCAmJiBpbnB1dCA9
PSBGTVRfVTE2X0JFICkgfHwKKyAgICAgICAgICAgKCBvdXRwdXQgPT0gRk1UX1M4ICYmIGlucHV0
ID09IEZNVF9TMTZfQkUgKSApICkgfHwKKyAgICAgICAgKCBJU19CSUdfRU5ESUFOICYmCisgICAg
ICAgICAoICggb3V0cHV0ID09IEZNVF9VOCAmJiBpbnB1dCA9PSBGTVRfVTE2X0xFICkgfHwKKyAg
ICAgICAgICAgKCBvdXRwdXQgPT0gRk1UX1M4ICYmIGlucHV0ID09IEZNVF9TMTZfTEUgKSApICkg
KQorICAgICAgICByZXR1cm4gY29udmVydF90b184X2FsaWVuX2VuZGlhbjsKKworICAgIGlmICgg
KCAhSVNfQklHX0VORElBTiAmJgorICAgICAgICAgKCAoIG91dHB1dCA9PSBGTVRfVTggJiYgaW5w
dXQgPT0gRk1UX1MxNl9CRSApIHx8CisgICAgICAgICAgICggb3V0cHV0ID09IEZNVF9TOCAmJiBp
bnB1dCA9PSBGTVRfVTE2X0JFICkgKSApIHx8CisgICAgICAgICggSVNfQklHX0VORElBTiAmJgor
ICAgICAgICAgKCAoIG91dHB1dCA9PSBGTVRfVTggJiYgaW5wdXQgPT0gRk1UX1MxNl9MRSApIHx8
CisgICAgICAgICAgICggb3V0cHV0ID09IEZNVF9TOCAmJiBpbnB1dCA9PSBGTVRfVTE2X0xFICkg
KSApICkKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRfdG9fOF9hbGllbl9lbmRpYW5fc3dhcF9zaWdu
OworCisgICAgaWYgKCAoIG91dHB1dCA9PSBGTVRfVTggJiYgaW5wdXQgPT0gRk1UX1M4ICkgfHwK
KyAgICAgICAgICggb3V0cHV0ID09IEZNVF9TOCAmJiBpbnB1dCA9PSBGTVRfVTggKSApCisgICAg
ICAgIHJldHVybiBjb252ZXJ0X3N3YXBfc2lnbjg7CisKKyAgICBpZiAoICggSVNfQklHX0VORElB
TiAmJgorICAgICAgICAgKCAoIG91dHB1dCA9PSBGTVRfVTE2X0JFICYmIGlucHV0ID09IEZNVF9V
OCApIHx8CisgICAgICAgICAgICggb3V0cHV0ID09IEZNVF9TMTZfQkUgJiYgaW5wdXQgPT0gRk1U
X1M4ICkgKSApIHx8CisgICAgICAgICggIUlTX0JJR19FTkRJQU4gJiYKKyAgICAgICAgICggKCBv
dXRwdXQgPT0gRk1UX1UxNl9MRSAmJiBpbnB1dCA9PSBGTVRfVTggKSB8fAorICAgICAgICAgICAo
IG91dHB1dCA9PSBGTVRfUzE2X0xFICYmIGlucHV0ID09IEZNVF9TOCApICkgKSApCisgICAgICAg
IHJldHVybiBjb252ZXJ0X3RvXzE2X25hdGl2ZV9lbmRpYW47CisKKyAgICBpZiAoICggSVNfQklH
X0VORElBTiAmJgorICAgICAgICAgKCAoIG91dHB1dCA9PSBGTVRfVTE2X0JFICYmIGlucHV0ID09
IEZNVF9TOCApIHx8CisgICAgICAgICAgICggb3V0cHV0ID09IEZNVF9TMTZfQkUgJiYgaW5wdXQg
PT0gRk1UX1U4ICkgKSApIHx8CisgICAgICAgICggIUlTX0JJR19FTkRJQU4gJiYKKyAgICAgICAg
ICggKCBvdXRwdXQgPT0gRk1UX1UxNl9MRSAmJiBpbnB1dCA9PSBGTVRfUzggKSB8fAorICAgICAg
ICAgICAoIG91dHB1dCA9PSBGTVRfUzE2X0xFICYmIGlucHV0ID09IEZNVF9VOCApICkgKSApCisg
ICAgICAgIHJldHVybiBjb252ZXJ0X3RvXzE2X25hdGl2ZV9lbmRpYW5fc3dhcF9zaWduOworCisg
ICAgaWYgKCAoICFJU19CSUdfRU5ESUFOICYmCisgICAgICAgICAoICggb3V0cHV0ID09IEZNVF9V
MTZfQkUgJiYgaW5wdXQgPT0gRk1UX1U4ICkgfHwKKyAgICAgICAgICAgKCBvdXRwdXQgPT0gRk1U
X1MxNl9CRSAmJiBpbnB1dCA9PSBGTVRfUzggKSApICkgfHwKKyAgICAgICAgKCBJU19CSUdfRU5E
SUFOICYmCisgICAgICAgICAoICggb3V0cHV0ID09IEZNVF9VMTZfTEUgJiYgaW5wdXQgPT0gRk1U
X1U4ICkgfHwKKyAgICAgICAgICAgKCBvdXRwdXQgPT0gRk1UX1MxNl9MRSAmJiBpbnB1dCA9PSBG
TVRfUzggKSApICkgKQorICAgICAgICByZXR1cm4gY29udmVydF90b18xNl9hbGllbl9lbmRpYW47
CisKKyAgICBpZiAoICggIUlTX0JJR19FTkRJQU4gJiYKKyAgICAgICAgICggKCBvdXRwdXQgPT0g
Rk1UX1UxNl9CRSAmJiBpbnB1dCA9PSBGTVRfUzggKSB8fAorICAgICAgICAgICAoIG91dHB1dCA9
PSBGTVRfUzE2X0JFICYmIGlucHV0ID09IEZNVF9VOCApICkgKSB8fAorICAgICAgICAoIElTX0JJ
R19FTkRJQU4gJiYKKyAgICAgICAgICggKCBvdXRwdXQgPT0gRk1UX1UxNl9MRSAmJiBpbnB1dCA9
PSBGTVRfUzggKSB8fAorICAgICAgICAgICAoIG91dHB1dCA9PSBGTVRfUzE2X0xFICYmIGlucHV0
ID09IEZNVF9VOCApICkgKSApCisgICAgICAgIHJldHVybiBjb252ZXJ0X3RvXzE2X2FsaWVuX2Vu
ZGlhbl9zd2FwX3NpZ247CisKKyAgICAvL2dfd2FybmluZyggIlRyYW5zbGF0aW9uIG5lZWRlZCwg
YnV0IG5vdCBhdmFpbGFibGUuXG4iCisgICAgLy8gICAgICAiSW5wdXQ6ICVkOyBPdXRwdXQgJWQu
IiwgaW5wdXQsIG91dHB1dCApOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50IGNv
bnZlcnRfbW9ub190b19zdGVyZW8oIHN0cnVjdCB4bW1zX2NvbnZlcnRfYnVmZmVycyogYnVmLCB2
b2lkICoqZGF0YSwgaW50IGxlbmd0aCwgaW50IGIxNiApCit7CisgICAgaW50IGk7CisgICAgdm9p
ZCAqb3V0YnVmID0gY29udmVydF9nZXRfYnVmZmVyKCAmYnVmLT5zdGVyZW9fYnVmZmVyLCBsZW5n
dGggKiAyICk7CisKKyAgICBpZiAoIGIxNiApCisgICAgeworICAgICAgICB1aW50MTZfdCAqb3V0
cHV0ID0gb3V0YnVmLCAqaW5wdXQgPSAqZGF0YTsKKyAgICAgICAgZm9yICggaSA9IDA7IGkgPCBs
ZW5ndGggLyAyOyBpKysgKQorICAgICAgICB7CisgICAgICAgICAgICAqb3V0cHV0KysgPSAqaW5w
dXQ7CisgICAgICAgICAgICAqb3V0cHV0KysgPSAqaW5wdXQ7CisgICAgICAgICAgICBpbnB1dCsr
OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHVpbnQ4X3QgKm91
dHB1dCA9IG91dGJ1ZiwgKmlucHV0ID0gKmRhdGE7CisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKysgKQorICAgICAgICB7CisgICAgICAgICAgICAqb3V0cHV0KysgPSAqaW5wdXQ7
CisgICAgICAgICAgICAqb3V0cHV0KysgPSAqaW5wdXQ7CisgICAgICAgICAgICBpbnB1dCsrOwor
ICAgICAgICB9CisgICAgfQorICAgICpkYXRhID0gb3V0YnVmOworCisgICAgcmV0dXJuIGxlbmd0
aCAqIDI7Cit9CisKK3N0YXRpYyBpbnQgY29udmVydF9tb25vX3RvX3N0ZXJlb184KCBzdHJ1Y3Qg
eG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1Ziwgdm9pZCAqKmRhdGEsIGludCBsZW5ndGggKQorewor
ICAgIHJldHVybiBjb252ZXJ0X21vbm9fdG9fc3RlcmVvKCBidWYsIGRhdGEsIGxlbmd0aCwgRkFM
U0UgKTsKK30KKworc3RhdGljIGludCBjb252ZXJ0X21vbm9fdG9fc3RlcmVvXzE2KCBzdHJ1Y3Qg
eG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1Ziwgdm9pZCAqKmRhdGEsIGludCBsZW5ndGggKQorewor
ICAgIHJldHVybiBjb252ZXJ0X21vbm9fdG9fc3RlcmVvKCBidWYsIGRhdGEsIGxlbmd0aCwgVFJV
RSApOworfQorCitzdGF0aWMgaW50IGNvbnZlcnRfc3RlcmVvX3RvX21vbm9fdTgoIHN0cnVjdCB4
bW1zX2NvbnZlcnRfYnVmZmVycyogYnVmLCB2b2lkICoqZGF0YSwgaW50IGxlbmd0aCApCit7Cisg
ICAgdWludDhfdCAqb3V0cHV0ID0gKmRhdGEsICppbnB1dCA9ICpkYXRhOworICAgIGludCBpOwor
ICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuZ3RoIC8gMjsgaSsrICkKKyAgICB7CisgICAgICAgIHVp
bnQxNl90IHRtcDsKKyAgICAgICAgdG1wID0gKmlucHV0Kys7CisgICAgICAgIHRtcCArPSAqaW5w
dXQrKzsKKyAgICAgICAgKm91dHB1dCsrID0gdG1wIC8gMjsKKyAgICB9CisgICAgcmV0dXJuIGxl
bmd0aCAvIDI7Cit9CitzdGF0aWMgaW50IGNvbnZlcnRfc3RlcmVvX3RvX21vbm9fczgoIHN0cnVj
dCB4bW1zX2NvbnZlcnRfYnVmZmVycyogYnVmLCB2b2lkICoqZGF0YSwgaW50IGxlbmd0aCApCit7
CisgICAgaW50OF90ICpvdXRwdXQgPSAqZGF0YSwgKmlucHV0ID0gKmRhdGE7CisgICAgaW50IGk7
CisgICAgZm9yICggaSA9IDA7IGkgPCBsZW5ndGggLyAyOyBpKysgKQorICAgIHsKKyAgICAgICAg
aW50MTZfdCB0bXA7CisgICAgICAgIHRtcCA9ICppbnB1dCsrOworICAgICAgICB0bXAgKz0gKmlu
cHV0Kys7CisgICAgICAgICpvdXRwdXQrKyA9IHRtcCAvIDI7CisgICAgfQorICAgIHJldHVybiBs
ZW5ndGggLyAyOworfQorc3RhdGljIGludCBjb252ZXJ0X3N0ZXJlb190b19tb25vX3UxNmxlKCBz
dHJ1Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1Ziwgdm9pZCAqKmRhdGEsIGludCBsZW5ndGgg
KQoreworICAgIHVpbnQxNl90ICpvdXRwdXQgPSAqZGF0YSwgKmlucHV0ID0gKmRhdGE7CisgICAg
aW50IGk7CisgICAgZm9yICggaSA9IDA7IGkgPCBsZW5ndGggLyA0OyBpKysgKQorICAgIHsKKyAg
ICAgICAgdWludDMyX3QgdG1wOworICAgICAgICB1aW50MTZfdCBzdG1wOworICAgICAgICB0bXAg
PSBHVUlOVDE2X0ZST01fTEUoICppbnB1dCApOworICAgICAgICBpbnB1dCsrOworICAgICAgICB0
bXAgKz0gR1VJTlQxNl9GUk9NX0xFKCAqaW5wdXQgKTsKKyAgICAgICAgaW5wdXQrKzsKKyAgICAg
ICAgc3RtcCA9IHRtcCAvIDI7CisgICAgICAgICpvdXRwdXQrKyA9IEdVSU5UMTZfVE9fTEUoIHN0
bXAgKTsKKyAgICB9CisgICAgcmV0dXJuIGxlbmd0aCAvIDI7Cit9CisKK3N0YXRpYyBpbnQgY29u
dmVydF9zdGVyZW9fdG9fbW9ub191MTZiZSggc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBi
dWYsIHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoICkKK3sKKyAgICB1aW50MTZfdCAqb3V0cHV0ID0g
KmRhdGEsICppbnB1dCA9ICpkYXRhOworICAgIGludCBpOworICAgIGZvciAoIGkgPSAwOyBpIDwg
bGVuZ3RoIC8gNDsgaSsrICkKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHRtcDsKKyAgICAgICAg
dWludDE2X3Qgc3RtcDsKKyAgICAgICAgdG1wID0gR1VJTlQxNl9GUk9NX0JFKCAqaW5wdXQgKTsK
KyAgICAgICAgaW5wdXQrKzsKKyAgICAgICAgdG1wICs9IEdVSU5UMTZfRlJPTV9CRSggKmlucHV0
ICk7CisgICAgICAgIGlucHV0Kys7CisgICAgICAgIHN0bXAgPSB0bXAgLyAyOworICAgICAgICAq
b3V0cHV0KysgPSBHVUlOVDE2X1RPX0JFKCBzdG1wICk7CisgICAgfQorICAgIHJldHVybiBsZW5n
dGggLyAyOworfQorCitzdGF0aWMgaW50IGNvbnZlcnRfc3RlcmVvX3RvX21vbm9fczE2bGUoIHN0
cnVjdCB4bW1zX2NvbnZlcnRfYnVmZmVycyogYnVmLCB2b2lkICoqZGF0YSwgaW50IGxlbmd0aCAp
Cit7CisgICAgaW50MTZfdCAqb3V0cHV0ID0gKmRhdGEsICppbnB1dCA9ICpkYXRhOworICAgIGlu
dCBpOworICAgIGZvciAoIGkgPSAwOyBpIDwgbGVuZ3RoIC8gNDsgaSsrICkKKyAgICB7CisgICAg
ICAgIGludDMyX3QgdG1wOworICAgICAgICBpbnQxNl90IHN0bXA7CisgICAgICAgIHRtcCA9IEdJ
TlQxNl9GUk9NX0xFKCAqaW5wdXQgKTsKKyAgICAgICAgaW5wdXQrKzsKKyAgICAgICAgdG1wICs9
IEdJTlQxNl9GUk9NX0xFKCAqaW5wdXQgKTsKKyAgICAgICAgaW5wdXQrKzsKKyAgICAgICAgc3Rt
cCA9IHRtcCAvIDI7CisgICAgICAgICpvdXRwdXQrKyA9IEdJTlQxNl9UT19MRSggc3RtcCApOwor
ICAgIH0KKyAgICByZXR1cm4gbGVuZ3RoIC8gMjsKK30KKworc3RhdGljIGludCBjb252ZXJ0X3N0
ZXJlb190b19tb25vX3MxNmJlKCBzdHJ1Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1Ziwgdm9p
ZCAqKmRhdGEsIGludCBsZW5ndGggKQoreworICAgIGludDE2X3QgKm91dHB1dCA9ICpkYXRhLCAq
aW5wdXQgPSAqZGF0YTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKCBpID0gMDsgaSA8IGxlbmd0aCAv
IDQ7IGkrKyApCisgICAgeworICAgICAgICBpbnQzMl90IHRtcDsKKyAgICAgICAgaW50MTZfdCBz
dG1wOworICAgICAgICB0bXAgPSBHSU5UMTZfRlJPTV9CRSggKmlucHV0ICk7CisgICAgICAgIGlu
cHV0Kys7CisgICAgICAgIHRtcCArPSBHSU5UMTZfRlJPTV9CRSggKmlucHV0ICk7CisgICAgICAg
IGlucHV0Kys7CisgICAgICAgIHN0bXAgPSB0bXAgLyAyOworICAgICAgICAqb3V0cHV0KysgPSBH
SU5UMTZfVE9fQkUoIHN0bXAgKTsKKyAgICB9CisgICAgcmV0dXJuIGxlbmd0aCAvIDI7Cit9CisK
K2NvbnZlcnRfY2hhbm5lbF9mdW5jX3QgeG1tc19jb252ZXJ0X2dldF9jaGFubmVsX2Z1bmMoIEFG
b3JtYXQgZm10LCBpbnQgb3V0cHV0LCBpbnQgaW5wdXQgKQoreworICAgIGZtdCA9IHVubmF0aXZp
emUoIGZtdCApOworCisgICAgaWYgKCBvdXRwdXQgPT0gaW5wdXQgKQorICAgICAgICByZXR1cm4g
TlVMTDsKKworICAgIGlmICggaW5wdXQgPT0gMSAmJiBvdXRwdXQgPT0gMiApCisgICAgICAgIHN3
aXRjaCAoIGZtdCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRk1UX1U4OgorICAgICAg
ICAgICAgY2FzZSBGTVRfUzg6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRfbW9ub190
b19zdGVyZW9fODsKKyAgICAgICAgICAgIGNhc2UgRk1UX1UxNl9MRToKKyAgICAgICAgICAgIGNh
c2UgRk1UX1UxNl9CRToKKyAgICAgICAgICAgIGNhc2UgRk1UX1MxNl9MRToKKyAgICAgICAgICAg
IGNhc2UgRk1UX1MxNl9CRToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydF9tb25vX3Rv
X3N0ZXJlb18xNjsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgLy9nX3dh
cm5pbmcoICJVbmtub3duIGZvcm1hdDogJWQiCisgICAgICAgICAgICAgICAgLy8gICAgICAiTm8g
Y29udmVyc2lvbiBhdmFpbGFibGUuIiwgZm10ICk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5V
TEw7CisgICAgICAgIH0KKyAgICBpZiAoIGlucHV0ID09IDIgJiYgb3V0cHV0ID09IDEgKQorICAg
ICAgICBzd2l0Y2ggKCBmbXQgKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEZNVF9VODoK
KyAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydF9zdGVyZW9fdG9fbW9ub191ODsKKyAgICAg
ICAgICAgIGNhc2UgRk1UX1M4OgorICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0X3N0ZXJl
b190b19tb25vX3M4OworICAgICAgICAgICAgY2FzZSBGTVRfVTE2X0xFOgorICAgICAgICAgICAg
ICAgIHJldHVybiBjb252ZXJ0X3N0ZXJlb190b19tb25vX3UxNmxlOworICAgICAgICAgICAgY2Fz
ZSBGTVRfVTE2X0JFOgorICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0X3N0ZXJlb190b19t
b25vX3UxNmJlOworICAgICAgICAgICAgY2FzZSBGTVRfUzE2X0xFOgorICAgICAgICAgICAgICAg
IHJldHVybiBjb252ZXJ0X3N0ZXJlb190b19tb25vX3MxNmxlOworICAgICAgICAgICAgY2FzZSBG
TVRfUzE2X0JFOgorICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0X3N0ZXJlb190b19tb25v
X3MxNmJlOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAvL2dfd2Fybmlu
ZyggIlVua25vd24gZm9ybWF0OiAlZC4gICIKKyAgICAgICAgICAgICAgICAvLyAgICAgICJObyBj
b252ZXJzaW9uIGF2YWlsYWJsZS4iLCBmbXQgKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICAgICAgfQorCisgICAgLy9nX3dhcm5pbmcoICJJbnB1dCBoYXMgJWQgY2hhbm5lbHMs
IHNvdW5kY2FyZCB1c2VzICVkIGNoYW5uZWxzXG4iCisgICAgLy8gICAgICAiTm8gY29udmVyc2lv
biBpcyBhdmFpbGFibGUiLCBpbnB1dCwgb3V0cHV0ICk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisK
KworI2RlZmluZSBSRVNBTVBMRV9TVEVSRU8oIHNhbXBsZV90eXBlLCBic3dhcCApICAgICAgICAg
ICAgICAgICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgY29uc3QgaW50IHNoaWZ0ID0gc2l6ZW9mICggc2Ft
cGxlX3R5cGUgKTsgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpbnQgaSwgaW5fc2FtcGxl
cywgb3V0X3NhbXBsZXMsIHgsIGRlbHRhOyAgICAgICAgICAgICAgIFwKKyAgICBzYW1wbGVfdHlw
ZSAqaW5wdHIgPSAqZGF0YSwgKm91dHB0cjsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
dWludCBubGVuID0gKCAoICggbGVuZ3RoID4+IHNoaWZ0ICkgKiBvZnJlcSApIC8gaWZyZXEgKTsg
ICAgXAorICAgIHZvaWQgKm5idWY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBpZiAoIG5sZW4gPT0gMCApICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIG5sZW4gPDw9IHNoaWZ0OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGJz
d2FwICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGNvbnZlcnRfc3dhcF9lbmRpYW4oIE5VTEwsIGRhdGEsIGxlbmd0aCApOyAgICAgICAg
ICAgICAgXAorICAgIG5idWYgPSBjb252ZXJ0X2dldF9idWZmZXIoICZidWYtPmZyZXFfYnVmZmVy
LCBubGVuICk7ICAgICAgIFwKKyAgICBvdXRwdHIgPSBuYnVmOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW5fc2FtcGxlcyA9IGxlbmd0aCA+PiBz
aGlmdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBvdXRfc2FtcGxl
cyA9IG5sZW4gPj4gc2hpZnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkZWx0
YSA9ICggaW5fc2FtcGxlcyA8PCAxMiApIC8gb3V0X3NhbXBsZXM7ICAgICAgICAgICAgICAgICBc
CisgICAgZm9yICggeCA9IDAsIGkgPSAwOyBpIDwgb3V0X3NhbXBsZXM7IGkrKyApICAgICAgICAg
ICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaW50IHgxLCBmcmFjOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHgxID0gKCB4ID4+IDEyICkg
PDwgMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmcmFjID0g
eCAtIHgxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgKm91dHB0cisrID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICAoICggaW5wdHJbKCB4MSA+PiAxMiApIDw8IDFdICogICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAoICggMTw8MTIgKSAtIGZyYWMgKSArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgaW5wdHJbKCAoIHgxID4+IDEy
ICkgKyAxICkgPDwgMV0gKiAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgIGZyYWMgKSA+
PiAxMiApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAqb3V0
cHRyKysgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICggKCBpbnB0clsoICggeDEgPj4gMTIgKSA8PCAxICkgKyAxXSAqICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICAgICggKCAxPDwxMiApIC0gZnJhYyApICsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICBpbnB0clsoICggKCB4MSA+PiAxMiApICsg
MSApIDw8IDEgKSArIDFdICogICAgICAgIFwKKyAgICAgICAgICAgICAgZnJhYyApID4+IDEyICk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHggKz0gZGVsdGE7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBpZiAoIGJzd2FwICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIGNvbnZlcnRfc3dhcF9lbmRpYW4oIE5VTEwsICZuYnVmLCBubGVu
ICk7ICAgICAgICAgICAgICAgXAorICAgICpkYXRhID0gbmJ1ZjsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gbmxlbjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9IHdoaWxlICggMCApCisK
KworI2RlZmluZSBSRVNBTVBMRV9NT05PKCBzYW1wbGVfdHlwZSwgYnN3YXAgKSAgICAgICAgICAg
ICAgICAgICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgY29uc3QgaW50IHNoaWZ0ID0gc2l6ZW9mICggc2Ft
cGxlX3R5cGUgKSAtIDE7ICAgICAgICAgICAgICAgXAorICAgICAgICBpbnQgaSwgeCwgZGVsdGEs
IGluX3NhbXBsZXMsIG91dF9zYW1wbGVzOyAgICAgICAgICAgICAgIFwKKyAgICBzYW1wbGVfdHlw
ZSAqaW5wdHIgPSAqZGF0YSwgKm91dHB0cjsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
dWludCBubGVuID0gKCAoICggbGVuZ3RoID4+IHNoaWZ0ICkgKiBvZnJlcSApIC8gaWZyZXEgKTsg
ICAgXAorICAgIHZvaWQgKm5idWY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBpZiAoIG5sZW4gPT0gMCApICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIG5sZW4gPDw9IHNoaWZ0OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIGJz
d2FwICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGNvbnZlcnRfc3dhcF9lbmRpYW4oIE5VTEwsIGRhdGEsIGxlbmd0aCApOyAgICAgICAg
ICAgICAgXAorICAgIG5idWYgPSBjb252ZXJ0X2dldF9idWZmZXIoICZidWYtPmZyZXFfYnVmZmVy
LCBubGVuICk7ICAgICAgIFwKKyAgICBvdXRwdHIgPSBuYnVmOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW5fc2FtcGxlcyA9IGxlbmd0aCA+PiBz
aGlmdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBvdXRfc2FtcGxl
cyA9IG5sZW4gPj4gc2hpZnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkZWx0
YSA9ICggKCBsZW5ndGggPj4gc2hpZnQgKSA8PCAxMiApIC8gb3V0X3NhbXBsZXM7ICAgICAgICBc
CisgICAgZm9yICggeCA9IDAsIGkgPSAwOyBpIDwgb3V0X3NhbXBsZXM7IGkrKyApICAgICAgICAg
ICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaW50IHgxLCBmcmFjOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHgxID0gKCB4ID4+IDEyICkg
PDwgMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmcmFjID0g
eCAtIHgxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgKm91dHB0cisrID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICAoICggaW5wdHJbeDEgPj4gMTJdICogKCAoIDE8PDEyICkgLSBmcmFj
ICkgKyAgICAgICAgXAorICAgICAgICAgICAgICBpbnB0clsoIHgxID4+IDEyICkgKyAxXSAqIGZy
YWMgKSA+PiAxMiApOyAgICAgICAgIFwKKyAgICAgICAgeCArPSBkZWx0YTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggYnN3
YXAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgY29udmVydF9zd2FwX2VuZGlhbiggTlVMTCwgJm5idWYsIG5sZW4gKTsgICAgICAgICAg
ICAgICBcCisgICAgKmRhdGEgPSBuYnVmOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBubGVuOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gd2hpbGUgKCAwICkKKworc3RhdGljIGludCBj
b252ZXJ0X3Jlc2FtcGxlX3N0ZXJlb19zMTZuZSggc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJz
KiBidWYsIHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgaWZyZXEsIGludCBvZnJlcSApCit7
CisgICAgUkVTQU1QTEVfU1RFUkVPKCBpbnQxNl90LCBGQUxTRSApOworICAgIHJldHVybiAwOwor
fQorCitzdGF0aWMgaW50IGNvbnZlcnRfcmVzYW1wbGVfc3RlcmVvX3MxNmFlKCBzdHJ1Y3QgeG1t
c19jb252ZXJ0X2J1ZmZlcnMqIGJ1Ziwgdm9pZCAqKmRhdGEsIGludCBsZW5ndGgsIGludCBpZnJl
cSwgaW50IG9mcmVxICkKK3sKKyAgICBSRVNBTVBMRV9TVEVSRU8oIGludDE2X3QsIFRSVUUgKTsK
KyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjb252ZXJ0X3Jlc2FtcGxlX3N0ZXJlb191
MTZuZSggc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBidWYsIHZvaWQgKipkYXRhLCBpbnQg
bGVuZ3RoLCBpbnQgaWZyZXEsIGludCBvZnJlcSApCit7CisgICAgUkVTQU1QTEVfU1RFUkVPKCB1
aW50MTZfdCwgRkFMU0UgKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjb252ZXJ0
X3Jlc2FtcGxlX3N0ZXJlb191MTZhZSggc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBidWYs
IHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgaWZyZXEsIGludCBvZnJlcSApCit7CisgICAg
UkVTQU1QTEVfU1RFUkVPKCB1aW50MTZfdCwgVFJVRSApOworICAgIHJldHVybiAwOworfQorCitz
dGF0aWMgaW50IGNvbnZlcnRfcmVzYW1wbGVfbW9ub19zMTZuZSggc3RydWN0IHhtbXNfY29udmVy
dF9idWZmZXJzKiBidWYsIHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgaWZyZXEsIGludCBv
ZnJlcSApCit7CisgICAgUkVTQU1QTEVfTU9OTyggaW50MTZfdCwgRkFMU0UgKTsKKyAgICByZXR1
cm4gMDsKK30KKworc3RhdGljIGludCBjb252ZXJ0X3Jlc2FtcGxlX21vbm9fczE2YWUoIHN0cnVj
dCB4bW1zX2NvbnZlcnRfYnVmZmVycyogYnVmLCB2b2lkICoqZGF0YSwgaW50IGxlbmd0aCwgaW50
IGlmcmVxLCBpbnQgb2ZyZXEgKQoreworICAgIFJFU0FNUExFX01PTk8oIGludDE2X3QsIFRSVUUg
KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjb252ZXJ0X3Jlc2FtcGxlX21vbm9f
dTE2bmUoIHN0cnVjdCB4bW1zX2NvbnZlcnRfYnVmZmVycyogYnVmLCB2b2lkICoqZGF0YSwgaW50
IGxlbmd0aCwgaW50IGlmcmVxLCBpbnQgb2ZyZXEgKQoreworICAgIFJFU0FNUExFX01PTk8oIHVp
bnQxNl90LCBGQUxTRSApOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNvbnZlcnRf
cmVzYW1wbGVfbW9ub191MTZhZSggc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBidWYsIHZv
aWQgKipkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgaWZyZXEsIGludCBvZnJlcSApCit7CisgICAgUkVT
QU1QTEVfTU9OTyggdWludDE2X3QsIFRSVUUgKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj
IGludCBjb252ZXJ0X3Jlc2FtcGxlX3N0ZXJlb191OCggc3RydWN0IHhtbXNfY29udmVydF9idWZm
ZXJzKiBidWYsIHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgaWZyZXEsIGludCBvZnJlcSAp
Cit7CisgICAgUkVTQU1QTEVfU1RFUkVPKCB1aW50OF90LCBGQUxTRSApOworICAgIHJldHVybiAw
OworfQorCitzdGF0aWMgaW50IGNvbnZlcnRfcmVzYW1wbGVfbW9ub191OCggc3RydWN0IHhtbXNf
Y29udmVydF9idWZmZXJzKiBidWYsIHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgaWZyZXEs
IGludCBvZnJlcSApCit7CisgICAgUkVTQU1QTEVfTU9OTyggdWludDhfdCwgRkFMU0UgKTsKKyAg
ICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjb252ZXJ0X3Jlc2FtcGxlX3N0ZXJlb19zOCgg
c3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBidWYsIHZvaWQgKipkYXRhLCBpbnQgbGVuZ3Ro
LCBpbnQgaWZyZXEsIGludCBvZnJlcSApCit7CisgICAgUkVTQU1QTEVfU1RFUkVPKCBpbnQ4X3Qs
IEZBTFNFICk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY29udmVydF9yZXNhbXBs
ZV9tb25vX3M4KCBzdHJ1Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1Ziwgdm9pZCAqKmRhdGEs
IGludCBsZW5ndGgsIGludCBpZnJlcSwgaW50IG9mcmVxICkKK3sKKyAgICBSRVNBTVBMRV9NT05P
KCBpbnQ4X3QsIEZBTFNFICk7CisgICAgcmV0dXJuIDA7Cit9CisKKworY29udmVydF9mcmVxX2Z1
bmNfdCB4bW1zX2NvbnZlcnRfZ2V0X2ZyZXF1ZW5jeV9mdW5jKCBBRm9ybWF0IGZtdCwgaW50IGNo
YW5uZWxzICkKK3sKKyAgICBmbXQgPSB1bm5hdGl2aXplKCBmbXQgKTsKKyAgICAvL2dfbWVzc2Fn
ZSggImZtdCAlZCwgY2hhbm5lbHM6ICVkIiwgZm10LCBjaGFubmVscyApOworCisgICAgaWYgKCBj
aGFubmVscyA8IDEgfHwgY2hhbm5lbHMgPiAyICkKKyAgICB7CisgICAgICAgIC8vZ193YXJuaW5n
KCAiVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGNoYW5uZWxzOiAlZC4gICIKKyAgICAgICAgLy8gICAg
ICAiUmVzYW1wbGUgZnVuY3Rpb24gbm90IGF2YWlsYWJsZSIsIGNoYW5uZWxzICk7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoICggIElTX0JJR19FTkRJQU4gJiYgZm10ID09
IEZNVF9VMTZfQkUgKSB8fAorICAgICAgICAgKCAhSVNfQklHX0VORElBTiAmJiBmbXQgPT0gRk1U
X1UxNl9MRSApICkKKyAgICB7CisgICAgICAgIGlmICggY2hhbm5lbHMgPT0gMSApCisgICAgICAg
ICAgICByZXR1cm4gY29udmVydF9yZXNhbXBsZV9tb25vX3UxNm5lOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICByZXR1cm4gY29udmVydF9yZXNhbXBsZV9zdGVyZW9fdTE2bmU7CisgICAgfQor
ICAgIGlmICggKCAgSVNfQklHX0VORElBTiAmJiBmbXQgPT0gRk1UX1MxNl9CRSApIHx8CisgICAg
ICAgICAoICFJU19CSUdfRU5ESUFOICYmIGZtdCA9PSBGTVRfUzE2X0xFICkgKQorICAgIHsKKyAg
ICAgICAgaWYgKCBjaGFubmVscyA9PSAxICkKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0X3Jl
c2FtcGxlX21vbm9fczE2bmU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0X3Jlc2FtcGxlX3N0ZXJlb19zMTZuZTsKKyAgICB9CisgICAgaWYgKCAoICFJU19CSUdfRU5E
SUFOICYmIGZtdCA9PSBGTVRfVTE2X0JFICkgfHwKKyAgICAgICAgICggIElTX0JJR19FTkRJQU4g
JiYgZm10ID09IEZNVF9VMTZfTEUgKSApCisgICAgeworICAgICAgICBpZiAoIGNoYW5uZWxzID09
IDEgKQorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRfcmVzYW1wbGVfbW9ub191MTZhZTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRfcmVzYW1wbGVfc3RlcmVvX3Ux
NmFlOworICAgIH0KKyAgICBpZiAoICggIUlTX0JJR19FTkRJQU4gJiYgZm10ID09IEZNVF9TMTZf
QkUgKSB8fAorICAgICAgICAgKCAgSVNfQklHX0VORElBTiAmJiBmbXQgPT0gRk1UX1MxNl9MRSAp
ICkKKyAgICB7CisgICAgICAgIGlmICggY2hhbm5lbHMgPT0gMSApCisgICAgICAgICAgICByZXR1
cm4gY29udmVydF9yZXNhbXBsZV9tb25vX3MxNmFlOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXR1cm4gY29udmVydF9yZXNhbXBsZV9zdGVyZW9fczE2YWU7CisgICAgfQorICAgIGlmICgg
Zm10ID09IEZNVF9VOCApCisgICAgeworICAgICAgICBpZiAoIGNoYW5uZWxzID09IDEgKQorICAg
ICAgICAgICAgcmV0dXJuIGNvbnZlcnRfcmVzYW1wbGVfbW9ub191ODsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRfcmVzYW1wbGVfc3RlcmVvX3U4OworICAgIH0KKyAg
ICBpZiAoIGZtdCA9PSBGTVRfUzggKQorICAgIHsKKyAgICAgICAgaWYgKCBjaGFubmVscyA9PSAx
ICkKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0X3Jlc2FtcGxlX21vbm9fczg7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0X3Jlc2FtcGxlX3N0ZXJlb19zODsKKyAg
ICB9CisgICAgLy9nX3dhcm5pbmcoICJSZXNhbXBsZSBmdW5jdGlvbiBub3QgYXZhaWxhYmxlIgor
ICAgIC8vICAgICAgIkZvcm1hdCAlZC4iLCBmbXQgKTsKKyAgICByZXR1cm4gTlVMTDsKK30KZGlm
ZiAtdXJOIGxhc3QuZm0tMS4xLjMub3JpZy9zcmMvYWxzYXBsYXliYWNrL3hjb252ZXJ0LmggbGFz
dC5mbS0xLjEuMy9zcmMvYWxzYXBsYXliYWNrL3hjb252ZXJ0LmgKLS0tIGxhc3QuZm0tMS4xLjMu
b3JpZy9zcmMvYWxzYXBsYXliYWNrL3hjb252ZXJ0LmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAw
MDAwMDAgLTA4MDAKKysrIGxhc3QuZm0tMS4xLjMvc3JjL2Fsc2FwbGF5YmFjay94Y29udmVydC5o
CTIwMDctMDMtMTggMjA6NTc6MjguMDAwMDAwMDAwIC0wNzAwCkBAIC0wLDAgKzEsMzkgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChDKSAyMDAzICBIYWF2YXJkIEt2YWFsZW4gPGhhdmFyZGtAeG1tcy5v
cmc+CisgKgorICogIExpY2Vuc2VkIHVuZGVyIEdOVSBMR1BMIHZlcnNpb24gMi4KKyAqLworCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgZW51bQor
eworICAgIEZNVF9VOCwgRk1UX1M4LCBGTVRfVTE2X0xFLCBGTVRfVTE2X0JFLCBGTVRfVTE2X05F
LCBGTVRfUzE2X0xFLCBGTVRfUzE2X0JFLCBGTVRfUzE2X05FCit9CitBRm9ybWF0OworCitzdHJ1
Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnM7CisKK3N0cnVjdCB4bW1zX2NvbnZlcnRfYnVmZmVycyog
eG1tc19jb252ZXJ0X2J1ZmZlcnNfbmV3KHZvaWQpOworLyoKKyAqIEZyZWUgdGhlIGRhdGEgYXNz
b3NpYXRlZCB3aXRoIHRoZSBidWZmZXJzLCB3aXRob3V0IGRlc3Ryb3lpbmcgdGhlCisgKiBjb250
ZXh0LiAgVGhlIGNvbnRleHQgY2FuIGJlIHJldXNlZC4KKyAqLwordm9pZCB4bW1zX2NvbnZlcnRf
YnVmZmVyc19mcmVlKHN0cnVjdCB4bW1zX2NvbnZlcnRfYnVmZmVycyogYnVmKTsKK3ZvaWQgeG1t
c19jb252ZXJ0X2J1ZmZlcnNfZGVzdHJveShzdHJ1Y3QgeG1tc19jb252ZXJ0X2J1ZmZlcnMqIGJ1
Zik7CisKKwordHlwZWRlZiBpbnQgKCpjb252ZXJ0X2Z1bmNfdCkoc3RydWN0IHhtbXNfY29udmVy
dF9idWZmZXJzKiBidWYsIHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoKTsKK3R5cGVkZWYgaW50ICgq
Y29udmVydF9jaGFubmVsX2Z1bmNfdCkoc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBidWYs
IHZvaWQgKipkYXRhLCBpbnQgbGVuZ3RoKTsKK3R5cGVkZWYgaW50ICgqY29udmVydF9mcmVxX2Z1
bmNfdCkoc3RydWN0IHhtbXNfY29udmVydF9idWZmZXJzKiBidWYsIHZvaWQgKipkYXRhLCBpbnQg
bGVuZ3RoLCBpbnQgaWZyZXEsIGludCBvZnJlcSk7CisKKworY29udmVydF9mdW5jX3QgeG1tc19j
b252ZXJ0X2dldF9mdW5jKEFGb3JtYXQgb3V0cHV0LCBBRm9ybWF0IGlucHV0KTsKK2NvbnZlcnRf
Y2hhbm5lbF9mdW5jX3QgeG1tc19jb252ZXJ0X2dldF9jaGFubmVsX2Z1bmMoQUZvcm1hdCBmbXQs
IGludCBvdXRwdXQsIGludCBpbnB1dCk7Citjb252ZXJ0X2ZyZXFfZnVuY190IHhtbXNfY29udmVy
dF9nZXRfZnJlcXVlbmN5X2Z1bmMoQUZvcm1hdCBmbXQsIGludCBjaGFubmVscyk7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLXVyTiBsYXN0LmZtLTEuMS4zLm9yaWcvc3Jj
L2NvbnRhaW5lci5jcHAgbGFzdC5mbS0xLjEuMy9zcmMvY29udGFpbmVyLmNwcAotLS0gbGFzdC5m
bS0xLjEuMy5vcmlnL3NyYy9jb250YWluZXIuY3BwCTIwMDctMDMtMTggMjA6NTc6MjMuMDAwMDAw
MDAwIC0wNzAwCisrKyBsYXN0LmZtLTEuMS4zL3NyYy9jb250YWluZXIuY3BwCTIwMDctMDMtMTgg
MjA6NTc6MjguMDAwMDAwMDAwIC0wNzAwCkBAIC01MTcsNiArNTE3LDcgQEAKICAgICBjb25uZWN0
KCBtX2lJbnB1dCwgICAgICBTSUdOQUwoIG5ld0RhdGEoIFFCeXRlQXJyYXkgKSApLCAgbV9pVHJh
bnNjb2RlLCBTTE9UKCBkYXRhQXZhaWxhYmxlKCBRQnl0ZUFycmF5ICkgKSApOwogICAgIGNvbm5l
Y3QoIG1faVRyYW5zY29kZSwgIFNJR05BTCggbmV3RGF0YSggUUJ5dGVBcnJheSApICksICBtX2lQ
bGF5YmFjaywgIFNMT1QoIGRhdGFBdmFpbGFibGUoIFFCeXRlQXJyYXkgKSApICk7CiAgICAgY29u
bmVjdCggbV9pUGxheWJhY2ssICAgU0lHTkFMKCBuZWVkRGF0YSgpICksICAgICAgICAgICAgIG1f
aUlucHV0LCAgICAgU0xPVCggcmVxdWVzdERhdGEoKSApICk7CisgICAgY29ubmVjdCggbV9pUGxh
eWJhY2ssICAgU0lHTkFMKCBzdG9wKCkgKSwgICAgICAgICAgICAgICAgIG1faUlucHV0LCAgICAg
U0xPVCggc3RvcFN0cmVhbWluZygpICkgKTsKIAogICAgIC8vIEF1dG8gdXBkYXRlcgogICAgIGNv
bm5lY3QoICZtX3VwZGF0ZXIsIFNJR05BTCggdXBkYXRlQ2hlY2tEb25lKCBib29sLCBib29sLCBR
U3RyaW5nICkgKSwKZGlmZiAtdXJOIGxhc3QuZm0tMS4xLjMub3JpZy9zcmMvbGliTGFzdEZNVG9v
bHMvY29udGFpbmVydXRpbHMuY3BwIGxhc3QuZm0tMS4xLjMvc3JjL2xpYkxhc3RGTVRvb2xzL2Nv
bnRhaW5lcnV0aWxzLmNwcAotLS0gbGFzdC5mbS0xLjEuMy5vcmlnL3NyYy9saWJMYXN0Rk1Ub29s
cy9jb250YWluZXJ1dGlscy5jcHAJMjAwNy0wMy0xOCAyMDo1NzoyMy4wMDAwMDAwMDAgLTA3MDAK
KysrIGxhc3QuZm0tMS4xLjMvc3JjL2xpYkxhc3RGTVRvb2xzL2NvbnRhaW5lcnV0aWxzLmNwcAky
MDA3LTAzLTE4IDIwOjU3OjI4LjAwMDAwMDAwMCAtMDcwMApAQCAtMjg4LDcgKzI4OCw3IEBACiB7
CiAgICAgaWYgKCBnX3BsYXliYWNrU2VydmljZSA9PSBOVUxMICkKICAgICB7DQotICAgICAgICBR
T2JqZWN0KiBvYmogPSBsb2FkU2VydmljZSggInBsYXliYWNrX3J0YXVkaW8iICk7DQorICAgICAg
ICBRT2JqZWN0KiBvYmogPSBsb2FkU2VydmljZSggInBsYXliYWNrX2Fsc2FhdWRpbyIgKTsNCiAg
ICAgICAgIGdfcGxheWJhY2tTZXJ2aWNlID0gcW9iamVjdF9jYXN0PFBsYXliYWNrSW50ZXJmYWNl
Kj4oIG9iaiApOw0KICAgICB9CiAgICAgCg==
</data>        

          </attachment>
    </bug>

</bugzilla>