<?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>45100</bug_id>
          
          <creation_ts>2004-03-18 20:08 0000</creation_ts>
          <short_desc>xbox-sources (new packages)</short_desc>
          <delta_ts>2004-07-16 14:03:18 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>Ebuilds</component>
          <version>unspecified</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>chrb@gentoo.org</reporter>
          <assigned_to>chrb@gentoo.org</assigned_to>
          <cc>avenj@gentoo.org</cc>
    
    <cc>edschouten@il.fontys.nl</cc>
    
    <cc>hostmaster@ed-soft.at</cc>
    
    <cc>m.debruijne@matrict.nl</cc>
    
    <cc>timmy@invisibles.org</cc>

      

      
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-03-18 20:08:54 0000</bug_when>
            <thetext>2 new ebuilds for the xbox linux kernel. One from a patch, one from CVS.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-03-18 20:11:12 0000</bug_when>
            <thetext>Created an attachment (id=27590)
sys-kernel/xbox-sources/xbox-sources-2.4.25.ebuild
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-03-18 20:13:55 0000</bug_when>
            <thetext>Created an attachment (id=27591)
/xbox-sources/files/xbox-sources-2.4.25.CVS08March2004.patch.bz2
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-03-18 20:15:01 0000</bug_when>
            <thetext>Created an attachment (id=27592)
sys-kernel/xbox-sources-cvs/xbox-sources-cvs-2.4.25.ebuild
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>seemant@gentoo.org</who>
            <bug_when>2004-03-19 02:27:02 0000</bug_when>
            <thetext>kernel team, do we want to provide and support this?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-03-19 09:19:45 0000</bug_when>
            <thetext>It&apos;s difficult to encourage people to run gentoo when they have to check out cvs and patch kernel sources manually for every install and upgrade..</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>johnm@gentoo.org</who>
            <bug_when>2004-03-19 14:50:46 0000</bug_when>
            <thetext>If someone is able to fully support this I have no objection.
The difficulty here is that, does anyone actually run a vanilla gentoo install on an Xbox? and If they dont, who would we have to maintain/test them?
Perhaps we should ask Shallax to perhaps port some of his management code/livecd? to work nicer with vanilla, an have him maintain a package in the portage tree for it?
this of course raises licensing issues in many ways, although of course we only provide tools to do the dirty.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-03-22 08:36:57 0000</bug_when>
            <thetext>I would prefer to run vanilla gentoo. gentoox is basically a bunch of shell scripts that are run to download and install prebuilt binarys, replace config files, etc. but don&apos;t interact at all with portage, so what you end up with is two package management systems doing different things, and emerging something breaks packages already installed by gentoox, and vice versa. I guess the reason that most people don&apos;t run vanilla gentoo is that vanilla gentoo doesn&apos;t support the xbox, making it quite a difficult install, and the fact that the gentoox web page doesn&apos;t tell people that the distribution isn&apos;t really gentoo.

The licensing issues are covered thoroughly by xbox-linux.org. I&apos;m sure if there were any problems Microsoft would&apos;ve taken action by now.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>edschouten@il.fontys.nl</who>
            <bug_when>2004-03-31 12:22:25 0000</bug_when>
            <thetext>Hi guys,

I&apos;d love to maintain them (and if I&apos;d need to, write an installation manual).

See this thread:

http://bugs.gentoo.org/show_bug.cgi?id=44818

Yours,

Ed Schouten</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-03-31 13:38:15 0000</bug_when>
            <thetext>I can help as well. I&apos;ve currently got gentoo running on my xbox with most stuff working (a framebuffer system with freevo, mplayer, pydance etc). An installation document is needed though - getting everything set up and working took ages. But there are many more things needed in portage to get xbox support up and running - check bugs 44693 (for building xdvdfs cdroms), 44695 (flashing flashrom), 44705 (cromwell bios/bootloader), 45186 (lirc driver). I also have an ebuild for xbox alsa-driver which I haven&apos;t submitted yet. It shouldn&apos;t be too difficult to generate stages and a bootable cdrom with catalyst either.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-04-07 18:09:21 0000</bug_when>
            <thetext>I have added the alsa driver bug #47166. Is there anything else needing to be done before these ebuilds will be added to portage?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>steel300@gentoo.org</who>
            <bug_when>2004-04-11 13:50:41 0000</bug_when>
            <thetext>It would take a lot of hacking to get gentoox to use portage. http://gentoox.shallax.com is the place for Gentoo on the Xbox. It has a script called &quot;magic&quot; which handles the compilation and fetching of the kernel sources. I&apos;d redirect everything gentoo related on teh Xbox to http://gentoox.shallax.com.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>kumba@gentoo.org</who>
            <bug_when>2004-04-13 12:19:04 0000</bug_when>
            <thetext>Reopening and throwing at Shallax since this is his area of coverage.  He can work with the appropriate teams to determine how to best approach supporting xbox in portage.  Kernel sources aren&apos;t that difficult -- much how I handle kernel sources for mips.  Another concept to consider is to utilize the newer cascading profiles and have an xbox sub-arch in the x86 arch folder, and use a PROFILE_ARCH var set to &quot;xbox&quot;.  This can sit in ebuilds to handle special cases where xbox patching is needed (i.e., like the cobalt sub-arch for mips).</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>shallax@gentoo.org</who>
            <bug_when>2004-04-13 13:47:55 0000</bug_when>
            <thetext>I&apos;ll look into adding an xbox kernel, i dont think it will be 2.4.25, though.  Ive had nothing but problems compiling anything above 2.4.22, the kernel randomly oopses under heavy load in versions higher than this... and I cant figure out why.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-04-13 14:42:20 0000</bug_when>
            <thetext>Have you reported it on the xbox-linux mailing list? I&apos;ve had no problems with 2.4.25 stability. Since the xbox patches are the same maybe 2.4.25 exercises some bug in your hardware (overclocked xbox?). </thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>shallax@gentoo.org</who>
            <bug_when>2004-04-13 16:38:07 0000</bug_when>
            <thetext>What version of GCC/glibc are you using.  Ive had this confirmed from many people.  When I released 2.4.23, I got a flood of emails complaining about it.  My Xboxes arent overclocked.  If I remember correctly, it complained about a &quot;journal&quot; error, which got me wondering whether it was to do with the reiserfs filesystem.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-04-16 02:51:47 0000</bug_when>
            <thetext>I&apos;m using glibc-2.3.2-r9 and gcc-3.3.2-r5. I doubt thats causing your problem though, otherwise it would affect other x86 systems. Do you use some weird cflags when compiling your kernel? Other than that I can only suggest reading oops-tracing.txt in the kernel documentation and locating the source of the oops.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>avenj@gentoo.org</who>
            <bug_when>2004-04-18 16:08:03 0000</bug_when>
            <thetext>(Ed, I&apos;m CCing you because you seem interested; feel free to remove yourself if not)

Folks, we need to sort out what&apos;s to be done with Gentoo on the XBox. Currently, Shallax runs kind of a third party port despite being a Gentoo developer. There is no real integration to speak of. If this is actually the way everybody wants to continue (a basically detached port doing their own thing), there is no reason for Shallax to continue being a Gentoo developer. Otherwise, we should discuss what&apos;s holding back integration.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>shallax@gentoo.org</who>
            <bug_when>2004-04-18 16:25:24 0000</bug_when>
            <thetext>Whats holding back my integration is the fact I was shunned when I first started the project.  Everyone got into a frenzy when I suggested it should become an official project because of *possible* legal implications when I have made it as legal as possible.  

Since I was turned down, I had to develop Gentoox by my own means, which meant not using portage.  Instead, I have had to make my own system called &quot;magic&quot; which calls on portage for software, then patches it after it has been installed.

To be honest, I&apos;ve invested a year in this system now and have finally got it working just about how I want it to.  I&apos;m now reluctant to discard this system to integrate into portage.

I cant help but feel that if I had been allowed to make this project official from the outset, I wouldn&apos;t be in this situation right now.  In addition, there are probably still some opposers to Gentoo Technologies Inc. supporting this project because of legal implications.  I do understand their concern, sort of, but I have made this project as legal as possible.  All I know is that I have been distributing it for over a year now and have yet to receive any &apos;Cease and desist&apos; letters.

Give me time to decide on my and the project&apos;s fate.  I&apos;m under extreme pressure from University work at the moment (exams and such).  Once I&apos;m on summer vacation I&apos;ll be able to weigh my options better.  

I&apos;m not entirely sure why we&apos;re having this discussion on bugzilla, but whatever ;)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>edschouten@il.fontys.nl</who>
            <bug_when>2004-04-18 16:25:36 0000</bug_when>
            <thetext>Thomas,

About the &apos;journal error&apos;, I guess it is more related to some mixed up versions or so. I have never had such problems. Even&apos; 2.6.4-hardened-r3 (Yeah, Hardened Sources) is running fine on my Xbox.

About the Xbox integration:
I think it&apos;s only useful to add a +xbox flag (like +selinux), because the difference is so small. The only things you need:

- A kernel patch
- A different fdisk (but not necissary if you use Cromwell)
- A Xfree86 driver
- A tool to regulate the fan (but not required).

So adding a +xbox flag and a couple of kernel-sources would be enough (vanilla, development and hardened-dev is fine).

Further we would need some Boot CD&apos;s. Although installing Gentoo from within Xebian 1.0.1 Live CD goes fine, it isn&apos;t good enough imho. We need to port some Boot CD&apos;s for that.

Yours,

Ed Schouten</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>edschouten@il.fontys.nl</who>
            <bug_when>2004-04-18 16:33:49 0000</bug_when>
            <thetext>Ah, two posts in the same minute ;-)

It is ofcourse a shame to throw away one year of work, but I hope that you can keep in mind that not adding Xbox support to Portage not only affects GentooX&apos;s way of working, but it also &apos;blocks&apos; Hardened Gentoo for example (or there should also be a Hardened GentooX).

Maybe we could have &apos;the middle way&apos;:
- Adding support for Xbox patchsets to Portage to run Gentoo, nothing more
- Leaving all the utilities in GentooX

Yours,

Ed Schouten</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>shallax@gentoo.org</who>
            <bug_when>2004-04-18 16:59:44 0000</bug_when>
            <thetext>That is a favourable solution.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-04-18 17:42:42 0000</bug_when>
            <thetext>That is not really a good solution. As soon as people install gentoo, they will want to run xbox applications. Telling them to reinstall gentoox is not going to go down well. And once they do, they will be back in the same situation we are now - two incompatible packaging systems.

What I would suggest:

Shallax, decide whether or not you want to support portage gentoo on the xbox. If not, then of course you can still continue with your own distribution (though maybe people would have issues with the current name..). There is nothing wrong here; there are many linux distributions and they all have their niche. 

On the other hand, if you choose to support this, then you get to implement xbox support in portage, the way that it should have been done originally, and this time people will support it.

It is unfortunate that you didn&apos;t receive the support you wanted initially, but there is nothing that we can do about that now. Whatever happens with gentoo you will still have your own linux distribution, and that is something to be proud of, and I&apos;m sure that your users appreciate all the hard work you&apos;ve put in. Don&apos;t take our desire for xbox support in portage as a personal attack on you or your work, because it isn&apos;t. All we want is to run gentoo on our xboxes :)
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-04-27 06:55:46 0000</bug_when>
            <thetext>Well... should I bother doing an ebuild for 2.4.26?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-04-27 06:57:42 0000</bug_when>
            <thetext>Well.. should I bother doing an ebuild for 2.4.26?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>edschouten@il.fontys.nl</who>
            <bug_when>2004-04-27 08:46:03 0000</bug_when>
            <thetext>I could make a 2.6.4-hardened ebuild ;-)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-05-08 20:16:12 0000</bug_when>
            <thetext>Created an attachment (id=31021)
sys-kernel/xbox-sources/xbox-sources-2.6.5.ebuild

new kernel ebuild</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-05-08 20:17:16 0000</bug_when>
            <thetext>Created an attachment (id=31022)
xbox-sources/files/xbox-sources-2.6.5-CVS30April2004.patch
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-05-08 20:18:17 0000</bug_when>
            <thetext>Created an attachment (id=31023)
xbox-sources/files/lirc_2.6.5.patch

this is a generic patch for lirc support in 2.6.5</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-05-08 20:18:40 0000</bug_when>
            <thetext>Created an attachment (id=31024)
xbox-sources/files/lirc_2.6.5-xbox.patch

xbox driver for lirc patch</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>shallax@gentoo.org</who>
            <bug_when>2004-05-08 21:53:02 0000</bug_when>
            <thetext>Theres a reason I havent moved Gentoox to 2.6 yet.. its bugged &gt;.&lt;</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-05-09 01:31:00 0000</bug_when>
            <thetext>I could maintain the bootcd for the xbox. I still work on it, using catalyst.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-05-09 03:05:14 0000</bug_when>
            <thetext>Thomas: what bugs have you observed? Have you reported them to the xbox-linux team? The only bug I&apos;ve seen so far is the initial screen clearing misses the bottom 1/6th of the screen, and that was fixed in cvs a couple of hours after I reported it.

Edgar: A catalyst boot cd was next on my list of things to do :-)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-05-09 04:09:43 0000</bug_when>
            <thetext>Created an attachment (id=31038)
xbox kernel 2.4.26 ebuild
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-05-09 04:11:37 0000</bug_when>
            <thetext>Created an attachment (id=31039)
xbox-sources/files/digest-xbox-sources-2.4.26
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-05-09 04:13:09 0000</bug_when>
            <thetext>Created an attachment (id=31040)
xbox-sources/files/xbox-sources-2.4.26.patch
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>edschouten@il.fontys.nl</who>
            <bug_when>2004-05-09 04:49:00 0000</bug_when>
            <thetext>Edgar,

There are some problems with the 2.6 kernel:

- initrd is broken for some reason
- command line arguments aren&apos;t correctly parsed by the kernel</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-05-09 05:21:11 0000</bug_when>
            <thetext>1) Don&apos;t know about initrd (started using nfsroot instead). If it were broken it wouldn&apos;t it affect all systems, not just xbox-linux?
2) The command line problem is a bug in cromwell, and is fixed in the latest cvs</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>timmy@invisibles.org</who>
            <bug_when>2004-05-09 15:03:29 0000</bug_when>
            <thetext>I&apos;m also running vanilla gentoo on my xbox, currently using a 2.4.25 kernel.

I started off with 2.6, but changed back to 2.4 due to problems with xv and lirc, both of which now appear solved :)

The only other problem I had was with the 2.6 fatx driver, which continually corrupted my E: drive. The 2.4.25 kernel seems to work flawlessly.

Seems like it&apos;s time to give 2.6 another go.

Tim</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-05-09 16:08:33 0000</bug_when>
            <thetext>What kind of corruptions did you get with the 2.6 FATX driver ?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>timmy@invisibles.org</who>
            <bug_when>2004-05-10 00:48:46 0000</bug_when>
            <thetext>I only use the E: drive to hold xromwell, the kernel and linuxboot.cfg, everything else is on a native ext3 partition.

Just editing linuxboot.cfg in vim once was enough to corrupt it. The next time I would try to edit it, the file would be random characters, and then the whole directory would disappear.

I restored an image of my original HDD before going back to a 2.4 kernel, and it&apos;s been fine since.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-05-10 04:44:19 0000</bug_when>
            <thetext>Created an attachment (id=31094)
xbox-sources-2.6.6.ebuild

0 day warez ;-)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-05-10 04:45:44 0000</bug_when>
            <thetext>Created an attachment (id=31095)
xbox-sources-2.6.6-CVS10May2004.patch

this fixes the video bug i mentioned earlier and the &quot;won&apos;t power off&quot; bug.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>avenj@gentoo.org</who>
            <bug_when>2004-05-14 16:23:23 0000</bug_when>
            <thetext>Shallax is no longer on the development team and we currently are not supporting a XBox port as part of Gentoo proper.

I hope the GentooX port continues to be productive and successful.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-05-17 04:04:33 0000</bug_when>
            <thetext>Why can gentoo not have an xbox port? There is a lot of interest and the last time this was brought up on gentoo-dev everyone who replied was in favour.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>avenj@gentoo.org</who>
            <bug_when>2004-05-17 17:44:49 0000</bug_when>
            <thetext>Gentoo has a XBox port: http://gentoox.shallax.com

:)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-05-18 06:10:19 0000</bug_when>
            <thetext>So you are fully endorsing gentoox as being the official gentoo xbox port? 

Do the other gentoo developers agree with this?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>avenj@gentoo.org</who>
            <bug_when>2004-05-18 10:27:46 0000</bug_when>
            <thetext>I am not endorsing GentooX as being the official Gentoo on XBox. I am stating that there is no official Gentoo on XBox and right now that is the only Gentoo on XBox effort that I am aware of.

I&apos;ll copy the text of my email to Tim Dodge, which you were CC&apos;d on:

##
On Tue, May 18, 2004 at 08:57:50AM +0100, Tim Dodge wrote:                      
&gt; Hi Jon,                                                                       
&gt;                                                                               
&gt; Are you saying that you are closing the door on an official Gentoo Xbox       
&gt; port?                                                                         
&gt;                                                                               
                                                                                
No -- I am saying that right now it seems to make more sense for people         
to build on the existing XBox efforts, and that prior to restarting any         
official XBox port I feel we should have some serious internal                  
discussions about whether it&apos;s worth adding developers for and whether          
we want to deal with the potential legal ramifications.                         
                                                                                
On the other hand, a secondary external Gentoo on XBox effort that              
integrates cleanly with Portage rather than relying on a set of external        
scripts would probably be a step in the right direction.
##</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>edschouten@il.fontys.nl</who>
            <bug_when>2004-05-22 10:34:44 0000</bug_when>
            <thetext>Hi guys, long time since I said something ;-)

Well, I can understand why you guys think it&apos;s still not the right moment to add Xbox support to Gentoo, but leaving it out wouldn&apos;t bring the Xbox support any closer than it is now. Besides, Xbox-Linux is more mature than some of the other trees Gentoo already supports (like MIPS for example).

I don&apos;t understand why you guys care about the &apos;legal&apos; issues, because there aren&apos;t any problems afaik. You&apos;re just running GPL&apos;d code on a machine. My Xbox now has 0 bytes of Microsoft-code in it (except for the already built-in firmwares).

Xbox-Linux now exists more than two years and they have not been sued by Microsoft Corp. I guess that would mean that Microsoft doesn&apos;t even&apos; care about the issue.

Yours,

Ed Schouten</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>edschouten@il.fontys.nl</who>
            <bug_when>2004-05-22 10:46:11 0000</bug_when>
            <thetext>Hey, I thought it would be nice to meet eachother on IRC.

How about #xbox-linux on freenode.net? Hope to see you guys around.

Yours,

Ed Schouten</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>edschouten@il.fontys.nl</who>
            <bug_when>2004-05-22 10:46:35 0000</bug_when>
            <thetext>Hey, I thought it would be nice to meet eachother on IRC.

How about #xbox-linux on freenode.net? Hope to see you guys around.

Yours,

Ed Schouten</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>vapier@gentoo.org</who>
            <bug_when>2004-05-23 13:58:40 0000</bug_when>
            <thetext>lets do it</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>vapier@gentoo.org</who>
            <bug_when>2004-05-26 20:43:45 0000</bug_when>
            <thetext>*** Bug 44818 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-05-29 00:19:07 0000</bug_when>
            <thetext>Created an attachment (id=32231)
xbox-sources/xbox-sources-2.4.26-r1.ebuild
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-05-29 00:19:34 0000</bug_when>
            <thetext>Created an attachment (id=32232)
xbox-sources/files/digest-xbox-sources-2.4.26-r1
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-05-29 00:20:56 0000</bug_when>
            <thetext>Created an attachment (id=32233)
xbox-sources/files/xbox-sources-2.4.26-r1.patch
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-06-11 13:04:23 0000</bug_when>
            <thetext>Created an attachment (id=33099)
xbox-sources/xbox-sources-2.4.26-r2.ebuild
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-06-11 13:04:57 0000</bug_when>
            <thetext>Created an attachment (id=33100)
xbox-sources/files/digest-xbox-sources-2.4.26-r2
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-06-11 13:06:16 0000</bug_when>
            <thetext>Created an attachment (id=33101)
xbox-sources/files/xbox-sources-2.4.26-r2.patch
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-06-29 18:58:40 0000</bug_when>
            <thetext>I just added 2.6.7 to the portage cvs. My first commit.. please test!</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-07-12 06:30:56 0000</bug_when>
            <thetext>I&apos;m going to close this bug. I&apos;m not adding 2.4 kernels because - I don&apos;t use them and hence they will be untested, it means adding support for alsa and xir drivers, and they are not the focus of the xbox-linux team anymore.

As for general progress, I will be uploading a livecd somewhere as soon as xbox support is added to xfree86. All of the other ebuilds and patches have been added to portage. The two main things now are testing and documentation. Please volunteer if you want to help out :)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-07-12 07:02:58 0000</bug_when>
            <thetext>Why not adding 2.4 to the cvs ? You know that fatx is in 2.6 more than unstable. Maybe you don&apos;t need fatx but others do.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-07-15 04:09:24 0000</bug_when>
            <thetext>Created an attachment (id=35462)
xbox-sources/xbox-sources-2.4.26-r3.ebuild
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-07-15 04:10:52 0000</bug_when>
            <thetext>Created an attachment (id=35463)
xbox-sources/files/xbox-sources-2.4.26-r3.patch
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-07-15 04:19:16 0000</bug_when>
            <thetext>Created an attachment (id=35466)
xbox-sources/files/digest-xbox-sources-2.4.26-r3
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>chrb@gentoo.org</who>
            <bug_when>2004-07-16 04:50:52 0000</bug_when>
            <thetext>There is now a gentoo xbox mailing list, send an email to: subscribe-gentoo-xbox@gentoo.org to subscribe. I suggest we use this as a forum to coordinate, hopefully it will be easier to follow than all the different bug reports, emails and irc discussions!</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>hostmaster@ed-soft.at</who>
            <bug_when>2004-07-16 14:03:18 0000</bug_when>
            <thetext>If you wanna subscribe use :

gentoo-xbox-subscribe@gentoo.org

</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>27590</attachid>
            <date>2004-03-18 20:11 0000</date>
            <desc>sys-kernel/xbox-sources/xbox-sources-2.4.25.ebuild</desc>
            <filename>xbox-sources-2.4.25.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA0IEdlbnRvbyBUZWNobm9sb2dpZXMsIEluYy4KIyBEaXN0cmli
dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYy
CiMgJEhlYWRlcjogL2hvbWUvY3Zzcm9vdC9nZW50b28teDg2L3N5cy1rZXJuZWwvdmFuaWxsYS1z
b3VyY2VzL3ZhbmlsbGEtc291cmNlcy0yLjQuMjUuZWJ1aWxkLHYgMS4xIDIwMDQvMDIvMTggMTU6
MTg6MjMgcGxhc21hcm9vIEV4cCAkCiNPS1Y9b3JpZ2luYWwga2VybmVsIHZlcnNpb24sIEtWPXBh
dGNoZWQga2VybmVsIHZlcnNpb24uICBUaGV5IGNhbiBiZSB0aGUgc2FtZS4KCkVUWVBFPSJzb3Vy
Y2VzIgppbmhlcml0IGtlcm5lbAoKT0tWPTIuNC4yNQpbICIke1BSfSIgPT0gInIwIiBdICYmIEtW
PSR7T0tWfS14Ym94IHx8IEtWPSR7T0tWfS14Ym94LSR7UFJ9CiNFWFRSQVZFUlNJT049Ii14Ym94
IgpTPSR7V09SS0RJUn0vbGludXgtJHtQVn0KCiMgV2hhdCdzIGluIHRoaXMga2VybmVsPwoKIyBJ
TkNMVURFRDoKIyBzdG9jayAyLjQuMjUga2VybmVsIHNvdXJjZXMKIyB4Ym94IHBhdGNoIGJ1aWx0
IGZyb20geGJveC1saW51eCBDVlMgb24gOCBNYXJjaCAyMDA0CgpERVNDUklQVElPTj0iRnVsbCBz
b3VyY2VzIGZvciB0aGUgWGJveCBMaW51eCBrZXJuZWwiClNSQ19VUkk9Im1pcnJvcjovL2tlcm5l
bC9saW51eC9rZXJuZWwvdjIuNC9saW51eC0ke1BWfS50YXIuYnoyIgpIT01FUEFHRT0iaHR0cDov
L3hib3gtbGludXguc291cmNlZm9yZ2UubmV0IgpLRVlXT1JEUz0ieDg2IC1wcGMgLXNwYXJjIC1h
bHBoYSAtYW1kNjQiClNMT1Q9IiR7S1Z9IgoKc3JjX3VucGFjaygpIHsKCWNkICR7V09SS0RJUn0K
CXVucGFjayBsaW51eC0ke1BWfS50YXIuYnoyCgljZCAke1N9CgliemNhdCAke0ZJTEVTRElSfS8k
e1BOfS0ke1BWfS5DVlMwOE1hcmNoMjAwNC5wYXRjaC5iejIgfCBwYXRjaCAtcDEgfHwgZGllICJG
YWlsZWQgdG8gYXBwbHkgeGJveCBwYXRjaCEiCn0KCnNyY19jb21waWxlKCkgewogICAgICAgIGV3
YXJuICJOb3RoaW5nIHRvIGNvbXBpbGUuICBUaGF0J3MgdXAgdG8gdGhlIHVzZXIiCn0KCnNyY19p
bnN0YWxsKCkgewogICAgICAgICAgICAgICAgbWtkaXIgLXAgJHtEfS91c3Ivc3JjLwoJCW12ICR7
U30gJHtEfS91c3Ivc3JjL2xpbnV4LSR7S1Z9Cn0K
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>27591</attachid>
            <date>2004-03-18 20:13 0000</date>
            <desc>/xbox-sources/files/xbox-sources-2.4.25.CVS08March2004.patch.bz2</desc>
            <filename>xbox-sources-2.4.25.CVS08March2004.patch.bz2</filename>
            <type>application/x-bzip2</type>
            <data encoding="base64">QlpoOTFBWSZTWTY8NZkEQR7////////////////////////////////f/////f//////41hg+gXZ
ToGRT193Sc99h3077Ud91wAeVegPgBA2DuMTsmYa6y9anvQX2++5wAAAAKNs+wZvPeFe+hQAAAAA
AAAAO3Pc21ps52D32b57qTlge7dTaXjMClSoAiB0BqQ20PT6B57L24fQT3Q3vc8IqpQffZ1HkfXV
ePrpvtS9573ec+74C9fY+UjXKeeX1Tz73zeT3bvvdwNPkG+8rVfIemnvsAnje+26fduqvuUokPpk
aAAECJGlvrcfXV7b7c+fe99N7c1YNpnFje7o9O7bddPrfeY02bfe6QkSefSgkAEqAZr5973HgLu5
9B73eeDORnW5NnH28OUp5c+IvuNvq8A9Pt3zh3vOW33aKQV9sNDFuljtM7Z2NSA6ZX3bm++80IO9
co0fO1FFctCh7JMpvu587HvPuG+bW7Ht0711wSVKRWmqpB1oo8gNFXTebPraztog9tVKvvGrqn1k
VVKI3WOhfa8FuQABUiqvgG32A1QQfZvXdhJB9D7tT60kojvjjpfWrYy+t9rakIAAKqh9A307nWnX
Zvi7slCvG13hnzw9V6W93dtsA+uAHfYHSmqdvdTwX0Xe9d89064Pvt9N5272+++vc93ze29t9ddV
7PXtt7VgZtt9xwKKPox9lGgAAAABT69AAHQoFAoKIQvqzh6AHQAZAAHe30vLeh26242uegGqAHff
T4ehBQV9AA1IUCkVUGwBY1ebsVRfdtdW2yayA++6vby97vIAAPmvoKlVEufPn3unxO9wA+u3nU++
u9yH23jZiCO9gV83lB9Prdc7G6831tTsH09e+ZezoUVw4V1rOc319d7e51E+3ve+74Hvm1nbXT3M
fLA71gKGjxO+9fevrugenPjn23b6vrU999xtz3tvd0qjoaKCl5Gj7vnea3fZwOuvd3AA9DL1u9vd
49Do6XYPXe2177e2+93q6fYYSOvn31urXxevtu+2WnfW7rfT6pUnOzdpRNHbtd1gvsx0O2p0JNAZ
sGiq99e+773E+AHV833Z2NRbGesnPbldtKk9hkHppffcAB9FPTjuTgA6vlafR6PRlKfTHqlPgD7L
TvubsclffH19tzbq7h0rXSnO1a22+777YF9ut13yZjtzw+9mJu984523dzsw5Ap3NtZ7hu3OdWM9
997O3vb7qEebzrX1p7tq9e333pSgWfbq8+u7veI3d3LNvplfbe266Olr715nduzfXtt76C993V9v
kLmVo333e9ke7cmzfd9eB6++9z3t3fdk6Mfee6XtPasnRc510ZRRK2IPvvrdz4JGzuzsPqk+txHr
ilTXPvm+vWmMNTX07Mpc9vemexFHOHPeevQL0c4+7769l81MPWevbcTptbL6vfPfIVvtwLu52a2r
GmufPe93Dc8M5dQ7NKHXQ4rq+3qvT23d99zsHTe+1pMtB3anRb0ZX1nXE28fOg5191z687F21zdX
2e8zC+6+24y2eer5nyXaZ7cchpVJzG5tsZI2x6feu7758i63bae32ea9VW+8vHdda3uBz7envG9h
7mu7a+PUb25B0PdnvvduVnedH331db2pr2dx3hva8+3vtb0fTwt3dbnPe+3Pmz7s7753d7burbvl
7xz3ve4qu73D0r6ffPfPeTbBe83feb17vPPstPnNPXvW867ud3d7r2ezW97PSe2ybbW1j3de9zZa
3e1mbzvevvOe52XnTXm++z3s1929AzN5t1duR9Ta73Lu6qdMMz0Ogl29uE23bc9bt3rXna1T3r7e
t7ePXWjKnM63Guaxoua7tH3evc++7Z14+ZUol8Lptajo0s7cAabt0vb3e67u3ve95KA+vu+886vQ
0FUpQG7bmZ2976a1V93nu77j6BfYe2S3rcfWvvXdc3p7u3nZbXtgPO7y+8AGVPQ+1dpOADoBQAAH
TEadcvVB7zHvqYC83W9VF7FR4zwAMqdxembLznEqjHszluXK943OrLeeqBAa7e1vbud7e572A3hz
2e4wHNm9alDs53aMX3u9vcKOuxprNFjuGxve7jbeIGJrtja2Nru5dbpQ1T16oBT33cM+tdpuzpUa
T2M7ufe92qD0F3dqgKUzW9e8WF8AfXd72dLXXIoq7AAkd20Cp3e8UeXJ7Y0vvLweqqO9taHXtood
sqpk9rM+zxEh7nudfc+uaAtnth13Z2sOx8expt3oe3d3s9oJ7h97596zqyKzmwL7ABpSnrQz11ce
W6vbqE7YXY5ztwOtKE7bbbjtnONAbaVC3db3ndd3vNU7ddq9AdNsBznc11m3IorGwB06tq4FVduc
HWgaaNu62tq7vDy49T7nzvXydcQHd99vdZ892r7vfXx72+O9297r2W3ql60UVUOwaCI6wde2nbrl
TqLI8nuwaFeqO2FdOxuVdSABTtGUACg6d989A77AAAAAHXoGPe94Lves2+I5rao1suht7sewHz70
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
/EiIdPuORiiookITTev5JTUS42rp75rXBJHBI0zEiq1fM84JCRJMYwSRHqrS5Xywe5CbXhmL9DOW
vX47TLuxn5lFUVrFTULZJlc2HzCGCC4FukxnWVM6QuQklorkySmWIkyX10TwIVQ0WFUJ4cInCbqV
7M9pckuNzKyNdISyl1MyybElbWtg3fwzP77nJZLW6PXmolSFOIK0FHFFe2cEck3OVls4aAttQ/lE
uVSL+D0vyAgaOOYZT373T4ofXgwlAZeaQ6osHEUVDMRQVXz8bQIQDHPlu+MdY6PSSUfze+Df69z2
HTWzEjuzsILW3Z+PyzWPTSbYxNguWlmNxKYrQsqqGxPggGZhdjmY22eF+7sBfmfCgQtdCHt3fF32
Eq97q3kqImhVUENaKgMoBl27el9icRMEC+GKhtnRidkwZFwrBNPa7fTVu6tz0/Em26/2cwWnisLk
urcRYz+uah0DWSZpDyQ2TtKMcwqPue7tKbR1E9hD2+37ScJf0Xz4ziR/Ddg66yCpoTEMjlUVNOWh
8zSPfiwuTzO4yLX8GBeLycfh8vlFDqFgmJRFURVQkeHpAeYQizDEet35n9mIbl5DszTL53vrlX8f
VcEexo7Kttkxp1rqRg/F/i7B9gmb26OWODgS8A3jDJv9GeCAkR/Ujkm22SXi/XWazK1mEVMUTFRU
FFVVVJUyiVVRVUXpDs8fCwyzONJmqpknHdWeOyoBjxx44x44zdZ2VnzVPm03M4zaZtjN3jFpnOMT
Lu9xO7o/wJbfGP8M5a9nHd93URunh5XnjW35f3PGq67a0+1b9etr5ZoiEsO7u7u7u7u7uzMzDDKS
syiuV82nk5fQ8+SWeuuum/bkjGNk1VVVVsJ65aKKK67bbLLKrK66qqqqqqpJy2yhwqszMzMzMzMz
MzNJHHGCPX5DtSBuUd3j1B+UAJiUz9Pww01SyV4rbuxkqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqq4444444444444444444444444444444scjmnyOJJJJVVVVVVVFVVVVVVVUVURVVVVVVVV
VRVVVVSSSSSSEkukNC6KUkc3mcxSSU9+9vLrbovPjt128/Pa0rHTqz0uis48J1Dj79doq2HeHs91
E1e8SSu6y2yyqqqqqqm26VJZZZZbHPxtjuomnpx0U48eG2zBVRQuH2ebw83r9fd699iFUtmVrWAJ
qZrMwqTIGn2r7wp7vd7Z77KiPKw1qwrVTmYVJIylpbR2v0TLjzMttsky1u23JkpJZIW5K6xlKqUp
QttVxJ5CWyTIqxtkkYy2jhXKVoblgHZ1fYXH4VxwboSFcZQGvddqp5ZUNpu76QMQCDFCkaVAoKFO
zrzvuvRs68PNcRxmkYiEnlJJEuTGLveHaEUmtFW3mZmceGM5nF6kzOazMzM3zjN5yZjOczMzNs5z
hmzec3lQ8us0TZVT5w9Kyw6VovaIiHSshKLPi97KqiarGb3ve1qtjOMYd4eZe2MRKmZqoqIiovVS
9JVh4XVj1g+vAAEIkG5m5uZMmTJjcyZMmTMmZbbMmTJkyY3MmTJkzJmTGjeuus3ze973ve+cQyGE
hKbvbMVMzMIRhykRDtNauszMuiRNxNsCbNGa1tt7cYRtxhGgJqLe8o29a2ar0YPdyXW42a6NytBe
HHSRCqHcS9jfL4Eke/4z2YJNSzjEq6NZKmEYManClsG195ndqdX16T7bROh9F2jS3epzni6z/FnO
/vqYdm9KgvwMBRoQYpaYKMo9RVNNLHL3DfsU612/B7JWvZwcO3JD225+euFD4P7fjw4eux4lFR9j
DKidrYpo0h5iIQulYuYRfEOMUMMS7y+4ce+eMBp+I1BsUabINviFR4GX5LULe3IoMjIcjCggsjg6
73NoXC+M1glAc7z2ziLKeyQ3y5WwkqilJHSWORwhngH5efTSWBH80BWUbyP1cKhC0NdIWgfKWPBE
7/bseTyYCdWwOAIHTy+4sOcnp1qtR5oefvp0x1fV2cDxbgOEAIRCEGRCZiQKUpPbmVTSNFAOTkTV
EEUEtDE0FUQUQRMQhSPdA4zhEEIBksrkAZKMYjBgQQe1EO93KA8IE8PbMzu7L7tlu/06PyJz1213
sJHO1+p+uTwzD8+ILAgkiJ2o3PkaJ6Yj3RqsbEmwbbEM/HlDLhUWRAVhGCGwBSsKqIn72YsSC2Bg
OZBuIWqgKIEg+rsiM0+03PeNItgyo01XpUiGBBLXGokh97i+Cbiv4mzHajnCh6QEsLmtWL90+Ppj
SZU8fPPI/c6aKan59ApRbw5fyf3teRoz55Qctgg8KCh7wVWD/BN6ZwDthbzy+Gn0utHKNMPLR4yN
76HYiRfjxcjtx2wypX+E6Zf6dBbHWRzSlvNOmSYYSYS2cdZ8iGiAYIovIwwe/zGk0dLD0RjNxgGe
GXXff0545UMDUmTJMhEslBNd9k/IRlzJkIe9gYHsgAyFeby57Djfrn5JPxd/GjiOkmvUYOJMTElJ
SGS/k+fxdHhHMB+/PWHRU11nt1geELhFUURU9I0l/C3rQ+YgdEEEATMzExNRBQLzg4lARBRE1REF
VHf5OgNU3WMIqGeYDBo6YWQZPv3we9aYxH4hhn3TCAG3GG2lG2Mge6TKjszA1BuUdM/HYRQGpTqM
laMDJDFs+G0MgQe/D7n54Xp2m2nfVbAEnU5gyL1NG5WPh0WP6LVtN5aWGOagZzwdrVeK3prWwnbg
jjotIaBtK8wzM2jFuABSIHRJmCS439WeZMG1OM0fzZ6V9/yOOawzEcvvmvVNWrpNELumB2anpndi
VFxIYZ6a5LhXLStCxkMtXu2eKFo88duiRo7gT66CMPkN+GPkDDIw60x9U1asNEkzUMa5JpiCQS5U
TEpp74Qc8zsF6LqvyoIOfq8OJHo/ViKJ8ipms70xuS9HK914xVlNrZWZSKppEvyvRURNTP2smJEo
gBFbMaTT0S2U5k35zzul4jo3gYw1AoNLL4dneIKmqsN1Uyl1WLJiuMgogo9WBREZA6DQSuAVqIBj
dapjMzAtLGq1VJB7ZXiENym4IGU6FTISdBC82MnnKyY3v57W3n6sHtPmm5p3PA5s27Xq3DXN0Sqd
+i5jqGZNEiFn2h7u8Bev3vL08A3b560xZrTytnTpWHmPfRUmWbGJnLViEcIhqHBFTnZGlkSmoTnV
DaYZVFhpWSNl1Rqoya9CawnB+3kRLyKGTP8XefX8u4F2vWxcggS+hUcphi1wH57/o99Ddb303eDj
6DsjjKzIslu7Eyi8Yw3huTe00S8m9wtEOOIpJKK06KpUDyhHDan2T650mJpkRdrFZx4GfWWvbH1Z
t8cdMwIE+yTtudnd7tRy/UB8podZwybCLtPq4eFOzepzKTQ++rwRynz3bBBph0dDm5JpHPLDaZhf
g9W3NhE+DCCS0h4qUwqQH04mvRwMy3fv1vENZK0D3xUPEuxiHPvffq1+BQOIPYp9HD9IjIxpwLId
R+HB9XSjbmtzAkCTNDeiVXpz2/597ybkHykmU17u3Se7QWTafJ4qc8MGHRFoIOZsQEesoDo9LTRZ
MM0irJDAnAUZezZuTcNw0iJo0kSMKDlFG7dpEyo2vaEwpcSPq3djq3CamIC66Jh8OD7DKz/3rxnh
r8BT37wGmnr+9/fYyegJ1OvzWju37KdxaHlh227qKnbRSVg7fYXud34m7KYRHu71N0sDmlMcYVVs
0LX1eFMeXHyc2XsdXPf2Wd5aB6U77si7PcVSgX4TY/W8fw5hfl0U7kJrhDbxqRNWlptgKMrLA2iR
A9Aj26GQ6CSQp0RrTa65CZ3r53yLZLFwh8FKXUj041/XOyMIXqXFtKT4ZbIyy+rVhmx5JHEgkFOI
2qdJ693epergrEyQRqn9XmWElzy5m98uhxMCuh1AHgnjt9pnMCgM4enHoFgD5sVPPI2kxSRPP7ku
x+fhRDAGtBEquKwHeazDkLQMAAXt5rDC3Infp1wcu4fi6W5TbDbuf2trDMFq4k9oiirlt2/p4epL
IohnEjrgCEk5J6l9GjanSQeOQcURNt3pw1hQRjLCiXLn11HHquTOYjo1UWxzY1W7LZQ+L6ANU8pY
9EEacQ0ulxx0OEuiDrTG5FoQ3nddDtj5Ux3l2ktra+gy7zImLGtwlazjipiPKtdWBmITIalMg3Jg
vepleT5ZhCijRB4mvveNPGnYmAdz8fg0cdtPHPCvPJEcEMIrs2rhlJJhyc/w/S9VxfFacVqvHHBS
atbGmVDRuGYoysaecfimQea4wB8GJzLpcVFMsR4lj1ZRhnDsGe7thE2reI3NIdCHroSRmrHDrL8r
2wpzOLYMRXHLIyKTPSDMKoLjnhh3YY5UeQJiZ6Rrn4Nm5taNLnvnKpRba4wKb0WxTZet6wvDr/bU
23csZOSSbytz+m+3Oo8OkC44nxVaq+JvDvhOq7Riz+CNsGfj9J4Hm2R0WTvw/ObM3lLWfnbBa46P
Ulw6a4XlMzjoYwyKsOL8dxuZJbd0ipY9wRaGSjhyxCrbEEOui80rJ0AVzlN7CEFBKDfxfVuiF2Lb
npA9Ws7FTkjMSpKvXLzettubpp9q7NK52cY6V6OeB5T0ZoPFFTiRcxkVwXoc4bYFQ1x3T1PF5JJL
Gpgajg52R1zuT2NVHpvJ6lBKOLPohX20yPK5eZLjE9VLngsPLqTQD7w80oQ66R8uDo4S/DHOtem5
qfVZL9+voju29UNNZmhvjFAcS1b6ba4Cmin0CmmNmRSJCKVzxaBEjp2PkIpQpTeI8tFe5VHtBFIy
yOvxQHERrejhNXUhPsDa0odTDf2lr0Fq6cj0Q0LLjzyZckbhVqLyK5YFuqGhoQpzZQJI55Exzngo
dEpuOzci0IxZnQ6Ivo6bPGJTh4bnEZnNloeeIXZXadxwDV4cHgdkcMsZ2R5x6oLRb9wmKGro0pvv
1DK6Dp8wS3vJK6OjiISCr0Jum3K71RZ2vqOsSLFsx73vbJqSzK4kyM0w2MlQqr2FlaSCW5HFV1CU
CSOAgokmQgio96XU5FUshFMXY4eGawlrUJgrqyQkIerSk0EJFripwglQalb7yuBiDQ7jYcobSwaj
DnTiozOgvj7nt2vo8hGgu06/3+zP5CYAcAPcwvNCS41ExmPvhz02aUurpS1KivKbHrEUtGkTMiih
AGEnca9G7zWISFM+BFaql0LktFLlmfLYtxqW5EcTvNc5OhDycXv57E5GvsxqTz5N1pUOpIatnRKs
yxKZe6dolCCwvIweujk3dpyTcwdi7LfN+WHdAxuDCjn4vy8PHrnp7Gp414RbHM1DLsmSFvYc5HGj
va/OQPIR3AQ2T37ct2OtiyZbevczkuQLp8SUkWIpTbluMkGwS0GW3jmyvoS9FwF1NRbRNtY81VB2
Mut59PuhfwC6Xm8chPKEogfvz7I4QfK/suPiu7vf1M8FlTQWzIZa51bKDpipxVURlkB1o4cly1MS
ZcuuQyZWiqi697RfhwuMOYxRLxZBkTFGSaI4klHS7SOSjV7Oe2S65csHq/LrXmixG3X6i3jPK/qM
y/F+AaUzWRyLcz1iOQfNsYp8vHksTN1mJm0dEexvWIHkyWBXG8vjuXKLHHBrme6w7a2C0QmbKZgH
Qkw/SEyQOrbHrfBdj2kc9LreddO2zR1VdNOhFGPK7RopCxfnLzCW9WaB68bbInZ9Ioy9LA74p1XS
5e+bX3tdPeeXHrm8ns2v8x5MPB6eX5HO9G3gxeVctz6HX58YF7G9SNG6SZXtHn3SCvY/MmeDQbUX
Skp9rP61uruSdWgDObom2UQyldOvnS9SY5d22tiymV3TbQ5DbyYFI2bbneWsmtQ6d4TW9HdEnc9s
r7fDU1JxN8abyTGMAdU9bDG/caTFg89mwLJIqRc58+aEc97oyoaG2nV3sESntO8ukGrhIm5XWVtC
W3KjujPQ4jYGRRxNRo4SMFwStloCg2x+N9VLpySq7+yOPnm+12+hNu3mVz0eWeLHa2Tl2+Rb2X1u
a30G4sgsMVlNDpIEeow1A91i8G1u5iG3ntCjAgqrPYw96DykIZSnsJ6FCYhi9zRwirPDypX6Tq/W
UbJLeRscdzDJKkz6NnS7zQZ4yHjN7o8TF1x8fBiqri8y/ClxjSqZE2q6TP2vJYvcuucMgtCjWs0M
HG58FVF8YvOH/REZohirZLQ80ZHwihDoenQgfOZmsE09VMBaYfKsTebXmJqojFRfLy82ibNlljhR
hWVWjnhjjovqfSIHNEZENs7vfpU9HVjSPD/G37+fg4/PD/E+iKoqir8WGVFFUVH3ZCSQ4h+80T7Q
ZXJHgQP3Ufj3mchjF3fy8LIPWDzrPQwe4JQEnlQLDH20cpah7RTWC9bi5jGh3ERQKkSjvrbblopD
R7t3DCMkxmUMS5vWVvZ9pHK74TM97OgucZlv3uvkPzcjwETNEFNHXZ+7Hz68PlePnLFXrDpZ/hwc
8UBk51xPwugvSXY7XyatybFTHnk3Bndn0cU2PlT+5txW63w5Si/GHFR8JNMvTubSLjpsq3C1DQio
IVzJzekZu9NLvaoaaEIaNerFBpBhHoZnLPeZovQ7EQDsgCoiQMBjxqMgq62gEz1+Fr+RCO8oYDUD
TTvcOUsDSBmv5G/6nsRaAoB+934i6gPuZiLW5yK6lFEjkhqs8NHEG95Q0DQsHTFyEWgNwmVKbIHC
sXoaHUJVKnwkidYQ1cycyETnXEXcAlUlOsxWlpEqrjhzoYRm1DQDU9S42LF16PaTyBA9lNHtkU+4
dItajyVJyn3uvk/bBQWTMkDYd0krl7+7w4vQjsssYy1QDpId74tp6eZ58XfDp8bUI80LbdWv3k3+
x5Jlq0N0cWtXkWdZKjx+jXCAUR7bwMgaMBYeTKmNWCldL/TdOhqWCoWIqLmTMAphOmiOOTA7OuK5
gFWehKjkBuqCmkMd3h4KcUHjSgfYSd+Qj6sKJIxMwDQo7cXFDsOA6XMyqw0R2+cIVnf0a9KbU54+
dhMizAeEUZHL7SozKbNtDwZ/W/jayTy2ecItDsSmHv66CfPL6Xe8x5cV69k3Z76apejz6+16waOf
klxSKTu8HVle86vDmzPQncx3OKlxXh4jfwllPp94tmGJQyWvmiPa2hiISXlt7Xw/RFSK9d+nruON
CipO9Ng5wWQOFS7wZdiIc5ANw7h4yM4Yw0yC4x+whH0JLc0ricc2UooNt6p3b22gXfzBuyzCKzXE
5udtpNESx6tuOaMYUw6VpFE2KLSzCryMvbRUIVCZYQY2l3DM/emUIMba7pv5sKw9RSC38XfOOHPv
O+Y/CUiXYNJ/oQU64I4IDbjKeewXhcgXoril93FRX3yd/sG/QuNAHiTVMHlGRBUTyMCg+rR2UKUR
HpPu7u1h1xjbwd8EXAb3p378r5j9b4jo4319DvNvyeXTxG5T1h9YC6aD1DYtl2EEwomBpxCTrcfW
kESIdTcwaG6AMKRqg3Nra66NoAckCkr5F41ZbBVeBmSOSCAjCQ3AYMiZthF6xUUSF9o8qWpmsZlU
czMKrV8iHdm3u5p90ALEx5GnUdhH3d3eR7XJh6YUPZ9/vfDq6ZJJLc2i/EwwhISksQ5Qz4jLp2da
o3KTBOwHWVFUrLLVrJLDq75CS9EpTJmhQpQubnXtVu6KA0hJ8Jc/C0+GpBIdQfTWybq4qsc8luOa
Mcfq3543bMgpXQ5d2mh62KKNxFiuXbZHqWrEJcFr+yZe9ty17qmOq3lQ1+gfrjlBNie5AzYHNXuB
q586NJC5MaDIdjGZbsDuPesana8DcWZGJlReAPLDF5xkMqJ5+3Mh0+n7sW+petBCIcd3QkhMgdL2
XKopQEMkhISS9YFp8jb5WKuhIl2j9W3HfAsE3vhGeToK+lnCaTHpvqM2WPo71ILH2SwluvW3x7/T
dtX5hBnTQCsq17iJyxE39Gvtr6nTybu3mdZFPEZa+J/BtIbm9m0InKHADFiIaWoyTbH1eMiIN4V7
uPyIISIj0Q4fRGHFyH7GOir+THc7+4rnaUknR7moB++lrkmRTULll3D387qWQj1BIXpVVSBrJMdS
3SLTM3Y4H0dQO27bXukDlRx1nDCjhiw01cmITCkqKJgkE9REmpJ5J/aN0yY89YyZESSVqruYaL/J
i5hINgnXbMaz80rv8YNGOSHlbdVUiyzMImNQc24iuF8sqCvd8kQT21SZC/IdUH9w7YzKUORKnbq7
9qjFpnZ9WDn3vGXGeXV6g28LRho8GuBJjBsK46c9qWLtwYYcqt1yTattFMUTORTmQnDnDd7Z46/C
RDjDoQcGB4l/awQXqIy6pteTLI7ysKWefXvW77PUg8duAZ7liBU0Q+IZu67eZaaFgRkJFZBy9gmB
KJCQ83aX3MDE6Tq5PX4uY0B9k8Pxsjv4+LjNUeOHo+WjjkliEjUAgyS9mvRrU6k/NJ1VXb67EOLr
ZdLrUu5NEjXRJWlcgKzMBEBDzSZK0yJ6cQL8lPiPHHU7EP96Sn1Qe3WudORbykhCm+2b/n6PRq9f
E0HvAOiIpIMgMifH5U76+p6h6iJ4wUMuBePm8jqU4ZLAsCkcJbSyhYodYF7HFXo0+K1MgsTjk692
ZEv9EOtuVCD0RIbhL3l2j29vdc9epvu8NHX7mzcvVzeD4Mo8xl48/Pbn0Yei9rHQGVqqBGSSUwKK
Yd3UTrWpnXykHL1pXqoPNdjlDgQTnObeE3ZsO+7m8HHBs+jPPm4r3bWnldTq69L5cwmUTsHag5C3
tRT418UQL9gMIGAgYH2NX5wEMRvpDwe33g0ej9LIgfRDEoIak543N+wYKYCdPTSF+fOMI/gkH8Ai
JxBPbNgRrRqpMF90IvDBMoBIhx+buaMnIu5zS69xCRKbKBRM6nbOakkIop32ZOzBgq0pv0dpUjiW
RKH6cb9NXFAfw8QAUOmJ8DkRAAwrwnUMyHnR47JJJJJJJJJJJJJJJJJJJJ222SSSSSSSSSSSSSSS
SSfCHl8P49/vhtH1Q6dwHs85fy/HtfmK18DvkLNvYXfzdfZfNPxt6qILYaFZ6w3XOptkZEONaevv
c8TdMYwSLZF3OKJOqrRmWd3sCoSLmr6RldncXZigUB6KWZEKmlFkOgHQOJMh5fFx1elLPQ0o6vVQ
sI3Lciq7fQz2kESyZDCOFfa4BkoiaKdfvfbx68JhPqk5hKQiKCpCEZFOshr+QnWD7Ic7gYnDHrJh
gZHu6A5efDiDlcz3X1qCgPajact7WKy2JvAnaVnGMsIfBu8Gu+L++uSYym2YLR+N+HQPI4kJCEky
VEUbWyRSjVtNY+qKNHLTv0CJBUqm2ZfKdXh1Tcd4yUNJ6pslSZPj6Zs2oLjJRYJ3dN12PEpJkeZv
BI5y9Xqypd1tAdhgjCgUGD0gnJde/h17/ATnhUGCw3nToma4MHYWwUBl019l2iIyAooCooDsrHYV
69KdkeVTYzvb+cNuvp72j4xgZDpDv2ntw4ecsVaMbSr1Y6aLyShBsI05kPpSV4EIVlljLPbSVjwm
xx/ZeUSj57SYuA4ssYbgkwjrJ+HwzI5JCWWtELRIpBOrN43B4Ke74nzVB1AsBkXEwiNRhRKqpFfa
iJbs+Hhkmbnb5coGZvbkgSRm/DVMvJ3I1v1TPWTfJLKVEXucBHiUAav2RHdbmQl6QwEOAPVo6YL7
ND6CsYEhDuRbd/n4fi+AJ8e3Ffd8lGdG/J3UA7BRJ7uPpwd8c4b5cfTLhurtwP7sDM/kFBkKW6TC
ooG/LO5Vu2rsXPPKSr3MFl/khLJL229ENnaB3IwngRHATKEiHuGpEqz8U9Wd26SUULlk471dCAyq
q7ejbfCDQ0Ihp24TLCJoWUQ59rE3MlpZL3ZSPl6S/RV9n5+eWvdzxOw+DB+1fVZNNHpIMIDz1VES
EkoEhISXgCCYblkl94PtHgWsX7kQiHeA5X73T5MPm+dQODiOQinv/dtHU+zm9Tvf3LNvb19jlFTb
ECgeqoUXFQkJXGf0UpsArLzVpWPzSW1mG3/kzH07+zZ5b1nMnmuQcWIEUOreLpg2ChiUmaKScEuV
NtObNjwCLphYaqjf9Fs+HKglm9AftJ9GfqnOdn6ulHzGmkr1u57ka90xX3WF2oT0/NoXRHPLeyhm
s3NEyCeyqBCeOsXRuTPFUHvezKu72qxYoQhuW2ScUt5k1+VyUpMK23WRjkJHJJPTA1hzkqJ8SdXi
OEWRhOUz4+R9LlwTzwoWAqCGCmSw+j6/TB0v9ViUOsxmAWmX3bzRfbEth8Lm7nfDFinVPb9x22NX
rqFbLdmrtT/dp0XdrLEnJfzRzi3OerjTi3F9fryEX2w7rrEpIh3umaCYkHh89LPZ4RGHOQh84y8x
6dlitnsWI2xTwcpi1uX9EXVeTuiLYLzHhDfexfNr58ehRuPveL7QD4HkIjBKfSVs/HM8vfLU/qaf
nvntlKq3k3gapR1aWSBou3yS+mZilxeqS+q5z6aRPQcQgG3zsmbddCt12qTbutML8I+dXQ9BW7Rq
H8ep9O1QWuHZTu34jq+Pm8lK2+FGvGzifr7pgl068l4fD+3frfi+QTYr1R3xS8O3DWKIxzAcECaf
snw5G3oxqp0RtlpisYLJNhhwOhAe1HdzaV6EXi3Bg6i4UUR1azop0yKTFJ2Vm9EOyFzscg5Bnc6e
Ho4612teE7drFtupWM+aZ4bUXZKOV8maivCXVSQmwuBbVsmdstfCRbEJaoQNVjCRSXHZJNDAijpL
Y0NlbXFsB1lF3GGX0GOL7ObXflxdPfzv3tZrJy83i6r537+qyKMecWWU5I7kllKiSTsCvraTZus4
pqdzhlDEEApPXnkw7TUeV8nH3u1viE6y5O8SHxKIOiuG165I3wzOIlGi/aB6IZ1ljbHy3Y9V8U8p
3Tv9E/OsNS8MBAx1xn83aApStcthc1VklzqAjTs439x4I5bMn81QXqOdq1rj6I132W+Ff8O5P31u
qROuOD59+1/s4zWnZ/pby745F+BFe/UMVa+FM9GqR25L5KUR9aa5b5D2b6zg9FvSvl4qWvQ3sg4w
s9XHTmV7fIZjbt0MNWTdmI876hT+aA9QS7FU6QkP52tlJ0+pxTGP2amZtlNTMWOkF9BqY8foU+Fw
s4e4Ef108Qzg3SBHkB05ZKR8S3MN9lz5D03lkMyKIlr+b2s8vjeq9hulNzlnLFyg0gdCRoRufXVI
8kWTzvkPKHslezB2NGa6UK+G1VnpIIU7zCmCf0+q3LSv9xteZBqWxUVbEfDnuNtVl9VQL57kJoXw
l3+y+WRkysuIwVVpCVxkogFrzDkRH57b3JQqWGt7ajc3YvNraw0c/xx9fvu55deeGyJNO7ooE/id
ir7Fy2W3Ej7ZbiqlQUBAUIQofCJNynhavDUueuq9WXlu/HlSPLIcziIUqUS5I7y0od2F0kiN7OiS
/E4QXlWsTcU2Ek7zFQ+lhQiyKPvyzRKQJdOGqk+NXc4sUqZhShpzZlKjhjJb7MxN1GRRqdKrPC7D
wOu1c2JChRGSeyXdhwirREcqSyUo5jw64dDbqJDdjw5S2R8OXx9XDVs3qkrxT5ueGfFZa8vUqOCQ
JHczZotwEBldewQzL320YUlYufeCXrLWU1S7FXbmJDESo6HMnpYp7LbbxxTSqLPCAVopiwOs3OGt
kuPbaKTMD2XaWi3g8sfFF5dtgWcufZ0m0PuIEc7HX6t6sczJXGaYKHoSxIq/kiIOxvZ2i9VVF2I9
mYkibXn4JntkOOcddd6xnD1KbueC+xXukISQvvrbudXUeib+VW8pIVdasgqE6qi7io/1xDddz+u0
24xiuGOmDWs1HZZ7mRKFIBIvPXNJPuhz76v8OabvRmdVJQNMtJ8/JUqegMjW8+sGcK5wMnOMIz/Q
tdYm6MW1Sca7SuOxFWOV2ZhbFeHD9yfGvRX42NPJq6/TX7af30K7g6b3IiUs/nL7h1/cJfB3pnZ2
m6KrldYKSb4vcsRsU8QHvZUxtNkIWx5dGq55oWkMUxpp0mPPj0TWVG1dXAVJLyjuwLNO2SzlApuo
vHLLFgiZ/f4SF1sbEk6Xv0NPkK/RIVm91saV2PZ2WkQKhHw/MzK0F2EAZ706kGkPoqMJxZmyMSUl
nFgxkOCUMJeGPh5M9d7XUwt68eAvxblkxhwNd5c9i4r1FVrkcisxUslSFbYMh6SOYQBOzP5mD58t
9KzVrgZ5Rm4IEI5nSPe0FMGaDsKrwZtp7+6+EtHwZ66MZRpKWdf1243PQbdpNtdhiihqe0uRvWWK
79vHimrsDbl0LuCjcdzo37I2Xm4VU9jDBKGTzlByupUZUUTsAwi0e88m7qafdqRAa0Fn15XPUIBm
M3XdbBrg1shPQ0r5FZ68Dc7qFNXamfOUuPb0zj3jV7+Me+vt8L3dnFHzVhuK1E+R2teI4+hxD1zb
nyaeVxaE4QDNpdBsLa/Ll7Mvx8vnov4WbclaD9CCfcoT3f3nx8Z6VOq/lwV4YYZMCMVeDBlCg4qR
L1TT58CehEOdxiMY9lJZVVUFUkxOHIkzyUXIdaHVfTwV3SrjrmMK9a7QQOFOvkhMX7QzkuajNOpa
JjFnz1SFUAOyyIyLFhib+/zZrLNFTlxVA1Q458kweCXf7K/GBy0XS0bd5kyvmDd3zn6Ik8qyWWyI
52x5JNqJLDz7r+3fRaiPms1zTZo7mJgtEwBj3/XyHgqLdJdv4bv5COTHwfeA/QbHQBMwJF0drRs5
cPje+Zmu/y1EIRh3J7kKvxO+UStsLGCmfN7vj6Z7fEf8UMYbS0CSBAkL7jTAQTs8eM9YOTU4hKfi
+0uOvTEebeeNyQ6+24Na1GTTRGT3+WJ/pXF0FT5RGrenUlxJmqJMOkSp9Gt2ZZBjBNyd6+RXIrGJ
cfk38SU3sjgT3CqujhMiUK+Mh6nkk4RCw0/Z8UmttaOe1kQytSPzNuHiy6cH9aBxtMfD4fX8W51o
6IFgiFxcpvfDU39ICHQx7UzLrodWctOrr7CbvU1eGWqsbEl+yJuUOuQllsnm5VfAg24ryng4I9eJ
E3uWbdwTZxb61nM564p6qXMFZS023AzGTZ1Cbw27Ob39N3lrdmmc78v0nuCaakBLNW2EY6Bw/BVF
N+lLU6ZanWIutjPQECp7q5VYfFoAogQvOC17ez5tbSO7hz8XUR9/0pttxjC+tehw4hECBMgkbdNc
mETfzsNYhDXzvF/d5OGhdur0o17jhuL+2eW2t4PKMBynp4TRKg/ivXz29qM7OyZUFjsn/adtpiLa
WadrXS1PHaPF7HRArQVM0gMlrF3nsDp2lJRzYYck2OwZ5NgVUzq+d/A5Y1jQfLRDAcmTX0+Noaq9
a3ZEiq+fv3W236uTx1PPdvyMcLZuGXpBkW0i0X7wRXrweHz4D7NXFmz591fnxRF/0yd47hzRMMAY
AkRkThcZ998zkRg6C+WqUaMex3szqscsyiivUnd62bpWAwbW8gjgF4hH4lhWe/a/L43tp1z36Goc
+LVxTrwxAR83lBO3Tb0+tCRSaxo5Y+8m6zcj6FpYE/ekLnnldJISTLTmN8vHlZ9hfaLdKL7p+Fwu
tHG/bWD6W0Rh8d91hK4KeBzyVRYDLTpdRNZ7n+KuZUKGN5Q532XUMOgdZmo0uh6C8GR/G90qMvIo
ypBVZu5a1GL0tlh8RsshybpVn8HeXeZb4F+CafmcFG9q0EqzT433+H3p7V4I7JdUEmwEfCKncW+K
5I+jPjk1yUvXBPmnyFZPldndCpH0dTLQ5JKWrUfJi6yI+c6hti7B/JbNkrgKo0vee3g89ClzRKko
WoJyW3WUHj6dnLpL3KxvNpUfbnu54Hdz2F4dFdcJ9ht4Ja/0wdNciLLAKWuJ6r6Ul+/L/zca1KWn
hC0LySFc48cjKq8qh2jMZlKY4iPlaUhk8Ul6rQUm88z7vqYePqu+lP54euHi2ituRYyJvhMQVHty
ctTxlkOskRqAoYnkhxXk2sCPAHBNQgmhtHD5EdBBahCBUze9EfNuzzweP5pMNnxIZfvE2PNvTMn1
4nIdTljIbijHnqyUNYohzdaCYJasM0sX2b+Z+ONyStbYUUGA3p10e+8ojGzYy/CjUKPo3WOJSHF2
YumWu/JK/oLCgyJSzfSISZM4NrXlx6e7cS7WHEIQj8+agWvvu/Tzom3VwLx7l2HeXwqF7laR5DI5
qoJ6bNPxNNnFdRGDyGuCHfsfm8o+Xni3OtyzZmXO5T5et7ScL7kliu2guQN0ezMCo7Dk9unuOAxg
JdgZBmFVhDIxxAjSce0G3VgYRj1IskBnOHSmM6cxX3DrwVPBToQjTZGQbzLYmTAkY4i93TeBo3JG
NjaDpCHYyPshDtj0PAnFdoc3nzPafRm194dsolAxdPzt2IfLlIXJytZ1/O9MpJG2227S1tttu0tb
bbSSSZKx7+WQGpLs3ftNfU3P8N6Nj0/waGnsNT/L+Nl3M1k1vnrq5MWWLusQ4cFFhrzlheJmQzSx
RjHHZBJ1KqEY9cA3isq0Ba7g1zR93668TOBSyS+MWjyh9/CGc5Vuhe8vK3ColVdd0hLBmoZMEi33
JyG7JIP3KksL+fx7Niy7uXD8PhMrwH9t3lGCeuZawY0mdeDyvTl5fPe3XjZLckeFsTyppvceO6vX
Tp/M5Aul+Xsx11/Z9WPX4/DXXnOkee61s40h6Mcm/Av8ps+0bvE+njV7pI+Sjbq4SF5YObHpaH26
IwMCz4vKJYY1k39vRy/7eGzJNUTMNJKyEy2QPNHBAdnqHfBAIGzPgWntEo6Z6UvwwmnNLsoJWHN0
vvoqmB76IDsOOSmOR1lmCeeEJOtsrvk8DGpXbxI8RhDLHzRfjtGW+1v0f+GDGCX1P9/MrT+pecvZ
OmRlfVtPfOxbHR7c0d6mEtlz6P2tJDrpf9C2D4/HaOL7fQ4zGOX6Rt73fgPr7tyJM9k5snRcKhLD
KoajeVi3fV7oSP8NFLupJhkXaslRKt12RL23KXOJLKDe/avmL8rNJprHsRFW2uOToqylV8zkW+Pq
mN7xDEXXTRevzI3vaWMoKo1gMlk9VWRFoOlVuKk37WsL4fZeFfzJT1r5Yc6juXTePe0dFzuWecKI
/s+Aa2Kz7Pm+PvatTl59OinCqUtmYqrGNtImLO3EUVIqkzK/eyvw53sfQX/LGFLZgXj2ZOMEIGOQ
pBHI3Kct5OGzaz70m5Ixtt+jbnj4wUS+22yc1tl4bZeG1Mfw+UsXdUSS4LrK70e2FaIdYaazs0Ou
uZ00wiiiriDBPHwx5HdO5t3ntlll4b2v33HlRe6zX8UY77Nyt0eMrZGN1gRCSlprav4dOIvtF/tP
nJ+n9T9PLa/2t8/tf0y6+5rLiZJMtPTuIXJfG9XZrfPYtV44Tue1JeZ9G/lJ49XYlnjlhr23uUei
oKlBRFvRkxoUXqT89kcVZVVW5CZfVEo9ZEyEtBGSqMj+INkm5WYPHKadPo9lH1qlsqraTkGxvwuT
d3La0egUYNeWlyrOmy+3hsOJ0yeT1X4Ow4ZFz29qUpnhfTZ8nlr6gBo7Su/zZR64RGnIQI17OfWc
IQPgHS/Vd4AGkwNQIuqWyyrvqghtvq3E8U7YmhMcRpDWLy+tRns9FnLiZltMajRxNvU56mwwVYJm
pUwS9WZMMAQKFD1BOZkOFRB5VsTfJXc2GSzjtZvX0Hn6UTdlj5nk3338RkxNst0yklE3NODCD8+A
yelm1JKipuTMmbkcy3Ku11aZJZDsYnk0VRLdlsfM4JBJbSnWQ+quS3WLN/Bf40+UydqA9HhbUabn
Vft9blrKYuYJB3O5pmamGPW+MYJecYPElhbG/cxMbj6mcOyPqvnXlp44YXTuGwyrKA+jt4PVRDgI
kViEo1gTI56z4GLQH7y2eZQ4l5ncL5tZPv7lD4oRQ0LQ9Z4FzyD7lj42jvYCTrMEwChZyUr2W0S1
AvBLJdEEqKEKO+ycYpfbLY5vxquIlxyO89fAgvY2QbpKdrv7ltqvp1WdGULy3tiOzhsTCMG0EU6Z
nMZg5J7JED4RQxYWJ0WRFbtOKrnU2YG7AK5RJKvE84IIUKpPiu7Zq1KH4u3pOAXdWrizo2bOMzrh
oLnBE0ykc3uqAeIo0ANZvSZbtMCNLT0o30iiuOFaYhpQYgjkihFAgDoRlGoMI1AbYaZMDRpMCCrQ
qjKWpjaGUuJDyNRoxpyDCjQR4yq4SIjsGljE2Y6UzGGMdlaJmDqgsUGgqe17dzw3oDAMjKipNxSw
hUurdScu3yeTlstbWb8s5AfihI8eqkkuGSBMaCqb0e9odffRz7J8QM+ol6cw60JVP6CTpA96j1jt
9go+bBHNGQ9BZmJNS347SvS2ffXzu58L9s32zs/X1t0Nqc+yPIV7EAYWDOiT8dkvor46U4qAwXnU
lltnwOrzxpVxJBHhq69nX17snNPnamh66AvfGGWLh3X7UHF4fH3JqMtD6Ebh3qnkqLliU6gZoCkL
/QZ9uhxJ5zppZifRZvU0YQUk1YUSvCr1GKWyQRIXWs3mz1TVRe6xd51IpnaIzTtK6uLefk5PJl0/
N9TuGGWXtQh6/srA7fgol8pvUml+K6aOmDdFd97T1TXPqpprqll45/YjZggrpz1/YanvLTbVPN04
Jrmx3lz7apb2L8Msapq8WKeEnxZIOfMzl6WxrH0pvQ9DNRdRU6aLE80asN2qu6r1KsdVy0Z1zUWW
5ZJlyq1L5hszr6bLS2bFijZJCbLowk89sZ4UTZKZ2lWkvM5svkz2xwyZMrV5JHZZVavTDVJPRDTj
bDTjszy23yNllxvuKHDMVOSGXHpopzVxFXFZhXITVy4MOJpra9NXxcOaL8j6ZoYhQVZNrJiuJnEx
kg+XViVjDJbia1nOwvkwRwaJFi5oxezRg0rrfgpzKWZrRv6mOXFLlmzz42169GvLqumshmshC1dL
YtL5tOhSynBhFJLbVyGK6CTPutMM8SmM+inbqpyRpLFjXsx2SV5bHRiZOPNPTWuCeV1VWS58VVIZ
45nue+RqKMtD75GGx69zFTZY3xpq6Gnz4JH6ZKNVUIqXww03wJmaSBg24VRdfwHRw6BuPU45wgch
+Ry34bBkTfsHpH7zyzC/Kv3cPrjEebtnV41F4ZO8PY68pQva8ppLRB7II5Ua13gpYgkQZVj3Xdp1
T/DJO+smOQIuVV0jHxxtWc95R2Y/Pe9M23GMvxTQ3FtntpW/Q8TmkCskKsYtPU/jDcQyIHP77kkg
kaHlSX2+H05HyMpZOVSz+xO6S2S0XCnoU8z5DOyP9XA5JrSRjlGZQ21fv7jh6hOsCtj12xeaSQSW
TM7SCwV788wjnECKx1aFixeZZe/pWV13ctbpyNF1mNp3nei24+s58kOGQPXt303yj9kGPYrD6j5/
ne3cQjy5TsKTkOfFRdSLr9DJD0z25JIOnppRKNGrmtRH1Zg07LEkWxoomnAzJWsHBry+TJoyUhzy
18YbVhvCHQXS6sOR43+n4Hfkrkkd2ki9N7Hw0awg04dwMWVyQKWmhAXnp97DNAc7FM+Mp7+R7e15
9gnx/O/2RWfx+63fWuC/9v1Kyutkl7k64SSSq1atVV+C3bt2W6q1btVfJbq3cWrm/NtXSyyyrLKq
rLm5t2WVbsssssqyqssqrduri4qqqqt1btVcVVVVVV8lzdL6rzXbVuy966/X9f5lVVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/Mzz4RDGiLfpPKUZRMi
oRxXm0t8ReSUitFo4MaSUYmJnm5b1tbYJbvilPKgSePqpzYwfI3McLr+jpv9rWz4ds5cvZPk9ZuU
3sNoowiIbfYm+9e3ecOndzNvvc6yxy0zWSiVRJGutVQjlrG8FAvh36juE0/GMMvuvIZrRBrMzhzm
Yl8uh9iw6FJLX4Y7WDaHOhmXbXLRPl3KNtV6ZUEkyyFoOjPCtoY6ZvfeqwF3nP52N2ckI5tyVdF2
O0eWzOwKPvfMsjSd4X2XXxVOpwUURVfHj+FNNDW8fTs2n0tJCaSh46fEnRqfleq4m1dpHLNuHTUO
XVcts53Z7WR8rskt0ik3JaXOLSJtAipBHiopwsHJ53l+fJ4+5cOwYKd1w6RoOTqcDpAxoyguw6U2
pJdOdhKOLVx0KkhTe8MhMkAsTB9NhYf+GXFd3At7mjlfmGzE7WuEdn7xjvg+j4Xg7qqqo0Y0PlKT
ni7uj45Pb3br8KJYk/O6yeGZ5dIXcOFHvjshs4xW6/o9Jgc5/tf+HPzWdFhCYSDmc2QmEgVE4s7n
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
TOal//8XckU4UJA2PDWZ
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>27592</attachid>
            <date>2004-03-18 20:15 0000</date>
            <desc>sys-kernel/xbox-sources-cvs/xbox-sources-cvs-2.4.25.ebuild</desc>
            <filename>xbox-sources-cvs-2.4.25.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA0IEdlbnRvbyBUZWNobm9sb2dpZXMsIEluYy4KIyBEaXN0cmli
dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYy
CiMgJEhlYWRlcjogL2hvbWUvY3Zzcm9vdC9nZW50b28teDg2L3N5cy1rZXJuZWwvdmFuaWxsYS1z
b3VyY2VzL3ZhbmlsbGEtc291cmNlcy0yLjQuMjUuZWJ1aWxkLHYgMS4xIDIwMDQvMDIvMTggMTU6
MTg6MjMgcGxhc21hcm9vIEV4cCAkCiNPS1Y9b3JpZ2luYWwga2VybmVsIHZlcnNpb24sIEtWPXBh
dGNoZWQga2VybmVsIHZlcnNpb24uICBUaGV5IGNhbiBiZSB0aGUgc2FtZS4KCkVUWVBFPSJzb3Vy
Y2VzIgppbmhlcml0IGtlcm5lbAoKRUNWU19BVVRIPSJwc2VydmVyIgpFQ1ZTX1NFUlZFUj0iY3Zz
Lnhib3gtbGludXguc291cmNlZm9yZ2UubmV0Oi9jdnNyb290L3hib3gtbGludXgiCkVDVlNfTU9E
VUxFPSJrZXJuZWwiCkVDVlNfVVNFUj0iYW5vbnltb3VzIgpFQ1ZTX1BBU1M9IiIKaW5oZXJpdCBj
dnMKCk9LVj0yLjQuMjUKWyAiJHtQUn0iID09ICJyMCIgXSAmJiBLVj0ke09LVn0teGJveCB8fCBL
Vj0ke09LVn0teGJveC0ke1BSfQpTPSR7V09SS0RJUn0vbGludXgtJHtQVn0KCiMgV2hhdCdzIGlu
IHRoaXMga2VybmVsPwoKIyBJTkNMVURFRDoKIyBzdG9jayAyLjQuMjUga2VybmVsIHNvdXJjZXMK
IyB4Ym94LWxpbnV4IGN2cyBwYXRjaAoKREVTQ1JJUFRJT049IkxpbnV4IGtlcm5lbCBwYXRjaGVk
IHdpdGggeGJveC1saW51eCBDVlMgc291cmNlcyIKU1JDX1VSST0ibWlycm9yOi8va2VybmVsL2xp
bnV4L2tlcm5lbC92Mi40L2xpbnV4LSR7UFZ9LnRhci5iejIiCkhPTUVQQUdFPSJodHRwOi8veGJv
eC1saW51eC5zb3VyY2Vmb3JnZS5uZXQiCktFWVdPUkRTPSJ4ODYgLXBwYyAtc3BhcmMgLWFscGhh
IC1hbWQ2NCIKU0xPVD0iJHtLVn0iCgpzcmNfdW5wYWNrKCkgewoJY3ZzX3NyY191bnBhY2sKCWNk
ICR7V09SS0RJUn0KCXVucGFjayBsaW51eC0ke1BWfS50YXIuYnoyCgljcCAtYXIgJHtXT1JLRElS
fS9rZXJuZWwvKiAke1N9Cn0KCnNyY19jb21waWxlKCkgewogICAgICAgIGV3YXJuICJOb3RoaW5n
IHRvIGNvbXBpbGUuICBUaGF0J3MgdXAgdG8gdGhlIHVzZXIiCn0KCnNyY19pbnN0YWxsKCkgewog
ICAgICAgICAgICAgICAgbWtkaXIgLXAgJHtEfS91c3Ivc3JjLwoJCW12ICR7U30gJHtEfS91c3Iv
c3JjL2xpbnV4LWN2cy0ke0tWfQp9Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31021</attachid>
            <date>2004-05-08 20:16 0000</date>
            <desc>sys-kernel/xbox-sources/xbox-sources-2.6.5.ebuild</desc>
            <filename>xbox-sources-2.6.5.ebuild</filename>
            <type>text/plain</type>
            <data encoding="base64">IyBDb3B5cmlnaHQgMTk5OS0yMDA0IEdlbnRvbyBUZWNobm9sb2dpZXMsIEluYy4KIyBEaXN0cmli
dXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYy
CiMgJEhlYWRlcjogL2hvbWUvY3Zzcm9vdC9nZW50b28teDg2L3N5cy1rZXJuZWwvdmFuaWxsYS1z
b3VyY2VzL3ZhbmlsbGEtc291cmNlcy0yLjQuMjUuZWJ1aWxkLHYgMS4xIDIwMDQvMDIvMTggMTU6
MTg6MjMgcGxhc21hcm9vIEV4cCAkCiNPS1Y9b3JpZ2luYWwga2VybmVsIHZlcnNpb24sIEtWPXBh
dGNoZWQga2VybmVsIHZlcnNpb24uICBUaGV5IGNhbiBiZSB0aGUgc2FtZS4KCkVUWVBFPSJzb3Vy
Y2VzIgppbmhlcml0IGtlcm5lbAoKWyAiJHtQUn0iID09ICJyMCIgXSAmJiBLVj0ke1BWfS14Ym94
IHx8IEtWPSR7UFZ9LXhib3gtJHtQUn0KUz0ke1dPUktESVJ9L2xpbnV4LSR7UFZ9CgojIFdoYXQn
cyBpbiB0aGlzIGtlcm5lbD8KCiMgSU5DTFVERUQ6CiMgc3RvY2sgMi42LjUga2VybmVsIHNvdXJj
ZXMKIyB4Ym94IHBhdGNoIGJ1aWx0IGZyb20geGJveC1saW51eCBDVlMKIyBsaXJjIDIuNiBrZXJu
ZWwgcGF0Y2gKIyB4Ym94IGxpcmMgZHJpdmVyIHBhdGNoCgpERVNDUklQVElPTj0iRnVsbCBzb3Vy
Y2VzIGZvciB0aGUgWGJveCBMaW51eCBrZXJuZWwiClNSQ19VUkk9Im1pcnJvcjovL2tlcm5lbC9s
aW51eC9rZXJuZWwvdjIuNi9saW51eC0ke1BWfS50YXIuYnoyIgpIT01FUEFHRT0iaHR0cDovL3hi
b3gtbGludXguc291cmNlZm9yZ2UubmV0IgpLRVlXT1JEUz0ieDg2IC1wcGMgLXNwYXJjIC1hbHBo
YSAtYW1kNjQiClNMT1Q9IiR7S1Z9IgoKc3JjX3VucGFjaygpIHsKCWNkICR7V09SS0RJUn0KCXVu
cGFjayBsaW51eC0ke1BWfS50YXIuYnoyCgljZCAke1N9CgllcGF0Y2ggJHtGSUxFU0RJUn0vJHtQ
Tn0tJHtQVn0tQ1ZTMzBBcHJpbDIwMDQucGF0Y2ggfHwgZGllICJGYWlsZWQgdG8gYXBwbHkgeGJv
eC1saW51eCBwYXRjaCEiCgllcGF0Y2ggJHtGSUxFU0RJUn0vbGlyY18yLjYuNS5wYXRjaCB8fCBk
aWUgIkZhaWxlZCB0byBhcHBseSBsaXJjIDIuNi54IHBhdGNoISIKCWVwYXRjaCAke0ZJTEVTRElS
fS9saXJjXzIuNi41LXhib3gucGF0Y2ggfHwgZGllICJGYWlsZWQgdG8gYXBwbHkgbGlyYyB4Ym94
IGRyaXZlciBwYXRjaCEiCn0KCnNyY19jb21waWxlKCkgewogICAgICAgIGV3YXJuICJOb3RoaW5n
IHRvIGNvbXBpbGUuICBUaGF0J3MgdXAgdG8gdGhlIHVzZXIiCn0KCnNyY19pbnN0YWxsKCkgewog
ICAgICAgICAgICAgICAgbWtkaXIgLXAgJHtEfS91c3Ivc3JjLwoJCW12ICR7U30gJHtEfS91c3Iv
c3JjL2xpbnV4LSR7S1Z9Cn0K
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31022</attachid>
            <date>2004-05-08 20:17 0000</date>
            <desc>xbox-sources/files/xbox-sources-2.6.5-CVS30April2004.patch</desc>
            <filename>xbox-sources-2.6.5-CVS30April2004.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvTWFrZWZpbGUgbGludXgtMi42LjUvTWFrZWZpbGUK
LS0tIGxpbnV4LTIuNi41Lm9yaWcvTWFrZWZpbGUJMjAwNC0wNC0wNCAwNDozNzozNi4wMDAwMDAw
MDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L01ha2VmaWxlCTIwMDQtMDUtMDEgMTU6MjE6MjAuOTk5
MjI0NDMyICswMTAwCkBAIC0xLDcgKzEsNyBAQAogVkVSU0lPTiA9IDIKIFBBVENITEVWRUwgPSA2
CiBTVUJMRVZFTCA9IDUKLUVYVFJBVkVSU0lPTiA9CitFWFRSQVZFUlNJT04gPSAteGJveAogTkFN
RT1ab25rZWQgUXVva2thCiAKICMgKkRPQ1VNRU5UQVRJT04qCmRpZmYgLXVyTiBsaW51eC0yLjYu
NS5vcmlnL2FyY2gvaTM4Ni9LY29uZmlnIGxpbnV4LTIuNi41L2FyY2gvaTM4Ni9LY29uZmlnCi0t
LSBsaW51eC0yLjYuNS5vcmlnL2FyY2gvaTM4Ni9LY29uZmlnCTIwMDQtMDQtMDQgMDQ6MzY6MjUu
MDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9hcmNoL2kzODYvS2NvbmZpZwkyMDA0LTA1
LTAxIDE1OjIwOjQyLjU0MjA3MDgwOCArMDEwMApAQCAtNTIsNiArNTIsMjIgQEAKIAogCSAgSWYg
dW5zdXJlLCBjaG9vc2UgIlBDLWNvbXBhdGlibGUiIGluc3RlYWQuCiAKK2NvbmZpZyBYODZfWEJP
WAorCWJvb2wgIk1pY3Jvc29mdCBYYm94IgorCWhlbHAKKwkgIFRoaXMgb3B0aW9uIGlzIG5lZWRl
ZCB0byBtYWtlIExpbnV4IGJvb3Qgb24gWEJveCBHYW1pbmcgU3lzdGVtcy4KKwkKKwkgIFRoZSBY
Qm94IGNhbiBiZSBjb25zaWRlcmVkIGFzIGEgc3RhbmRhcmQgUEMgd2l0aCBhIENvcHBlcm1pbmUt
YmFzZWQgQ2VsZXJvbiA3MzMgTUh6LAorCSAgSURFIGhhcmRkcml2ZSwgRFZELCBFdGhlcm5ldCwg
VVNCIGFuZCBncmFwaGljcy4KKwkKKwkgIFRvIGJvb3QgdGhlIGtlcm5lbCB5b3UgbmVlZCAiX3Jv
bXdlbGwiLCBlaXRoZXIgdXNlZCBhcyBhIHJlcGxhY2VtZW50IEJJT1MgKGNyb213ZWxsKQorCSAg
b3IgYXMgYSBib290bG9hZGVyLgorCQorCSAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGh0dHA6
Ly94Ym94LWxpbnV4LnNvdXJjZWZvcmdlLm5ldC8KKwkKKwkgIElmIHlvdSBkbyBub3Qgc3BlY2lm
aWNhbGx5IG5lZWQgYSBrZXJuZWwgZm9yIFhCT1ggbWFjaGluZSwKKwkgIHNheSBOIGhlcmUgb3Ro
ZXJ3aXNlIHRoZSBrZXJuZWwgeW91IGJ1aWxkIHdpbGwgbm90IGJlIGJvb3RhYmxlLgorCiBjb25m
aWcgWDg2X1ZPWUFHRVIKIAlib29sICJWb3lhZ2VyIChOQ1IpIgogCWhlbHAKQEAgLTUxNyw2ICs1
MzMsMTAgQEAKIAkgIElmIHlvdSBoYXZlIGEgc3lzdGVtIHdpdGggc2V2ZXJhbCBDUFVzLCB5b3Ug
ZG8gbm90IG5lZWQgdG8gc2F5IFkKIAkgIGhlcmU6IHRoZSBJTy1BUElDIHdpbGwgYmUgdXNlZCBh
dXRvbWF0aWNhbGx5LgogCitjb25maWcgWEJPWF9FSkVDVAorCWJvb2wgIlhCT1ggZWplY3QgZml4
IgorCWRlcGVuZHMgb24gWDg2X1hCT1gKKwogY29uZmlnIFg4Nl9MT0NBTF9BUElDCiAJYm9vbAog
CWRlcGVuZHMgb24gIVNNUCAmJiBYODZfVVBfQVBJQwpAQCAtMTE0Miw3ICsxMTYyLDcgQEAKIAog
Y29uZmlnIE1DQQogCWJvb2wgIk1DQSBzdXBwb3J0IgotCWRlcGVuZHMgb24gIShYODZfVklTV1Mg
fHwgWDg2X1ZPWUFHRVIpCisJZGVwZW5kcyBvbiAhKFg4Nl9WSVNXUyB8fCBYODZfVk9ZQUdFUiB8
fCBYODZfWEJPWCkKIAloZWxwCiAJICBNaWNyb0NoYW5uZWwgQXJjaGl0ZWN0dXJlIGlzIGZvdW5k
IGluIHNvbWUgSUJNIFBTLzIgbWFjaGluZXMgYW5kCiAJICBsYXB0b3BzLiAgSXQgaXMgYSBidXMg
c3lzdGVtIHNpbWlsYXIgdG8gUENJIG9yIElTQS4gU2VlCkBAIC0xMzIwLDcgKzEzNDAsNyBAQAog
CiBjb25maWcgWDg2X0JJT1NfUkVCT09UCiAJYm9vbAotCWRlcGVuZHMgb24gIShYODZfVklTV1Mg
fHwgWDg2X1ZPWUFHRVIpCisJZGVwZW5kcyBvbiAhKFg4Nl9WSVNXUyB8fCBYODZfVk9ZQUdFUiB8
fCBYODZfWEJPWCkKIAlkZWZhdWx0IHkKIAogY29uZmlnIFg4Nl9UUkFNUE9MSU5FCmRpZmYgLXVy
TiBsaW51eC0yLjYuNS5vcmlnL2FyY2gvaTM4Ni9NYWtlZmlsZSBsaW51eC0yLjYuNS9hcmNoL2kz
ODYvTWFrZWZpbGUKLS0tIGxpbnV4LTIuNi41Lm9yaWcvYXJjaC9pMzg2L01ha2VmaWxlCTIwMDQt
MDQtMDQgMDQ6MzY6NTYuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9hcmNoL2kzODYv
TWFrZWZpbGUJMjAwNC0wNS0wMSAxNToyMDo0Mi4wMDAwMDAwMDAgKzAxMDAKQEAgLTY1LDYgKzY1
LDEwIEBACiAjIERlZmF1bHQgc3ViYXJjaCAuYyBmaWxlcwogbWNvcmUteSAgOj0gbWFjaC1kZWZh
dWx0CiAKKyMgWGJveCBzdWJhcmNoIHN1cHBvcnQKK21mbGFncy0kKENPTkZJR19YODZfWEJPWCkJ
Oj0gLUlpbmNsdWRlL2FzbS1pMzg2L21hY2gteGJveAorbWNvcmUtJChDT05GSUdfWDg2X1hCT1gp
CTo9IG1hY2gteGJveAorCiAjIFZveWFnZXIgc3ViYXJjaCBzdXBwb3J0CiBtZmxhZ3MtJChDT05G
SUdfWDg2X1ZPWUFHRVIpCTo9IC1JaW5jbHVkZS9hc20taTM4Ni9tYWNoLXZveWFnZXIKIG1jb3Jl
LSQoQ09ORklHX1g4Nl9WT1lBR0VSKQk6PSBtYWNoLXZveWFnZXIKZGlmZiAtdXJOIGxpbnV4LTIu
Ni41Lm9yaWcvYXJjaC9pMzg2L2Jvb3QvY29tcHJlc3NlZC9NYWtlZmlsZSBsaW51eC0yLjYuNS9h
cmNoL2kzODYvYm9vdC9jb21wcmVzc2VkL01ha2VmaWxlCi0tLSBsaW51eC0yLjYuNS5vcmlnL2Fy
Y2gvaTM4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUJMjAwNC0wNC0wNCAwNDozNzozNy4wMDAw
MDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2FyY2gvaTM4Ni9ib290L2NvbXByZXNzZWQvTWFr
ZWZpbGUJMjAwNC0wNS0wMSAxNToyMDo0Mi4wMDAwMDAwMDAgKzAxMDAKQEAgLTUsNiArNSwxNyBA
QAogIwogCiB0YXJnZXRzCQk6PSB2bWxpbnV4IHZtbGludXguYmluIHZtbGludXguYmluLmd6IGhl
YWQubyBtaXNjLm8gcGlnZ3kubworCisjCisjIFRoZXJlIGlzIHNvbWUgc3RyYW5nZSBpbnRlcmFj
dGlvbiB3aGVuIHBhZ2luZyBpcyBvZmYsIHRoYXQgbWFrZXMKKyMgbmV3ZXIgdjEuMSsgWGJveGVu
IChtYW51ZmFjdHVyZWQgQXVndXN0IDIwMDIgb3IgbGF0ZXIpIGNyYXNoIHdoaWxlCisjIGRlY3Jv
bXByZXNzaW5nIHRoZSBrZXJuZWwuIENvbXBpbGluZyB0aGUgZGVjcm9tcHJlc3NvciB3aXRob3V0
IGFueQorIyBvcHRpbWl6YXRpb24gcmVsaWFibHkgd29ya3MgYXJvdW5kIHRoaXMgcHJvYmxlbS4K
KyMKK2lmZXEgKCQoQ09ORklHX1g4Nl9YQk9YKSx5KQorQ0ZMQUdTX21pc2Mubwk6PSAtTzAKK2Vu
ZGlmCisKIEVYVFJBX0FGTEFHUwk6PSAtdHJhZGl0aW9uYWwKIAogTERGTEFHU192bWxpbnV4IDo9
IC1UdGV4dCAkKElNQUdFX09GRlNFVCkgLWUgc3RhcnR1cF8zMgpkaWZmIC11ck4gbGludXgtMi42
LjUub3JpZy9hcmNoL2kzODYva2VybmVsL01ha2VmaWxlIGxpbnV4LTIuNi41L2FyY2gvaTM4Ni9r
ZXJuZWwvTWFrZWZpbGUKLS0tIGxpbnV4LTIuNi41Lm9yaWcvYXJjaC9pMzg2L2tlcm5lbC9NYWtl
ZmlsZQkyMDA0LTA0LTA0IDA0OjM2OjI2LjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUv
YXJjaC9pMzg2L2tlcm5lbC9NYWtlZmlsZQkyMDA0LTA1LTAxIDE1OjIxOjUzLjkzODIxNjk0NCAr
MDEwMApAQCAtMjUsNiArMjUsNyBAQAogb2JqLSQoQ09ORklHX1g4Nl9JT19BUElDKQkrPSBpb19h
cGljLm8KIG9iai0kKENPTkZJR19YODZfTlVNQVEpCQkrPSBudW1hcS5vCiBvYmotJChDT05GSUdf
WDg2X1NVTU1JVF9OVU1BKQkrPSBzdW1taXQubworb2JqLSQoQ09ORklHX1hCT1hfRUpFQ1QpICAg
ICAgICArPSB4Ym94ZWplY3RmaXgubwogb2JqLSQoQ09ORklHX01PRFVMRVMpCQkrPSBtb2R1bGUu
bwogb2JqLXkJCQkJKz0gc3lzZW50ZXIubyB2c3lzY2FsbC5vCiBvYmotJChDT05GSUdfQUNQSV9T
UkFUKSAJKz0gc3JhdC5vCmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL2FyY2gvaTM4Ni9rZXJu
ZWwveGJveGVqZWN0Zml4LmMgbGludXgtMi42LjUvYXJjaC9pMzg2L2tlcm5lbC94Ym94ZWplY3Rm
aXguYwotLS0gbGludXgtMi42LjUub3JpZy9hcmNoL2kzODYva2VybmVsL3hib3hlamVjdGZpeC5j
CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9hcmNo
L2kzODYva2VybmVsL3hib3hlamVjdGZpeC5jCTIwMDQtMDUtMDEgMTU6MjA6NDIuNjMzMDU2OTc2
ICswMTAwCkBAIC0wLDAgKzEsMTQ3IEBACisvKioKKyAqIERyaXZlciB0aGF0IGhhbmRsZXMgdGhl
IEVYVFNNSSMgaW50ZXJydXB0IG9uIHRoZSB4Ym94LgorICogTWFrZXMgaXQgcG9zc2libGUgdG8g
dXNlIHRoZSBlamVjdC1idXR0b24gd2l0aG91dCB0aGUgeGJveCByZWJvb3RpbmcuLi4KKyAqCisg
KiBzbWJ1cy1jb21tYW5kIHNlcXVlbmNlIHRvIHByZXZlbnQgcmVib290IGZyb20gY3JvbXdlbGwu
CisgKgorICogQ2hhbmdlbG9nOgorICogIDIwMDMtMDEtMTQgQW5kZXJzIEd1c3RhZnNzb24gPGFu
ZGVyc2dAMHg2My5udT4KKyAqICAgICAgICAgICAgIGluaXRpYWwgdmVyc2lvbgorICogIDIwMDMt
MDItMDggTWlsb3NjaCBNZXJpYWMgPHhib3hsaW51eEBtZXJpYWMuZGU+CisgKiAgICAgICAgICAg
ICByZXdyb3RlIGRlYnVnIG1hY3JvcyBiZWNhdXNlIG9mIGNvbXBpbGVyIGVycm9ycworICogIDIw
MDMtMDgtMDYgTWljaGFlbCBTdGVpbCA8bWlzdEBjNjQub3JnPgorICogICAgICAgICAgICAgcmVt
b3ZlZCBMaW51eCBJMkMgZGVwZW5kZW5jeSwgbm93IGNvbXBpbGVzCisgKiAgICAgICAgICAgICB3
aXRob3V0IEkyQyBpbiB0aGUga2VybmVsCisgKgorICogVG9kbzogYWRkIGVycm9yaGFuZGxpbmch
CisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9t
b2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+Cisj
aW5jbHVkZSA8bGludXgveGJveC5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorCisj
ZGVmaW5lIElSUSAxMgorI2RlZmluZSBEUklWRVJfTkFNRSAieGJveGVqZWN0Zml4IgorCisvKiBq
dXN0IHNvbWUgY3JhcCAqLworc3RhdGljIGNoYXIgZGV2W109RFJJVkVSX05BTUU7CisKKy8qIEV4
dGVybmFsIHZhcmlhYmxlIGZyb20gaWRlLWNkLmMgdGhhdCBzcGVjaWZpZXMgd2hldGhlciB3ZSBz
aW11bGF0ZSBkcml2ZQorICAgbG9ja2luZyBpbiBzb2Z0d2FyZSAqLworZXh0ZXJuIHZvbGF0aWxl
IGludCBYYm94X3NpbXVsYXRlX2RyaXZlX2xvY2tlZDsKKworI2RlZmluZSBCQVNFIDB4ODAwMAor
CisvKiBQb3dlciBNYW5hZ2VtZW50IDEgRW5hYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIFBNMDIg
KEJBU0UrMHgwMikKKworLyogUG93ZXIgTWFuYWdlbWVudCAxIENvbnRyb2wgUmVnaXN0ZXIgKi8K
KyNkZWZpbmUgUE0wNCAoQkFTRSsweDA0KQorCisvKiBBQ1BJIEdQIFN0YXR1cyBSZWdpc3RlciAq
LworI2RlZmluZSBQTTIwIChCQVNFKzB4MjApCisKKy8qIEFDUEkgR1AgRW5hYmxlIFJlZ2lzdGVy
ICovCisjZGVmaW5lIFBNMjIgKEJBU0UrMHgyMikKKyMgZGVmaW5lIEVYVFNNSV9FTl9NQVNLIDB4
MDAwMgorCisvKiBHbG9iYWwgU01JIEVuYWJsZSBSZWdpc3RlciAqLworI2RlZmluZSBQTTJBIChC
QVNFKzB4MkEpCisKKworc3RhdGljIERFQ0xBUkVfTVVURVgoZXh0c21pX3NlbSk7CitzdGF0aWMg
REVDTEFSRV9DT01QTEVUSU9OKGV4dHNtaV9leGl0ZWQpOworc3RhdGljIGludCBleHRzbWlfcGlk
PTA7CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBleHRzbWlfaW50ZXJ1cHQoaW50IHVudXNlZCwgdm9p
ZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykgeworCWludCByZWFzb247CisKKwlyZWFz
b249aW53KDB4ODAyMCk7CisJb3V0dyhyZWFzb24sMHg4MDIwKTsgLyogYWNrICBJUyBUSElTIE5F
RURFRD8gKi8KKwlpZihyZWFzb24mMHgyKXsKKwkJLyogd2FrZSB1cCB0aHJlYWQgKi8KKwkJdXAo
JmV4dHNtaV9zZW0pOworCX0KKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBQcm9jZXNzIGFuIGV2
ZW50LiBUaGlzIGlzIHJ1biBpbiBwcm9jZXNzLWNvbnRleHQuCisgKi8KK3N0YXRpYyB2b2lkIGV4
dHNtaV9wcm9jZXNzKHZvaWQpeworCWludCByZWFzb247CisJcmVhc29uPVhib3hfU01DX3JlYWQo
U01DX0NNRF9JTlRFUlJVUFRfUkVBU09OKTsKKworCWlmKHJlYXNvbiZUUkFZQlVUVE9OX01BU0sp
eyAvKiBUcmF5IGJ1dHRvbiEgUmVzcG9uZCB0byBwcmV2ZW50IHJlYm9vdCEgKi8KKwkJWGJveF9T
TUNfd3JpdGUoU01DX0NNRF9JTlRFUlJVUFRfUkVTUE9ORCwgU01DX1NVQkNNRF9SRVNQT05EX0NP
TlRJTlVFKTsKKwkJWGJveF9TTUNfd3JpdGUoMHgwMCwgMHgwYyk7CisJCS8qIGVqZWN0IHVubGVz
cyBsb2NrIHNpbXVsYXRpb24gaXMgYmVpbmcgdXNlZCAqLworCQlpZiAoIVhib3hfc2ltdWxhdGVf
ZHJpdmVfbG9ja2VkKQorCQkJWGJveF90cmF5X2VqZWN0KCk7CisJfQorfQorCitzdGF0aWMgaW50
IGV4dHNtaV90aHJlYWQodm9pZCAqZGF0YSl7CisJZGFlbW9uaXplKCJleHRzbWkiKTsKKwlyZXBh
cmVudF90b19pbml0KCk7CisJc3RyY3B5KGN1cnJlbnQtPmNvbW0sICJ4Ym94X2V4dHNtaSIpOwor
CisJZG8geworCQlleHRzbWlfcHJvY2VzcygpOworCQlkb3duX2ludGVycnVwdGlibGUoJmV4dHNt
aV9zZW0pOworCX0gd2hpbGUgKCFzaWduYWxfcGVuZGluZyhjdXJyZW50KSk7CisJCisgICAgICAg
ICBjb21wbGV0ZV9hbmRfZXhpdCgmZXh0c21pX2V4aXRlZCwgMCk7Cit9CisKK3N0YXRpYyBpbnQg
ZXh0c21pX2luaXQodm9pZCl7CisJaW50IHBpZDsKKwkKKwlpZiAoIW1hY2hpbmVfaXNfeGJveCkg
eworCQlwcmludGsoIlRoaXMgbWFjaGluZSBpcyBubyBYYm94LlxuIik7CisJCXJldHVybiAtMTsK
Kwl9CisJcHJpbnRrKCJFbmFibGluZyBYYm94IGVqZWN0IHByb2JsZW0gd29ya2Fyb3VuZC5cbiIp
OworCisgICAgICAgIHBpZCA9IGtlcm5lbF90aHJlYWQoZXh0c21pX3RocmVhZCwgTlVMTCwKKwkJ
CSAgICBDTE9ORV9GUyB8IENMT05FX0ZJTEVTIHwgQ0xPTkVfU0lHSEFORCk7CisJaWYgKHBpZCA8
IDApIHsKKwkJcmV0dXJuIHBpZDsKKwl9CisKKwlleHRzbWlfcGlkID0gcGlkOworCisJLyogdGhp
cyBzaHV0cyBhIGxvdCBvZiBpbnRlcnJ1cHRzIG9mZiEgKi8KKwlvdXR3KGludygweDgwZTIpJjB4
ZjhjNywweDgwZTIpOworCW91dHcoMCwweDgwYWMpOworCW91dGIoMCwweDgwMjUpOworCW91dHco
RVhUU01JX0VOX01BU0ssUE0yMik7IC8qIGVuYWJsZSB0aGUgRVhUU01JIyBpbnRlcnVwdCEgKi8K
KwlvdXR3KDAsUE0wMik7CisJb3V0YigxLFBNMDQpOyAvKiBlbmFibGUgc2NpIGludGVycnVwdHMh
ICovCisJWGJveF9TTUNfd3JpdGUoU01DX0NNRF9SRVNFVF9PTl9FSkVDVCwgU01DX1NVQkNNRF9S
RVNFVF9PTl9FSkVDVF9ESVNBQkxFKTsKKworCS8qIEZJWE1FISByZXR2YWwhICovCisJcmVxdWVz
dF9pcnEoSVJRLGV4dHNtaV9pbnRlcnVwdCxTQV9JTlRFUlJVUFR8U0FfU0hJUlEsInhib3hlamVj
dGZpeCIsZGV2KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZXh0c21pX2V4aXQodm9p
ZCl7CisJaW50IHJlczsKKwlpZiAoIW1hY2hpbmVfaXNfeGJveCkgcmV0dXJuOyAvKiBjYW4gdGhp
cyBoYXBwZW4/Pz8gKi8KKwlmcmVlX2lycShJUlEsZGV2KTsKKworCS8qIEtpbGwgdGhlIHRocmVh
ZCAqLworCXJlcyA9IGtpbGxfcHJvYyhleHRzbWlfcGlkLCBTSUdURVJNLCAxKTsKKwl3YWl0X2Zv
cl9jb21wbGV0aW9uKCZleHRzbWlfZXhpdGVkKTsKKwlyZXR1cm47Cit9CisKK21vZHVsZV9pbml0
KGV4dHNtaV9pbml0KTsKK21vZHVsZV9leGl0KGV4dHNtaV9leGl0KTsKKworTU9EVUxFX0FVVEhP
UigiQW5kZXJzIEd1c3RhZnNzb24gPGFuZGVyc2dAMHg2My5udT4iKTsKK01PRFVMRV9MSUNFTlNF
KCJHUEwiKTsKZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvYXJjaC9pMzg2L21hY2gteGJveC9N
YWtlZmlsZSBsaW51eC0yLjYuNS9hcmNoL2kzODYvbWFjaC14Ym94L01ha2VmaWxlCi0tLSBsaW51
eC0yLjYuNS5vcmlnL2FyY2gvaTM4Ni9tYWNoLXhib3gvTWFrZWZpbGUJMTk3MC0wMS0wMSAwMTow
MDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2FyY2gvaTM4Ni9tYWNoLXhib3gv
TWFrZWZpbGUJMjAwNC0wNS0wMSAxNToyMDo0Mi42MzUwNTY2NzIgKzAxMDAKQEAgLTAsMCArMSw1
IEBACisjCisjIE1ha2VmaWxlIGZvciB0aGUgbGludXgga2VybmVsLgorIworCitvYmoteQkJCQk6
PSBzZXR1cC5vIHJlYm9vdC5vCmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL2FyY2gvaTM4Ni9t
YWNoLXhib3gvcmVib290LmMgbGludXgtMi42LjUvYXJjaC9pMzg2L21hY2gteGJveC9yZWJvb3Qu
YwotLS0gbGludXgtMi42LjUub3JpZy9hcmNoL2kzODYvbWFjaC14Ym94L3JlYm9vdC5jCTE5NzAt
MDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9hcmNoL2kzODYv
bWFjaC14Ym94L3JlYm9vdC5jCTIwMDQtMDUtMDEgMTU6MjA6NDIuNjM3MDU2MzY4ICswMTAwCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBhcmNoL2kzODYvbWFjaC14Ym94L3JlYm9vdC5jIAorICog
T2xpdmllciBGYXVjaG9uIDxvbGl2aWVyLmZhdWNob25AZnJlZS5mcj4KKyAqIEFuZGVycyBHdXN0
YWZzc29uIDxhbmRlcnNnQDB4NjMubnU+CisgKgorICovCisKKyNpbmNsdWRlIDxhc20vaW8uaD4K
KworLyogd2UgZG9uJ3QgdXNlIGFueSBvZiB0aG9zZSwgYnV0IGRtaV9zY2FuLmMgbmVlZHMgJ2Vt
ICovCit2b2lkICgqcG1fcG93ZXJfb2ZmKSh2b2lkKTsKK2ludCByZWJvb3RfdGhydV9iaW9zOwor
CisjZGVmaW5lIFhCT1hfU01CX0lPX0JBU0UJCTB4QzAwMAorI2RlZmluZSBYQk9YX1NNQl9IT1NU
X0FERFJFU1MJCSgweDQgKyBYQk9YX1NNQl9JT19CQVNFKQorI2RlZmluZSBYQk9YX1NNQl9IT1NU
X0NPTU1BTkQJCSgweDggKyBYQk9YX1NNQl9JT19CQVNFKQorI2RlZmluZSBYQk9YX1NNQl9IT1NU
X0RBVEEJCSgweDYgKyBYQk9YX1NNQl9JT19CQVNFKQorI2RlZmluZSBYQk9YX1NNQl9HTE9CQUxf
RU5BQkxFCQkoMHgyICsgWEJPWF9TTUJfSU9fQkFTRSkKKworI2RlZmluZSBYQk9YX1BJQ19BRERS
RVNTCQkweDEwCisKKyNkZWZpbmUgU01DX0NNRF9QT1dFUgkJCTB4MDIKKyNkZWZpbmUgU01DX1NV
QkNNRF9QT1dFUl9SRVNFVAkJMHgwMQorI2RlZmluZSBTTUNfU1VCQ01EX1BPV0VSX0NZQ0xFCQkw
eDQwCisjZGVmaW5lIFNNQ19TVUJDTURfUE9XRVJfT0ZGCQkweDgwCisKKworc3RhdGljIHZvaWQg
eGJveF9waWNfY21kKHU4IGNvbW1hbmQpCit7CisJb3V0d19wKCgoWEJPWF9QSUNfQUREUkVTUykg
PDwgMSksIFhCT1hfU01CX0hPU1RfQUREUkVTUyk7CisJb3V0Yl9wKFNNQ19DTURfUE9XRVIsIFhC
T1hfU01CX0hPU1RfQ09NTUFORCk7CisJb3V0d19wKGNvbW1hbmQsIFhCT1hfU01CX0hPU1RfREFU
QSk7CisJb3V0d19wKGludyhYQk9YX1NNQl9JT19CQVNFKSwgWEJPWF9TTUJfSU9fQkFTRSk7CisJ
b3V0Yl9wKDB4MGEsIFhCT1hfU01CX0dMT0JBTF9FTkFCTEUpOworfQorCit2b2lkIG1hY2hpbmVf
cmVzdGFydChjaGFyICogX191bnVzZWQpCit7CisJcHJpbnRrKEtFUk5fSU5GTyAiU2VuZGluZyBQ
T1dFUl9DWUNMRSB0byBYQk9YLVBJQy5cbiIpOworCXhib3hfcGljX2NtZChTTUNfU1VCQ01EX1BP
V0VSX0NZQ0xFKTsgIAorfQorCit2b2lkIG1hY2hpbmVfcG93ZXJfb2ZmKHZvaWQpCit7CisJcHJp
bnRrKEtFUk5fSU5GTyAiU2VuZGluZyBQT1dFUl9PRkYgdG8gWEJPWC1QSUMuXG4iKTsKKwl4Ym94
X3BpY19jbWQoU01DX1NVQkNNRF9QT1dFUl9PRkYpOyAgCit9CisKK3ZvaWQgbWFjaGluZV9oYWx0
KHZvaWQpCit7Cit9CmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL2FyY2gvaTM4Ni9tYWNoLXhi
b3gvc2V0dXAuYyBsaW51eC0yLjYuNS9hcmNoL2kzODYvbWFjaC14Ym94L3NldHVwLmMKLS0tIGxp
bnV4LTIuNi41Lm9yaWcvYXJjaC9pMzg2L21hY2gteGJveC9zZXR1cC5jCTE5NzAtMDEtMDEgMDE6
MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9hcmNoL2kzODYvbWFjaC14Ym94
L3NldHVwLmMJMjAwNC0wNS0wMSAxNToyMDo0Mi42NDIwNTU2MDggKzAxMDAKQEAgLTAsMCArMSw4
NCBAQAorLyoKKyAqCU1hY2hpbmUgc3BlY2lmaWMgc2V0dXAgZm9yIHhib3gKKyAqLworCisjaW5j
bHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvc21wLmg+CisjaW5jbHVkZSA8
bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2lycS5oPgorI2luY2x1ZGUgPGxpbnV4L2lu
dGVycnVwdC5oPgorI2luY2x1ZGUgPGFzbS9hcmNoX2hvb2tzLmg+CisKKy8qKgorICogcHJlX2lu
dHJfaW5pdF9ob29rIC0gaW5pdGlhbGlzYXRpb24gcHJpb3IgdG8gc2V0dGluZyB1cCBpbnRlcnJ1
cHQgdmVjdG9ycworICoKKyAqIERlc2NyaXB0aW9uOgorICoJUGVyZm9ybSBhbnkgbmVjZXNzYXJ5
IGludGVycnVwdCBpbml0aWFsaXNhdGlvbiBwcmlvciB0byBzZXR0aW5nIHVwCisgKgl0aGUgIm9y
ZGluYXJ5IiBpbnRlcnJ1cHQgY2FsbCBnYXRlcy4gIEZvciBsZWdhY3kgcmVhc29ucywgdGhlIElT
QQorICoJaW50ZXJydXB0cyBzaG91bGQgYmUgaW5pdGlhbGlzZWQgaGVyZSBpZiB0aGUgbWFjaGlu
ZSBlbXVsYXRlcyBhIFBDCisgKglpbiBhbnkgd2F5LgorICoqLwordm9pZCBfX2luaXQgcHJlX2lu
dHJfaW5pdF9ob29rKHZvaWQpCit7CisJaW5pdF9JU0FfaXJxcygpOworfQorCisvKgorICogSVJR
MiBpcyBjYXNjYWRlIGludGVycnVwdCB0byBzZWNvbmQgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAq
Lworc3RhdGljIHN0cnVjdCBpcnFhY3Rpb24gaXJxMiA9IHsgbm9fYWN0aW9uLCAwLCAwLCAiY2Fz
Y2FkZSIsIE5VTEwsIE5VTEwgfTsKKworLyoqCisgKiBpbnRyX2luaXRfaG9vayAtIHBvc3QgZ2F0
ZSBzZXR1cCBpbnRlcnJ1cHQgaW5pdGlhbGlzYXRpb24KKyAqCisgKiBEZXNjcmlwdGlvbjoKKyAq
CUZpbGwgaW4gYW55IGludGVycnVwdHMgdGhhdCBtYXkgaGF2ZSBiZWVuIGxlZnQgb3V0IGJ5IHRo
ZSBnZW5lcmFsCisgKglpbml0X0lSUSgpIHJvdXRpbmUuICBpbnRlcnJ1cHRzIGhhdmluZyB0byBk
byB3aXRoIHRoZSBtYWNoaW5lIHJhdGhlcgorICoJdGhhbiB0aGUgZGV2aWNlcyBvbiB0aGUgSS9P
IGJ1cyAobGlrZSBBUElDIGludGVycnVwdHMgaW4gaW50ZWwgTVAKKyAqCXN5c3RlbXMpIGFyZSBz
dGFydGVkIGhlcmUuCisgKiovCit2b2lkIF9faW5pdCBpbnRyX2luaXRfaG9vayh2b2lkKQorewor
I2lmZGVmIENPTkZJR19YODZfTE9DQUxfQVBJQworCWFwaWNfaW50cl9pbml0KCk7CisjZW5kaWYK
KworCXNldHVwX2lycSgyLCAmaXJxMik7Cit9CisKKy8qKgorICogcHJlX3NldHVwX2FyY2hfaG9v
ayAtIGhvb2sgY2FsbGVkIHByaW9yIHRvIGFueSBzZXR1cF9hcmNoKCkgZXhlY3V0aW9uCisgKgor
ICogRGVzY3JpcHRpb246CisgKglnZW5lcmFsbHkgdXNlZCB0byBhY3RpdmF0ZSBhbnkgbWFjaGlu
ZSBzcGVjaWZpYyBpZGVudGlmaWNhdGlvbgorICoJcm91dGluZXMgdGhhdCBtYXkgYmUgbmVlZGVk
IGJlZm9yZSBzZXR1cF9hcmNoKCkgcnVucy4gIE9uIFZJU1dTCisgKgl0aGlzIGlzIHVzZWQgdG8g
Z2V0IHRoZSBib2FyZCByZXZpc2lvbiBhbmQgdHlwZS4KKyAqKi8KK3ZvaWQgX19pbml0IHByZV9z
ZXR1cF9hcmNoX2hvb2sodm9pZCkKK3sKK30KKworLyoqCisgKiB0cmFwX2luaXRfaG9vayAtIGlu
aXRpYWxpc2Ugc3lzdGVtIHNwZWNpZmljIHRyYXBzCisgKgorICogRGVzY3JpcHRpb246CisgKglD
YWxsZWQgYXMgdGhlIGZpbmFsIGFjdCBvZiB0cmFwX2luaXQoKS4gIFVzZWQgaW4gVklTV1MgdG8g
aW5pdGlhbGlzZQorICoJdGhlIHZhcmlvdXMgYm9hcmQgc3BlY2lmaWMgQVBJQyB0cmFwcy4KKyAq
Ki8KK3ZvaWQgX19pbml0IHRyYXBfaW5pdF9ob29rKHZvaWQpCit7Cit9CisKK3N0YXRpYyBzdHJ1
Y3QgaXJxYWN0aW9uIGlycTAgID0geyB0aW1lcl9pbnRlcnJ1cHQsIFNBX0lOVEVSUlVQVCwgMCwg
InRpbWVyIiwgTlVMTCwgTlVMTCB9OworCisvKioKKyAqIHRpbWVfaW5pdF9ob29rIC0gZG8gYW55
IHNwZWNpZmljIGluaXRpYWxpc2F0aW9ucyBmb3IgdGhlIHN5c3RlbSB0aW1lci4KKyAqCisgKiBE
ZXNjcmlwdGlvbjoKKyAqCU11c3QgcGx1ZyB0aGUgc3lzdGVtIHRpbWVyIGludGVycnVwdCBzb3Vy
Y2UgYXQgSFogaW50byB0aGUgSVJRIGxpc3RlZAorICoJaW4gaXJxX3ZlY3RvcnMuaDpUSU1FUl9J
UlEKKyAqKi8KK3ZvaWQgX19pbml0IHRpbWVfaW5pdF9ob29rKHZvaWQpCit7CisJc2V0dXBfaXJx
KDAsICZpcnEwKTsKK30KZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvYXJjaC9pMzg2L3BjaS9k
aXJlY3QuYyBsaW51eC0yLjYuNS9hcmNoL2kzODYvcGNpL2RpcmVjdC5jCi0tLSBsaW51eC0yLjYu
NS5vcmlnL2FyY2gvaTM4Ni9wY2kvZGlyZWN0LmMJMjAwNC0wNC0wNCAwNDozNjoyNy4wMDAwMDAw
MDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2FyY2gvaTM4Ni9wY2kvZGlyZWN0LmMJMjAwNC0wNS0w
MSAxNToyMDo0Mi4wMDAwMDAwMDAgKzAxMDAKQEAgLTQsNiArNCw3IEBACiAKICNpbmNsdWRlIDxs
aW51eC9wY2kuaD4KICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSAibWFjaF9wY2lf
YmxhY2tsaXN0LmgiCiAjaW5jbHVkZSAicGNpLmgiCiAKIC8qCkBAIC0yMCw2ICsyMSw5IEBACiAJ
aWYgKCF2YWx1ZSB8fCAoYnVzID4gMjU1KSB8fCAoZGV2Zm4gPiAyNTUpIHx8IChyZWcgPiAyNTUp
KQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCWlmIChtYWNoX3BjaV9pc19ibGFja2xpc3RlZChidXMs
IFBDSV9TTE9UKGRldmZuKSwgUENJX0ZVTkMoZGV2Zm4pKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK
IAlzcGluX2xvY2tfaXJxc2F2ZSgmcGNpX2NvbmZpZ19sb2NrLCBmbGFncyk7CiAKIAlvdXRsKFBD
SV9DT05GMV9BRERSRVNTKGJ1cywgZGV2Zm4sIHJlZyksIDB4Q0Y4KTsKZGlmZiAtdXJOIGxpbnV4
LTIuNi41Lm9yaWcvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcgbGludXgtMi42LjUvZHJpdmVy
cy9pMmMvYnVzc2VzL0tjb25maWcKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy9pMmMvYnVz
c2VzL0tjb25maWcJMjAwNC0wNC0wNCAwNDozODoxMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4
LTIuNi41L2RyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnCTIwMDQtMDUtMDEgMTU6MjA6NDIuMDAw
MDAwMDAwICswMTAwCkBAIC0zNyw2ICszNywxMCBAQAogCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28g
YmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQogCSAgd2lsbCBiZSBjYWxs
ZWQgaTJjLWFtZDc1Ni4KIAorY29uZmlnIEkyQ19YQk9YCisJdHJpc3RhdGUgIlhCT1ggSTJDIgor
CWRlcGVuZHMgb24gSTJDICYmIEVYUEVSSU1FTlRBTAorCiBjb25maWcgSTJDX0FNRDgxMTEKIAl0
cmlzdGF0ZSAiQU1EIDgxMTEiCiAJZGVwZW5kcyBvbiBJMkMgJiYgRVhQRVJJTUVOVEFMCmRpZmYg
LXVyTiBsaW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZSBsaW51eC0y
LjYuNS9kcml2ZXJzL2kyYy9idXNzZXMvTWFrZWZpbGUKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJp
dmVycy9pMmMvYnVzc2VzL01ha2VmaWxlCTIwMDQtMDQtMDQgMDQ6MzY6MTcuMDAwMDAwMDAwICsw
MTAwCisrKyBsaW51eC0yLjYuNS9kcml2ZXJzL2kyYy9idXNzZXMvTWFrZWZpbGUJMjAwNC0wNS0w
MSAxNToyMDo0Mi4wMDAwMDAwMDAgKzAxMDAKQEAgLTUsNiArNSw3IEBACiBvYmotJChDT05GSUdf
STJDX0FMSTE1MzUpCSs9IGkyYy1hbGkxNTM1Lm8KIG9iai0kKENPTkZJR19JMkNfQUxJMTVYMykJ
Kz0gaTJjLWFsaTE1eDMubwogb2JqLSQoQ09ORklHX0kyQ19BTUQ3NTYpCSs9IGkyYy1hbWQ3NTYu
bworb2JqLSQoQ09ORklHX0kyQ19YQk9YKQkJKz0gaTJjLXhib3gubwogb2JqLSQoQ09ORklHX0ky
Q19BTUQ4MTExKQkrPSBpMmMtYW1kODExMS5vCiBvYmotJChDT05GSUdfSTJDX0VMRUtUT1IpCSs9
IGkyYy1lbGVrdG9yLm8KIG9iai0kKENPTkZJR19JMkNfSFlEUkEpCQkrPSBpMmMtaHlkcmEubwpk
aWZmIC11ck4gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXhib3guYyBs
aW51eC0yLjYuNS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXhib3guYwotLS0gbGludXgtMi42LjUu
b3JpZy9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXhib3guYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAw
MDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy14Ym94
LmMJMjAwNC0wNS0wMSAxNToyMDo0Mi4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSw0MTcgQEAK
Ky8qCisgICAgaTJjLXhib3guYyAtIFBhcnQgb2YgbG1fc2Vuc29ycywgTGludXgga2VybmVsIG1v
ZHVsZXMgZm9yIGhhcmR3YXJlCisgICAgICAgICAgICAgIG1vbml0b3JpbmcKKworICAgIENvcHly
aWdodCAoYykgMTk5OS0yMDAyIEVkZ2FyIEh1Y2VrIDxob3N0bWFzdGVyQGVkLXNvZnQuYXQ+CisK
KyAgICBTaGFtZWxlc3NseSByaXBwZWQgZnJvbSBpMmMteGJveC5jOgorCisgICAgVGhpcyBwcm9n
cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp
ZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAg
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlk
Z2UsIE1BIDAyMTM5LCBVU0EuCisqLworCisvKgorICAgU3VwcG9ydHMgWEJPWCwgTm90ZTogd2Ug
YXNzdW1lIHRoZXJlIGNhbiBvbmx5IGJlIG9uZSBkZXZpY2UsIHdpdGggb25lIFNNQnVzIGludGVy
ZmFjZS4KKyovCisKKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisjaW5jbHVkZSA8bGludXgv
bW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+Cisj
aW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc3RkZGVmLmg+CisjaW5j
bHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRl
IDxsaW51eC9pMmMuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisKKyNpbmNsdWRlIDxsaW51
eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+ICAvKiBlcnJvciBjb2RlcyAqLwor
I2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPiAvKiBpbnRyX2NvdW50ICovCisjaW5jbHVkZSA8
bGludXgveGJveC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisKKworI2RlZmluZSBHU19B
QlJUX1NUUyAoMSA8PCAwKQorI2RlZmluZSBHU19DT0xfU1RTICgxIDw8IDEpCisjZGVmaW5lIEdT
X1BSRVJSX1NUUyAoMSA8PCAyKQorI2RlZmluZSBHU19IU1RfU1RTICgxIDw8IDMpCisjZGVmaW5l
IEdTX0lSUV9PTiAoMSA8PCA0KQorI2RlZmluZSBHU19IQ1lDX1NUUyAoMSA8PCA0KQorI2RlZmlu
ZSBHU19UT19TVFMgKDEgPDwgNSkKKyNkZWZpbmUgR1NfU01CX1NUUyAoMSA8PCAxMSkKKworI2Rl
ZmluZSBTTUJfR0NUTF9IT1NUX1NUQVJUICAgICAgKDEgPDwgMykKKyNkZWZpbmUgU01CX0dDVExf
SE9TVF9JTlRFUlJVUFQgICgxIDw8IDQpCisjZGVmaW5lIFNNQl9HQ1RMX0FCT1JUICAgICAgICAg
ICAoMSA8PCA1KQorI2RlZmluZSBTTUJfR0NUTF9TTk9PUCAgICAgICAgICAgKDEgPDwgOCkKKyNk
ZWZpbmUgU01CX0dDVExfU0xBVkVfSU5URVJSVVBUICgxIDw8IDkpCisjZGVmaW5lIFNNQl9HQ1RM
X0FMRVJUX0lOVEVSUlVQVCAoMSA8PCAxMCkKKworI2RlZmluZSBHU19DTEVBUl9TVFMgKEdTX0FC
UlRfU1RTIHwgR1NfQ09MX1NUUyB8IEdTX1BSRVJSX1NUUyB8IFwKKyAgR1NfSENZQ19TVFMgfCBH
U19UT19TVFMpCisKKyNkZWZpbmUgR0VfQ1lDX1RZUEVfTUFTSyAoNykKKyNkZWZpbmUgR0VfSE9T
VF9TVEMgKDEgPDwgMykKKyNkZWZpbmUgR0VfQUJPUlQgKDEgPDwgNSkKKworI2RlZmluZSBJMkNf
SFdfU01CVVNfWEJPWCAgIDB4MDUKKyNkZWZpbmUgU01CR0NGRyAgIDB4MDQxICAgICAgICAgIC8q
IG1oICovCisjZGVmaW5lIFNNQkJBICAgICAweDA1OCAgICAgICAgICAgLyogbWggKi8KKworc3Ry
dWN0IHNkIHsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCB2ZW5kb3I7CisgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgZGV2aWNlOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IGZ1bmN0aW9uOwor
ICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgaW50IGFtZHNldHVwOjE7Cit9OworCitzdGF0aWMg
c3RydWN0IHNkIHN1cHBvcnRlZFtdID0geworICAgIHtQQ0lfVkVORE9SX0lEX05WSURJQSwgMHgw
MWI0LCAxLCAiblZpZGlhIFhCT1ggbkZvcmNlIiwgMH0sCisgICAgezAsIDAsIDB9Cit9OworCisv
KiBYQk9YIFNNQnVzIGFkZHJlc3Mgb2Zmc2V0cyAqLworI2RlZmluZSBTTUJfQUREUl9PRkZTRVQg
ICAgICAgIDB4MDQKKyNkZWZpbmUgU01CX0lPU0laRSAgICAgICAgICAgICA4CisjZGVmaW5lIFNN
Ql9HTE9CQUxfU1RBVFVTICAgICAgKDB4MCArIHhib3hfc21iYSkKKyNkZWZpbmUgU01CX0dMT0JB
TF9FTkFCTEUgICAgICAoMHgyICsgeGJveF9zbWJhKQorI2RlZmluZSBTTUJfSE9TVF9BRERSRVNT
ICAgICAgICgweDQgKyB4Ym94X3NtYmEpCisjZGVmaW5lIFNNQl9IT1NUX0RBVEEgICAgICAgICAg
KDB4NiArIHhib3hfc21iYSkKKyNkZWZpbmUgU01CX0hPU1RfQ09NTUFORCAgICAgICAoMHg4ICsg
eGJveF9zbWJhKQorCisKKworCisKKy8qIE90aGVyIHNldHRpbmdzICovCisjZGVmaW5lIE1BWF9U
SU1FT1VUIDUwMAorCisvKiBYQk9YIGNvbnN0YW50cyAqLworI2RlZmluZSBYQk9YX1FVSUNLICAg
ICAgICAweDAwCisjZGVmaW5lIFhCT1hfQllURSAgICAgICAgIDB4MDEKKyNkZWZpbmUgWEJPWF9C
WVRFX0RBVEEgICAgMHgwMgorI2RlZmluZSBYQk9YX1dPUkRfREFUQSAgICAweDAzCisjZGVmaW5l
IFhCT1hfUFJPQ0VTU19DQUxMIDB4MDQKKyNkZWZpbmUgWEJPWF9CTE9DS19EQVRBICAgMHgwNQor
CisvKiBpbnNtb2QgcGFyYW1ldGVycyAqLworCisjaWZkZWYgTU9EVUxFCitzdGF0aWMKKyNlbHNl
CitleHRlcm4KKyNlbmRpZgoraW50IF9faW5pdCBpMmNfeGJveF9pbml0KHZvaWQpOworc3RhdGlj
IGludCBfX2luaXQgeGJveF9jbGVhbnVwKHZvaWQpOworc3RhdGljIGludCB4Ym94X3NldHVwKHZv
aWQpOworc3RhdGljIHMzMiB4Ym94X2FjY2VzcyhzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXAsIHUx
NiBhZGRyLAorCQkJIHVuc2lnbmVkIHNob3J0IGZsYWdzLCBjaGFyIHJlYWRfd3JpdGUsCisJCQkg
dTggY29tbWFuZCwgaW50IHNpemUsIHVuaW9uIGkyY19zbWJ1c19kYXRhICpkYXRhKTsKK3N0YXRp
YyB2b2lkIHhib3hfZG9fcGF1c2UodW5zaWduZWQgaW50IGFtb3VudCk7CitzdGF0aWMgdm9pZCB4
Ym94X2Fib3J0KHZvaWQpOworc3RhdGljIGludCB4Ym94X3RyYW5zYWN0aW9uKHZvaWQpOworc3Rh
dGljIHUzMiB4Ym94X2Z1bmMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKTsKKworc3RhdGlj
IHN0cnVjdCBpMmNfYWxnb3JpdGhtIHNtYnVzX2FsZ29yaXRobSA9IHsKKwkvKiBuYW1lICovICJO
b24tSTJDIFNNQnVzIGFkYXB0ZXIiLAorCS8qIGlkICovIEkyQ19BTEdPX1NNQlVTLAorCS8qIG1h
c3Rlcl94ZmVyICovIE5VTEwsCisJLyogc21idXNfYWNjZXNzICovIHhib3hfYWNjZXNzLAorCS8q
IHNsYXZlO19zZW5kICovIE5VTEwsCisJLyogc2xhdmVfcmN2ICovIE5VTEwsCisJLyogYWxnb19j
b250cm9sICovIE5VTEwsCisJLyogZnVuY3Rpb25hbGl0eSAqLyB4Ym94X2Z1bmMsCit9OworCitz
dGF0aWMgc3RydWN0IGkyY19hZGFwdGVyIHhib3hfYWRhcHRlciA9IHsKKwkub3duZXIgICAgICAg
ICAgPSBUSElTX01PRFVMRSwKKwkuY2xhc3MgICAgICAgICAgPSBJMkNfQURBUF9DTEFTU19TTUJV
UywKKwkuYWxnbyAgICAgICAgICAgPSAmc21idXNfYWxnb3JpdGhtLAorCS5uYW1lICAgICAgICAg
ICA9ICJ1bnNldCIsCit9OworCitzdGF0aWMgaW50IF9faW5pdGRhdGEgeGJveF9pbml0aWFsaXpl
ZDsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCB4Ym94X3NtYmEgPSAwOworc3BpbmxvY2tfdCB4Ym94
X2RyaXZlcl9sb2NrID0gU1BJTl9MT0NLX1VOTE9DS0VEOworc3RydWN0IGRyaXZlcl9kYXRhOwor
c3RhdGljIHN0cnVjdCBwY2lfZGV2ICpYQk9YX2RldjsKKworLyogRGV0ZWN0IHdoZXRoZXIgYSBY
Qk9YIGNhbiBiZSBmb3VuZCwgYW5kIGluaXRpYWxpemUgaXQsIHdoZXJlIG5lY2Vzc2FyeS4KKyAg
IE5vdGUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4ga2VybmVscyB3aXRoIHRoZSBvbGQgUENJIEJJ
T1MgaW50ZXJmYWNlIGFuZAorICAgbmV3ZXIga2VybmVscyB3aXRoIHRoZSByZWFsIFBDSSBpbnRl
cmZhY2UuIEluIGNvbXBhdC5oIHNvbWUgdGhpbmdzIGFyZQorICAgZGVmaW5lZCB0byBtYWtlIHRo
ZSB0cmFuc2l0aW9uIGVhc2llci4gKi8KK2ludCB4Ym94X3NldHVwKHZvaWQpCit7CisJdW5zaWdu
ZWQgY2hhciB0ZW1wOworCXN0cnVjdCBzZCAqY3VycmRldjsKKwl1MTYgY21kOworCisJWEJPWF9k
ZXYgPSBOVUxMOworCisJLyogTG9vayBmb3IgYSBzdXBwb3J0ZWQgY2hpcCAqLworCWZvcihjdXJy
ZGV2ID0gc3VwcG9ydGVkOyBjdXJyZGV2LT52ZW5kb3I7ICkgeworCQlYQk9YX2RldiA9IHBjaV9m
aW5kX2RldmljZShjdXJyZGV2LT52ZW5kb3IsCisJCQkJCQljdXJyZGV2LT5kZXZpY2UsIFhCT1hf
ZGV2KTsKKwkJaWYgKFhCT1hfZGV2ICE9IE5VTEwpCXsKKwkgICAgICAgICAgICAgICAgcGNpX3Jl
YWRfY29uZmlnX2J5dGUoWEJPWF9kZXYsIFNNQkdDRkcsICZ0ZW1wKTsKKwkJCXBjaV9yZWFkX2Nv
bmZpZ193b3JkKFhCT1hfZGV2LCAweDE0LCAmeGJveF9zbWJhKTsKKwkJCQorCQkJeGJveF9zbWJh
ICY9IDB4ZmZmYzsKKwkJCWlmIChQQ0lfRlVOQyhYQk9YX2Rldi0+ZGV2Zm4pID09IGN1cnJkZXYt
PmZ1bmN0aW9uKQorCQkJeworCQkJCXBjaV9yZWFkX2NvbmZpZ193b3JkKFhCT1hfZGV2LFBDSV9T
VEFUVVMsJmNtZCk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0gZWxzZSB7CisJCSAgICBjdXJyZGV2
Kys7CisJCX0KKwl9CisKKwlpZiAoWEJPWF9kZXYgPT0gTlVMTCkgeworCQlwcmludGsKKwkJICAg
ICgiaTJjLXhib3gubzogRXJyb3I6IE5vIFhCT1ggb3IgY29tcGF0aWJsZSBkZXZpY2UgZGV0ZWN0
ZWQhXG4iKTsKKwkJcmV0dXJuKC1FTk9ERVYpOworCX0KKwlwcmludGsoS0VSTl9JTkZPICJpMmMt
eGJveC5vOiBGb3VuZCAlcyBTTUJ1cyBjb250cm9sbGVyLlxuIiwgY3VycmRldi0+bmFtZSk7CisK
KwkvKiBFdmVyeXRoaW5nIGlzIGhhcHB5LCBsZXQncyBncmFiIHRoZSBtZW1vcnkgYW5kIHNldCB0
aGluZ3MgdXAuICovCisJaWYoIXJlcXVlc3RfcmVnaW9uKHhib3hfc21iYSwgU01CX0lPU0laRSwg
Inhib3gtc21idXMiKSkgeworCQlwcmludGsKKwkJICAgICgiaTJjLXhib3gubzogU01CIHJlZ2lv
biAweCV4IGFscmVhZHkgaW4gdXNlIVxuIiwKKwkJICAgICB4Ym94X3NtYmEpOworCQlyZXR1cm4o
LUVOT0RFVik7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qIAorICBTTUJVUyBldmVudCA9IEkv
TyAyOC0yOSBiaXQgMTEKKyAgICAgc2VlIEUwIGZvciB0aGUgc3RhdHVzIGJpdHMgYW5kIGVuYWJs
ZWQgaW4gRTIKKyAgICAgCisqLworCisvKiBJbnRlcm5hbGx5IHVzZWQgcGF1c2UgZnVuY3Rpb24g
Ki8KK3ZvaWQgeGJveF9kb19wYXVzZSh1bnNpZ25lZCBpbnQgYW1vdW50KQoreworCWN1cnJlbnQt
PnN0YXRlID0gVEFTS19JTlRFUlJVUFRJQkxFOworCXNjaGVkdWxlX3RpbWVvdXQoYW1vdW50KTsK
K30KKwordm9pZCB4Ym94X2Fib3J0KHZvaWQpCit7CisJcHJpbnRrKCJpMmMteGJveC5vOiBTZW5k
aW5nIGFib3J0LlxuIik7CisJb3V0d19wKGludyhTTUJfR0xPQkFMX0VOQUJMRSkgfCBHRV9BQk9S
VCwgU01CX0dMT0JBTF9FTkFCTEUpOworCXhib3hfZG9fcGF1c2UoMTAwKTsKKwlvdXR3X3AoR1Nf
Q0xFQVJfU1RTLCBTTUJfR0xPQkFMX1NUQVRVUyk7Cit9CisKK2ludCB4Ym94X3RyYW5zYWN0aW9u
KHZvaWQpCit7CisJaW50IHRlbXA7CisJaW50IHJlc3VsdCA9IDA7CisJaW50IHRpbWVvdXQgPSAw
OworCisJLyogTWFrZSBzdXJlIHRoZSBTTUJ1cyBob3N0IGlzIHJlYWR5IHRvIHN0YXJ0IHRyYW5z
bWl0dGluZyAqLworCWlmICgodGVtcCA9IGlud19wKFNNQl9HTE9CQUxfU1RBVFVTKSkgJiAoR1Nf
SFNUX1NUUyB8IEdTX1NNQl9TVFMpKSB7CisJCWRvIHsKKwkJCXVkZWxheSgxMDApOworCQkJdGVt
cCA9IGlud19wKFNNQl9HTE9CQUxfU1RBVFVTKTsKKwkJfSB3aGlsZSAoKHRlbXAgJiAoR1NfSFNU
X1NUUyB8IEdTX1NNQl9TVFMpKSAmJgorCQkgICAgICAgICAodGltZW91dCsrIDwgTUFYX1RJTUVP
VVQpKTsKKwkJLyogSWYgdGhlIFNNQnVzIGlzIHN0aWxsIGJ1c3ksIHdlIGdpdmUgdXAgKi8KKwkJ
aWYgKHRpbWVvdXQgPj0gTUFYX1RJTUVPVVQpIHsKKwkJCXByaW50aygiaTJjLXhib3gubzogQnVz
eSB3YWl0IHRpbWVvdXQhICglMDR4KVxuIiwgdGVtcCk7CisJCQl4Ym94X2Fib3J0KCk7CisJCQly
ZXR1cm4oLTEpOworCQl9CisJCXRpbWVvdXQgPSAwOworCX0KKworCS8qIHN0YXJ0IHRoZSB0cmFu
c2FjdGlvbiBieSBzZXR0aW5nIHRoZSBzdGFydCBiaXQgKi8KKwlvdXR3X3AoaW53KFNNQl9HTE9C
QUxfRU5BQkxFKSB8IEdFX0hPU1RfU1RDICwgU01CX0dMT0JBTF9FTkFCTEUpOworCisJLyogV2Ug
d2lsbCBhbHdheXMgd2FpdCBmb3IgYSBmcmFjdGlvbiBvZiBhIHNlY29uZCEgKi8KKwl0ZW1wID0g
aW53X3AoU01CX0dMT0JBTF9TVEFUVVMpOworCXdoaWxlICgodGVtcCAmIEdTX0hTVF9TVFMpICYm
ICh0aW1lb3V0KysgPCBNQVhfVElNRU9VVCkpIHsKKwkJdWRlbGF5KDEwMCk7CisJCXRlbXAgPSBp
bndfcChTTUJfR0xPQkFMX1NUQVRVUyk7CQkKKwl9IAorCisJLyogSWYgdGhlIFNNQnVzIGlzIHN0
aWxsIGJ1c3ksIHdlIGdpdmUgdXAgKi8KKwlpZiAodGltZW91dCA+PSBNQVhfVElNRU9VVCkgewor
CQlwcmludGsoImkyYy14Ym94Lm86IENvbXBsZXRpb24gdGltZW91dCFcbiIpOworCQl4Ym94X2Fi
b3J0ICgpOworCQlyZXR1cm4oLTEpOworCX0KKworCWlmICh0ZW1wICYgR1NfUFJFUlJfU1RTKSB7
CisJCXJlc3VsdCA9IC0xOworCX0KKworCWlmICh0ZW1wICYgR1NfQ09MX1NUUykgeworCQlyZXN1
bHQgPSAtMTsKKwkJcHJpbnRrKCJpMmMteGJveC5vOiBTTUJ1cyBjb2xsaXNpb24hXG4iKTsKKwl9
CisKKwlpZiAodGVtcCAmIEdTX1RPX1NUUykgeworCQlyZXN1bHQgPSAtMTsKKwl9CisJb3V0d19w
KEdTX0NMRUFSX1NUUywgU01CX0dMT0JBTF9TVEFUVVMpOworCisJcmV0dXJuIHJlc3VsdDsKK30K
KworLyogUmV0dXJuIC0xIG9uIGVycm9yLiAqLworczMyIHhib3hfYWNjZXNzKHN0cnVjdCBpMmNf
YWRhcHRlciAqIGFkYXAsIHUxNiBhZGRyLAorCQkgIHVuc2lnbmVkIHNob3J0IGZsYWdzLCBjaGFy
IHJlYWRfd3JpdGUsCisJCSAgdTggY29tbWFuZCwgaW50IHNpemUsIHVuaW9uIGkyY19zbWJ1c19k
YXRhICogZGF0YSkKK3sKKyAgLyoqIFRPRE86IFNob3VsZCBJIHN1cHBvcnRlIHRoZSAxMC1iaXQg
dHJhbnNmZXJzPyAqLworCXN3aXRjaCAoc2l6ZSkgeworCWNhc2UgSTJDX1NNQlVTX1BST0NfQ0FM
TDoKKwkJcHJpbnRrCisJCSAgICAoImkyYy14Ym94Lm86IEkyQ19TTUJVU19QUk9DX0NBTEwgbm90
IHN1cHBvcnRlZCFcbiIpOworCQkvKiBUT0RPOiBXZWxsLi4uIEl0IGlzIHN1cHBvcnRlZCwgSSdt
IGp1c3Qgbm90IHN1cmUgd2hhdCB0byBkbyBoZXJlLi4uICovCisJCXJldHVybiAtMTsKKwljYXNl
IEkyQ19TTUJVU19RVUlDSzoKKwkJb3V0d19wKCgoYWRkciAmIDB4N2YpIDw8IDEpIHwgKHJlYWRf
d3JpdGUgJiAweDAxKSwKKwkJICAgICAgIFNNQl9IT1NUX0FERFJFU1MpOworCQlzaXplID0gWEJP
WF9RVUlDSzsKKwkJYnJlYWs7CisJY2FzZSBJMkNfU01CVVNfQllURToKKwkJb3V0d19wKCgoYWRk
ciAmIDB4N2YpIDw8IDEpIHwgKHJlYWRfd3JpdGUgJiAweDAxKSwKKwkJICAgICAgIFNNQl9IT1NU
X0FERFJFU1MpOworCQkvKiBUT0RPOiBXaHkgb25seSBkdXJpbmcgd3JpdGU/ICovCisJCWlmIChy
ZWFkX3dyaXRlID09IEkyQ19TTUJVU19XUklURSkKKwkJCW91dGJfcChjb21tYW5kLCBTTUJfSE9T
VF9DT01NQU5EKTsKKwkJc2l6ZSA9IFhCT1hfQllURTsKKwkJYnJlYWs7CisJY2FzZSBJMkNfU01C
VVNfQllURV9EQVRBOgorCQlvdXR3X3AoKChhZGRyICYgMHg3ZikgPDwgMSkgfCAocmVhZF93cml0
ZSAmIDB4MDEpLAorCQkgICAgICAgU01CX0hPU1RfQUREUkVTUyk7CisJCW91dGJfcChjb21tYW5k
LCBTTUJfSE9TVF9DT01NQU5EKTsKKwkJaWYgKHJlYWRfd3JpdGUgPT0gSTJDX1NNQlVTX1dSSVRF
KQorCQkJb3V0d19wKGRhdGEtPmJ5dGUsIFNNQl9IT1NUX0RBVEEpOworCQlzaXplID0gWEJPWF9C
WVRFX0RBVEE7CisJCWJyZWFrOworCWNhc2UgSTJDX1NNQlVTX1dPUkRfREFUQToKKwkJb3V0d19w
KCgoYWRkciAmIDB4N2YpIDw8IDEpIHwgKHJlYWRfd3JpdGUgJiAweDAxKSwKKwkJICAgICAgIFNN
Ql9IT1NUX0FERFJFU1MpOworCQlvdXRiX3AoY29tbWFuZCwgU01CX0hPU1RfQ09NTUFORCk7CisJ
CWlmIChyZWFkX3dyaXRlID09IEkyQ19TTUJVU19XUklURSkKKwkJCW91dHdfcChkYXRhLT53b3Jk
LCBTTUJfSE9TVF9EQVRBKTsJLyogVE9ETzogZW5kaWFuPz8/PyAqLworCQlzaXplID0gWEJPWF9X
T1JEX0RBVEE7CisJCWJyZWFrOworCX0KKworCS8qIEhvdyBhYm91dCBlbmFibGluZyBpbnRlcnJ1
cHRzLi4uICovCisJb3V0d19wKHNpemUgJiBHRV9DWUNfVFlQRV9NQVNLLCBTTUJfR0xPQkFMX0VO
QUJMRSk7CisKKwlpZiAoeGJveF90cmFuc2FjdGlvbigpKQkvKiBFcnJvciBpbiB0cmFuc2FjdGlv
biAqLworCQlyZXR1cm4gLTE7CisKKwlpZiAoKHJlYWRfd3JpdGUgPT0gSTJDX1NNQlVTX1dSSVRF
KSB8fCAoc2l6ZSA9PSBYQk9YX1FVSUNLKSkKKwkJcmV0dXJuIDA7CisKKworCXN3aXRjaCAoc2l6
ZSkgeworCWNhc2UgWEJPWF9CWVRFOgorCQlkYXRhLT5ieXRlID0gaW53X3AoU01CX0hPU1RfREFU
QSk7CisJCWJyZWFrOworCWNhc2UgWEJPWF9CWVRFX0RBVEE6CisJCWRhdGEtPmJ5dGUgPSBpbndf
cChTTUJfSE9TVF9EQVRBKTsKKwkJYnJlYWs7CisJY2FzZSBYQk9YX1dPUkRfREFUQToKKwkJZGF0
YS0+d29yZCA9IGlud19wKFNNQl9IT1NUX0RBVEEpOwkvKiBUT0RPOiBlbmRpYW4/Pz8/ICovCisJ
CWJyZWFrOworCX0KKworCXJldHVybiAwOworfQorCit1MzIgeGJveF9mdW5jKHN0cnVjdCBpMmNf
YWRhcHRlciAqYWRhcHRlcikKK3sKKwlyZXR1cm4gSTJDX0ZVTkNfU01CVVNfUVVJQ0sgfCBJMkNf
RlVOQ19TTUJVU19CWVRFIHwKKwkgICAgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBIHwgSTJDX0ZV
TkNfU01CVVNfV09SRF9EQVRBIHwKKwkgICAgSTJDX0ZVTkNfU01CVVNfQkxPQ0tfREFUQSB8IEky
Q19GVU5DX1NNQlVTX1BST0NfQ0FMTDsKK30KKworaW50IF9faW5pdCBpMmNfeGJveF9pbml0KHZv
aWQpCit7CisJaW50IHJlczsKKwlwcmludGsoImkyYy14Ym94Lm8gdmVyc2lvbiAwLjAuMVxuIik7
CisJeGJveF9pbml0aWFsaXplZCA9IDA7CisJaWYgKChyZXMgPSB4Ym94X3NldHVwKCkpKSB7CisJ
CXByaW50aworCQkgICAgKCJpMmMteGJveC5vOiBYQk9YIG9yIGNvbXBhdGlibGUgZGV2aWNlIG5v
dCBkZXRlY3RlZCwgbW9kdWxlIG5vdCBpbnNlcnRlZC5cbiIpOworCQl4Ym94X2NsZWFudXAoKTsK
KwkJcmV0dXJuIHJlczsKKwl9CisJeGJveF9pbml0aWFsaXplZCsrOworCXNwcmludGYoeGJveF9h
ZGFwdGVyLm5hbWUsICJTTUJ1cyBhZGFwdGVyIGF0ICUwNHgiLHhib3hfc21iYSk7CisJaWYgKChy
ZXMgPSBpMmNfYWRkX2FkYXB0ZXIoJnhib3hfYWRhcHRlcikpKSB7CisJCXByaW50aworCQkgICAg
KCJpMmMteGJveC5vOiBBZGFwdGVyIHJlZ2lzdHJhdGlvbiBmYWlsZWQsIG1vZHVsZSBub3QgaW5z
ZXJ0ZWQuXG4iKTsKKwkJeGJveF9jbGVhbnVwKCk7CisJCXJldHVybiByZXM7CisJfQorCXhib3hf
aW5pdGlhbGl6ZWQrKzsKKwlwcmludGsoImkyYy14Ym94Lm86IFNNQnVzIGJ1cyBkZXRlY3RlZCBh
bmQgaW5pdGlhbGl6ZWRcbiIpOworCXJldHVybiAwOworfQorCitpbnQgX19pbml0IHhib3hfY2xl
YW51cCh2b2lkKQoreworCWludCByZXM7CisJaWYgKHhib3hfaW5pdGlhbGl6ZWQgPj0gMikgewor
CQlpZiAoKHJlcyA9IGkyY19kZWxfYWRhcHRlcigmeGJveF9hZGFwdGVyKSkpIHsKKwkJCXByaW50
aworCQkJICAgICgiaTJjLXhib3gubzogaTJjX2RlbF9hZGFwdGVyIGZhaWxlZCwgbW9kdWxlIG5v
dCByZW1vdmVkXG4iKTsKKwkJCXJldHVybiByZXM7CisJCX0gZWxzZQorCQkJeGJveF9pbml0aWFs
aXplZC0tOworCX0KKwlpZiAoeGJveF9pbml0aWFsaXplZCA+PSAxKSB7CisJCXJlbGVhc2VfcmVn
aW9uKHhib3hfc21iYSwgU01CX0lPU0laRSk7CisJCXhib3hfaW5pdGlhbGl6ZWQtLTsKKwl9CisJ
ZnJlZV9pcnEoWEJPWF9kZXYtPmlycSwgWEJPWF9kZXYpOworCXJldHVybiAwOworfQorCitFWFBP
UlRfU1lNQk9MKGkyY194Ym94X2luaXQpOworCisjaWZkZWYgTU9EVUxFCisKK01PRFVMRV9BVVRI
T1IoIkVkZ2FyIEh1Y2VrIDxob3N0bWFzdGVyQGVkLXNvZnQuYXQ+Iik7CitNT0RVTEVfREVTQ1JJ
UFRJT04oIlhCT1ggbkZvcmNlIFNNQnVzIGRyaXZlciIpOworCisjaWZkZWYgTU9EVUxFX0xJQ0VO
U0UKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKKyNlbmRpZgorCitpbnQgaW5pdF9tb2R1bGUodm9p
ZCkKK3sKKwlyZXR1cm4gaTJjX3hib3hfaW5pdCgpOworfQorCit2b2lkIGNsZWFudXBfbW9kdWxl
KHZvaWQpCit7CisJeGJveF9jbGVhbnVwKCk7Cit9CisKKyNlbmRpZgkJCQkvKiBNT0RVTEUgKi8K
ZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy9pZGUvaWRlLWNkLmMgbGludXgtMi42
LjUvZHJpdmVycy9pZGUvaWRlLWNkLmMKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy9pZGUv
aWRlLWNkLmMJMjAwNC0wNC0wNCAwNDozNjo1Ny4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIu
Ni41L2RyaXZlcnMvaWRlL2lkZS1jZC5jCTIwMDQtMDUtMDEgMTU6MjA6NDIuMDAwMDAwMDAwICsw
MTAwCkBAIC0zMjQsNiArMzI0LDE0IEBACiAKICNpbmNsdWRlICJpZGUtY2QuaCIKIAorI2lmZGVm
IENPTkZJR19YODZfWEJPWAorI2luY2x1ZGUgPGxpbnV4L3hib3guaD4KKy8qIEdsb2JhbCBmbGFn
IGluZGljYXRpbmcgd2hldGhlciB0byBzaW11bGF0ZSBYYm94IGRyaXZlIGxvY2tpbmcgaW4KKyAq
IHNvZnR3YXJlLiAgVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIFhib3ggZHJpdmUgaW4gYSBzeXN0
ZW0hICBUaGlzCisgKiB2YXJpYWJsZSBpcyBleHRlcm5hbGx5IHJlZmVyZW5jZWQgYnkgYXJjaC9p
Mzg2L2tlcm5lbC94Ym94ZWplY3RmaXguYy4gKi8KK3ZvbGF0aWxlIGludCBYYm94X3NpbXVsYXRl
X2RyaXZlX2xvY2tlZCA9IDA7CisjZW5kaWYgLyogQ09ORklHX1g4Nl9YQk9YICovCisgCiAvKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgogICogR2VuZXJpYyBwYWNrZXQgY29tbWFuZCBzdXBwb3J0IGFuZCBl
cnJvciBoYW5kbGluZyByb3V0aW5lcy4KICAqLwpAQCAtMjExMyw2ICsyMTIxLDE2IEBACiAJaWYg
KHNlbnNlID09IE5VTEwpCiAJCXNlbnNlID0gJm15X3NlbnNlOwogCisjaWZkZWYgQ09ORklHX1g4
Nl9YQk9YCisJLyogSWYgd2UncmUgb24gYW4gWGJveCBhbmQgdGhpcyBpcyBhbiBYYm94IGRyaXZl
LCBzaW11bGF0ZSB0aGUgbG9jaworCSAgIHJlcXVlc3QgaW4gc29mdHdhcmUuICAoU2VlIGFyY2gv
aTM4Ni9rZXJuZWwveGJveGVqZWN0Zml4LmMpICovCisJaWYgKENEUk9NX0NPTkZJR19GTEFHUyhk
cml2ZSktPnhib3hfZHJpdmUgJiYgbWFjaGluZV9pc194Ym94KSB7CisJCUNEUk9NX1NUQVRFX0ZM
QUdTKGRyaXZlKS0+ZG9vcl9sb2NrZWQgPSBsb2NrZmxhZzsKKwkJWGJveF9zaW11bGF0ZV9kcml2
ZV9sb2NrZWQgPSBsb2NrZmxhZzsKKwkJcmV0dXJuIDA7CisJfQorI2VuZGlmIC8qIENPTkZJR19Y
ODZfWEJPWCAqLworCQkKIAkvKiBJZiB0aGUgZHJpdmUgY2Fubm90IGxvY2sgdGhlIGRvb3IsIGp1
c3QgcHJldGVuZC4gKi8KIAlpZiAoQ0RST01fQ09ORklHX0ZMQUdTKGRyaXZlKS0+bm9fZG9vcmxv
Y2spIHsKIAkJc3RhdCA9IDA7CkBAIC0yMTYwLDYgKzIxNzgsMjMgQEAKIAlpZiAoQ0RST01fU1RB
VEVfRkxBR1MoZHJpdmUpLT5kb29yX2xvY2tlZCAmJiBlamVjdGZsYWcpCiAJCXJldHVybiAwOwog
CisjaWZkZWYgQ09ORklHX1g4Nl9YQk9YCisgICAgICAgIC8qIE9sZGVyIFhib3ggRFZEIGRyaXZl
cyBkb24ndCB1bmRlcnN0YW5kIHRoZSBBVEFQSSBjb21tYW5kLCBidXQgdGhlIFNNQworCSAgIGNh
biBkbyB0aGUgZWplY3QuICBOb3RlIHRoYXQgc29tZSBYYm94IGRyaXZlcyBzdXBwb3J0IHRoZSBl
amVjdAorCSAgIGNvbW1hbmQsIG5hbWVseSB0aGUgU2Ftc3VuZywgc28gZm9yIHRoYXQgZHJpdmUg
d2UgZG8gYSByZWd1bGFyIGVqZWN0CisJICAgc2VxdWVuY2UuICovCisJaWYgKG1hY2hpbmVfaXNf
eGJveCAmJiBDRFJPTV9DT05GSUdfRkxBR1MoZHJpdmUpLT54Ym94X2RyaXZlICYmCisJCUNEUk9N
X0NPTkZJR19GTEFHUyhkcml2ZSktPnhib3hfZWplY3QpIHsKKwkJaWYgKGVqZWN0ZmxhZykgewor
CQkJWGJveF90cmF5X2xvYWQoKTsKKwkJfSBlbHNlIHsKKwkJCVhib3hfc2ltdWxhdGVfZHJpdmVf
bG9ja2VkID0gMDsKKwkJCVhib3hfdHJheV9lamVjdCgpOworCQl9CisJCXJldHVybiAwOworCX0K
KyNlbmRpZgorCQkKIAljZHJvbV9wcmVwYXJlX3JlcXVlc3QoJnJlcSk7CiAKIAlyZXEuc2Vuc2Ug
PSBzZW5zZTsKQEAgLTMyNDUsNiArMzI4MCw2NyBAQAogICAgICAgICAgICAgICAgICAvKiB1c2Vz
IENEIGluIHNsb3QgMCB3aGVuIHZhbHVlIGlzIHNldCB0byAzICovCiAgICAgICAgICAgICAgICAg
IGNkaS0+c2FueW9fc2xvdCA9IDM7CiAgICAgICAgIH0KKyNpZmRlZiBDT05GSUdfWDg2X1hCT1gK
KwkvKiBUSE9NU09OIERWRCBkcml2ZXMgaW4gdGhlIFhib3ggcmVwb3J0IGluY29ycmVjdCBjYXBh
YmlsaXRpZXMKKwkgICBhbmQgZG8gbm90IHVuZGVyc3RhbmQgdGhlIEFUQVBJIGVqZWN0IGNvbW1h
bmQsIGJ1dCB0aGUgU01DCisJICAgY2FuIGRvIHRoZSBlamVjdC4gKi8KKwllbHNlIGlmICgoc3Ry
Y21wKGRyaXZlLT5pZC0+bW9kZWwsICJUSE9NU09OLURWRCIpID09IDApKSB7CisJCUNEUk9NX0NP
TkZJR19GTEFHUyhkcml2ZSktPmF1ZGlvX3BsYXkgPSAxOworCQlDRFJPTV9DT05GSUdfRkxBR1Mo
ZHJpdmUpLT5kdmQgPSAxOworCQlDRFJPTV9DT05GSUdfRkxBR1MoZHJpdmUpLT54Ym94X2RyaXZl
ID0gMTsKKwkJQ0RST01fQ09ORklHX0ZMQUdTKGRyaXZlKS0+eGJveF9lamVjdCA9IDE7CisJfQor
CS8qIFBISUxJUFMgZHJpdmVzIGluIFhib3hlbiBtYW51ZmFjdHVyZWQgcHJlIFNlcHRlbWJlciAy
MDAzLAorCSAgIHJlcG9ydCBjb3JyZWN0IGNhcGFiaWxpdGllcywgYnV0IGRvIG5vdCB1bmRlcnN0
YW5kIHRoZSBBVEFQSQorCSAgIGVqZWN0IGNvbW1hbmQsIGhlbmNlIHJlcXVpcmUgdGhlIFNNQyB0
byBkbyBzby4gKi8KKwllbHNlIGlmICgoc3RyY21wKGRyaXZlLT5pZC0+bW9kZWwsICJQSElMSVBT
IFhCT1ggRFZEIERSSVZFIikgPT0gMCkpIHsKKwkJQ0RST01fQ09ORklHX0ZMQUdTKGRyaXZlKS0+
eGJveF9kcml2ZSA9IDE7CisJCUNEUk9NX0NPTkZJR19GTEFHUyhkcml2ZSktPnhib3hfZWplY3Qg
PSAxOworCX0KKwkvKiBQSElMSVBTIGRyaXZlcyBpbiBYYm94ZW4gbWFudWZhY3R1cmVkIHBvc3Qg
U2VwdGVtYmVyIDIwMDMsCisJICAgcmVwb3J0IGluY29ycmVjdCBjYXBhYmlsaXRpZXMsIGJ1dCB1
bmRlcnN0YW5kIHRoZSBBVEFQSQorCSAgIGVqZWN0IGNvbW1hbmQuICovCisJZWxzZSBpZiAoKHN0
cmNtcChkcml2ZS0+aWQtPm1vZGVsLCAiUEhJTElQUyBKNSAzMjM1QyIpID09IDApKSB7CisJCUNE
Uk9NX0NPTkZJR19GTEFHUyhkcml2ZSktPmF1ZGlvX3BsYXkgPSAxOworCQlDRFJPTV9DT05GSUdf
RkxBR1MoZHJpdmUpLT5kdmQgPSAxOworCQlDRFJPTV9DT05GSUdfRkxBR1MoZHJpdmUpLT54Ym94
X2RyaXZlID0gMTsKKwkJQ0RST01fQ09ORklHX0ZMQUdTKGRyaXZlKS0+eGJveF9lamVjdCA9IDA7
CisJfQorCS8qIFNBTVNVTkcgZHJpdmVzIGluIHRoZSBYYm94IHJlcG9ydCBjb3JyZWN0IGNhcGFi
aWxpdGllcworCSAgIGFuZCB1bmRlcnN0YW5kIHRoZSBBVEFQSSBlamVjdCBjb21tYW5kLiAqLwor
CWVsc2UgaWYgKHN0cmNtcChkcml2ZS0+aWQtPm1vZGVsLCAiU0FNU1VORyBEVkQtUk9NIFNERy02
MDVCIikgPT0gMCkgeworCQlDRFJPTV9DT05GSUdfRkxBR1MoZHJpdmUpLT54Ym94X2RyaXZlID0g
MTsKKwkJQ0RST01fQ09ORklHX0ZMQUdTKGRyaXZlKS0+eGJveF9lamVjdCA9IDA7CisJfQorI2Vu
ZGlmCisKKwkvKiBJcyBhbiBYYm94IGRyaXZlIGRldGVjdGVkPyAqLworI2lmZGVmIENPTkZJR19Y
ODZfWEJPWAorCWlmIChDRFJPTV9DT05GSUdfRkxBR1MoZHJpdmUpLT54Ym94X2RyaXZlKSB7Cisj
ZW5kaWYKKwkJLyogSWYgYW4gWGJveCBkcml2ZSBpcyBwcmVzZW50IGluIGEgcmVndWxhciBQQywg
d2UgY2FuJ3QgZWplY3QuCisJCSAgIEFjdCBsaWtlIHRoZSBkcml2ZSBjYW5ub3QgZWplY3QsIHVu
bGVzcyB0aGUgQVRBUEkgZWplY3QgY29tbWFuZAorCQkgICBpcyBzdXBwb3J0ZWQgYnkgdGhlIGRy
aXZlLiAgSWYgdGhlIGRyaXZlIGRvZXNuJ3Qgc3VwcG9ydCBBVEFQSQorCQkgICBlamVjdGluZywg
YWN0IGxpa2UgZG9vciBsb2NraW5nIGlzIGltcG9zc2libGUgYXMgd2VsbC4gKi8KKyNpZmRlZiBD
T05GSUdfWDg2X1hCT1gKKwkJaWYgKCFtYWNoaW5lX2lzX3hib3gpIHsKKyNlbmRpZiAvKiBDT05G
SUdfWDg2X1hCT1ggKi8KKwkJCUNEUk9NX0NPTkZJR19GTEFHUyhkcml2ZSktPm5vX2Rvb3Jsb2Nr
ID0gQ0RST01fQ09ORklHX0ZMQUdTCisJCQkJKGRyaXZlKS0+eGJveF9lamVjdDsKKwkJCUNEUk9N
X0NPTkZJR19GTEFHUyhkcml2ZSktPm5vX2VqZWN0ID0gQ0RST01fQ09ORklHX0ZMQUdTKGRyaXZl
KQorCQkJCS0+eGJveF9lamVjdDsKKyNpZmRlZiBDT05GSUdfWDg2X1hCT1gKKwkJfSBlbHNlIHsK
KwkJCS8qIEFuIFhib3ggZHJpdmUgaW4gYW4gWGJveC4gIFdlIGNhbiBzdXBwb3J0IGVqZWN0aW5n
IHRocm91Z2gKKwkJCSAgIHRoZSBTTUMgYW5kIHN1cHBvcnQgZHJpdmUgbG9ja2luZyBpbiBzb2Z0
d2FyZSBieSBpZ25vcmluZworCQkJICAgdGhlIGVqZWN0IGludGVycnVwdCAoc2VlIGFyY2gvaTM4
Ni9rZXJuZWwveGJveGVqZWN0Zml4LmMpLiAqLworCQkJQ0RST01fQ09ORklHX0ZMQUdTKGRyaXZl
KS0+bm9fZG9vcmxvY2sgPSAwOworCQkJQ0RST01fQ09ORklHX0ZMQUdTKGRyaXZlKS0+bm9fZWpl
Y3QgPSAwOworCQkJWGJveF9zaW11bGF0ZV9kcml2ZV9sb2NrZWQgPSAwOworCQl9CisjZW5kaWYK
Kwl9CisKICNlbmRpZiAvKiBub3QgU1RBTkRBUkRfQVRBUEkgKi8KIAogCWluZm8tPnRvYwkJPSBO
VUxMOwpkaWZmIC11ck4gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL2lkZS9pZGUtY2QuaCBsaW51
eC0yLjYuNS9kcml2ZXJzL2lkZS9pZGUtY2QuaAotLS0gbGludXgtMi42LjUub3JpZy9kcml2ZXJz
L2lkZS9pZGUtY2QuaAkyMDA0LTA0LTA0IDA0OjM4OjI2LjAwMDAwMDAwMCArMDEwMAorKysgbGlu
dXgtMi42LjUvZHJpdmVycy9pZGUvaWRlLWNkLmgJMjAwNC0wNS0wMSAxNToyMDo0Mi4wMDAwMDAw
MDAgKzAxMDAKQEAgLTk1LDYgKzk1LDEwIEBACiAJX191OCBjbG9zZV90cmF5CQk6IDE7IC8qIGNh
biBjbG9zZSB0aGUgdHJheSAqLwogCV9fdTggd3JpdGluZwkJOiAxOyAvKiBwc2V1ZG8gd3JpdGUg
aW4gcHJvZ3Jlc3MgKi8KIAlfX3U4IG1vX2RyaXZlCQk6IDE7IC8qIGRyaXZlIGlzIGFuIE1PIGRl
dmljZSAqLworI2lmZGVmIENPTkZJR19YODZfWEJPWAorCV9fdTggeGJveF9kcml2ZSAgICAgICAg
IDogMTsgLyogZHJpdmUgaXMgYW4gWGJveCBkcml2ZSAqLworCV9fdTggeGJveF9lamVjdCAgICAg
ICAgIDogMTsgLyogdXNlIFhib3ggU01DIGVqZWN0IG1lY2hhbmlzbSAqLwkKKyNlbmRpZgogCV9f
dTggcmVzZXJ2ZWQJCTogMjsKIAlieXRlIG1heF9zcGVlZDsJCSAgICAgLyogTWF4IHNwZWVkIG9m
IHRoZSBkcml2ZSAqLwogfTsKZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy9wY2kv
cGNpLmlkcyBsaW51eC0yLjYuNS9kcml2ZXJzL3BjaS9wY2kuaWRzCi0tLSBsaW51eC0yLjYuNS5v
cmlnL2RyaXZlcnMvcGNpL3BjaS5pZHMJMjAwNC0wNC0wNCAwNDozNzowNy4wMDAwMDAwMDAgKzAx
MDAKKysrIGxpbnV4LTIuNi41L2RyaXZlcnMvcGNpL3BjaS5pZHMJMjAwNC0wNS0wMSAxNToyMDo0
Mi4wMDAwMDAwMDAgKzAxMDAKQEAgLTI4NTYsNiArMjg1Niw3IEBACiAJMDI4NiAgTlYyOCBbR2VG
b3JjZTQgVGkgNDIwMCBHbyBBR1AgOHhdCiAJMDI4OCAgTlYyOEdMIFtRdWFkcm80IDk4MCBYR0xd
CiAJMDI4OSAgTlYyOEdMIFtRdWFkcm80IDc4MCBYR0xdCisJMDJhMCAgTlYxNiBbR2VGb3JjZTMg
TVggLSBuRm9yY2UgR1BVXQogCTAzMDAgIE5WMzAgW0dlRm9yY2UgRlhdCiAJMDMwMSAgTlYzMCBb
R2VGb3JjZSBGWCA1ODAwIFVsdHJhXQogCTAzMDIgIE5WMzAgW0dlRm9yY2UgRlggNTgwMF0KZGlm
ZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy91c2IvaW5wdXQvS2NvbmZpZy5yZWogbGlu
dXgtMi42LjUvZHJpdmVycy91c2IvaW5wdXQvS2NvbmZpZy5yZWoKLS0tIGxpbnV4LTIuNi41Lm9y
aWcvZHJpdmVycy91c2IvaW5wdXQvS2NvbmZpZy5yZWoJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAw
MDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2RyaXZlcnMvdXNiL2lucHV0L0tjb25maWcucmVq
CTIwMDQtMDUtMDEgMTU6MjA6NDIuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsNDIgQEAKKyoq
KioqKioqKioqKioqKgorKioqIDE4MCwxOTQgKioqKgorICAJICBtb2R1bGUgd2lsbCBiZSBjYWxs
ZWQgcG93ZXJtYXRlLgorICAKKyAgY29uZmlnIFVTQl9YUEFECistIAl0cmlzdGF0ZSAiWC1Cb3gg
Z2FtZXBhZCBzdXBwb3J0IgorICAJZGVwZW5kcyBvbiBVU0IgJiYgSU5QVVQKKyAgCS0tLWhlbHAt
LS0KKy0gCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFgtQm94IHBhZCB3aXRo
IHlvdXIgY29tcHV0ZXIuCisgIAkgIE1ha2Ugc3VyZSB0byBzYXkgWSB0byAiSm95c3RpY2sgc3Vw
cG9ydCIgKENPTkZJR19JTlBVVF9KT1lERVYpCisgIAkgIGFuZC9vciAiRXZlbnQgaW50ZXJmYWNl
IHN1cHBvcnQiIChDT05GSUdfSU5QVVRfRVZERVYpIGFzIHdlbGwuCisgIAorLSAJICBGb3IgaW5m
b3JtYXRpb24gYWJvdXQgaG93IHRvIGNvbm5lY3QgdGhlIFgtQm94IHBhZCB0byBVU0IsIHNlZQor
ICAJICA8ZmlsZTpEb2N1bWVudGF0aW9uL2lucHV0L3hwYWQudHh0Pi4KKyAgCisgIAkgIFRvIGNv
bXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorICAJICBt
b2R1bGUgd2lsbCBiZSBjYWxsZWQgeHBhZC4KKy0tLSAxODAsMjAzIC0tLS0KKyAgCSAgbW9kdWxl
IHdpbGwgYmUgY2FsbGVkIHBvd2VybWF0ZS4KKyAgCisgIGNvbmZpZyBVU0JfWFBBRAorKyAJdHJp
c3RhdGUgIlhib3ggY29udHJvbGxlciAoZ2FtZXBhZCkgc3VwcG9ydCIKKyAgCWRlcGVuZHMgb24g
VVNCICYmIElOUFVUCisgIAktLS1oZWxwLS0tCisrIAkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQg
dG8gdXNlIFhib3ggY29udHJvbGxlcnMgd2l0aCB5b3VyIGNvbXB1dGVyLgorICAJICBNYWtlIHN1
cmUgdG8gc2F5IFkgdG8gIkpveXN0aWNrIHN1cHBvcnQiIChDT05GSUdfSU5QVVRfSk9ZREVWKQor
ICAJICBhbmQvb3IgIkV2ZW50IGludGVyZmFjZSBzdXBwb3J0IiAoQ09ORklHX0lOUFVUX0VWREVW
KSBhcyB3ZWxsLgorICAKKysgCSAgRm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBjb25uZWN0
IGFuIFhib3ggY29udHJvbGxlciB0byBVU0IsIHNlZQorICAJICA8ZmlsZTpEb2N1bWVudGF0aW9u
L2lucHV0L3hwYWQudHh0Pi4KKyAgCisgIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBt
b2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQorICAJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgeHBh
ZC4KKysgCisrIGNvbmZpZyBVU0JfWFBBRF9NT1VTRQorKyAJYm9vbCAiTW91c2UgZW11bGF0aW9u
IGZvciBYYm94IGNvbnRyb2xsZXIiCisrIAlkZXBlbmRzIG9uIFVTQl9YUEFECisrIAktLS1oZWxw
LS0tCisrIAkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIG1vdXNlIGVtdWxhdGlv
biBmb3IgeW91ciBYYm94CisrIAkgIGNvbnRyb2xsZXIuCisrIAkgIE1ha2Ugc3VyZSB0byBzYXkg
WSB0byAiTW91c2Ugc3VwcG9ydCIgKENPTkZJR19JTlBVVF9NT1VTRURFVikKKysgCSAgYW5kL29y
ICJFdmVudCBpbnRlcmZhY2Ugc3VwcG9ydCIgKENPTkZJR19JTlBVVF9FVkRFVikgYXMgd2VsbC4K
ZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy91c2IvaW5wdXQvTWFrZWZpbGUgbGlu
dXgtMi42LjUvZHJpdmVycy91c2IvaW5wdXQvTWFrZWZpbGUKLS0tIGxpbnV4LTIuNi41Lm9yaWcv
ZHJpdmVycy91c2IvaW5wdXQvTWFrZWZpbGUJMjAwNC0wNC0wNCAwNDozNzoyNC4wMDAwMDAwMDAg
KzAxMDAKKysrIGxpbnV4LTIuNi41L2RyaXZlcnMvdXNiL2lucHV0L01ha2VmaWxlCTIwMDQtMDUt
MDEgMTU6MjA6NDMuMDAwMDAwMDAwICswMTAwCkBAIC00LDYgKzQsNyBAQAogCiAjIE11bHRpcGFy
dCBvYmplY3RzLgogaGlkLW9ianMJOj0gaGlkLWNvcmUubworeHBhZC1vYmpzCTo9IHhwYWQtY29y
ZS5vCiAKICMgT3B0aW9uYWwgcGFydHMgb2YgbXVsdGlwYXJ0IG9iamVjdHMuCiAKQEAgLTI2LDYg
KzI3LDEwIEBACiAJaGlkLW9ianMJKz0gaGlkLWZmLm8KIGVuZGlmCiAKK2lmZXEgKCQoQ09ORklH
X1VTQl9YUEFEX01PVVNFKSx5KQorCXhwYWQtb2JqcwkrPSB4cGFkLW1vdXNlLm8KK2VuZGlmCisK
IG9iai0kKENPTkZJR19VU0JfQUlQVEVLKQkrPSBhaXB0ZWsubwogb2JqLSQoQ09ORklHX1VTQl9B
VElfUkVNT1RFKQkrPSBhdGlfcmVtb3RlLm8KIG9iai0kKENPTkZJR19VU0JfSElEKQkJKz0gaGlk
Lm8KZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy91c2IvaW5wdXQveHBhZC1jb3Jl
LmMgbGludXgtMi42LjUvZHJpdmVycy91c2IvaW5wdXQveHBhZC1jb3JlLmMKLS0tIGxpbnV4LTIu
Ni41Lm9yaWcvZHJpdmVycy91c2IvaW5wdXQveHBhZC1jb3JlLmMJMTk3MC0wMS0wMSAwMTowMDow
MC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2RyaXZlcnMvdXNiL2lucHV0L3hwYWQt
Y29yZS5jCTIwMDQtMDUtMDEgMTU6MjA6NDMuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsNTc3
IEBACisvKgorICogWGJveCBpbnB1dCBkZXZpY2UgZHJpdmVyIGZvciBMaW51eCAtIHYwLjEuNAor
ICoKKyAqIENvcHlyaWdodCAoYykgIDIwMDIgLSAyMDA0ICBNYXJrbyBGcmllZGVtYW5uIDxtZnJA
Ym14LWNoZW1uaXR6LmRlPgorICoKKyAqCUNvbnRyaWJ1dG9yczoKKyAqCQlWb2p0ZWNoIFBhdmxp
ayA8dm9qdGVjaEBzdXNlLnN6PiwKKyAqCQlPbGl2ZXIgU2Nod2FydHogPE9saXZlci5TY2h3YXJ0
ekBnbXguZGU+LAorICoJCVN0ZXZlbiBUb3RoIDxzdGV2ZUB0b3RoLmRlbW9uLmNvLnVrPiwKKyAq
CQlGcmFueiBMZWhuZXIgPGZyYW56QGNhb3MuYXQ+LAorICoJCUl2YW4gSGF3a2VzIDxibGFja2hh
d2tAaXZhbmhhd2tlcy5jb20+CisgKgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgor
ICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx
LTEzMDcgVVNBCisgKgorICoKKyAqIFRoaXMgZHJpdmVyIGlzIGJhc2VkIG9uOgorICogIC0gaW5m
b3JtYXRpb24gZnJvbSAgICAgaHR0cDovL2V1Yy5qcC9wZXJpcGhzL3hib3gtY29udHJvbGxlci5l
bi5odG1sCisgKiAgLSB0aGUgaUZvcmNlIGRyaXZlciAgICBkcml2ZXJzL2NoYXIvam95c3RpY2sv
aWZvcmNlLmMKKyAqICAtIHRoZSBza2VsZXRvbi1kcml2ZXIgIGRyaXZlcnMvdXNiL3VzYi1za2Vs
ZXRvbi5jCisgKgorICogVGhhbmtzIHRvOgorICogIC0gSVRPIFRha2F5dWtpIGZvciBwcm92aWRp
bmcgZXNzZW50aWFsIHhwYWQgaW5mb3JtYXRpb24gb24gaGlzIHdlYnNpdGUKKyAqICAtIFZvanRl
Y2ggUGF2bGlrICAgICAtIGlmb3JjZSBkcml2ZXIgLyBpbnB1dCBzdWJzeXN0ZW0KKyAqICAtIEdy
ZWcgS3JvYWgtSGFydG1hbiAtIHVzYi1za2VsZXRvbiBkcml2ZXIKKyAqCisgKiBUT0RPOgorICog
IC0gZmluZSB0dW5lIGF4ZXMKKyAqICAtIGZpbmUgdHVuZSBtb3VzZSBiZWhhdmlvdXIgKHNob3Vs
ZCBub3QgZG8gbGluZWFyIGFjY2VsZXJhdGlvbikKKyAqICAtIE5FVzogZ2V0IHJ1bWJsZSB3b3Jr
aW5nIGNvcnJlY3RseSwgZml4IGFsbCB0aGUgYnVncyBhbmQgc3VwcG9ydCBtdWx0aXBsZQorICog
ICAgICAgICBzaW11bHRhbmVvdXMgZWZmZWN0cworICogIC0gTkVXOiBzcGxpdCBmdW50aW9uYWxp
dHkgbW91c2Uvam91c3RpY2sgaW50byB0d28gc291cmNlIGZpbGVzCisgKiAgLSBORVc6IGltcGxl
bWVudCAvcHJvYyBpbnRlcmZhY2UgKHRvZ2dsZSBtb3VzZS9ydW1ibGUgZW5hYmxlL2Rpc2FibGUs
IGV0Yy4pCisgKiAgLSBORVc6IGltcGxlbWVudCB1c2VyIHNwYWNlIGRhZW1vbiBhcHBsaWNhdGlv
biB0aGF0IGhhbmRsZXMgdGhhdCBpbnRlcmZhY2UKKyAqCisgKiBIaXN0b3J5OiBtb3ZlZCB0byBl
bmQgb2YgZmlsZQorICovCisgCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8
bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4
L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zbXBf
bG9jay5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgorI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24u
aD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisK
KyNpbmNsdWRlICJ4cGFkLmgiCisKK3N0YXRpYyBzdHJ1Y3QgeHBhZF9kZXZpY2UgeHBhZF9kZXZp
Y2VbXSA9IHsKKwkvKiBwbGVhc2Uga2VlcCB0aG9zZSBvcmRlcmVkIHdydC4gdmVuZG9yL3Byb2R1
Y3QgaWRzCisJICB2ZW5kb3IsIHByb2R1Y3QsIGlzTWF0LCBuYW1lICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KKwl7IDB4MDQ1ZSwgMHgwMjAyLCAwLCAiTWljcm9zb2Z0IFhib3ggQ29u
dHJvbGxlciIgfSwKKwl7IDB4MDQ1ZSwgMHgwMjg1LCAwLCAiTWljcm9zb2Z0IFhib3ggQ29udHJv
bGxlciBTIiB9LAorCXsgMHgwNDVlLCAweDAyODksIDAsICJNaWNyb3NvZnQgWGJveCBDb250cm9s
bGVyIFMiIH0sIC8qIG1pY3Jvc29mdCBpcyBzdHVwaWQgKi8KKwl7IDB4MDQ2ZCwgMHhjYTg4LCAw
LCAiTG9naXRlY2ggQ29tcGFjdCBDb250cm9sbGVyIGZvciBYYm94IiB9LAorCXsgMHgwNWZkLCAw
eDEwMDcsIDAsICI/Pz9NYWQgQ2F0eiBDb250cm9sbGVyPz8/IiB9LCAvKiBDSEVDS01FOiB0aGlz
IHNlZW1zIHN0cmFuZ2UgKi8KKwl7IDB4MDVmZCwgMHgxMDdhLCAwLCAiSW50ZXJBY3QgUG93ZXJQ
YWQgUHJvIiB9LAorCXsgMHgwNzM4LCAweDQ1MTYsIDAsICJNYWQgQ2F0eiBDb250cm9sIFBhZCIg
fSwKKwl7IDB4MDczOCwgMHg0NTIyLCAwLCAiTWFkIENhdHogTHVtaUNPTiIgfSwKKwl7IDB4MDcz
OCwgMHg0NTI2LCAwLCAiTWFkIENhdHogQ29udHJvbCBQYWQgUHJvIiB9LAorCXsgMHgwNzM4LCAw
eDQ1MzYsIDAsICJNYWQgQ2F0eiBNaWNyb0NPTiIgfSwKKwl7IDB4MDczOCwgMHg0NTQwLCAxLCAi
TWFkIENhdHogQmVhdCBQYWQiIH0sCisJeyAweDA3MzgsIDB4NDU1NiwgMCwgIk1hZCBDYXR6IEx5
bnggV2lyZWxlc3MgQ29udHJvbGxlciIgfSwKKwl7IDB4MDczOCwgMHg2MDQwLCAxLCAiTWFkIENh
dHogQmVhdCBQYWQgUHJvIiB9LAorCXsgMHgwYzEyLCAweDk5MDIsIDAsICJIQU1BIFZpYnJhWCAt
IGx1Y2t5IGJveSIgfSwgLyogdGhlc2UgYXJlIGJyb2tlbiAqLworCXsgMHgwZTZmLCAweDAwMDMs
IDAsICJMb2dpYzMgRnJlZWJpcmQgd2lyZWxlc3MgQ29udHJvbGxlciIgfSwKKwl7IDB4MGYzMCwg
MHgwMjAyLCAwLCAiSm95dGVjaCBBZHZhbmNlZCBDb250cm9sbGVyIiB9LAorCXsgMHgxMmFiLCAw
eDg4MDksIDEsICJYYm94IEREUiBkYW5jZXBhZCIgfSwKKwl7IDB4ZmZmZiwgMHhmZmZmLCAwLCAi
Q2hpbmVzZSBjcmFwIFhib3ggQ29udHJvbGxlciIgfSwgLyogV1RGIGFyZSBkZXZpY2UgSURzIGZv
cj8gKi8KKwl7IDB4MDAwMCwgMHgwMDAwLCAwLCAibm90aGluZyBkZXRlY3RlZCAtIEZBSUwiIH0K
K307CisKK3N0YXRpYyBzaWduZWQgc2hvcnQgeHBhZF9idG5bXSA9IHsKKwlCVE5fQSwgQlROX0Is
IEJUTl9DLCBCVE5fWCwgQlROX1ksIEJUTl9aLAkvKiBhbmFsb2d1ZSBidXR0b25zICovCisJQlRO
X1NUQVJULCBCVE5fQkFDSywgQlROX1RIVU1CTCwgQlROX1RIVU1CUiwJLyogc3RhcnQvYmFjay9z
dGlja3MgKi8KKwlCVE5fMCwgQlROXzEsIEJUTl8yLCBCVE5fMywJCQkvKiBkLXBhZCBhcyBidXR0
b25zICovCisJLTEJCQkJCQkvKiB0ZXJtaW5hdGluZyBlbnRyeSAqLworfTsKKworc3RhdGljIHNp
Z25lZCBzaG9ydCB4cGFkX21hdF9idG5bXSA9IHsKKwlCVE5fQSwgQlROX0IsIEJUTl9YLCBCVE5f
WSwgCS8qIEEsIEIsIFgsIFkgKi8KKwlCVE5fU1RBUlQsIEJUTl9CQUNLLCAJCS8qIHN0YXJ0L2Jh
Y2sgKi8KKwlCVE5fMCwgQlROXzEsIEJUTl8yLCBCVE5fMywJLyogZGlyZWN0aW9ucywgTEVGVC9S
SUdIVCBpcyBtb3VzZQorCQkJCQkgKiBzbyB3ZSBjYW5ub3QgdXNlIHRob3NlISAqLworCS0xCQkJ
CS8qIHRlcm1pbmF0aW5nIGVudHJ5ICovCit9OworCitzdGF0aWMgc2lnbmVkIHNob3J0IHhwYWRf
YWJzW10gPSB7CisJQUJTX1gsIEFCU19ZLAkJLyogbGVmdCBzdGljayAqLworCUFCU19SWCwgQUJT
X1JZLAkJLyogcmlnaHQgc3RpY2sgKi8KKwlBQlNfWiwgQUJTX1JaLAkJLyogdHJpZ2dlcnMgbGVm
dC9yaWdodCAqLworCUFCU19IQVQwWCwgQUJTX0hBVDBZLAkvKiBkaWdpdGFsIHBhZCAqLworCUFC
U19IQVQxWCwgQUJTX0hBVDFZLAkvKiBhbmFsb2d1ZSBidXR0b25zIEEgKyBCICovCisJQUJTX0hB
VDJYLCBBQlNfSEFUMlksCS8qIGFuYWxvZ3VlIGJ1dHRvbnMgQyArIFggKi8KKwlBQlNfSEFUM1gs
IEFCU19IQVQzWSwJLyogYW5hbG9ndWUgYnV0dG9ucyBZICsgWiAqLworCS0xCQkJLyogdGVybWlu
YXRpbmcgZW50cnkgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCB4cGFkX3Rh
YmxlIFtdID0geworCXsgVVNCX0lOVEVSRkFDRV9JTkZPKCdYJywgJ0InLCAwKSB9LAkvKiBYYm94
IFVTQi1JRiBub3QgYXBwcm92ZWQgY2xhc3MgKi8KKwl7IFVTQl9JTlRFUkZBQ0VfSU5GTyggMyAs
ICAwICwgMCkgfSwJLyogZm9yIEpveXRlY2ggQWR2YW5jZWQgQ29udHJvbGxlciAqLworCXsgfQor
fTsKKworTU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHhwYWRfdGFibGUpOworCisvKioKKyAqCXhw
YWRfcHJvY2Vzc19wYWNrZXQKKyAqCisgKglDb21wbGV0ZXMgYSByZXF1ZXN0IGJ5IGNvbnZlcnRp
bmcgdGhlIGRhdGEgaW50byBldmVudHMKKyAqCWZvciB0aGUgaW5wdXQgc3Vic3lzdGVtLgorICoK
KyAqCVRoZSByZXBvcnQgZGVzY3JpcHRvciB3YXMgdGFrZW4gZnJvbSBJVE8gVGFrYXl1a2lzIHdl
YnNpdGU6CisgKgkgaHR0cDovL2V1Yy5qcC9wZXJpcGhzL3hib3gtY29udHJvbGxlci5lbi5odG1s
CisgKi8KK3N0YXRpYyB2b2lkIHhwYWRfcHJvY2Vzc19wYWNrZXQoc3RydWN0IHVzYl94cGFkICp4
cGFkLCB1MTYgY21kLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykK
K3sKKwlzdHJ1Y3QgaW5wdXRfZGV2ICpkZXYgPSAmeHBhZC0+ZGV2OworCQorCWlucHV0X3JlZ3Mo
ZGV2LCByZWdzKTsKKworCS8qIGRpZ2l0YWwgcGFkIChidXR0b24gbW9kZSkgYml0cyAoMyAyIDEg
MCkgKHJpZ2h0IGxlZnQgZG93biB1cCkgKi8KKwlpbnB1dF9yZXBvcnRfa2V5KGRldiwgQlROXzAs
IChkYXRhWzJdICYgMHgwMSkpOworCWlucHV0X3JlcG9ydF9rZXkoZGV2LCBCVE5fMSwgKGRhdGFb
Ml0gJiAweDA4KSA+PiAzKTsKKwlpbnB1dF9yZXBvcnRfa2V5KGRldiwgQlROXzIsIChkYXRhWzJd
ICYgMHgwMikgPj4gMSk7CisJaW5wdXRfcmVwb3J0X2tleShkZXYsIEJUTl8zLCAoZGF0YVsyXSAm
IDB4MDQpID4+IDIpOwkKKwkKKwkvKiBzdGFydCBhbmQgYmFjayBidXR0b25zICovCisJaW5wdXRf
cmVwb3J0X2tleShkZXYsIEJUTl9TVEFSVCwgKGRhdGFbMl0gJiAweDEwKSA+PiA0KTsKKwlpbnB1
dF9yZXBvcnRfa2V5KGRldiwgQlROX0JBQ0ssIChkYXRhWzJdICYgMHgyMCkgPj4gNSk7CisJCisJ
LyogYnV0dG9ucyBBLCBCLCBYLCBZIGRpZ2l0YWwgbW9kZSAqLworCWlucHV0X3JlcG9ydF9rZXko
ZGV2LCBCVE5fQSwgZGF0YVs0XSk7CisJaW5wdXRfcmVwb3J0X2tleShkZXYsIEJUTl9CLCBkYXRh
WzVdKTsKKwlpbnB1dF9yZXBvcnRfa2V5KGRldiwgQlROX1gsIGRhdGFbNl0pOworCWlucHV0X3Jl
cG9ydF9rZXkoZGV2LCBCVE5fWSwgZGF0YVs3XSk7CisJCisJaWYgKHhwYWQtPmlzTWF0KQorCQly
ZXR1cm47CisJCisJLyogbGVmdCBzdGljayAqLworCWlucHV0X3JlcG9ydF9hYnMoZGV2LCBBQlNf
WCwgKChfX3MxNikgKCgoX19zMTYpZGF0YVsxM10gPDwgOCkgfCBkYXRhWzEyXSkpKTsKKwlpbnB1
dF9yZXBvcnRfYWJzKGRldiwgQUJTX1ksICgoX19zMTYpICgoKF9fczE2KWRhdGFbMTVdIDw8IDgp
IHwgZGF0YVsxNF0pKSk7CisJCisJLyogcmlnaHQgc3RpY2sgKi8KKwlpbnB1dF9yZXBvcnRfYWJz
KGRldiwgQUJTX1JYLCAoKF9fczE2KSAoKChfX3MxNilkYXRhWzE3XSA8PCA4KSB8IGRhdGFbMTZd
KSkpOworCWlucHV0X3JlcG9ydF9hYnMoZGV2LCBBQlNfUlksICgoX19zMTYpICgoKF9fczE2KWRh
dGFbMTldIDw8IDgpIHwgZGF0YVsxOF0pKSk7CisgICAJCisgICAJLyogdHJpZ2dlcnMgbGVmdC9y
aWdodCAqLworCWlucHV0X3JlcG9ydF9hYnMoZGV2LCBBQlNfWiwgZGF0YVsxMF0pOworCWlucHV0
X3JlcG9ydF9hYnMoZGV2LCBBQlNfUlosIGRhdGFbMTFdKTsKKwkKKwkvKiBkaWdpdGFsIHBhZCAo
YW5hbG9ndWUgbW9kZSk6IGJpdHMgKDMgMiAxIDApIChyaWdodCBsZWZ0IGRvd24gdXApICovCisJ
aW5wdXRfcmVwb3J0X2FicyhkZXYsIEFCU19IQVQwWCwgISEoZGF0YVsyXSAmIDB4MDgpIC0gISEo
ZGF0YVsyXSAmIDB4MDQpKTsKKwlpbnB1dF9yZXBvcnRfYWJzKGRldiwgQUJTX0hBVDBZLCAhIShk
YXRhWzJdICYgMHgwMSkgLSAhIShkYXRhWzJdICYgMHgwMikpOworCisJLyogc3RpY2sgcHJlc3Mg
bGVmdC9yaWdodCAqLworCWlucHV0X3JlcG9ydF9rZXkoZGV2LCBCVE5fVEhVTUJMLCAoZGF0YVsy
XSAmIDB4NDApID4+IDYpOworCWlucHV0X3JlcG9ydF9rZXkoZGV2LCBCVE5fVEhVTUJSLCBkYXRh
WzJdID4+IDcpOworCQorCS8qIGJ1dHRvbiBBLCBCLCBYLCBZIGFuYWxvZ3VlIG1vZGUgKi8KKwlp
bnB1dF9yZXBvcnRfYWJzKGRldiwgQUJTX0hBVDFYLCBkYXRhWzRdKTsKKwlpbnB1dF9yZXBvcnRf
YWJzKGRldiwgQUJTX0hBVDFZLCBkYXRhWzVdKTsKKwlpbnB1dF9yZXBvcnRfYWJzKGRldiwgQUJT
X0hBVDJZLCBkYXRhWzZdKTsKKwlpbnB1dF9yZXBvcnRfYWJzKGRldiwgQUJTX0hBVDNYLCBkYXRh
WzddKTsKKwkKKwkvKiBidXR0b24gQyAoYmxhY2spIGRpZ2l0YWwvYW5hbG9ndWUgbW9kZSAqLwor
CWlucHV0X3JlcG9ydF9rZXkoZGV2LCBCVE5fQywgZGF0YVs4XSk7CisJaW5wdXRfcmVwb3J0X2Fi
cyhkZXYsIEFCU19IQVQyWCwgZGF0YVs4XSk7CisJCisJLyogYnV0dG9uIFogKHdoaXRlKSBkaWdp
dGFsL2FuYWxvZ3VlIG1vZGUgKi8KKwlpbnB1dF9yZXBvcnRfa2V5KGRldiwgQlROX1osIGRhdGFb
OV0pOworCWlucHV0X3JlcG9ydF9hYnMoZGV2LCBBQlNfSEFUM1ksIGRhdGFbOV0pOworCQorCWlu
cHV0X3N5bmMoZGV2KTsKKwkKKwkvKiBwcm9jZXNzIGlucHV0IGRhdGEgZm9yIG1vdXNlIGV2ZW50
IGdlbmVyYXRpb24gKi8KKwl4cGFkX21vdXNlX3Byb2Nlc3NfcGFja2V0KHhwYWQsIGNtZCwgZGF0
YSk7Cit9CisKKy8qKgorICoJeHBhZF9pcnFfaW4KKyAqCisgKglDb21wbGV0aW9uIGhhbmRsZXIg
Zm9yIGludGVycnVwdCBpbiB0cmFuc2ZlcnMgKHVzZXIgaW5wdXQpLgorICoJSnVzdCBjYWxscyB4
cGFkX3Byb2Nlc3NfcGFja2V0IHdoaWNoIGRvZXMgdGhlbiBlbWl0IGlucHV0IGV2ZW50cy4KKyAq
Lworc3RhdGljIHZvaWQgeHBhZF9pcnFfaW4oc3RydWN0IHVyYiAqdXJiLCBzdHJ1Y3QgcHRfcmVn
cyAqcmVncykKK3sKKwlzdHJ1Y3QgdXNiX3hwYWQgKnhwYWQgPSB1cmItPmNvbnRleHQ7CisJaW50
IHJldHZhbDsKKwkKKwlzd2l0Y2ggKHVyYi0+c3RhdHVzKSB7CisJY2FzZSAwOgorCQkvKiBzdWNj
ZXNzICovCisJCWJyZWFrOworCWNhc2UgLUVDT05OUkVTRVQ6CisJY2FzZSAtRU5PRU5UOgorCWNh
c2UgLUVTSFVURE9XTjoKKwkJLyogdGhpcyB1cmIgaXMgdGVybWluYXRlZCwgY2xlYW4gdXAgKi8K
KwkJZGJnKCIlcyAtIHVyYiBzaHV0dGluZyBkb3duIHdpdGggc3RhdHVzOiAlZCIsCisJCSAgICBf
X0ZVTkNUSU9OX18sIHVyYi0+c3RhdHVzKTsKKwkJcmV0dXJuOworCWRlZmF1bHQ6CisJCWRiZygi
JXMgLSBub256ZXJvIHVyYiBzdGF0dXMgcmVjZWl2ZWQ6ICVkIiwKKwkJICAgIF9fRlVOQ1RJT05f
XywgdXJiLT5zdGF0dXMpOworCQlnb3RvIGV4aXQ7CisJfQorCQorCXhwYWRfcHJvY2Vzc19wYWNr
ZXQoeHBhZCwgMCwgeHBhZC0+aWRhdGEsIHJlZ3MpOworCQorZXhpdDoKKwlyZXR2YWwgPSB1c2Jf
c3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpOworCWlmIChyZXR2YWwpCisJCWVycigiJXMgLSB1
c2Jfc3VibWl0X3VyYiBmYWlsZWQgd2l0aCByZXN1bHQgJWQiLAorCQkgICAgX19GVU5DVElPTl9f
LCByZXR2YWwpOworfQorCisvKgl4cGFkX2luaXRfdXJiCisgKgorICoJaW5pdGlhbGl6ZSB0aGUg
aW5wdXQgdXJiCisgKgl0aGlzIGlzIHRvIGJlIGNhbGxlZCB3aGVuIGpveXN0aWNrIG9yIG1vdXNl
IGRldmljZSBhcmUgb3BlbmVkCisgKi8KK2ludCB4cGFkX3N0YXJ0X3VyYihzdHJ1Y3QgdXNiX3hw
YWQgKnhwYWQpCit7CisJaW50IHN0YXR1czsKKwkKKwkvLyBjaGVjayBpZiBqb3lzdGljayBvciBt
b3VzZSBkZXZpY2UgYXJlIG9wZW5lZAorCWlmICh4cGFkLT5vcGVuX2NvdW50ICsgeHBhZC0+bW91
c2Vfb3Blbl9jb3VudCA+IDApCisJCXJldHVybiAwOworCisJeHBhZC0+aXJxX2luLT5kZXYgPSB4
cGFkLT51ZGV2OworCWlmICgoc3RhdHVzID0gdXNiX3N1Ym1pdF91cmIoeHBhZC0+aXJxX2luLCBH
RlBfS0VSTkVMKSkpIHsKKwkJZXJyKCJvcGVuIGlucHV0IHVyYiBmYWlsZWQ6ICVkIiwgc3RhdHVz
KTsKKwkJcmV0dXJuIC1FSU87CisJfQorCQorCXJldHVybiAwOworfQorCisvKioKKyAqCXhwYWRf
b3BlbgorICoKKyAqCUNhbGxlZCB3aGVuIGEgYW4gYXBwbGljYXRpb24gb3BlbnMgdGhlIGRldmlj
ZS4KKyAqLworc3RhdGljIGludCB4cGFkX29wZW4oc3RydWN0IGlucHV0X2RldiAqZGV2KQorewor
CXN0cnVjdCB1c2JfeHBhZCAqeHBhZCA9IGRldi0+cHJpdmF0ZTsKKwlpbnQgc3RhdHVzOworCQor
CWlmICh4cGFkLT5vcGVuX2NvdW50KQorCQlyZXR1cm4gMDsKKwkJCisJaW5mbygib3BlbmluZyBk
ZXZpY2UiKTsKKwkKKwlpZiAoKHN0YXR1cyA9IHhwYWRfc3RhcnRfdXJiKHhwYWQpKSkKKwkJcmV0
dXJuIHN0YXR1czsKKwkJCisJKyt4cGFkLT5vcGVuX2NvdW50OworCisJeHBhZF9ydW1ibGVfb3Bl
bih4cGFkKTsKKwkKKwlyZXR1cm4gMDsKK30KKwordm9pZCB4cGFkX3N0b3BfdXJiKHN0cnVjdCB1
c2JfeHBhZCAqeHBhZCkKK3sKKwlpZiAoeHBhZC0+b3Blbl9jb3VudCArIHhwYWQtPm1vdXNlX29w
ZW5fY291bnQgPiAwKQorCQlyZXR1cm47CisJCisJdXNiX3VubGlua191cmIoeHBhZC0+aXJxX2lu
KTsKK30KKworLyoqCisgKgl4cGFkX2Nsb3NlCisgKgorICoJQ2FsbGVkIHdoZW4gYW4gYXBwbGlj
YXRpb24gY2xvc2VzIHRoZSBkZXZpY2UuCisgKi8KK3N0YXRpYyB2b2lkIHhwYWRfY2xvc2Uoc3Ry
dWN0IGlucHV0X2RldiAqZGV2KQoreworCXN0cnVjdCB1c2JfeHBhZCAqeHBhZCA9IGRldi0+cHJp
dmF0ZTsKKwkKKwlpZiAoLS14cGFkLT5vcGVuX2NvdW50KQorCQlyZXR1cm47CisJCisJaW5mbygi
Y2xvc2luZyBkZXZpY2UiKTsKKwkKKwl4cGFkX3N0b3BfdXJiKHhwYWQpOworCXhwYWRfcnVtYmxl
X2Nsb3NlKHhwYWQpOworfQorCisvKioJeHBhZF9pbml0X2lucHV0X2RldmljZQorICoKKyAqCXNl
dHVwIHRoZSBpbnB1dCBkZXZpY2UgZm9yIHRoZSBrZXJuZWwKKyAqLworc3RhdGljIHZvaWQgeHBh
ZF9pbml0X2lucHV0X2RldmljZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Ziwgc3RydWN0IHhw
YWRfZGV2aWNlIGRldmljZSkKK3sKKwlzdHJ1Y3QgdXNiX3hwYWQgKnhwYWQgPSB1c2JfZ2V0X2lu
dGZkYXRhKGludGYpOworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3Vz
YmRldihpbnRmKTsKKwljaGFyIHBhdGhbNjRdOworCWludCBpOworCQorCXhwYWQtPmRldi5pZC5i
dXN0eXBlID0gQlVTX1VTQjsKKwl4cGFkLT5kZXYuaWQudmVuZG9yID0gdWRldi0+ZGVzY3JpcHRv
ci5pZFZlbmRvcjsKKwl4cGFkLT5kZXYuaWQucHJvZHVjdCA9IHVkZXYtPmRlc2NyaXB0b3IuaWRQ
cm9kdWN0OworCXhwYWQtPmRldi5pZC52ZXJzaW9uID0gdWRldi0+ZGVzY3JpcHRvci5iY2REZXZp
Y2U7CisJeHBhZC0+ZGV2LmRldiA9ICZpbnRmLT5kZXY7CisJeHBhZC0+ZGV2LnByaXZhdGUgPSB4
cGFkOworCXhwYWQtPmRldi5uYW1lID0gZGV2aWNlLm5hbWU7CisJeHBhZC0+ZGV2LnBoeXMgPSB4
cGFkLT5waHlzOworCXhwYWQtPmRldi5vcGVuID0geHBhZF9vcGVuOworCXhwYWQtPmRldi5jbG9z
ZSA9IHhwYWRfY2xvc2U7CisJCisJdXNiX21ha2VfcGF0aCh1ZGV2LCBwYXRoLCA2NCk7CisJc25w
cmludGYoeHBhZC0+cGh5cywgNjQsICIlcy9pbnB1dDAiLCBwYXRoKTsKKwkKKwkvKiB0aGlzIHdh
cyBtZWFudCB0byBhbGxvdyBhIHVzZXIgc3BhY2UgdG9vbCBvbi10aGUtZmx5IGNvbmZpZ3VyYXRp
b24KKwkgICBvZiBkcml2ZXIgb3B0aW9ucyAobW91c2Ugb24sIHJ1bWJsZSBvbiwgZXRjKQorCSAg
IHlldCwgVm9qdGVjaCBzYWlkIHRoaXMgaXMgYmV0dGVyIGRvbmUgdXNpbmcgc3lzZnMgKGxpbnV4
IDIuNikKKwkgICBwbHVzLCBpdCBuZWVkcyBhIHBhdGNoIHRvIHRoZSBpbnB1dCBzdWJzeXN0ZW0g
Ki8KKy8vCXhwYWQtPmRldi5pb2N0bCA9IHhwYWRfaW9jdGw7CisKKwlpZiAoeHBhZC0+aXNNYXQp
IHsKKwkJeHBhZC0+ZGV2LmV2Yml0WzBdID0gQklUKEVWX0tFWSk7CisJCWZvciAoaSA9IDA7IHhw
YWRfbWF0X2J0bltpXSA+PSAwOyArK2kpCisJCQlzZXRfYml0KHhwYWRfbWF0X2J0bltpXSwgeHBh
ZC0+ZGV2LmtleWJpdCk7CisJfSBlbHNlIHsKKwkJeHBhZC0+ZGV2LmV2Yml0WzBdID0gQklUKEVW
X0tFWSkgfCBCSVQoRVZfQUJTKTsKKwkJCisJCWZvciAoaSA9IDA7IHhwYWRfYnRuW2ldID49IDA7
ICsraSkKKwkJc2V0X2JpdCh4cGFkX2J0bltpXSwgeHBhZC0+ZGV2LmtleWJpdCk7CisJCQorCQlm
b3IgKGkgPSAwOyB4cGFkX2Fic1tpXSA+PSAwOyArK2kpIHsKKwkJCQorCQkJc2lnbmVkIHNob3J0
IHQgPSB4cGFkX2Fic1tpXTsKKwkJCQorCQkJc2V0X2JpdCh0LCB4cGFkLT5kZXYuYWJzYml0KTsK
KwkJCQorCQkJc3dpdGNoICh0KSB7CisJCQljYXNlIEFCU19YOgorCQkJY2FzZSBBQlNfWToKKwkJ
CWNhc2UgQUJTX1JYOgorCQkJY2FzZSBBQlNfUlk6CS8qIHRoZSB0d28gc3RpY2tzICovCisJCQkJ
eHBhZC0+ZGV2LmFic21heFt0XSA9ICAzMjc2NzsKKwkJCQl4cGFkLT5kZXYuYWJzbWluW3RdID0g
LTMyNzY4OworCQkJCXhwYWQtPmRldi5hYnNmbGF0W3RdID0gMTI4OworCQkJCXhwYWQtPmRldi5h
YnNmdXp6W3RdID0gMTY7CisJCQkJYnJlYWs7CisJCQljYXNlIEFCU19aOgkvKiBsZWZ0IHRyaWdn
ZXIgKi8KKwkJCWNhc2UgQUJTX1JaOgkvKiByaWdodCB0cmlnZ2VyICovCisJCQljYXNlIEFCU19I
QVQxWDoJLyogYW5hbG9ndWUgYnV0dG9uIEEgKi8KKwkJCWNhc2UgQUJTX0hBVDFZOgkvKiBhbmFs
b2d1ZSBidXR0b24gQiAqLworCQkJY2FzZSBBQlNfSEFUMlg6CS8qIGFuYWxvZ3VlIGJ1dHRvbiBD
ICovCisJCQljYXNlIEFCU19IQVQyWToJLyogYW5hbG9ndWUgYnV0dG9uIFggKi8KKwkJCWNhc2Ug
QUJTX0hBVDNYOgkvKiBhbmFsb2d1ZSBidXR0b24gWSAqLworCQkJY2FzZSBBQlNfSEFUM1k6CS8q
IGFuYWxvZ3VlIGJ1dHRvbiBaICovCisJCQkJeHBhZC0+ZGV2LmFic21heFt0XSA9IDI1NTsKKwkJ
CQl4cGFkLT5kZXYuYWJzbWluW3RdID0gMDsKKwkJCQlicmVhazsKKwkJCWNhc2UgQUJTX0hBVDBY
OgorCQkJY2FzZSBBQlNfSEFUMFk6CS8qIHRoZSBkLXBhZCAqLworCQkJCXhwYWQtPmRldi5hYnNt
YXhbdF0gPSAgMTsKKwkJCQl4cGFkLT5kZXYuYWJzbWluW3RdID0gLTE7CisJCQkJYnJlYWs7CisJ
CQl9CisJCX0KKwkJCisJCWlmICh4cGFkX3J1bWJsZV9wcm9iZSh1ZGV2LCB4cGFkLCBpZm51bSkg
IT0gMCkKKwkJCWVycigiY291bGQgbm90IGluaXQgcnVtYmxlIik7CisJfQorCisJaW5wdXRfcmVn
aXN0ZXJfZGV2aWNlKCZ4cGFkLT5kZXYpOworCXByaW50ayhLRVJOX0lORk8gImlucHV0OiAlcyBv
biAlc1xuIiwgeHBhZC0+ZGV2Lm5hbWUsIHBhdGgpOworfQorCisvKioKKyAqCXhwYWRfcHJvYmUK
KyAqCisgKglDYWxsZWQgdXBvbiBkZXZpY2UgZGV0ZWN0aW9uIHRvIGZpbmQgYSBzdWl0YWJsZSBk
cml2ZXIuCisgKglNdXN0IHJldHVybiBOVUxMIHdoZW4gbm8geHBhZCBpcyBmb3VuZCwgZWxzZSBz
ZXR1cCBldmVyeXRoaW5nLgorICovCitzdGF0aWMgaW50IHhwYWRfcHJvYmUoc3RydWN0IHVzYl9p
bnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCkKK3sKKwlzdHJ1
Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7CisJc3RydWN0
IHVzYl94cGFkICp4cGFkID0gTlVMTDsKKwlzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3Ig
KmVwX2lycV9pbjsKKwlpbnQgaTsKKwlpbnQgcHJvYmVkRGV2TnVtID0gLTE7CS8qIHRoaXMgdGFr
ZXMgdGhlIGluZGV4IGludG8gdGhlIGtub3duIGRldmljZXMKKwkJCQkgICBhcnJheSBmb3IgdGhl
IHJlY29nbml6ZWQgZGV2aWNlICovCisJCisJLy8gdHJ5IHRvIGRldGVjdCB0aGUgZGV2aWNlIHdl
IGFyZSBjYWxsZWQgZm9yCisJZm9yIChpID0gMDsgeHBhZF9kZXZpY2VbaV0uaWRWZW5kb3I7ICsr
aSkgeworCQlpZiAoKHVkZXYtPmRlc2NyaXB0b3IuaWRWZW5kb3IgPT0geHBhZF9kZXZpY2VbaV0u
aWRWZW5kb3IpICYmCisJCSAgICAodWRldi0+ZGVzY3JpcHRvci5pZFByb2R1Y3QgPT0geHBhZF9k
ZXZpY2VbaV0uaWRQcm9kdWN0KSkgeworCQkJcHJvYmVkRGV2TnVtID0gaTsKKwkJCWJyZWFrOwor
CQl9CisJfQorCQorCS8vIHNhbml0eSBjaGVjaywgZGlkIHdlIHJlY29nbml6ZSB0aGlzIGRldmlj
ZT8gaWYgbm90LCBmYWlsCisJaWYgKChwcm9iZWREZXZOdW0gPT0gLTEpIHx8ICgheHBhZF9kZXZp
Y2VbcHJvYmVkRGV2TnVtXS5pZFZlbmRvciAmJgorCQkJCSAgICAgIXhwYWRfZGV2aWNlW3Byb2Jl
ZERldk51bV0uaWRQcm9kdWN0KSkKKwkJcmV0dXJuIC1FTk9ERVY7CisJCQorCWlmICgoeHBhZCA9
IGttYWxsb2MgKHNpemVvZihzdHJ1Y3QgdXNiX3hwYWQpLCBHRlBfS0VSTkVMKSkgPT0gTlVMTCkg
eworCQllcnIoImNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG5ldyBwYWQiKTsKKwkJcmV0dXJu
IC1FTk9NRU07CisJfQorCW1lbXNldCh4cGFkLCAwLCBzaXplb2Yoc3RydWN0IHVzYl94cGFkKSk7
CisJCisJeHBhZC0+aWRhdGEgPSB1c2JfYnVmZmVyX2FsbG9jKHVkZXYsIFhQQURfUEtUX0xFTiwK
KwkJCQkgICAgICAgU0xBQl9BVE9NSUMsICZ4cGFkLT5pZGF0YV9kbWEpOworCWlmICgheHBhZC0+
aWRhdGEpIHsKKwkJa2ZyZWUoeHBhZCk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKwkKKwkvKiBz
ZXR1cCBpbnB1dCBpbnRlcnJ1cHQgcGlwZSAoYnV0dG9uIGFuZCBheGlzIHN0YXRlKSAqLworCXhw
YWQtPmlycV9pbiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7CisgICAgICAgIGlmICgh
eHBhZC0+aXJxX2luKSB7CisJCWVycigiY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgbmV3IHBh
ZCBpcnEgdXJiIik7CisJCXVzYl9idWZmZXJfZnJlZSh1ZGV2LCBYUEFEX1BLVF9MRU4sIHhwYWQt
PmlkYXRhLCB4cGFkLT5pZGF0YV9kbWEpOworICAgICAgICAgICAgICAgIGtmcmVlKHhwYWQpOwor
ICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworCX0KKwkKKwllcF9pcnFfaW4gPSAmaW50
Zi0+YWx0c2V0dGluZ1swXS5lbmRwb2ludFswXS5kZXNjOworCQorCXhwYWQtPnVkZXYgPSB1ZGV2
OworCXhwYWQtPmlzTWF0ID0geHBhZF9kZXZpY2VbcHJvYmVkRGV2TnVtXS5pc01hdDsKKwkKKwkv
KiBpbml0IGlucHV0IFVSQiBmb3IgVVNCIElOVCB0cmFuc2ZlciBmcm9tIGRldmljZSAqLworCXVz
Yl9maWxsX2ludF91cmIoeHBhZC0+aXJxX2luLCB1ZGV2LAorCQkJIHVzYl9yY3ZpbnRwaXBlKHVk
ZXYsIGVwX2lycV9pbi0+YkVuZHBvaW50QWRkcmVzcyksCisJCQkgeHBhZC0+aWRhdGEsIFhQQURf
UEtUX0xFTiwKKwkJCSB4cGFkX2lycV9pbiwgeHBhZCwgZXBfaXJxX2luLT5iSW50ZXJ2YWwpOwor
CXhwYWQtPmlycV9pbi0+dHJhbnNmZXJfZG1hID0geHBhZC0+aWRhdGFfZG1hOworCXhwYWQtPmly
cV9pbi0+dHJhbnNmZXJfZmxhZ3MgfD0gVVJCX05PX1RSQU5TRkVSX0RNQV9NQVA7CisJCisJLy8g
d2Ugc2V0IHRoaXMgaGVyZSBzbyB3ZSBjYW4gZXh0cmFjdCBpdCBpbiB0aGUgdHdvIGZ1bmN0aW9u
cyBiZWxvdworCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgeHBhZCk7CisJCisJeHBhZF9pbml0X2lu
cHV0X2RldmljZShpbnRmLCB4cGFkX2RldmljZVtwcm9iZWREZXZOdW1dKTsKKwl4cGFkX21vdXNl
X2luaXRfaW5wdXRfZGV2aWNlKGludGYsIHhwYWRfZGV2aWNlW3Byb2JlZERldk51bV0pOworCQor
CXJldHVybiAwOworfQorCisvKioKKyAqCXhwYWRfZGlzY29ubmVjdAorICoKKyAqCUNhbGxlZCB1
cG9uIGRldmljZSBkaXNjb25uZWN0IHRvIGRpc3Bvc2Ugb2YgdGhlIHN0cnVjdHVyZXMgYW5kCisg
KgljbG9zZSB0aGUgVVNCIGNvbm5lY3Rpb25zLgorICovCitzdGF0aWMgdm9pZCB4cGFkX2Rpc2Nv
bm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpCit7CisJc3RydWN0IHVzYl94cGFkICp4
cGFkID0gdXNiX2dldF9pbnRmZGF0YShpbnRmKTsKKwkKKwl1c2Jfc2V0X2ludGZkYXRhKGludGYs
IE5VTEwpOworCWlmICh4cGFkKSB7CisJCWluZm8oICJkaXNjb25uZWN0aW5nIGRldmljZSIgKTsK
KwkJdXNiX3VubGlua191cmIoeHBhZC0+aXJxX2luKTsKKwkJeHBhZF9ydW1ibGVfY2xvc2UoeHBh
ZCk7CisJCWlucHV0X3VucmVnaXN0ZXJfZGV2aWNlKCZ4cGFkLT5kZXYpOworCQkKKwkJdXNiX2Zy
ZWVfdXJiKHhwYWQtPmlycV9pbik7CisJCXhwYWRfbW91c2VfY2xlYW51cCh4cGFkKTsKKwkJCisJ
CXVzYl9idWZmZXJfZnJlZShpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpLCBYUEFEX1BLVF9MRU4s
CisJCQkJeHBhZC0+aWRhdGEsIHhwYWQtPmlkYXRhX2RtYSk7CisJCisJCXhwYWRfcnVtYmxlX2Rp
c2Nvbm5lY3QoeHBhZCk7CisJCQorCQlrZnJlZSh4cGFkKTsKKwl9Cit9CisKKy8qKioqKioqKioq
KioqKioqKioqIExpbnV4IGRyaXZlciBmcmFtZXdvcmsgc3BlY2lmaWMgc3R1ZmYgKioqKioqKioq
KioqLworCitzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgeHBhZF9kcml2ZXIgPSB7CisJLm93bmVy
CQk9IFRISVNfTU9EVUxFLAorCS5uYW1lCQk9ICJ4cGFkIiwKKwkucHJvYmUJCT0geHBhZF9wcm9i
ZSwKKwkuZGlzY29ubmVjdAk9IHhwYWRfZGlzY29ubmVjdCwKKwkuaWRfdGFibGUJPSB4cGFkX3Rh
YmxlLAorfTsKKworLyoqCisgKiBkcml2ZXIgaW5pdCBlbnRyeSBwb2ludAorICovCitzdGF0aWMg
aW50IF9faW5pdCB1c2JfeHBhZF9pbml0KHZvaWQpCit7CisJaW50IHJlc3VsdCA9IHVzYl9yZWdp
c3RlcigmeHBhZF9kcml2ZXIpOworCWlmIChyZXN1bHQgPT0gMCkKKwkJaW5mbyhEUklWRVJfREVT
QyAiICIgRFJJVkVSX1ZFUlNJT04pOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qKgorICogZHJp
dmVyIGV4aXQgZW50cnkgcG9pbnQKKyAqLworc3RhdGljIHZvaWQgX19leGl0IHVzYl94cGFkX2V4
aXQodm9pZCkKK3sKKwl1c2JfZGVyZWdpc3RlcigmeHBhZF9kcml2ZXIpOworfQorCittb2R1bGVf
aW5pdCh1c2JfeHBhZF9pbml0KTsKK21vZHVsZV9leGl0KHVzYl94cGFkX2V4aXQpOworCitNT0RV
TEVfQVVUSE9SKERSSVZFUl9BVVRIT1IpOworTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVND
KTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKKworLyoKKyAqICBkcml2ZXIgaGlzdG9yeQorICog
LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIDIwMDMtMDUtMTUgLSAwLjEuMiA6IGlvY3RscywgZHlu
YW1pYyBtb3VzZS9ydW1ibGUgYWN0aXZhdGlvbiwgL3Byb2MgZnMKKyAqICAtIGFkZGVkIHNvbWUg
L3Byb2MgZmlsZXMgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgKHJlYWRvbmx5IHJpZ2h0IG5v
dykKKyAqICAtIGFkZGVkIGluaXQgcGFyYW1ldGVycyBmb3IgbW91c2UvcnVtYmxlIGFjdGl2YXRp
b24gdXBvbiBkZXRlY3Rpb24KKyAqICAtIGFkZGVkIGR5bmFtaWMgY2hhbmdlcyB0byBtb3VzZSBl
dmVudHMgLyBydW1ibGUgZWZmZWN0IGdlbmVyYXRpb24gdmlhCisgKiAgICBpb2N0bHMgLSBOT1RF
OiB0aGlzIHJlcXVpcmVzIGEgY3VycmVudGx5IHVub2ZmaWNpYWwgam95ZGV2IHBhdGNoIQorICoK
KyAqIDIwMDMtMDQtMjkgLSAwLjEuMSA6IG1pbm9yIGNsZWFudXBzLCBzb21lIGNvbW1lbnRzCisg
KiAgLSBmaXhlZCBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgdW5rbm93biBkZXZpY2VzIChwbGVhc2Ug
dHJ5IGlyIGRvbmdsZSBub3cpCisgKiAgLSBmaXhlZCBpbnB1dCBVUkIgbGVuZ3RoICh0aGUgMjU2
IGJ5dGVzIGZyb20gMC4xLjAgYnJva2UgZXZlcnl0aGluZyBmb3IgdGhlCisgKiAgICBNUyBjb250
cm9sbGVyIGFzIHdlbGwgYXMgbXkgSW50ZXJhY3QgZGV2aWNlLCBzZXQgYmFjayB0byAzMiAocGxl
YXNlCisgKiAgICBSRVBPUlQgcHJvYmxlbXMgQkVGT1JFIGFueSBmdXJ0aGVyIGNoYW5nZXMgaGVy
ZSwgc2luY2UgdGhvc2UgY2FuIGJlIGZhdGFsKQorICogIC0gZml4ZWQgcnVtYmxpbmcgZm9yIE1T
IGNvbnRyb2xsZXJzIChuZWVkIDYgYnl0ZXMgb3V0cHV0IHJlcG9ydCkKKyAqICAtIGRyb3BwZWQg
a2VybmVsLTIuNSBpZmRlZnMsIG11Y2ggbW9yZSByZWFkYWJsZSBub3cKKyAqICAtIHByZXBhcmF0
aW9uIGZvciBtYWpvciByZXdvcmsgdW5kZXIgd2F5LCBzdGF5IHR1bmVkCisgKgorICogMjAwMy0w
My0yNSAtIDAuMS4wIDogKEZyYW56KSBTb21lIERlYnVnZ2luCisgKiAgLSBCZXR0ZXIgSGFuZGxp
bmcKKyAqICAtIFgvWSBzdXBwb3J0LCBTcGVlZCBkaWZmZXJlbnRpbmcKKyAqICAtIExhbmRpbmcg
Wm9uZSwgRGVhZCBab25lLCBPZmZzZXQga29tcGVuc2F0aW9uLCBaZXJvLWFkanVzdG1lbnQsIC4u
Li4gYXNvLgorICogIC0gUmVtb3ZlZCBXaGVlbCBoYW5kbGluZyBpbiBNb3VzZSBFbXVsYXRpb24g
Li4gc2Vuc2xlc3MuLgorICoKKyAqIDIwMDMtMDEtMjMgLSAwLjEuMC1wcmUgOiBhZGRlZCBtb3Vz
ZSBlbXVsYXRpb24gYW5kIHJ1bWJsZSBzdXBwb3J0CisgKiAgLSBjYW4gcHJvdmlkZSBtb3VzZSBl
bXVsYXRpb24gKGNvbXBpbGUgdGltZSBzd2l0Y2gpCisgKiAgICB0aGlzIGNvZGUgaGFzIGJlZW4g
dGFrZW4gZnJvbSBPbGl2ZXIgU2Nod2FydHonIHhwYWQtbW91c2UgZHJpdmVyCisgKiAgLSBiYXNp
YyBydW1ibGUgc3VwcG9ydCAoY29tcGlsZSB0aW1lIHN3aXRjaCkgICAgICAgIEVYUEVSSU1FTlRB
TCEgIAorICoKKyAqIDIwMDItMDgtMDUgLSAwLjAuNiA6IGFkZGVkIGFuYWxvZyBidXR0b24gc3Vw
cG9ydAorICoKKyAqIDIwMDItMDctMTcgLSAwLjAuNSA6IChWb2p0ZWNoIFBhdmxpaykgcmV3b3Jr
CisgKiAgLSBzaW1wbGlmaWVkIGQtcGFkIGhhbmRsaW5nCisgKgorICogMjAwMi0wNy0xNiAtIDAu
MC40IDogbWlub3IgY2hhbmdlcywgbWVyZ2Ugd2l0aCBWb2p0ZWNoJ3MgdjAuMC4zCisgKiAgLSB2
ZXJpZmllZCB0aGUgbGFjayBvZiBISUQgYW5kIHJlcG9ydCBkZXNjcmlwdG9ycworICogIC0gdmVy
aWZpZWQgdGhhdCBBTEwgYnV0dG9ucyBXT1JLCisgKiAgLSBmaXhlZCBkLXBhZCB0byBheGVzIG1h
cHBpbmcKKyAqCisgKiAyMDAyLTA3LTE0IC0gMC4wLjMgOiAoVm9qdGVjaCBQYXZsaWspIHJld29y
aworICogIC0gaW5kZW50YXRpb24gZml4ZXMKKyAqICAtIHVzYiArIGlucHV0IGluaXQgc2VxdWVu
Y2UgZml4ZXMKKyAqCisgKiAyMDAyLTA3LTAyIC0gMC4wLjIgOiBiYXNpYyB3b3JraW5nIHZlcnNp
b24KKyAqICAtIGFsbCBheGVzIGFuZCA5IG9mIHRoZSAxMCBidXR0b25zIHdvcmsgKGdlcm1hbiBJ
bnRlckFjdCBkZXZpY2UpCisgKiAgLSB0aGUgYmxhY2sgYnV0dG9uIGRvZXMgbm90IHdvcmsKKyAq
CisgKiAyMDAyLTA2LTI3IC0gMC4wLjEgOiBmaXJzdCB2ZXJzaW9uLCBqdXN0IHNhaWQgIlhCT1gg
SElEIGNvbnRyb2xsZXIiCisgKi8KZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy91
c2IvaW5wdXQveHBhZC1tb3VzZS5jIGxpbnV4LTIuNi41L2RyaXZlcnMvdXNiL2lucHV0L3hwYWQt
bW91c2UuYwotLS0gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL3VzYi9pbnB1dC94cGFkLW1vdXNl
LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2Ry
aXZlcnMvdXNiL2lucHV0L3hwYWQtbW91c2UuYwkyMDA0LTA1LTAxIDE1OjIwOjQzLjAwMDAwMDAw
MCArMDEwMApAQCAtMCwwICsxLDI3MCBAQAorLyoKKyAqIFhib3ggaW5wdXQgZGV2aWNlIGRyaXZl
ciBmb3IgTGludXggLSB2MC4xLjQKKyAqCisgKgltb3VzZSBlbXVsYXRpb24gc3R1ZmYsIG1lcmdl
ZCBmcm9tIE9saXZlcnMgeHBhZC1tb3VzZQorICoKKyAqIENvcHlyaWdodCAoYykgIDIwMDMsIDIw
MDQgIE1hcmtvIEZyaWVkZW1hbm4gPG1mckBibXgtY2hlbW5pdHouZGU+CisgKglwb3J0aW9ucyBD
b3B5cmlnaHQgKGMpCTIwMDIgIE9saXZlciBTY2h3YXJ0eiA8T2xpdmVyLlNjaHdhcnR6QGdteC5k
ZT4sCisgKgkJCQkyMDAzICBGcmFueiBMZWhuZXIgPGZyYW56QGNoYW9zLmF0PgorICoKKyAqIFJl
bGVhc2VkIHVuZGVyIEdQTC4gU2VlIHhwYWQtY29yZS5jIGZvciBkZXRhaWxzCisgKi8KKworI2lu
Y2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1
ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGlu
dXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvc21wX2xvY2suaD4KKyNpbmNsdWRlIDxsaW51
eC9wcm9jX2ZzLmg+CisjaW5jbHVkZSA8bGludXgvdXNiLmg+CisjaW5jbHVkZSA8bGludXgvdmVy
c2lvbi5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+CisjaW5jbHVkZSA8YXNtL3VhY2Nlc3Mu
aD4KKworI2RlZmluZSBfX1VTQl9YUEFEX01PVVNFCisjaW5jbHVkZSAieHBhZC5oIgorI3VuZGVm
IF9fVVNCX1hQQURfTU9VU0UKKworI2RlZmluZSBYUEFEX1dIRUVMQlJBS0UJCTIwCisjZGVmaW5l
IEpPWV9EZWFkWm9uZV9mYXN0CTYwMDAKKyNkZWZpbmUgSk9ZX0RlYWRab25lX3Nsb3cJMjAwCisj
ZGVmaW5lIFhQQURfT0ZGU0VUX0NPVU5URVIJNQorCisKK3N0YXRpYyBpbnQgbW91c2Vfb25fbG9h
ZCA9IDE7CitNT0RVTEVfUEFSTSggbW91c2Vfb25fbG9hZCwgImkiICk7CitNT0RVTEVfUEFSTV9E
RVNDKCBtb3VzZV9vbl9sb2FkLCAic2V0IHRvIDAgdG8gZGVhY3RpdmF0ZSBtb3VzZSBzdXBwb3J0
IG9uIGluc21vZCAoZGVmYXVsdCAxKSIgKTsKKworCisvKioKKyAqCXhwYWRfcmVtb3ZlZGVhZHpv
bmUKKyAqCisgKglGcmFuej8gUGxlYXNlIGNsYXJpZnkgYW5kIGNvcnJlY3QuCisgKgorICoJUmVt
b3ZlcyB0aGUgZGVhZHpvbmUgZm9yIG1vdXNlIG9wZXJhdGlvbi4KKyAqCUFsbG93cyBmb3IgYmV0
dGVyIGhhbmRsaW5nIG5lYXIgdGhlIHN0aWNrJ3MgY2VudGVyLgorICovICAgCitzdGF0aWMgaW50
IHhwYWRfbW91c2VfcmVtb3ZlZGVhZHpvbmUoc2lnbmVkIGludCBwb3NpdGlvbiwgaW50IHNwZWVk
LCBpbnQgZGVhZHpvbmUpCit7CisJaWYgKHBvc2l0aW9uPjMxMDAwKSBwb3NpdGlvbj0zMTAwMDsK
KwlpZiAocG9zaXRpb248LTMxMDAwKSBwb3NpdGlvbj0tMzEwMDA7IAorCQorCWlmICgocG9zaXRp
b24+MCkmKHBvc2l0aW9uPGRlYWR6b25lKSkgcmV0dXJuIDA7CisJaWYgKChwb3NpdGlvbjwwKSYo
cG9zaXRpb24+KC1kZWFkem9uZSkpKSByZXR1cm4gMDsKKworCWlmIChwb3NpdGlvbj5kZWFkem9u
ZSkgcG9zaXRpb24gLT0gZGVhZHpvbmU7CQorCWlmIChwb3NpdGlvbjwoLShkZWFkem9uZSkpKSBw
b3NpdGlvbis9IGRlYWR6b25lOwkKKwlwb3NpdGlvbiA9IChpbnQpKHBvc2l0aW9uIC8gc3BlZWQp
OworCisJcmV0dXJuIHBvc2l0aW9uOworfQorCit2b2lkIHhwYWRfbW91c2VfcHJvY2Vzc19wYWNr
ZXQoc3RydWN0IHVzYl94cGFkICp4cGFkLCB1MTYgY21kLCB1bnNpZ25lZCBjaGFyICpkYXRhKQor
eworICAgICAgICBzdHJ1Y3QgaW5wdXRfZGV2ICpkZXZfbW91c2UgPSAmeHBhZC0+ZGV2X21vdXNl
OworCQorICAgICAgICBpbnQgc2lnbmxlZGlyZWN0aW9uLCB4eXNwZWVkOworICAgICAgICAvL2lu
dCBqb3lfeTI7CisJdW5zaWduZWQgY2hhciBNb3VzZUxlZnQsTW91c2VSaWdodCwgTW91c2VNaWRk
bGU7CisgICAgICAgIHNpZ25lZCBpbnQgbGVmdF9qb3lfeCwgbGVmdF9qb3lfeSwgcmlnaHRfam95
X3gsIHJpZ2h0X2pveV95OworCQorCWlmICgheHBhZC0+bW91c2Vfb3Blbl9jb3VudCB8fCAheHBh
ZC0+bW91c2VfZW5hYmxlZCkKKwkJcmV0dXJuOworCQorCWxlZnRfam95X3ggPSAoKF9fczE2KSAo
KChfX3MxNilkYXRhWzEzXSA8PCA4KSB8IGRhdGFbMTJdKSk7CisJbGVmdF9qb3lfeSA9ICgoX19z
MTYpICgoKF9fczE2KWRhdGFbMTVdIDw8IDgpIHwgZGF0YVsxNF0pKTsKKwkKKwlyaWdodF9qb3lf
eCA9ICgoX19zMTYpICgoKF9fczE2KWRhdGFbMTddIDw8IDgpIHwgZGF0YVsxNl0pKTsKKwlyaWdo
dF9qb3lfeSA9ICgoX19zMTYpICgoKF9fczE2KWRhdGFbMTldIDw8IDgpIHwgZGF0YVsxOF0pKTsK
KwkKKwkvLyBDcmVhdGVzIE9mZnNldCB3aGVuIGZpcnN0IHN0YXJ0aW5nCisJLyogQ0hFQ0tNRTog
d2hvIGNvZGVkIHRoaXM/IEZyYW56PyBQbGVhc2UgY2xhcmlmeToKKwkJMSkgaXMgdGhpcyBuZWNl
c3NhcnkgZm9yIGpveXN0aWNrIG9wZXJhdGlvbj8KKwkJMikgb2Zmc2V0X2NvdW50ZXIgd2FzIG9u
bHkgZGVmaW5lZCB3aGVuIE1PVVNFCisJCSAgIHN1cHBvcnQgd2FzIGNvbmZpZ3VyZWQgKGhhcyBi
ZWVuIEZJWEVELCBzZWUgYWJvdmUpICovCisJaWYgKHhwYWQtPm9mZnNldHNldF9jb21wZW5zYXRp
b24+MCkgeworCQkKKwkJaWYgKHhwYWQtPm9mZnNldHNldF9jb21wZW5zYXRpb24gPT0gWFBBRF9P
RkZTRVRfQ09VTlRFUikgeworCQkJeHBhZC0+bGVmdF9vZmZzZXRfeCAgPSBsZWZ0X2pveV94Owor
CQkJeHBhZC0+bGVmdF9vZmZzZXRfeSAgPSBsZWZ0X2pveV95OworCQkJeHBhZC0+cmlnaHRfb2Zm
c2V0X3ggPSByaWdodF9qb3lfeDsKKwkJCXhwYWQtPnJpZ2h0X29mZnNldF95ID0gcmlnaHRfam95
X3k7ICAKKwkJfSBlbHNlIHsKKwkJCXhwYWQtPmxlZnRfb2Zmc2V0X3ggICs9IGxlZnRfam95X3g7
CisJCQl4cGFkLT5sZWZ0X29mZnNldF95ICArPSBsZWZ0X2pveV95OworCQkJeHBhZC0+cmlnaHRf
b2Zmc2V0X3ggKz0gcmlnaHRfam95X3g7CisJCQl4cGFkLT5yaWdodF9vZmZzZXRfeSArPSByaWdo
dF9qb3lfeTsgIAorCQl9CisJCQorCQlpZiAoeHBhZC0+b2Zmc2V0c2V0X2NvbXBlbnNhdGlvbiA9
PSAxKSB7CisJCQl4cGFkLT5sZWZ0X29mZnNldF94ICA9IHhwYWQtPmxlZnRfb2Zmc2V0X3ggIC8g
WFBBRF9PRkZTRVRfQ09VTlRFUjsKKwkJCXhwYWQtPmxlZnRfb2Zmc2V0X3kgID0geHBhZC0+bGVm
dF9vZmZzZXRfeSAgLyBYUEFEX09GRlNFVF9DT1VOVEVSOworCQkJeHBhZC0+cmlnaHRfb2Zmc2V0
X3ggPSB4cGFkLT5yaWdodF9vZmZzZXRfeCAvIFhQQURfT0ZGU0VUX0NPVU5URVI7CisJCQl4cGFk
LT5yaWdodF9vZmZzZXRfeSA9IHhwYWQtPnJpZ2h0X29mZnNldF95IC8gWFBBRF9PRkZTRVRfQ09V
TlRFUjsgIAorCQl9CisJCQorCQl4cGFkLT5vZmZzZXRzZXRfY29tcGVuc2F0aW9uLS07CisJfQor
CQorCWxlZnRfam95X3ggLT0geHBhZC0+bGVmdF9vZmZzZXRfeDsKKwlsZWZ0X2pveV95IC09IHhw
YWQtPmxlZnRfb2Zmc2V0X3k7CisJCisJcmlnaHRfam95X3ggLT0geHBhZC0+cmlnaHRfb2Zmc2V0
X3g7CisJcmlnaHRfam95X3kgLT0geHBhZC0+cmlnaHRfb2Zmc2V0X3k7CisJCisJaWYgKGRhdGFb
MTFdPDB4MTApIHsKKwkJLy8gTm9ybWFsIFNwZWVkIE1vZGUKKwkJeHBhZC0+cmVsX3ggPSAgKHhw
YWRfbW91c2VfcmVtb3ZlZGVhZHpvbmUobGVmdF9qb3lfeCwweDE1MDAsSk9ZX0RlYWRab25lX2Zh
c3QpKTsKKwkJeHBhZC0+cmVsX3kgPSAtKHhwYWRfbW91c2VfcmVtb3ZlZGVhZHpvbmUobGVmdF9q
b3lfeSwweDE1MDAsSk9ZX0RlYWRab25lX2Zhc3QpKTsKKwkJeHlzcGVlZCA9IDI7CisJCS8vcHJp
bnRrKCIlZDoiLHhwYWQtPnJlbF95KTsKKwl9IGVsc2UgeworCQkvLyBVbHRyYSBTbG93IE1vZGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCXhwYWQt
PnJlbF94ID0gICh4cGFkX21vdXNlX3JlbW92ZWRlYWR6b25lKGxlZnRfam95X3gsMHgzNTAwLEpP
WV9EZWFkWm9uZV9zbG93KSk7CisJCXhwYWQtPnJlbF95ID0gLSh4cGFkX21vdXNlX3JlbW92ZWRl
YWR6b25lKGxlZnRfam95X3ksMHgzNTAwLEpPWV9EZWFkWm9uZV9zbG93KSk7ICAgIAorCQl4eXNw
ZWVkID0gMTsKKwl9CisJCisJLy8gWC1ZIFN0ZWVyaW5nCisJc2lnbmxlZGlyZWN0aW9uPTE7CisJ
aWYgKHNpZ25sZWRpcmVjdGlvbiYoKGRhdGFbMl0gJiAweDA0KSE9MCkpIHsgc2lnbmxlZGlyZWN0
aW9uPTA7IHhwYWQtPnJlbF94IC09eHlzcGVlZDsgfQorCWlmIChzaWdubGVkaXJlY3Rpb24mKChk
YXRhWzJdICYgMHgwOCkhPTApKSB7IHNpZ25sZWRpcmVjdGlvbj0wOyB4cGFkLT5yZWxfeCArPXh5
c3BlZWQ7IH0KKwlpZiAoc2lnbmxlZGlyZWN0aW9uJigoZGF0YVsyXSAmIDB4MDIpIT0wKSkgeyBz
aWdubGVkaXJlY3Rpb249MDsgeHBhZC0+cmVsX3kgKz14eXNwZWVkOyB9CisJaWYgKHNpZ25sZWRp
cmVjdGlvbiYoKGRhdGFbMl0gJiAweDAxKSE9MCkpIHsgc2lnbmxlZGlyZWN0aW9uPTA7IHhwYWQt
PnJlbF95IC09eHlzcGVlZDsgfQorICAJCisJLyogd2hlZWwgaGFuZGxpbmcgKi8KKwkvL2pveV95
MiA9IHhwYWRfbW91c2VfcmVtb3ZlZGVhZHpvbmUoam95X3kyKTsKKwkvL3hwYWQtPnJlbF93aGVl
bCA9IChqb3lfeTI+MCk/MTooam95X3kyPDApPy0xOjA7CisJeHBhZC0+cmVsX3doZWVsPTA7CisJ
CisJaWYgKGRhdGFbMTBdPT0weEZGKSBNb3VzZUxlZnQ9MTsgZWxzZSBNb3VzZUxlZnQgPTA7CisJ
aWYgKChNb3VzZUxlZnQ9PTApJihkYXRhWzddIT0wKSkgTW91c2VMZWZ0ID0xOworCWlmICgoTW91
c2VMZWZ0PT0wKSYoZGF0YVs0XSE9MCkpIE1vdXNlTGVmdCA9IDE7CisJaWYgKChNb3VzZUxlZnQ9
PTApJigoZGF0YVsyXSA+PiA3KSE9MCkpIE1vdXNlTGVmdCA9IDE7CisJaWYgKChNb3VzZUxlZnQ9
PTApJigoKGRhdGFbMl0gJiAweDQwKSA+PiA2KSE9MCkpIE1vdXNlTGVmdCA9IDE7CisJCisJaWYg
KGRhdGFbNV0hPTApIE1vdXNlUmlnaHQ9MTsgZWxzZSBNb3VzZVJpZ2h0PTA7CisJaWYgKGRhdGFb
Nl0hPTApIE1vdXNlTWlkZGxlID0xOyBlbHNlIE1vdXNlTWlkZGxlPTA7CisJCisJLy8gR2VuZXJh
dGluZyBNb3VzZSBFbXVsYXRpb24gRXZlbnRzICAoQnV0dG9uIEV2ZW50cykKKwlpbnB1dF9yZXBv
cnRfa2V5KGRldl9tb3VzZSwgQlROX0xFRlQsIE1vdXNlTGVmdCk7CisJaW5wdXRfcmVwb3J0X2tl
eShkZXZfbW91c2UsIEJUTl9SSUdIVCwgTW91c2VSaWdodCk7CisJaW5wdXRfcmVwb3J0X2tleShk
ZXZfbW91c2UsIEJUTl9NSURETEUsIE1vdXNlTWlkZGxlKTsKKwkKKwlpbnB1dF9zeW5jKGRldl9t
b3VzZSk7Cit9CisKKy8qKgorICoJeHBhZF90aW1lcgorICoKKyAqCVJlcG9ydHMgdGhlIG1vdXNl
IGV2ZW50cyBpbiB0aGUgaW50ZXJ2YWwgZ2l2ZW4gaW4geHBhZF9vcGVuLgorICoKKyAqCVRha2Vu
IGZyb20gT2xpdmVyIFNjaHdhcnR6JyB4cGFkLW1vdXNlIGRyaXZlciB0byBhdm9pZCBzdHJhbmdl
IG1vdXNlCisgKgkgYmVoYXZpb3VyIGVuY291bnRlcmVkIHdoZW4gdGhlIGlucHV0IGV2ZW50cyB3
aGVyZSBzZW5kIGRpcmVjdGx5CisgKgkgaW4geHBhZF9wcm9jZXNzX3BhY2tldC4KKyAqLworc3Rh
dGljIHZvaWQgeHBhZF90aW1lcih1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJc3RydWN0IHVzYl94
cGFkICp4cGFkID0gKHN0cnVjdCB1c2JfeHBhZCAqKWRhdGE7CisKKwlpZiAoeHBhZC0+bW91c2Vf
ZW5hYmxlZCkgeworCQlpbnB1dF9yZXBvcnRfcmVsKCZ4cGFkLT5kZXZfbW91c2UsIFJFTF9YLCB4
cGFkLT5yZWxfeCk7CisJCWlucHV0X3JlcG9ydF9yZWwoJnhwYWQtPmRldl9tb3VzZSwgUkVMX1ks
IHhwYWQtPnJlbF95KTsgCisJCQorCQlpbnB1dF9zeW5jKCZ4cGFkLT5kZXZfbW91c2UpOworCQor
CQkvKmlmICh4cGFkLT5yZWxfd2hlZWx0aW1lciA9PSAwKSB7CisJCQlpbnB1dF9yZXBvcnRfcmVs
KCZ4cGFkLT5kZXZfbW91c2UsIFJFTF9XSEVFTCwgeHBhZC0+cmVsX3doZWVsKTsKKwkJCXhwYWQt
PnJlbF93aGVlbHRpbWVyID0gWFBBRF9XSEVFTEJSQUtFOworCQl9IGVsc2UKKwkJCXhwYWQtPnJl
bF93aGVlbHRpbWVyLS07Ki8KKwl9CisJCisJLy8gcmVzY2hlZHVsZSB0aGUgdGltZXIgc28gdGhh
dCBpdCBmaXJlcyBjb250aW51YWxseQorCWFkZF90aW1lcigmeHBhZC0+dGltZXIpOworfQorCitz
dGF0aWMgaW50IHhwYWRfbW91c2Vfb3BlbihzdHJ1Y3QgaW5wdXRfZGV2ICpkZXYpCit7CisJc3Ry
dWN0IHVzYl94cGFkICp4cGFkID0gZGV2LT5wcml2YXRlOworCWludCBzdGF0dXM7CisJCisJaWYg
KHhwYWQtPm1vdXNlX29wZW5fY291bnQpCisJCXJldHVybiAwOworCQorCWlmICgoc3RhdHVzID0g
eHBhZF9zdGFydF91cmIoeHBhZCkpKQorCQlyZXR1cm4gc3RhdHVzOworCQkKKwkrK3hwYWQtPm1v
dXNlX29wZW5fY291bnQ7CisJCisJaW5mbygib3BlbmluZyBtb3VzZSBkZXZpY2UiKTsKKworCS8v
IHNldCB1cCB0aW1lciBmb3IgbW91c2UgZXZlbnQgZ2VuZXJhdGlvbgorCWluaXRfdGltZXIoJnhw
YWQtPnRpbWVyKTsKKwl4cGFkLT50aW1lci5leHBpcmVzID0gMSpIWi81OyAvKiBldmVyeSAyMDAg
bXMgKi8KKwl4cGFkLT50aW1lci5kYXRhID0gKHVuc2lnbmVkIGxvbmcpeHBhZDsKKwl4cGFkLT50
aW1lci5mdW5jdGlvbiA9IHhwYWRfdGltZXI7CisJLy8gbm93IHN0YXJ0IHRoZSB0aW1lcgorCWFk
ZF90aW1lcigmeHBhZC0+dGltZXIpOworCQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB4
cGFkX21vdXNlX2Nsb3NlKHN0cnVjdCBpbnB1dF9kZXYgKmRldikKK3sKKwlzdHJ1Y3QgdXNiX3hw
YWQgKnhwYWQgPSBkZXYtPnByaXZhdGU7CisJCisJaWYgKC0teHBhZC0+bW91c2Vfb3Blbl9jb3Vu
dCkKKwkJcmV0dXJuOworCQkKKwl4cGFkX3N0b3BfdXJiKHhwYWQpOworCQorCWluZm8oImNsb3Np
bmcgbW91c2UgZGV2aWNlIik7IAorCWRlbF90aW1lcigmeHBhZC0+dGltZXIpOworfQorCitpbnQg
eHBhZF9tb3VzZV9pbml0X2lucHV0X2RldmljZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Ziwg
c3RydWN0IHhwYWRfZGV2aWNlIGRldmljZSkKK3sKKwlzdHJ1Y3QgdXNiX3hwYWQgKnhwYWQgPSB1
c2JfZ2V0X2ludGZkYXRhKGludGYpOworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJm
YWNlX3RvX3VzYmRldihpbnRmKTsKKworCS8qIHRoZSBtb3VzZSBkZXZpY2Ugc3RydWN0IGZvciB0
aGUga2VybmVsIChtb3VzZSBlbXVsYXRpb24pICovCisJeHBhZC0+ZGV2X21vdXNlLmlkLmJ1c3R5
cGUgPSBCVVNfVVNCOworCXhwYWQtPmRldl9tb3VzZS5pZC52ZW5kb3IgPSB1ZGV2LT5kZXNjcmlw
dG9yLmlkVmVuZG9yOworCXhwYWQtPmRldl9tb3VzZS5pZC5wcm9kdWN0ID0gdWRldi0+ZGVzY3Jp
cHRvci5pZFByb2R1Y3Q7CisJeHBhZC0+ZGV2X21vdXNlLmlkLnZlcnNpb24gPSB1ZGV2LT5kZXNj
cmlwdG9yLmJjZERldmljZTsKKwl4cGFkLT5kZXZfbW91c2UuZGV2ID0gJmludGYtPmRldjsKKwl4
cGFkLT5kZXZfbW91c2UucHJpdmF0ZSA9IHhwYWQ7CisJeHBhZC0+ZGV2X21vdXNlLm5hbWUgPSBk
ZXZpY2UubmFtZTsKKwl4cGFkLT5kZXZfbW91c2UucGh5cyA9IHhwYWQtPnBoeXM7CisJeHBhZC0+
ZGV2X21vdXNlLm9wZW4gPSB4cGFkX21vdXNlX29wZW47CisJeHBhZC0+ZGV2X21vdXNlLmNsb3Nl
ID0geHBhZF9tb3VzZV9jbG9zZTsKKwl4cGFkLT5vZmZzZXRzZXRfY29tcGVuc2F0aW9uID0gWFBB
RF9PRkZTRVRfQ09VTlRFUjsgLy8gRmluZCBuZXcgb2Zmc2V0IHBvaW50CisJeHBhZC0+bW91c2Vf
ZW5hYmxlZCA9IG1vdXNlX29uX2xvYWQ7CisJCisJLyogbW91c2Ugc2V0dXAgKi8KKwl4cGFkLT5k
ZXZfbW91c2UuZXZiaXRbMF0gPSBCSVQoRVZfS0VZKSB8IEJJVChFVl9SRUwpOworCisJc2V0X2Jp
dChSRUxfWCwgICAgIHhwYWQtPmRldl9tb3VzZS5yZWxiaXQpOworCXNldF9iaXQoUkVMX1ksICAg
ICB4cGFkLT5kZXZfbW91c2UucmVsYml0KTsKKwlzZXRfYml0KFJFTF9XSEVFTCwgeHBhZC0+ZGV2
X21vdXNlLnJlbGJpdCk7CisKKwlzZXRfYml0KEJUTl9MRUZULCAgIHhwYWQtPmRldl9tb3VzZS5r
ZXliaXQpOworCXNldF9iaXQoQlROX1JJR0hULCAgeHBhZC0+ZGV2X21vdXNlLmtleWJpdCk7CisJ
c2V0X2JpdChCVE5fTUlERExFLCB4cGFkLT5kZXZfbW91c2Uua2V5Yml0KTsKKwlzZXRfYml0KEJU
Tl9TSURFLCAgIHhwYWQtPmRldl9tb3VzZS5rZXliaXQpOworCXNldF9iaXQoQlROX0VYVFJBLCAg
eHBhZC0+ZGV2X21vdXNlLmtleWJpdCk7CisJCisJaW5wdXRfcmVnaXN0ZXJfZGV2aWNlKCZ4cGFk
LT5kZXZfbW91c2UpOworCXByaW50ayhLRVJOX0lORk8gImlucHV0OiBtb3VzZSBlbXVsYXRpb24g
JXNAICVzXG4iLAorCSAgICAgICAobW91c2Vfb25fbG9hZCA/ICIiIDogIihkaXNhYmxlZCkgIiks
IHhwYWQtPmRldl9tb3VzZS5uYW1lKTsKK30KKwordm9pZCB4cGFkX21vdXNlX2NsZWFudXAoc3Ry
dWN0IHVzYl94cGFkICp4cGFkKQoreworCS8vIHRoZSB0aW1lciBleGlzdHMgb25seSB3aGVuIHRo
ZSBtb3VzZSBkZXZpY2UgaXMgdXNlZAorCWlmICh4cGFkLT5tb3VzZV9vcGVuX2NvdW50KQorCQlk
ZWxfdGltZXIoJnhwYWQtPnRpbWVyKTsKKwlpbnB1dF91bnJlZ2lzdGVyX2RldmljZSgmeHBhZC0+
ZGV2X21vdXNlKTsKK30KZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy91c2IvaW5w
dXQveHBhZC5oIGxpbnV4LTIuNi41L2RyaXZlcnMvdXNiL2lucHV0L3hwYWQuaAotLS0gbGludXgt
Mi42LjUub3JpZy9kcml2ZXJzL3VzYi9pbnB1dC94cGFkLmgJMTk3MC0wMS0wMSAwMTowMDowMC4w
MDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2RyaXZlcnMvdXNiL2lucHV0L3hwYWQuaAky
MDA0LTA1LTAxIDE1OjIwOjQzLjAwMDAwMDAwMCArMDEwMApAQCAtMCwwICsxLDE2NyBAQAorLyoK
KyAqIFhib3ggQ29udHJvbGxlciBkcml2ZXIgZm9yIExpbnV4IC0gdjAuMS40CisgKgorICoJaGVh
ZGVyIGZpbGUgY29udGFpbmluZyBpb2N0bCBkZWZpbml0aW9ucworICoKKyAqIENvcHlyaWdodCAo
YykgIDIwMDMgIE1hcmtvIEZyaWVkZW1hbm4gPG1mckBibXgtY2hlbW5pdHouZGU+CisgKgorICoK
KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj
ZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKyAKKyNpZm5kZWYg
X19YUEFEX2gKKyNkZWZpbmUgX19YUEFEX2gKKworCisvKioqKioqKioqKiogaW9jdGwgc3R1ZmYs
IGNhbiBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIGRyaXZlciAqKioqKioqKioqKi8KKyNkZWZpbmUg
VVNCX1hQQURfSU9DX01BR0lDIAkneCcKKworI2RlZmluZSBVU0JfWFBBRF9JT0NSRVNFVCAJX0lP
KCAgVVNCX1hQQURfSU9DX01BR0lDLCAwICkKKyNkZWZpbmUgVVNCX1hQQURfSU9DU01PVVNFIAlf
SU9XKCBVU0JfWFBBRF9JT0NfTUFHSUMsIDEsIGludCApCisjZGVmaW5lIFVTQl9YUEFEX0lPQ0dN
T1VTRSAJX0lPUiggVVNCX1hQQURfSU9DX01BR0lDLCAyLCBpbnQgKQorI2RlZmluZSBVU0JfWFBB
RF9JT0NTUlVNQkxFIAlfSU9XKCBVU0JfWFBBRF9JT0NfTUFHSUMsIDMsIGludCApCisjZGVmaW5l
IFVTQl9YUEFEX0lPQ0dSVU1CTEUgCV9JT1IoIFVTQl9YUEFEX0lPQ19NQUdJQywgNCwgaW50ICkK
KworI2RlZmluZSBVU0JfWFBBRF9JT0NTSVIgCV9JT1coIFVTQl9YUEFEX0lPQ19NQUdJQywgNSwg
aW50ICkKKyNkZWZpbmUgVVNCX1hQQURfSU9DR0lSIAlfSU9SKCBVU0JfWFBBRF9JT0NfTUFHSUMs
IDYsIGludCApCisKKyNkZWZpbmUgVVNCX1hQQURfSU9DX01BWE5SIAk2CisKKworLyoqKioqKioq
KioqKioqKioqKioqKioqKiogZHJpdmVyIGludGVybmFscyAqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCisjaWZkZWYgX19LRVJORUxfXworCisjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KKyNp
bmNsdWRlIDxsaW51eC9jaXJjX2J1Zi5oPgorCisvKioqKioqKioqKioqKioqKioqIGRyaXZlciBk
ZXNjcmlwdGlvbiBhbmQgdmVyc2lvbiAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgRFJJ
VkVSX1ZFUlNJT04JCSJ2MC4xLjQiCisjZGVmaW5lIERSSVZFUl9BVVRIT1IJCSJNYXJrbyBGcmll
ZGVtYW5uIDxtZnJAYm14LWNoZW1uaXR6LmRlPixcCisgT2xpdmVyIFNjaHdhcnR6IDxPbGl2ZXIu
U2Nod2FydHpAZ214LmRlPiwgR2VvcmcgTHVrYXMgPGdlb3JnQG9wLWNvLmRlPiIKKworI2lmZGVm
IENPTkZJR19VU0JfWFBBRF9NT1VTRQorI2RlZmluZSBEUklWRVJfREVTQwkJImRyaXZlciBmb3Ig
WGJveCBjb250cm9sbGVycyB3aXRoIG1vdXNlIGVtdWxhdGlvbiIKKyNlbHNlCisjZGVmaW5lIERS
SVZFUl9ERVNDCQkiZHJpdmVyIGZvciBYYm94IGNvbnRyb2xsZXJzIgorI2VuZGlmCisKKy8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKiogY29uc3RhbnRzICoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqLworI2RlZmluZSBYUEFEX01BWF9ERVZJQ0VTCTQKKyNkZWZpbmUgWFBBRF9QS1Rf
TEVOCQkzMgkvKiBpbnB1dCBwYWNrZXQgc2l6ZSAqLworI2RlZmluZSBYUEFEX1BLVF9MRU5fRkYJ
CTYJLyogb3V0cHV0IHBhY2tldCBzaXplIC0gcnVtYmxlICovCisKKyNkZWZpbmUgWFBBRF9UWF9C
VUZTSVpFCQlYUEFEX1BLVF9MRU5fRkYgKiA4CS8qIG1heC4gOCByZXF1ZXN0cyAqLworCisvKioq
KioqKioqKioqKioqKioqKioqKioqKiB0aGUgZGV2aWNlIHN0cnVjdCAqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KK3N0cnVjdCB1c2JfeHBhZCB7CisJc3RydWN0IGlucHV0X2RldiBkZXY7CQkJ
LyogaW5wdXQgZGV2aWNlIGludGVyZmFjZSAqLworCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2OwkJ
LyogdXNiIGRldmljZSAqLworCQorCXN0cnVjdCB1cmIgKmlycV9pbjsJCQkvKiB1cmIgZm9yIGlu
dC4gaW4gcmVwb3J0ICovCisJdW5zaWduZWQgY2hhciAqaWRhdGE7CQkJLyogaW5wdXQgZGF0YSAq
LworCWRtYV9hZGRyX3QgaWRhdGFfZG1hOworCQorCWNoYXIgcGh5c1s2NV07CQkJCS8qIHBoeXNp
Y2FsIGlucHV0IGRldiBwYXRoICovCisJCisJaW50IG9wZW5fY291bnQ7CQkJCS8qIHJlZmVyZW5j
ZSBjb3VudCAqLworCisJdW5zaWduZWQgY2hhciBvZmZzZXRzZXRfY29tcGVuc2F0aW9uOworCWlu
dCBsZWZ0X29mZnNldF94OworCWludCBsZWZ0X29mZnNldF95OworCWludCByaWdodF9vZmZzZXRf
eDsKKwlpbnQgcmlnaHRfb2Zmc2V0X3k7CisJCisJaW50IGlzTWF0OwkJCQkvKiBpcyB0aGlzIGEg
ZGFuY2VwYWQvbWF0PyAqLworCQorI2lmZGVmIENPTkZJR19VU0JfWFBBRF9SVU1CTEUKKwlpbnQg
cnVtYmxlX2VuYWJsZWQ7CQkJLyogaW9jdGwgY2FuIHRvZ2dsZSBydW1ibGUgKi8KKwkKKwlpbnQg
ZXBfb3V0X2FkcjsJCQkJLyogbnVtYmVyIG9mIG91dCBlbmRwb2ludCAqLworCXVuc2lnbmVkIGNo
YXIgdHhfZGF0YVtYUEFEX1BLVF9MRU5fRkZdOwkvKiBvdXRwdXQgZGF0YSAocnVtYmxlKSAqLwor
CWludCBzdHJvbmdfcnVtYmxlLCBwbGF5X3N0cm9uZzsJCS8qIHN0cm9uZyBydW1ibGluZyAqLwor
CWludCB3ZWFrX3J1bWJsZSwgcGxheV93ZWFrOwkJLyogd2VhayBydW1ibGluZyAqLworCXN0cnVj
dCB0aW1lcl9saXN0IHJ1bWJsZV90aW1lcjsJCS8qIHRpbWVkIHVyYiBvdXQgcmV0cnkgKi8KKwl3
YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwkJCS8qIHdhaXQgZm9yIFVSQnMgb24gcXVldWUgKi8KKwkK
KwlzcGlubG9ja190IHR4X2xvY2s7CisJc3RydWN0IGNpcmNfYnVmIHR4OworCXVuc2lnbmVkIGNo
YXIgdHhfYnVmW1hQQURfVFhfQlVGU0laRV07CisJbG9uZyB0eF9mbGFnc1sxXTsJCQkvKiB0cmFu
c21pdCBmbGFncyAqLworI2VuZGlmCisJCisjaWZkZWYgQ09ORklHX1VTQl9YUEFEX01PVVNFCisJ
c3RydWN0IGlucHV0X2RldiBkZXZfbW91c2U7CQkvKiBtb3VzZSBkZXZpY2UgaW50ZXJmYWNlICov
CisJaW50IG1vdXNlX29wZW5fY291bnQ7CQkJLyogcmVmZXJlbmNlIGNvdW50ICovCisJaW50IG1v
dXNlX2VuYWJsZWQ7CQkJLyogaW9jdGwgY2FuIHRvZ2dsZSBydW1ibGUgKi8KKwkKKwlpbnQgcmVs
X3g7CisJaW50IHJlbF95OworCWludCByZWxfd2hlZWw7CisJaW50IHJlbF93aGVlbHRpbWVyOwor
CXN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOwkJLyogdGltZWQgbW91c2UgaW5wdXQgZXZlbnRzICov
CisjZW5kaWYKK307CisKKy8qIGZvciB0aGUgbGlzdCBvZiBrbm93IGRldmljZXMgKi8KK3N0cnVj
dCB4cGFkX2RldmljZSB7CisJdTE2IGlkVmVuZG9yOworCXUxNiBpZFByb2R1Y3Q7CisJdTggIGlz
TWF0OworCWNoYXIgKm5hbWU7Cit9OworCisjaWZkZWYgX19VU0JfWFBBRF9NT1VTRQorIGV4dGVy
biBpbnQgeHBhZF9zdGFydF91cmIoc3RydWN0IHVzYl94cGFkICp4cGFkKTsKKyBleHRlcm4gdm9p
ZCB4cGFkX3N0b3BfdXJiKHN0cnVjdCB1c2JfeHBhZCAqeHBhZCk7CisjZW5kaWYKKworLyoqKioq
KioqKioqKioqKioqKioqKioqKiBtb3VzZSBmdW5jdGlvbiBzdHVicyAqKioqKioqKioqKioqKioq
KioqKioqKiovCisjaWZuZGVmIENPTkZJR19VU0JfWFBBRF9NT1VTRQorICNkZWZpbmUgbW91c2Vf
b3Blbl9jb3VudCBvcGVuX2NvdW50CisgI2RlZmluZSB4cGFkX21vdXNlX3Byb2Nlc3NfcGFja2V0
KHhwYWQsIGNtZCwgZGF0YSkge30KKyAjZGVmaW5lIHhwYWRfbW91c2VfaW5pdF9pbnB1dF9kZXZp
Y2UoaW50ZiwgZGV2aWNlKSB7fQorICNkZWZpbmUgeHBhZF9tb3VzZV9jbGVhbnVwKHhwYWQpIHt9
CisjZWxzZSAvKiBDT05GSUdfVVNCX1hQQURfTU9VU0UgKi8KKyAjaWZuZGVmIF9fVVNCX1hQQURf
TU9VU0UKKyAgZXh0ZXJuIHZvaWQgeHBhZF9tb3VzZV9wcm9jZXNzX3BhY2tldChzdHJ1Y3QgdXNi
X3hwYWQgKnhwYWQsIHUxNiBjbWQsIHVuc2lnbmVkIGNoYXIgKmRhdGEpOworICBleHRlcm4gdm9p
ZCB4cGFkX21vdXNlX2luaXRfaW5wdXRfZGV2aWNlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRm
LCBzdHJ1Y3QgeHBhZF9kZXZpY2UgZGV2aWNlKTsKKyAgZXh0ZXJuIHZvaWQgeHBhZF9tb3VzZV9j
bGVhbnVwKHN0cnVjdCB1c2JfeHBhZCAqeHBhZCk7CisgI2VuZGlmIC8qIF9fVVNCX1hQQURfTU9V
U0UgKi8KKyNlbmRpZiAvKiBDT05GSUdfVVNCX1hQQURfTU9VU0UgKi8KKworLyoqKioqKioqKioq
KioqKioqKioqKioqKiBydW1ibGUgZnVuY3Rpb24gc3R1YnMgKioqKioqKioqKioqKioqKioqKioq
KiovCisjaWZuZGVmIENPTkZJR19VU0JfWFBBRF9SVU1CTEUKKyAjZGVmaW5lIHhwYWRfcnVtYmxl
X2lvY3RsKGRldiwgY21kLCBhcmcpIC1FTk9UVFkKKyAjZGVmaW5lIHhwYWRfcnVtYmxlX29wZW4o
eHBhZCkge30KKyAjZGVmaW5lIHhwYWRfcnVtYmxlX3Byb2JlKHVkZXYsIHhwYWQsIGlmbnVtKSAw
CisgI2RlZmluZSB4cGFkX3J1bWJsZV9jbG9zZSh4cGFkKSB7fQorICNkZWZpbmUgeHBhZF9ydW1i
bGVfZGlzY29ubmVjdCh4cGFkKSB7fQorI2Vsc2UgLyogQ09ORklHX1VTQl9YUEFEX1JVTUJMRSAq
LworCisgI2RlZmluZSBYUEFEX1RYX1JVTk5JTkcJMAorICNkZWZpbmUgWFBBRF9UWF9JTkModmFy
LCBuKQkodmFyKSArPSBuOyAodmFyKSAlPSBYUEFEX1RYX0JVRlNJWkUKKworICNpZm5kZWYgX19V
U0JfWFBBRF9SVU1CTEUKKyAgZXh0ZXJuIGludCAgeHBhZF9ydW1ibGVfaW9jdGwoc3RydWN0IGlu
cHV0X2RldiAqZGV2LCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CisgIGV4
dGVybiB2b2lkIHhwYWRfcnVtYmxlX29wZW4oc3RydWN0IHVzYl94cGFkICp4cGFkKTsKKyAgZXh0
ZXJuIGludCAgeHBhZF9ydW1ibGVfcHJvYmUoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsIHN0cnVj
dCB1c2JfeHBhZCAqeHBhZCwgdW5zaWduZWQgaW50IGlmbnVtKTsKKyAgZXh0ZXJuIHZvaWQgeHBh
ZF9ydW1ibGVfY2xvc2Uoc3RydWN0IHVzYl94cGFkICp4cGFkKTsKKyAgZXh0ZXJuIHZvaWQgeHBh
ZF9ydW1ibGVfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX3hwYWQgKnhwYWQpOworICNlbmRpZiAvKiBf
X1VTQl9YUEFEX1JVTUJMRSAqLworI2VuZGlmIC8qIENPTkZJR19VU0JfWFBBRF9SVU1CTEUgKi8K
KworI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KKworI2VuZGlmIC8qIF9fWFBBRF9oICovCmRpZmYg
LXVyTiBsaW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvdmlkZW8vS2NvbmZpZyBsaW51eC0yLjYuNS9k
cml2ZXJzL3ZpZGVvL0tjb25maWcKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy92aWRlby9L
Y29uZmlnCTIwMDQtMDQtMDQgMDQ6MzY6MTUuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYu
NS9kcml2ZXJzL3ZpZGVvL0tjb25maWcJMjAwNC0wNS0wMSAxNToyMDo0My4xNDk5NzgzOTIgKzAx
MDAKQEAgLTQwNSw2ICs0MDUsMTYgQEAKIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBt
b2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZQogCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHJpdmFm
Yi4KIAorY29uZmlnIEZCX1hCT1gKKwl0cmlzdGF0ZSAiblZpZGlhIFhib3ggc3VwcG9ydCIKKwlk
ZXBlbmRzIG9uIEZCICYmIFBDSSAmJiBJMkNfWEJPWCAmJiBFWFBFUklNRU5UQUwKKwloZWxwCisJ
ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgZ3JhcGhpY3MgY2hpcCBvZiB0aGUgTWljcm9zb2Z0
IFhib3guIAorCSAgU2F5IFkgaWYgeW91IGhhdmUgYW4gWGJveCwgTiBvdGhlcndpc2UKKworCSAg
VG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisJ
ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgeGJveGZiLgorCiBjb25maWcgRkJfSTgxMAogCXRyaXN0
YXRlICJJbnRlbCA4MTAvODE1IHN1cHBvcnQgKEVYUEVSSU1FTlRBTCkiCiAJZGVwZW5kcyBvbiBG
QiAmJiBBR1AgJiYgQUdQX0lOVEVMICYmIEVYUEVSSU1FTlRBTCAmJiBQQ0kJCmRpZmYgLXVyTiBs
aW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvdmlkZW8vTWFrZWZpbGUgbGludXgtMi42LjUvZHJpdmVy
cy92aWRlby9NYWtlZmlsZQotLS0gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL3ZpZGVvL01ha2Vm
aWxlCTIwMDQtMDQtMDQgMDQ6MzY6MTguMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9k
cml2ZXJzL3ZpZGVvL01ha2VmaWxlCTIwMDQtMDUtMDEgMTU6MjA6NDMuMTU5OTc2ODcyICswMTAw
CkBAIC01Niw2ICs1Niw3IEBACiAKIG9iai0kKENPTkZJR19GQl9NQVRST1gpCQkgICs9IG1hdHJv
eC8gY2ZiZmlsbHJlY3QubyBjZmJjb3B5YXJlYS5vIGNmYmltZ2JsdC5vCiBvYmotJChDT05GSUdf
RkJfUklWQSkJCSAgKz0gcml2YS8gY2ZiaW1nYmx0Lm8gdmdhc3RhdGUubyAKK29iai0kKENPTkZJ
R19GQl9YQk9YKQkJICArPSB4Ym94LyBjZmJpbWdibHQubyB2Z2FzdGF0ZS5vIAogb2JqLSQoQ09O
RklHX0ZCX1NJUykJCSAgKz0gc2lzLyBjZmJjb3B5YXJlYS5vIGNmYmZpbGxyZWN0Lm8gY2ZiaW1n
Ymx0Lm8KIG9iai0kKENPTkZJR19GQl9BVFkpCQkgICs9IGF0eS8gY2ZiY29weWFyZWEubyBjZmJm
aWxscmVjdC5vIGNmYmltZ2JsdC5vCiBvYmotJChDT05GSUdfRkJfQVRZMTI4KQkJICArPSBhdHkv
IGNmYmNvcHlhcmVhLm8gY2ZiZmlsbHJlY3QubyBjZmJpbWdibHQubwpkaWZmIC11ck4gbGludXgt
Mi42LjUub3JpZy9kcml2ZXJzL3ZpZGVvL2ZibWVtLmMgbGludXgtMi42LjUvZHJpdmVycy92aWRl
by9mYm1lbS5jCi0tLSBsaW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvdmlkZW8vZmJtZW0uYwkyMDA0
LTA0LTA0IDA0OjM2OjEwLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUvZHJpdmVycy92
aWRlby9mYm1lbS5jCTIwMDQtMDUtMDEgMTU6MjA6NDMuMTgxOTczNTI4ICswMTAwCkBAIC0xMjAs
NiArMTIwLDggQEAKIGV4dGVybiBpbnQgc2dpdndmYl9zZXR1cChjaGFyKik7CiBleHRlcm4gaW50
IHJpdmFmYl9pbml0KHZvaWQpOwogZXh0ZXJuIGludCByaXZhZmJfc2V0dXAoY2hhciopOworZXh0
ZXJuIGludCB4Ym94ZmJfaW5pdCh2b2lkKTsKK2V4dGVybiBpbnQgeGJveGZiX3NldHVwKGNoYXIq
KTsKIGV4dGVybiBpbnQgdGRmeGZiX2luaXQodm9pZCk7CiBleHRlcm4gaW50IHRkZnhmYl9zZXR1
cChjaGFyKik7CiBleHRlcm4gaW50IHRyaWRlbnRmYl9pbml0KHZvaWQpOwpAQCAtMjE1LDYgKzIx
Nyw5IEBACiAjaWZkZWYgQ09ORklHX0ZCX1JJVkEKIAl7ICJyaXZhZmIiLCByaXZhZmJfaW5pdCwg
cml2YWZiX3NldHVwIH0sCiAjZW5kaWYKKyNpZmRlZiBDT05GSUdfRkJfWEJPWAorCXsgInhib3hm
YiIsIHhib3hmYl9pbml0LCB4Ym94ZmJfc2V0dXAgfSwKKyNlbmRpZgogI2lmZGVmIENPTkZJR19G
Ql8zREZYCiAJeyAidGRmeGZiIiwgdGRmeGZiX2luaXQsIHRkZnhmYl9zZXR1cCB9LAogI2VuZGlm
CmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvdmlkZW8veGJveC9NYWtlZmlsZSBs
aW51eC0yLjYuNS9kcml2ZXJzL3ZpZGVvL3hib3gvTWFrZWZpbGUKLS0tIGxpbnV4LTIuNi41Lm9y
aWcvZHJpdmVycy92aWRlby94Ym94L01ha2VmaWxlCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAw
MDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9kcml2ZXJzL3ZpZGVvL3hib3gvTWFrZWZpbGUJMjAw
NC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSw3IEBACisjCisjIE1h
a2VmaWxlIGZvciB0aGUgWGJveCBmcmFtZWJ1ZmZlciBkcml2ZXIKKyMKKworb2JqLSQoQ09ORklH
X0ZCX1hCT1gpICs9IHhib3hmYi5vCisKK3hib3hmYi1vYmpzIDo9IGZiZGV2Lm8gcml2YV9ody5v
IG52X2RyaXZlci5vIGVuY29kZXItaTJjLm8gZW5jb2Rlci5vIGZvY3VzLm8gY29uZXhhbnQubwpk
aWZmIC11ck4gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvY29uZXhhbnQuYyBs
aW51eC0yLjYuNS9kcml2ZXJzL3ZpZGVvL3hib3gvY29uZXhhbnQuYwotLS0gbGludXgtMi42LjUu
b3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvY29uZXhhbnQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAw
MDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUvZHJpdmVycy92aWRlby94Ym94L2NvbmV4YW50
LmMJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSw2MzkgQEAK
Ky8qCisgKiBsaW51eC9kcml2ZXJzL3ZpZGVvL3JpdmEvY29uZXhhbnQuYyAtIFhib3ggZHJpdmVy
IGZvciBjb25leGFudCBjaGlwCisgKgorICogTWFpbnRhaW5lcjogT2xpdmVyIFNjaHdhcnR6IDxP
bGl2ZXIuU2Nod2FydHpAZ214LmRlPgorICoKKyAqIENvbnRyaWJ1dG9yczoKKyAqIAorICogVGhp
cyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UuICBTZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUg
bWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIEtub3duIGJ1Z3MgYW5kIGlzc3VlczoKKyAqCisgKiAgICAgIG5vbmUKKyAqLworCisjaW5j
bHVkZSAiY29uZXhhbnQuaCIKKyNpbmNsdWRlICJmb2N1cy5oIgorCisjZGVmaW5lIEFEUih4KSAo
eCAvIDIgLSAweDE3KQorCit0eXBlZGVmIHN0cnVjdCB7CisJbG9uZyB2X2FjdGl2ZW87CisJbG9u
ZyB2X2xpbmVzaTsKKwlsb25nIGhfY2xraTsKKwlsb25nIGhfY2xrbzsKKwlsb25nIGhfYmxhbmtp
OworCWxvbmcgaF9ibGFua287CisJbG9uZyB2X2JsYW5raTsKKwlsb25nIHZfYmxhbmtvOworCWxv
bmcgdnNjYWxlOworCWRvdWJsZSBjbGtfcmF0aW87Cit9IHhib3hfdHZfbW9kZV9wYXJhbWV0ZXI7
CisKKworCS8vIGFuZCBoZXJlIGlzIGFsbCB0aGUgdmlkZW8gdGltaW5nIGZvciBldmVyeSBzdGFu
ZGFyZAorCitzdGF0aWMgY29uc3QgY29uZXhhbnRfdmlkZW9fcGFyYW1ldGVyIHZpZHN0ZGFbXSA9
IHsKKwl7IDM1Nzk1NDUuMDAsIDAuMDAwMDA1MywgMC4wMDAwMDc4MiwgMC4wMDAwMDQ3LCAwLjAw
MDA2MzU1NSwgMC4wMDAwMDk0LCAwLjAwMDAzNTY2NywgMC4wMDAwMDE1LCAyNDMsIDI2Mi41LCAw
LjAwMDAwOTIgfSwKKwl7IDM1Nzk1NDUuMDAsIDAuMDAwMDA1MywgMC4wMDAwMDc4MiwgMC4wMDAw
MDQ3LCAwLjAwMDA2NDAwMCwgMC4wMDAwMDk0LCAwLjAwMDAzNTY2NywgMC4wMDAwMDE1LCAyNDMs
IDI2Mi41LCAwLjAwMDAwOTIgfSwKKwl7IDQ0MzM2MTguNzUsIDAuMDAwMDA1NiwgMC4wMDAwMDc4
NSwgMC4wMDAwMDQ3LCAwLjAwMDA2NDAwMCwgMC4wMDAwMTA1LCAwLjAwMDAzNjQwNywgMC4wMDAw
MDE1LCAyODgsIDMxMi41LCAwLjAwMDAxMDUgfSwKKwl7IDQ0MzM2MTguNzUsIDAuMDAwMDA1Niwg
MC4wMDAwMDc4NSwgMC4wMDAwMDQ3LCAwLjAwMDA2NDAwMCwgMC4wMDAwMDk0LCAwLjAwMDAzNTY2
NywgMC4wMDAwMDE1LCAyODgsIDMxMi41LCAwLjAwMDAwOTIgfSwKKwl7IDM1ODIwNTYuMjUsIDAu
MDAwMDA1NiwgMC4wMDAwMDgxMSwgMC4wMDAwMDQ3LCAwLjAwMDA2NDAwMCwgMC4wMDAwMTA1LCAw
LjAwMDAzNjQwNywgMC4wMDAwMDE1LCAyODgsIDMxMi41LCAwLjAwMDAxMDUgfSwKKwl7IDM1NzU2
MTEuODgsIDAuMDAwMDA1OCwgMC4wMDAwMDgzMiwgMC4wMDAwMDQ3LCAwLjAwMDA2MzU1NSwgMC4w
MDAwMDk0LCAwLjAwMDAzNTY2NywgMC4wMDAwMDE1LCAyNDMsIDI2Mi41LCAwLjAwMDAwOTIgfSwK
Kwl7IDQ0MzM2MTkuNDksIDAuMDAwMDA1MywgMC4wMDAwMDc1NSwgMC4wMDAwMDQ3LCAwLjAwMDA2
MzU1NSwgMC4wMDAwMTA1LCAwLjAwMDAzNjQwNywgMC4wMDAwMDE1LCAyNDMsIDI2Mi41LCAwLjAw
MDAwOTIgfQorfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGVmYXVsdF9tb2RlW10g
PSB7CisJMHgwMCwKKwkweDAwLCAweDI4LCAweDgwLCAweEU0LCAweDAwLCAweDAwLCAweDgwLCAw
eDgwLAorCTB4ODAsIDB4MTMsIDB4REEsIDB4NEIsIDB4MjgsIDB4QTMsIDB4OUYsIDB4MjUsCisJ
MHhBMywgMHg5RiwgMHgyNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0NCwKKwkweEM3LCAw
eDAwLCAweDAwLCAweDQxLCAweDM1LCAweDAzLCAweDQ2LCAweDAwLAorCTB4MDIsIDB4MDAsIDB4
MDEsIDB4NjAsIDB4ODgsIDB4OGEsIDB4YTYsIDB4NjgsCisJMHhjMSwgMHgyZSwgMHhmMiwgMHgy
NywgMHgwMCwgMHhiMCwgMHgwYSwgMHgwYiwKKwkweDcxLCAweDVhLCAweGUwLCAweDM2LCAweDAw
LCAweDUwLCAweDcyLCAweDFjLAorCTB4MGQsIDB4MjQsIDB4ZjAsIDB4NTgsIDB4ODEsIDB4NDks
IDB4OGMsIDB4MGMsCisJMHg4YywgMHg3OSwgMHgyNiwgMHg1MiwgMHgwMCwgMHgyNCwgMHgwMCwg
MHgwMCwKKwkweDAwLCAweDAwLCAweDAxLCAweDlDLCAweDlCLCAweEMwLCAweEMwLCAweDE5LAor
CTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDAsIDB4MDUsIDB4NTcsIDB4MjAsCisJMHg0MCwg
MHg2RSwgMHg3RSwgMHhGNCwgMHg1MSwgMHgwRiwgMHhGMSwgMHgwNSwKKwkweEQzLCAweDc4LCAw
eEEyLCAweDI1LCAweDU0LCAweEE1LCAweDAwLCAweDAwCit9OworCitzdGF0aWMgY29uc3QgZG91
YmxlIHBsbF9iYXNlID0gMTMuNWU2OworCitzdGF0aWMgdm9pZCBjb25leGFudF9jYWxjX2JsYW5r
aW5ncygKKwl4Ym94X3ZpZGVvX21vZGUgKiBtb2RlLAorCXhib3hfdHZfbW9kZV9wYXJhbWV0ZXIg
KiBwYXJhbQorKTsKKworc3RhdGljIGludCBjb25leGFudF9jYWxjX21vZGVfcGFyYW1zKAorCXhi
b3hfdmlkZW9fbW9kZSAqIG1vZGUsCisJeGJveF90dl9tb2RlX3BhcmFtZXRlciAqIHBhcmFtCisp
OworCitzdGF0aWMgZG91YmxlIGZhYnMoZG91YmxlIGQpIHsKKwlpZiAoZCA+IDApIHJldHVybiBk
OworCWVsc2UgcmV0dXJuIC1kOworfQorCitpbnQgY29uZXhhbnRfY2FsY192Z2FfbW9kZSgKKwl4
Ym94X2F2X3R5cGUgYXZfdHlwZSwKKwl1bnNpZ25lZCBjaGFyIHBsbF9pbnQsCisJdW5zaWduZWQg
Y2hhciAqIHJlZ3MKKyl7CisJbWVtc2V0KHJlZ3MsIDAsIE5VTV9DT05FWEFOVF9SRUdTKTsKKwkv
LyBQcm90ZWN0IGFnYWluc3Qgb3ZlcmNsb2NraW5nCisJaWYgKHBsbF9pbnQgPiAzNikgeworCQlw
bGxfaW50ID0gMzY7IC8vIDM2IC8gNiAqIDEzLjUgTUh6ID0gODEgTUh6LCBqdXN0IGFib3ZlIHRo
ZSBsaW1pdC4KKwl9CisJaWYgKHBsbF9pbnQgPT0gMCkgeworCQlwbGxfaW50ID0gMTsgIC8vIDAg
d2lsbCBjYXVzZSBhIGJ1cm5vdXQgLi4uCisJfQorCWlmIChhdl90eXBlID09IEFWX1ZHQSkgewor
CQkvLyB1c2UgaW50ZXJuYWwgc3luYyBzaWduYWxzCisJCXJlZ3NbQURSKDB4MmUpXSA9IDB4YmQ7
IC8vIEhEVFZfRU4gPSAxLCBSUFJfU1lOQ19ESVMgPSAxLCBCUEJfU1lOQ19ESVMgPSAxLCBHWV9T
WU5DX0RJUz0xLCBIRF9TWU5DX0VER0UgPSAxLCBSQVNURVJfU0VMID0gMDEKKwl9CisJZWxzZSB7
CisgCQkvLyB1c2Ugc3luYyBvbiBncmVlbgorCQlyZWdzW0FEUigweDJlKV0gPSAweGFkOyAvLyBI
RFRWX0VOID0gMSwgUlBSX1NZTkNfRElTID0gMSwgQlBCX1NZTkNfRElTID0gMSwgSERfU1lOQ19F
REdFID0gMSwgUkFTVEVSX1NFTCA9IDAxCisJfQorCXJlZ3NbQURSKDB4MzIpXSA9IDB4NDg7IC8v
IERSVlMgPSAyLCBJTl9NT0RFWzNdID0gMTsKKwlyZWdzW0FEUigweDNjKV0gPSAweDgwOyAvLyBN
Q09NUFkKKwlyZWdzW0FEUigweDNlKV0gPSAweDgwOyAvLyBNQ09NUFUKKwlyZWdzW0FEUigweDQw
KV0gPSAweDgwOyAvLyBNQ09NUFYKKwlyZWdzW0FEUigweGM2KV0gPSAweDk4OyAvLyBJTl9NT0RF
ID0gMjQgYml0IFJHQiBtdWx0aXBsZXhlZAorCXJlZ3NbQURSKDB4NmMpXSA9IDB4NDY7IC8vIEZM
RF9NT0RFID0gMTAsIEVBQ1RJVkUgPSAxLCBFTl9TQ0FSVCA9IDAsIEVOX1JFR19SRCA9IDEKKwly
ZWdzW0FEUigweDljKV0gPSAweDAwOyAvLyBQTExfRlJBQ1QKKwlyZWdzW0FEUigweDllKV0gPSAw
eDAwOyAvLyBQTExfRlJBQ1QKKwlyZWdzW0FEUigweGEwKV0gPSBwbGxfaW50OyAvLyBQTExfSU5U
CisJcmVnc1tBRFIoMHhiYSldID0gMHgyODsgLy8gU0xBVkVSID0gMSwgREFDRElTRCA9IDEKKwly
ZWdzW0FEUigweGNlKV0gPSAweGUxOyAvLyBPVVRfTVVYQSA9IDAxLCBPVVRfTVVYQiA9IDAwLCBP
VVRfTVVYQyA9IDEwLCBPVVRfTVVYRCA9IDExCisJcmVnc1tBRFIoMHhkNildID0gMHgwYzsgLy8g
T1VUX01PREUgPSAxMSAoUkdCIC8gU0NBUlQgLyBIRFRWKQorCisJcmV0dXJuIDE7Cit9CisKK2lu
dCBjb25leGFudF9jYWxjX2hkdHZfbW9kZSgKKwl4Ym94X2hkdHZfbW9kZSBoZHR2X21vZGUsCisJ
dW5zaWduZWQgY2hhciBwbGxfaW50LAorCXVuc2lnbmVkIGNoYXIgKiByZWdzCispeworCW1lbXNl
dChyZWdzLCAwLCBOVU1fQ09ORVhBTlRfUkVHUyk7CisJLy8gUHJvdGVjdCBhZ2FpbnN0IG92ZXJj
bG9ja2luZworCWlmIChwbGxfaW50ID4gMzYpIHsKKwkJcGxsX2ludCA9IDM2OyAvLyAzNiAvIDYg
KiAxMy41IE1IeiA9IDgxIE1IeiwganVzdCBhYm92ZSB0aGUgbGltaXQuCisJfQorCWlmIChwbGxf
aW50ID09IDApIHsKKwkJcGxsX2ludCA9IDE7ICAvLyAwIHdpbGwgY2F1c2UgYSBidXJub3V0IC4u
LgorCX0KKwlzd2l0Y2ggKGhkdHZfbW9kZSkgeworCQljYXNlIEhEVFZfNDgwcDoKKwkJCS8vIHVz
ZSBzeW5jIG9uIGdyZWVuCisJCQlyZWdzW0FEUigweDJlKV0gPSAweGVkOyAvLyBIRFRWX0VOID0g
MSwgUkdCMlBSUEIgPSAxLCBSUFJfU1lOQ19ESVMgPSAxLCBCUEJfU1lOQ19ESVMgPSAxLCBIRF9T
WU5DX0VER0UgPSAxLCBSQVNURVJfU0VMID0gMDEKKwkJCXJlZ3NbQURSKDB4MzIpXSA9IDB4NDg7
IC8vIERSVlMgPSAyLCBJTl9NT0RFWzNdID0gMTsKKwkJCXJlZ3NbQURSKDB4M2UpXSA9IDB4NDU7
IC8vIE1DT01QVQorCQkJcmVnc1tBRFIoMHg0MCldID0gMHg1MTsgLy8gTUNPTVBWCisJCQlicmVh
azsKKwkJY2FzZSBIRFRWXzcyMHA6CisJCQkvLyB1c2Ugc3luYyBvbiBncmVlbgorCQkJcmVnc1tB
RFIoMHgyZSldID0gMHhlYTsgLy8gSERUVl9FTiA9IDEsIFJHQjJQUlBCID0gMSwgUlBSX1NZTkNf
RElTID0gMSwgQlBCX1NZTkNfRElTID0gMSwgSERfU1lOQ19FREdFID0gMSwgUkFTVEVSX1NFTCA9
IDAxCisJCQlyZWdzW0FEUigweDMyKV0gPSAweDQ5OyAvLyBEUlZTID0gMiwgSU5fTU9ERVszXSA9
IDEsIENTQ19TRUw9MTsKKwkJCXJlZ3NbQURSKDB4M2UpXSA9IDB4NDU7IC8vIE1DT01QVQorCQkJ
cmVnc1tBRFIoMHg0MCldID0gMHg1MTsgLy8gTUNPTVBWCisJCQlicmVhazsKKwkJY2FzZSBIRFRW
XzEwODBpOgorCQkJLy8gdXNlIHN5bmMgb24gZ3JlZW4KKwkJCXJlZ3NbQURSKDB4MmUpXSA9IDB4
ZWI7IC8vIEhEVFZfRU4gPSAxLCBSR0IyUFJQQiA9IDEsIFJQUl9TWU5DX0RJUyA9IDEsIEJQQl9T
WU5DX0RJUyA9IDEsIEhEX1NZTkNfRURHRSA9IDEsIFJBU1RFUl9TRUwgPSAwMQorCQkJcmVnc1tB
RFIoMHgzMildID0gMHg0OTsgLy8gRFJWUyA9IDIsIElOX01PREVbM10gPSAxLCBDU0NfU0VMPTE7
CisJCQlyZWdzW0FEUigweDNlKV0gPSAweDQ4OyAvLyBNQ09NUFUKKwkJCXJlZ3NbQURSKDB4NDAp
XSA9IDB4NWI7IC8vIE1DT01QVgorCQkJYnJlYWs7CisJfQorCXJlZ3NbQURSKDB4M2MpXSA9IDB4
ODA7IC8vIE1DT01QWQorCXJlZ3NbQURSKDB4YTApXSA9IHBsbF9pbnQ7IC8vIFBMTF9JTlQKKwly
ZWdzW0FEUigweGM2KV0gPSAweDk4OyAvLyBJTl9NT0RFID0gMjQgYml0IFJHQiBtdWx0aXBsZXhl
ZAorCXJlZ3NbQURSKDB4NmMpXSA9IDB4NDY7IC8vIEZMRF9NT0RFID0gMTAsIEVBQ1RJVkUgPSAx
LCBFTl9TQ0FSVCA9IDAsIEVOX1JFR19SRCA9IDEKKwlyZWdzW0FEUigweDljKV0gPSAweDAwOyAv
LyBQTExfRlJBQ1QKKwlyZWdzW0FEUigweDllKV0gPSAweDAwOyAvLyBQTExfRlJBQ1QKKwlyZWdz
W0FEUigweGJhKV0gPSAweDI4OyAvLyBTTEFWRVIgPSAxLCBEQUNESVNEID0gMQorCXJlZ3NbQURS
KDB4Y2UpXSA9IDB4ZTE7IC8vIE9VVF9NVVhBID0gMDEsIE9VVF9NVVhCID0gMDAsIE9VVF9NVVhD
ID0gMTAsIE9VVF9NVVhEID0gMTEKKwlyZWdzW0FEUigweGQ2KV0gPSAweDBjOyAvLyBPVVRfTU9E
RSA9IDExIChSR0IgLyBTQ0FSVCAvIEhEVFYpCisKKwlyZXR1cm4gMTsKK30KKworaW50IGNvbmV4
YW50X2NhbGNfbW9kZSh4Ym94X3ZpZGVvX21vZGUgKiBtb2RlLCBzdHJ1Y3Qgcml2YV9yZWdzICog
cml2YV9vdXQpCit7CisJdW5zaWduZWQgY2hhciBiOworCXVuc2lnbmVkIGludCBtID0gMDsKKwlk
b3VibGUgZFBsbE91dHB1dEZyZXF1ZW5jeTsKKwl4Ym94X3R2X21vZGVfcGFyYW1ldGVyIHBhcmFt
OworCWNoYXIqIHJlZ3MgPSByaXZhX291dC0+ZW5jb2Rlcl9tb2RlOworCisJaWYgKGNvbmV4YW50
X2NhbGNfbW9kZV9wYXJhbXMobW9kZSwgJnBhcmFtKSkKKwl7CisJCS8vIGNvcHkgZGVmYXVsdCBt
b2RlIHNldHRpbmdzCisJCW1lbWNweShyZWdzLGRlZmF1bHRfbW9kZSxzaXplb2YoZGVmYXVsdF9t
b2RlKSk7CisKKwkJcmVnc1tBRFIoMHgzMildID0gMHgyODsgLy8gRFJWUyA9IDEsIElOX01PREVb
M10gPSAxOworCisJCS8vIEhfQ0xLSQorCQliPXJlZ3NbQURSKDB4OGUpXSYofjB4MDcpOworCQly
ZWdzW0FEUigweDhlKV0gPSAoKHBhcmFtLmhfY2xraT4+OCkmMHgwNyl8YjsKKwkJcmVnc1tBRFIo
MHg4YSldID0gKChwYXJhbS5oX2Nsa2kpJjB4ZmYpOworCQkvLyBIX0NMS08KKwkJYj1yZWdzW0FE
UigweDg2KV0mKH4weDBmKTsKKwkJcmVnc1tBRFIoMHg4NildID0gKChwYXJhbS5oX2Nsa28+Pjgp
JjB4MGYpfGI7CisJCXJlZ3NbQURSKDB4NzYpXSA9ICgocGFyYW0uaF9jbGtvKSYweGZmKTsKKwkJ
Ly8gVl9MSU5FU0kKKwkJYj1yZWdzW0FEUigweDM4KV0mKH4weDAyKTsKKwkJcmVnc1tBRFIoMHgz
OCldID0gKChwYXJhbS52X2xpbmVzaT4+OSkmMHgwMil8YjsKKwkJYj1yZWdzW0FEUigweDk2KV0m
KH4weDAzKTsKKwkJcmVnc1tBRFIoMHg5NildID0gKChwYXJhbS52X2xpbmVzaT4+OCkmMHgwMyl8
YjsKKwkJcmVnc1tBRFIoMHg5MCldID0gKChwYXJhbS52X2xpbmVzaSkmMHhmZik7CisJCS8vIFZf
QUNUSVZFTworCQkvKiBUT0RPOiBBYnNvbHV0ZWx5IG5vdCBzdXJlIGFib3V0IG90aGVyIG1vZGVz
IHRoYW4gcGxhaW4gTlRTQyAvIFBBTCAqLworCQlzd2l0Y2gobW9kZS0+dHZfZW5jb2RpbmcpIHsK
KwkJCWNhc2UgVFZfRU5DX05UU0M6CisJCQljYXNlIFRWX0VOQ19OVFNDNjA6CisJCQljYXNlIFRW
X0VOQ19QQUxNOgorCQkJY2FzZSBUVl9FTkNfUEFMNjA6CisJCQkJbT1wYXJhbS52X2FjdGl2ZW8g
KyAxOworCQkJCWJyZWFrOworCQkJY2FzZSBUVl9FTkNfUEFMQkRHSEk6CisJCQkJbT1wYXJhbS52
X2FjdGl2ZW8gKyAyOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQltPXBhcmFtLnZfYWN0
aXZlbyArIDI7CisJCQkJYnJlYWs7CisJCX0KKwkJYj1yZWdzW0FEUigweDg2KV0mKH4weDgwKTsK
KwkJcmVnc1tBRFIoMHg4NildID0gKChtPj4xKSYweDgwKXxiOworCQlyZWdzW0FEUigweDg0KV0g
PSAoKG0pJjB4ZmYpOworCQkvLyBIX0FDVElWRQorCQliPXJlZ3NbQURSKDB4ODYpXSYofjB4NzAp
OworCQlyZWdzW0FEUigweDg2KV0gPSAoKChtb2RlLT54cmVzICsgNSk+PjQpJjB4NzApfGI7CisJ
CXJlZ3NbQURSKDB4NzgpXSA9ICgobW9kZS0+eHJlcyArIDUpJjB4ZmYpOworCQkvLyBWX0FDVElW
RUkKKwkJYj1yZWdzW0FEUigweDk2KV0mKH4weDBjKTsKKwkJcmVnc1tBRFIoMHg5NildID0gKCht
b2RlLT55cmVzPj42KSYweDBjKXxiOworCQlyZWdzW0FEUigweDk0KV0gPSAoKG1vZGUtPnlyZXMp
JjB4ZmYpOworCQkvLyBIX0JMQU5LSQorCQliPXJlZ3NbQURSKDB4MzgpXSYofjB4MDEpOworCQly
ZWdzW0FEUigweDM4KV0gPSAoKHBhcmFtLmhfYmxhbmtpPj45KSYweDAxKXxiOworCQliPXJlZ3Nb
QURSKDB4OGUpXSYofjB4MDgpOworCQlyZWdzW0FEUigweDhlKV0gPSAoKHBhcmFtLmhfYmxhbmtp
Pj41KSYweDA4KXxiOworCQlyZWdzW0FEUigweDhjKV0gPSAoKHBhcmFtLmhfYmxhbmtpKSYweGZm
KTsKKwkJLy8gSF9CTEFOS08KKwkJYj1yZWdzW0FEUigweDlhKV0mKH4weGMwKTsKKwkJcmVnc1tB
RFIoMHg5YSldID0gKChwYXJhbS5oX2JsYW5rbz4+MikmMHhjMCl8YjsKKwkJcmVnc1tBRFIoMHg4
MCldID0gKChwYXJhbS5oX2JsYW5rbykmMHhmZik7CisKKwkJLy8gVl9TQ0FMRQorCQliPXJlZ3Nb
QURSKDB4OWEpXSYofjB4M2YpOworCQlyZWdzW0FEUigweDlhKV0gPSAoKHBhcmFtLnZzY2FsZT4+
OCkmMHgzZil8YjsKKwkJcmVnc1tBRFIoMHg5OCldID0gKChwYXJhbS52c2NhbGUpJjB4ZmYpOwor
CQkvLyBWX0JMQU5LTworCQlyZWdzW0FEUigweDgyKV0gPSAoKHBhcmFtLnZfYmxhbmtvKSYweGZm
KTsKKwkJLy8gVl9CTEFOS0kKKwkJcmVnc1tBRFIoMHg5MildID0gKChwYXJhbS52X2JsYW5raSkm
MHhmZik7CisJCXsKKwkJCXVuc2lnbmVkIGludCBkd1BsbFJhdGlvLCBkd0ZyYWN0LCBkd0ludDsK
KwkJCS8vIGFkanVzdCBQTEwKKwkJCWR3UGxsUmF0aW8gPSAoaW50KSg2LjAgKiAoKGRvdWJsZSlw
YXJhbS5oX2Nsa28gLyB2aWRzdGRhW21vZGUtPnR2X2VuY29kaW5nXS5tX2RTZWNIc3luY1Blcmlv
ZCkgKgorCQkJCXBhcmFtLmNsa19yYXRpbyAqIDB4MTAwMDAgLyBwbGxfYmFzZSArIDAuNSk7CisJ
CQlkd0ludCA9IGR3UGxsUmF0aW8gLyAweDEwMDAwOworCQkJZHdGcmFjdCA9IGR3UGxsUmF0aW8g
LSAoZHdJbnQgKiAweDEwMDAwKTsKKwkJCWI9cmVnc1tBRFIoMHhhMCldJih+MHgzZik7CisJCQly
ZWdzW0FEUigweGEwKV0gPSAoKGR3SW50KSYweDNmKXxiOworCQkJcmVnc1tBRFIoMHg5ZSldID0g
KChkd0ZyYWN0Pj44KSYweGZmKTsKKwkJCXJlZ3NbQURSKDB4OWMpXSA9ICgoZHdGcmFjdCkmMHhm
Zik7CisJCQkvLyByZWNhbGMgdmFsdWUKKwkJCWRQbGxPdXRwdXRGcmVxdWVuY3kgPSAoKGRvdWJs
ZSlkd0ludCArICgoZG91YmxlKWR3RnJhY3QpLzY1NTM2LjApLyg2ICogcGFyYW0uY2xrX3JhdGlv
IC8gcGxsX2Jhc2UpOworCQkJLy8gZW5hYmxlIDM6MiBjbG9ja2luZyBtb2RlCisJCQliPXJlZ3Nb
QURSKDB4MzgpXSYofjB4MjApOworCQkJaWYgKHBhcmFtLmNsa19yYXRpbyA+IDEuMSkgeworCQkJ
CWIgfD0gMHgyMDsKKwkJCX0KKwkJCXJlZ3NbQURSKDB4MzgpXSA9IGI7CisKKwkJCS8vIHVwZGF0
ZSBidXJzdCBzdGFydCBwb3NpdGlvbgorCQkJbT0odmlkc3RkYVttb2RlLT50dl9lbmNvZGluZ10u
bV9kU2VjQnVyc3RTdGFydCkgKiBkUGxsT3V0cHV0RnJlcXVlbmN5ICsgMC41OworCQkJYj1yZWdz
W0FEUigweDM4KV0mKH4weDA0KTsKKwkJCXJlZ3NbQURSKDB4MzgpXSA9ICgobT4+NikmMHgwNCl8
YjsKKwkJCXJlZ3NbQURSKDB4N2MpXSA9IChtJjB4ZmYpOworCQkJLy8gdXBkYXRlIGJ1cnN0IGVu
ZCBwb3NpdGlvbiAobm90ZSArMTI4IGlzIGluIGhhcmR3YXJlKQorCQkJbT0odmlkc3RkYVttb2Rl
LT50dl9lbmNvZGluZ10ubV9kU2VjQnVyc3RFbmQpICogZFBsbE91dHB1dEZyZXF1ZW5jeSArIDAu
NTsKKwkJCWlmKG08MTI4KSBtPTEyODsKKwkJCWI9cmVnc1tBRFIoMHgzOCldJih+MHgwOCk7CisJ
CQlyZWdzW0FEUigweDM4KV0gPSAoKChtLTEyOCk+PjUpJjB4MDgpfGI7CisJCQlyZWdzW0FEUigw
eDdlKV0gPSAoKG0tMTI4KSYweGZmKTsKKwkJCS8vIHVwZGF0ZSBIU1lOQyB3aWR0aAorCQkJbT0o
dmlkc3RkYVttb2RlLT50dl9lbmNvZGluZ10ubV9kU2VjSHN5bmNXaWR0aCkgKiBkUGxsT3V0cHV0
RnJlcXVlbmN5ICsgMC41OworCQkJcmVnc1tBRFIoMHg3YSldID0gKChtKSYweGZmKTsKKwkJfQor
CQkvLyBhZGp1c3QgU3ViY2FycmllciBnZW5lcmF0aW9uIGluY3JlbWVudAorCQl7CisJCQl1bnNp
Z25lZCBpbnQgZHdTdWJjYXJyaWVySW5jcmVtZW50ID0gKHVuc2lnbmVkIGludCkgKAorCQkJCSg2
NTUzNi4wICogNjU1MzYuMCkgKiAoCisJCQkJCXZpZHN0ZGFbbW9kZS0+dHZfZW5jb2RpbmddLm1f
ZEh6QnVyc3RGcmVxdWVuY3kKKwkJCQkJKiB2aWRzdGRhW21vZGUtPnR2X2VuY29kaW5nXS5tX2RT
ZWNIc3luY1BlcmlvZAorCQkJCQkvIChkb3VibGUpcGFyYW0uaF9jbGtvCisJCQkJKSArIDAuNQor
CQkJKTsKKwkJCXJlZ3NbQURSKDB4YWUpXSA9IChkd1N1YmNhcnJpZXJJbmNyZW1lbnQmMHhmZik7
CisJCQlyZWdzW0FEUigweGIwKV0gPSAoKGR3U3ViY2FycmllckluY3JlbWVudD4+OCkmMHhmZik7
CisJCQlyZWdzW0FEUigweGIyKV0gPSAoKGR3U3ViY2FycmllckluY3JlbWVudD4+MTYpJjB4ZmYp
OworCQkJcmVnc1tBRFIoMHhiNCldID0gKChkd1N1YmNhcnJpZXJJbmNyZW1lbnQ+PjI0KSYweGZm
KTsKKwkJfQorCQkvLyBhZGp1c3QgV1NTIGluY3JlbWVudAorCQl7CisJCQl1bnNpZ25lZCBpbnQg
ZHdXc3NJbmNyZW1lbnQgPSAwOworCisJCQlzd2l0Y2gobW9kZS0+dHZfZW5jb2RpbmcpIHsKKwkJ
CQljYXNlIFRWX0VOQ19OVFNDOgorCQkJCWNhc2UgVFZfRU5DX05UU0M2MDoKKwkJCQkJZHdXc3NJ
bmNyZW1lbnQ9KHVuc2lnbmVkIGludCkgKCgxMDQ4NTc2LjAgLyAoIDAuMDAwMDAyMjM0ICogZFBs
bE91dHB1dEZyZXF1ZW5jeSkpKzAuNSk7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgVFZfRU5DX1BB
TEJER0hJOgorCQkJCWNhc2UgVFZfRU5DX1BBTE46CisJCQkJY2FzZSBUVl9FTkNfUEFMTkM6CisJ
CQkJY2FzZSBUVl9FTkNfUEFMTToKKwkJCQljYXNlIFRWX0VOQ19QQUw2MDoKKwkJCQkJZHdXc3NJ
bmNyZW1lbnQ9KHVuc2lnbmVkIGludCkgKCgxMDQ4NTc2LjAgLyAoIDAuMDAwMDAwMiAqIGRQbGxP
dXRwdXRGcmVxdWVuY3kpKSswLjUpOworCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQli
cmVhazsKKwkJCQl9CisKKwkJCXJlZ3NbQURSKDB4NjYpXSA9IChkd1dzc0luY3JlbWVudCYweGZm
KTsKKwkJCXJlZ3NbQURSKDB4NjgpXSA9ICgoZHdXc3NJbmNyZW1lbnQ+PjgpJjB4ZmYpOworCQkJ
cmVnc1tBRFIoMHg2YSldID0gKChkd1dzc0luY3JlbWVudD4+MTYpJjB4Zik7CisJCX0KKwkJLy8g
c2V0IG1vZGUgcmVnaXN0ZXIKKwkJYj1yZWdzW0FEUigweGEyKV0mKDB4NDEpOworCQlzd2l0Y2go
bW9kZS0+dHZfZW5jb2RpbmcpIHsKKwkJCQljYXNlIFRWX0VOQ19OVFNDOgorCQkJCQliIHw9IDB4
MGE7IC8vIFNFVFVQICsgVlNZTkNfRFVSCisJCQkJCWJyZWFrOworCQkJCWNhc2UgVFZfRU5DX05U
U0M2MDoKKwkJCQkJYiB8PSAweDA4OyAvLyBWU1lOQ19EVVIKKwkJCQkJYnJlYWs7CisJCQkJY2Fz
ZSBUVl9FTkNfUEFMQkRHSEk6CisJCQkJY2FzZSBUVl9FTkNfUEFMTkM6CisJCQkJCQliIHw9IDB4
MjQ7IC8vIFBBTF9NRCArIDYyNUxJTkUKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBUVl9FTkNfUEFM
TjoKKwkJCQkJYiB8PSAweDJlOyAvLyBQQUxfTUQgKyBTRVRVUCArIDYyNUxJTkUgKyBWU1lOQ19E
VVIKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBUVl9FTkNfUEFMTToKKwkJCQkJYiB8PSAweDJhOyAv
LyBQQUxfTUQgKyBTRVRVUCArIFZTWU5DX0RVUgorCQkJCQlicmVhazsKKwkJCQljYXNlIFRWX0VO
Q19QQUw2MDoKKwkJCQkJYiB8PSAweDI4OyAvLyBQQUxfTUQgKyBWU1lOQ19EVVIKKwkJCQkJYnJl
YWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJYnJlYWs7CisJCX0KKwkJcmVnc1tBRFIoMHhhMildID0g
YjsKKwkJcmVnc1tBRFIoMHhjNildID0gMHg5ODsgLy8gSU5fTU9ERSA9IDI0IGJpdCBSR0IgbXVs
dGlwbGV4ZWQKKwkJc3dpdGNoKG1vZGUtPmF2X3R5cGUpIHsKKwkJCWNhc2UgQVZfQ09NUE9TSVRF
OgorCQkJY2FzZSBBVl9TVklERU86CisJCQkJcmVnc1tBRFIoMHgyZSldIHw9IDB4NDA7IC8vIFJH
QjJZUFJQQiA9IDEKKwkJCQlyZWdzW0FEUigweDZjKV0gPSAweDQ2OyAvLyBGTERfTU9ERSA9IDEw
LCBFQUNUSVZFID0gMSwgRU5fU0NBUlQgPSAwLCBFTl9SRUdfUkQgPSAxCisJCQkJcmVnc1tBRFIo
MHg1YSldID0gMHgwMDsgLy8gWV9PRkYgKEJyaWdodG5lc3MpCisJCQkJcmVnc1tBRFIoMHhhNCld
ID0gMHhlNTsgLy8gU1lOQ19BTVAKKwkJCQlyZWdzW0FEUigweGE2KV0gPSAweDc0OyAvLyBCU1Rf
QU1QCisJCQkJcmVnc1tBRFIoMHhiYSldID0gMHgyNDsgLy8gU0xBVkVSID0gMSwgREFDRElTQyA9
IDEKKwkJCQlyZWdzW0FEUigweGNlKV0gPSAweDE5OyAvLyBPVVRfTVVYQSA9IDAxLCBPVVRfTVVY
QiA9IDEwLCBPVVRfTVVYQyA9IDEwLCBPVVRfTVVYRCA9IDAwCisJCQkJcmVnc1tBRFIoMHhkNild
ID0gMHgwMDsgLy8gT1VUX01PREUgPSAwMCAoQ1ZCUykKKwkJCQlicmVhazsKKwkJCWNhc2UgQVZf
U0NBUlRfUkdCOgorCQkJCXJlZ3NbQURSKDB4NmMpXSA9IDB4NGU7IC8vIEZMRF9NT0RFID0gMTAs
IEVBQ1RJVkUgPSAxLCBFTl9TQ0FSVCA9IDEsIEVOX1JFR19SRCA9IDEKKwkJCQlyZWdzW0FEUigw
eDVhKV0gPSAweGZmOyAvLyBZX09GRiAoQnJpZ2h0bmVzcykKKwkJCQlyZWdzW0FEUigweGE0KV0g
PSAweGU3OyAvLyBTWU5DX0FNUAorCQkJCXJlZ3NbQURSKDB4YTYpXSA9IDB4Nzc7IC8vIEJTVF9B
TVAKKwkJCQlyZWdzW0FEUigweGJhKV0gPSAweDIwOyAvLyBTTEFWRVIgPSAxLCBlbmFibGUgYWxs
IERBQ3MKKwkJCQlyZWdzW0FEUigweGNlKV0gPSAweGUxOyAvLyBPVVRfTVVYQSA9IDAxLCBPVVRf
TVVYQiA9IDAwLCBPVVRfTVVYQyA9IDEwLCBPVVRfTVVYRCA9IDExCisJCQkJcmVnc1tBRFIoMHhk
NildID0gMHgwYzsgLy8gT1VUX01PREUgPSAxMSAoUkdCIC8gU0NBUlQgLyBIRFRWKQorCQkJCWJy
ZWFrOworCQkJZGVmYXVsdDoKKwkJCQlicmVhazsKKwkJfQorCQlyaXZhX291dC0+ZXh0LnZlbmQg
PSBtb2RlLT55cmVzOworCQlyaXZhX291dC0+ZXh0LnZ0b3RhbCA9IHBhcmFtLnZfbGluZXNpIC0g
MTsKKwkJcml2YV9vdXQtPmV4dC52Y3J0YyA9IG1vZGUtPnlyZXM7CisJCXJpdmFfb3V0LT5leHQu
dnN5bmNzdGFydCA9IHBhcmFtLnZfbGluZXNpIC0gcGFyYW0udl9ibGFua2k7CisJCXJpdmFfb3V0
LT5leHQudnN5bmNlbmQgPSByaXZhX291dC0+ZXh0LnZzeW5jc3RhcnQgKyAzOworCQlyaXZhX291
dC0+ZXh0LnZ2YWxpZHN0YXJ0ID0gMDsKKwkJcml2YV9vdXQtPmV4dC52dmFsaWRlbmQgPSBtb2Rl
LT55cmVzOworCQlyaXZhX291dC0+ZXh0LmhlbmQgPSBtb2RlLT54cmVzICsgNzsKKwkJcml2YV9v
dXQtPmV4dC5odG90YWwgPSBwYXJhbS5oX2Nsa2kgLSAxOworCQlyaXZhX291dC0+ZXh0LmhjcnRj
ID0gbW9kZS0+eHJlcyAtIDE7CisJCXJpdmFfb3V0LT5leHQuaHN5bmNzdGFydCA9IHBhcmFtLmhf
Y2xraSAtIHBhcmFtLmhfYmxhbmtpIC0gNzsKKwkJcml2YV9vdXQtPmV4dC5oc3luY2VuZCA9IHJp
dmFfb3V0LT5leHQuaHN5bmNzdGFydCArIDMyOworCQlyaXZhX291dC0+ZXh0Lmh2YWxpZHN0YXJ0
ID0gMDsKKwkJcml2YV9vdXQtPmV4dC5odmFsaWRlbmQgPSBtb2RlLT54cmVzIC0gMTsKKwkJcml2
YV9vdXQtPmV4dC5jcnRjaGRpc3BlbmQgPSBtb2RlLT54cmVzICsgODsKKwkJcml2YV9vdXQtPmV4
dC5jcnRjdnN0YXJ0ID0gbW9kZS0+eXJlcyArIDM0OworCQlyaXZhX291dC0+ZXh0LmNydGN2dG90
YWwgPSBwYXJhbS52X2xpbmVzaSArIDMyOworCQlyZXR1cm4gMTsKKwl9CisJZWxzZQorCXsKKwkJ
cmV0dXJuIDA7CisJfQorfQorCitzdGF0aWMgaW50IGNvbmV4YW50X2NhbGNfbW9kZV9wYXJhbXMo
CisJeGJveF92aWRlb19tb2RlICogbW9kZSwKKwl4Ym94X3R2X21vZGVfcGFyYW1ldGVyICogcGFy
YW0KKyl7CisJY29uc3QgZG91YmxlIGRNaW5IQlQgPSAyLjVlLTY7IC8vIDIuNXVTZWMgdGltZSBm
b3IgaG9yaXpvbnRhbCBzeW5jaW5nCisJY29uc3QgZG91YmxlIGludmFsaWRNZXRyaWMgPSAxMDAw
OworCisJLyogYWxnb3JpdGhtIHNoYW1lbGVzc2x5IHJpcHBlZCBmcm9tIG52dHYvY2FsY19idC5j
ICovCisJZG91YmxlIGRUZW1wVk9DID0gMDsKKwlkb3VibGUgZFRlbXBIT0MgPSAwOworCWRvdWJs
ZSBkQmVzdE1ldHJpYyA9IGludmFsaWRNZXRyaWM7CisJZG91YmxlIGRUZW1wVlNSID0gMDsKKwlk
b3VibGUgZEJlc3RWU1IgPSAwOworCWRvdWJsZSBkVGVtcENMS1JBVElPID0gMTsKKwlkb3VibGUg
ZEJlc3RDTEtSQVRJTyA9IDE7CisJdW5zaWduZWQgaW50ICBtaW5UTEkgPSAwOworCXVuc2lnbmVk
IGludCAgbWF4VExJID0gMDsKKwl1bnNpZ25lZCBpbnQgIHRlbXBUTEkgPSAwOworCXVuc2lnbmVk
IGludCAgYmVzdFRMSSA9IDA7CisJdW5zaWduZWQgaW50ICBtaW5IQ0xLTyA9IDA7CisJdW5zaWdu
ZWQgaW50ICBtYXhIQ0xLTyA9IDA7CisJdW5zaWduZWQgaW50ICBtaW5IQ0xLSSA9IDA7CisJdW5z
aWduZWQgaW50ICB0ZW1wSENMS0kgPSAwOworCXVuc2lnbmVkIGludCAgYmVzdEhDTEtJID0gMDsK
KwlpbnQgICAgYWN0Q0xLUkFUSU87CisJdW5zaWduZWQgaW50ICBkVGVtcEhDTEtPID0gMDsKKwlk
b3VibGUgZFRlbXBWQUNUSVZFTyA9IDA7CisJZG91YmxlIGREZWx0YSA9IDA7CisJZG91YmxlIGRN
ZXRyaWMgPSAwOworCWRvdWJsZSBhbG8gPSAgdmlkc3RkYVttb2RlLT50dl9lbmNvZGluZ10ubV9k
d0FMTzsKKwlkb3VibGUgdGxvID0gIHZpZHN0ZGFbbW9kZS0+dHZfZW5jb2RpbmddLm1fVG90YWxM
aW5lc091dDsKKwlkb3VibGUgdHRvID0gdmlkc3RkYVttb2RlLT50dl9lbmNvZGluZ10ubV9kU2Vj
SHN5bmNQZXJpb2Q7CisJZG91YmxlIGF0byA9IHR0byAtICh2aWRzdGRhW21vZGUtPnR2X2VuY29k
aW5nXS5tX2RTZWNCbGFua0JlZ2luVG9Ic3luYyArIHZpZHN0ZGFbbW9kZS0+dHZfZW5jb2Rpbmdd
Lm1fZFNlY0FjdGl2ZUJlZ2luKTsKKworCS8qIFJhbmdlIHRvIHNlYXJjaCAqLworCWRvdWJsZSBk
TWluSE9DID0gbW9kZS0+aG9jIC0gMC4wMjsKKwlkb3VibGUgZE1heEhPQyA9IG1vZGUtPmhvYyAr
IDAuMDI7CisJZG91YmxlIGRNaW5WT0MgPSBtb2RlLT52b2MgLSAwLjAyOworCWRvdWJsZSBkTWF4
Vk9DID0gbW9kZS0+dm9jICsgMC4wMjsKKworCWlmIChkTWluSE9DIDwgMCkgZE1pbkhPQyA9IDA7
CisJaWYgKGRNaW5WT0MgPCAwKSBkTWluVk9DID0gMDsKKworCW1pblRMST0gKHVuc2lnbmVkIGlu
dCkobW9kZS0+eXJlcyAvICgoMSAtIGRNaW5WT0MpICogYWxvKSAqIHRsbyk7CisJbWF4VExJID0g
bWluKCh1bnNpZ25lZCBpbnQpKG1vZGUtPnlyZXMgLyAoKDEgLSBkTWF4Vk9DKSAqIGFsbykgKiB0
bG8pLCAodW5zaWduZWQgaW50KTEwMjMpOworCW1pbkhDTEtPID0gKHVuc2lnbmVkIGludCkgKCht
b2RlLT54cmVzICogMikgLworCQkJCSgoMSAtIGRNaW5IT0MpICogKGF0byAvIHR0bykpKTsKKwlt
YXhIQ0xLTyA9ICh1bnNpZ25lZCBpbnQpICgobW9kZS0+eHJlcyAqIDIpIC8KKwkJCQkoKDEgLSBk
TWF4SE9DKSAqIChhdG8gLyB0dG8pKSk7CisJZm9yIChhY3RDTEtSQVRJTyA9IDA7IGFjdENMS1JB
VElPIDw9IDE7IGFjdENMS1JBVElPKyspCisJeworCQlkVGVtcENMS1JBVElPID0gMS4wOworCQlp
ZiAoYWN0Q0xLUkFUSU8pIGRUZW1wQ0xLUkFUSU8gPSAzLjAvMi4wOworCQlmb3IodGVtcFRMSSA9
IG1pblRMSTsgdGVtcFRMSSA8PSBtYXhUTEk7IHRlbXBUTEkrKykKKwkJeworCQkJZFRlbXBWU1Ig
PSAoZG91YmxlKXRlbXBUTEkgLyB0bG87CisJCQlkVGVtcFZBQ1RJVkVPID0gKGludCkoKCgoZG91
YmxlKW1vZGUtPnlyZXMgKiB0bG8pICsKKwkJCQkJCSh0ZW1wVExJIC0gMSkpIC8gdGVtcFRMSSk7
CisJCQlkVGVtcFZPQyA9IDEgLSBkVGVtcFZBQ1RJVkVPIC8gYWxvOworCisJCQlmb3IoZFRlbXBI
Q0xLTyA9IG1pbkhDTEtPOyBkVGVtcEhDTEtPIDw9IG1heEhDTEtPOyBkVGVtcEhDTEtPKyspCisJ
CQl7CisJCQkJdGVtcEhDTEtJID0gKHVuc2lnbmVkIGludCkoKGRUZW1wSENMS08gKiBkVGVtcENM
S1JBVElPKSAqICh0bG8gLyB0ZW1wVExJKSArIDAuNSk7CisJCQkJbWluSENMS0kgPSAoKGRNaW5I
QlQgLyB0dG8pICogdGVtcEhDTEtJKSArIG1vZGUtPnhyZXM7CisJCQkJLy8gY2hlY2sgaWYgc29s
dXRpb24gaXMgdmFsaWQKKwkJCQlpZiAoKGZhYnMoKGRvdWJsZSkodGVtcFRMSSAqIHRlbXBIQ0xL
SSkgLSAodGxvICogZFRlbXBIQ0xLTyAqIGRUZW1wQ0xLUkFUSU8pKSA8IDFlLTMpICYmCisJCQkJ
CSh0ZW1wSENMS0kgPj0gbWluSENMS0kpICYmICh0ZW1wSENMS0kgPCAyMDQ4KSkKKwkJCQl7CisJ
CQkJCWRUZW1wSE9DID0gMSAtICgoKGRvdWJsZSltb2RlLT54cmVzIC8gKChkb3VibGUpZFRlbXBI
Q0xLTyAvIDIpKSAvCisJCQkJCQkoYXRvIC8gdHRvKSk7CisJCQkJCWREZWx0YSA9IGZhYnMoZFRl
bXBIT0MgLSBtb2RlLT5ob2MpICsgZmFicyhkVGVtcFZPQyAtIG1vZGUtPnZvYyk7CisJCQkJCWRN
ZXRyaWMgPSAoKGRUZW1wSE9DIC0gbW9kZS0+aG9jKSAqIChkVGVtcEhPQyAtIG1vZGUtPmhvYykp
ICsKKwkJCQkJCSgoZFRlbXBWT0MgLSBtb2RlLT52b2MpICogKGRUZW1wVk9DIC0gbW9kZS0+dm9j
KSkgKworCQkJCQkJKDIgKiBkRGVsdGEgKiBkRGVsdGEpOworCQkJCQlpZihkTWV0cmljIDwgZEJl
c3RNZXRyaWMpCisJCQkJCXsKKwkJCQkJCWRCZXN0VlNSID0gZFRlbXBWU1I7CisJCQkJCQlkQmVz
dE1ldHJpYyA9IGRNZXRyaWM7CisJCQkJCQliZXN0VExJID0gdGVtcFRMSTsKKwkJCQkJCWJlc3RI
Q0xLSSA9IHRlbXBIQ0xLSTsKKwkJCQkJCWRCZXN0Q0xLUkFUSU8gPSBkVGVtcENMS1JBVElPOwor
CQkJCQl9CisJCQkJfSAvKiB2YWxpZCBzb2x1dGlvbiAqLworCQkJfSAvKiBkVGVtcEhDTEtPIGxv
b3AgKi8KKwkJfSAvKiB0ZW1wVExJIGxvb3AgKi8KKwl9IC8qIENMS1JBVElPIGxvb3AgKi8KKwor
CWlmKGRCZXN0TWV0cmljICE9IGludmFsaWRNZXRyaWMpCisJeworCQlwYXJhbS0+dl9saW5lc2kg
PSBiZXN0VExJOworCQlwYXJhbS0+aF9jbGtpID0gYmVzdEhDTEtJOworCQlwYXJhbS0+Y2xrX3Jh
dGlvID0gZEJlc3RDTEtSQVRJTzsKKwkJcGFyYW0tPnZfYWN0aXZlbyA9ICh1bnNpZ25lZCBpbnQp
KAorCQkJKAorCQkJCShtb2RlLT55cmVzICogdmlkc3RkYVttb2RlLT50dl9lbmNvZGluZ10ubV9U
b3RhbExpbmVzT3V0KQorCQkJCSsgcGFyYW0tPnZfbGluZXNpIC0gMQorCQkJKSAvIHBhcmFtLT52
X2xpbmVzaQorCQkpOworCQlwYXJhbS0+aF9jbGtvID0gKHVuc2lnbmVkIGludCkoCisJCQkoCisJ
CQkJKHBhcmFtLT52X2xpbmVzaSAqIHBhcmFtLT5oX2Nsa2kpIC8KKwkJCQkodmlkc3RkYVttb2Rl
LT50dl9lbmNvZGluZ10ubV9Ub3RhbExpbmVzT3V0ICogcGFyYW0tPmNsa19yYXRpbykKKwkJCSkK
KwkJCSsgMC41CisJCSk7CisJCWNvbmV4YW50X2NhbGNfYmxhbmtpbmdzKG1vZGUsIHBhcmFtKTsK
KwkJcmV0dXJuIDE7CisJfQorCWVsc2UKKwl7CisJCXJldHVybiAwOworCX0KK30KKworc3RhdGlj
IHZvaWQgY29uZXhhbnRfY2FsY19ibGFua2luZ3MoCisJeGJveF92aWRlb19tb2RlICogbW9kZSwK
Kwl4Ym94X3R2X21vZGVfcGFyYW1ldGVyICogcGFyYW0KKyl7CisJZG91YmxlIGRUb3RhbEhCbGFu
a0k7CisJZG91YmxlIGRGcm9udFBvcmNoSW47CisJZG91YmxlIGRGcm9udFBvcmNoT3V0OworCWRv
dWJsZSBkTWluRnJvbnRQb3JjaEluOworCWRvdWJsZSBkQmFja1BvcmNoSW47CisJZG91YmxlIGRC
YWNrUG9yY2hPdXQ7CisJZG91YmxlIGRUb3RhbEhCbGFua087CisJZG91YmxlIGRIZWFkUm9vbTsK
Kwlkb3VibGUgZE1heEhzeW5jRHJpZnQ7CisJZG91YmxlIGRGaWZvTWFyZ2luOworCWRvdWJsZSB2
c3JxOworCWRvdWJsZSBkTWF4SFI7CisJZG91YmxlIHRsbyA9ICB2aWRzdGRhW21vZGUtPnR2X2Vu
Y29kaW5nXS5tX1RvdGFsTGluZXNPdXQ7CisJY29uc3QgaW50IE1GUCA9IDE0OyAvLyBNaW5pbXVt
IGZyb250IHBvcmNoCisJY29uc3QgaW50IE1CUCA9IDQ7ICAvLyBNaW5pbXVtIGJhY2sgcG9yY2gK
Kwljb25zdCBpbnQgRklGT19TSVpFID0gMTAyNDsKKwlkb3VibGUgdnNyID0gKGRvdWJsZSlwYXJh
bS0+dl9saW5lc2kgLyB2aWRzdGRhW21vZGUtPnR2X2VuY29kaW5nXS5tX1RvdGFsTGluZXNPdXQ7
CisKKwkvLyBIX0JMQU5LTworCXBhcmFtLT5oX2JsYW5rbyA9IDIgKiAoaW50KSgKKwkJdmlkc3Rk
YVttb2RlLT50dl9lbmNvZGluZ10ubV9kU2VjSW1hZ2VDZW50cmUgLyAoMiAqIHZpZHN0ZGFbbW9k
ZS0+dHZfZW5jb2RpbmddLm1fZFNlY0hzeW5jUGVyaW9kKSAqCisJCXBhcmFtLT5oX2Nsa28KKwkJ
KyAwLjUKKwkpIC0gbW9kZS0+eHJlcyArIDE1OworCisJLy8gVl9CTEFOS08KKwlzd2l0Y2ggKG1v
ZGUtPnR2X2VuY29kaW5nKSB7CisJCWNhc2UgVFZfRU5DX05UU0M6CisJCWNhc2UgVFZfRU5DX05U
U0M2MDoKKwkJY2FzZSBUVl9FTkNfUEFMNjA6CisJCWNhc2UgVFZfRU5DX1BBTE06CisJCQlwYXJh
bS0+dl9ibGFua28gPSAoaW50KSggMTQwIC0gKCBwYXJhbS0+dl9hY3RpdmVvIC8gMi4wICkgKyAw
LjUgKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJcGFyYW0tPnZfYmxhbmtvID0gKGludCko
IDE2NyAtICggcGFyYW0tPnZfYWN0aXZlbyAvIDIuMCApICsgMC41ICk7CisJCQlicmVhazsKKwl9
CisKKwkvLyBWX0JMQU5LSQorCXZzcnEgPSAoIChpbnQpKCB2c3IgKiA0MDk2LjAgKyAuNSApICkg
LyA0MDk2LjA7CisJcGFyYW0tPnZzY2FsZSA9IChpbnQpKCAoIHZzciAtIDEgKSAqIDQwOTYgKyAw
LjUgKTsKKwlpZiggdnNycSA8IHZzciApCisJeworCS8vIFRoZXNlIGNhbGN1bGF0aW9ucyBhcmUg
aW4gdW5pdHMgb2YgZEhDTEtPCisJCWRNYXhIc3luY0RyaWZ0ID0gKCB2c3JxIC0gdnNyICkgKiB0
bG8gLyB2c3IgKiBwYXJhbS0+aF9jbGtvOworCQlkTWluRnJvbnRQb3JjaEluID0gTUZQIC8gKCAo
ZG91YmxlKXBhcmFtLT5oX2Nsa2kgKiB2c3IgKSAqIHBhcmFtLT5oX2Nsa287CisJCWRGcm9udFBv
cmNoT3V0ID0gcGFyYW0tPmhfY2xrbyAtIHBhcmFtLT5oX2JsYW5rbyAtIG1vZGUtPnhyZXMgKiAy
OworCQlkRmlmb01hcmdpbiA9ICggRklGT19TSVpFIC0gbW9kZS0+eHJlcyApICogMjsKKworCQkv
LyBDaGVjayBmb3IgZmlmbyBvdmVyZmxvdworCQlpZiggZEZyb250UG9yY2hPdXQgKyBkRmlmb01h
cmdpbiA8IC1kTWF4SHN5bmNEcmlmdCArIGRNaW5Gcm9udFBvcmNoSW4gKQorCQl7CisJCQlkVG90
YWxIQmxhbmtPID0gcGFyYW0tPmhfY2xrbyAtIG1vZGUtPnhyZXMgKiAyOworCQkJZFRvdGFsSEJs
YW5rSSA9ICggKGRvdWJsZSlwYXJhbS0+aF9jbGtpIC0gKGRvdWJsZSltb2RlLT54cmVzICkgLyBw
YXJhbS0+aF9jbGtpIC8gdnNyICogcGFyYW0tPmhfY2xrbzsKKworCQkJLy8gVHJ5IGZvcmNpbmcg
dGhlIEhzeW5jIGRyaWZ0IHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24KKwkJCWRNYXhIc3luY0RyaWZ0
ID0gKCB2c3JxICsgMS4wIC8gNDA5NiAtIHZzciApICogdGxvIC8gdnNyICogcGFyYW0tPmhfY2xr
bzsKKworCQkJLy8gQ2hlY2sgdGhhdCBmaWZvIG92ZXJmbG93IGFuZCB1bmRlcmZsb3cgY2FuIGJl
IGF2b2lkZWQKKwkJCWlmKCBkVG90YWxIQmxhbmtPICsgZEZpZm9NYXJnaW4gPj0gZFRvdGFsSEJs
YW5rSSArIGRNYXhIc3luY0RyaWZ0ICkKKwkJCXsKKwkJCQl2c3JxID0gdnNycSArIDEuMCAvIDQw
OTY7CisJCQkJcGFyYW0tPnZzY2FsZSA9IChpbnQpKCAoIHZzcnEgLSAxICkgKiA0MDk2ICk7CisJ
CQl9CisKKwkJCS8vIE5PVEU6IElmIGZpZm8gb3ZlcmZsb3cgYW5kIHVuZGVyZmxvdyBjYW4ndCBi
ZSBhdm9pZGVkLAorCQkJLy8gICAgICAgYWx0ZXJuYXRpdmUgb3ZlcnNjYW4gY29tcGVuc2F0aW9u
IHJhdGlvcyBzaG91bGQKKwkJCS8vICAgICAgIGJlIHNlbGVjdGVkIGFuZCBhbGwgY2FsY3VsYXRp
b25zIHJlcGVhdGVkLiAgSWYKKwkJCS8vICAgICAgIHRoYXQgaXMgbm90IGZlYXNpYmxlLCB0aGUg
Y2FsY3VsYXRpb25zIGZvcgorCQkJLy8gICAgICAgSF9CTEFOS0kgYmVsb3cgd2lsbCBkZWxheSB0
aGUgb3ZlcmZsb3cgb3IgdW5kZXItCisJCQkvLyAgICAgICBmbG93IGFzIG11Y2ggYXMgcG9zc2li
bGUsIHRvIG1pbmltaXplIHRoZSB2aXNpYmxlCisJCQkvLyAgICAgICBhcnRpZmFjdHMuCisJCX0K
Kwl9CisKKwlwYXJhbS0+dl9ibGFua2kgPSAoaW50KSggKCBwYXJhbS0+dl9ibGFua28gLSAxICkg
KiB2c3JxICk7CisKKwkvLyBIX0JMQU5LSQorCisJLy8gVGhlc2UgY2FsY3VsYXRpb25zIGFyZSBp
biB1bml0cyBvZiBkSENMS0kKKwlkVG90YWxIQmxhbmtJID0gcGFyYW0tPmhfY2xraSAtIG1vZGUt
PnhyZXM7CisJZEZyb250UG9yY2hJbiA9IG1heCggKGRvdWJsZSlNRlAsIG1pbiggZFRvdGFsSEJs
YW5rSSAvIDguMCwgZFRvdGFsSEJsYW5rSSAtIChkb3VibGUpTUJQICkgKTsKKwlkQmFja1BvcmNo
SW4gPSBkVG90YWxIQmxhbmtJIC0gZEZyb250UG9yY2hJbjsKKwlkTWF4SHN5bmNEcmlmdCA9ICgg
dnNycSAtIHZzciApICogdGxvICogcGFyYW0tPmhfY2xraTsKKwlkVG90YWxIQmxhbmtPID0gKCBw
YXJhbS0+aF9jbGtvIC0gbW9kZS0+eHJlcyAqIDIuMCApIC8gcGFyYW0tPmhfY2xrbyAqIHZzciAq
IHBhcmFtLT5oX2Nsa2k7CisJZEJhY2tQb3JjaE91dCA9ICgoZG91YmxlKXBhcmFtLT5oX2JsYW5r
bykgLyAoZG91YmxlKXBhcmFtLT5oX2Nsa28gKiB2c3IgKiBwYXJhbS0+aF9jbGtpOworCWRGcm9u
dFBvcmNoT3V0ID0gZFRvdGFsSEJsYW5rTyAtIGRCYWNrUG9yY2hPdXQ7CisJZEZpZm9NYXJnaW4g
PSAoIEZJRk9fU0laRSAtIG1vZGUtPnhyZXMgKSAqIDIuMCAvIHBhcmFtLT5oX2Nsa28gKiB2c3Ig
KiBwYXJhbS0+aF9jbGtpOworCS8vIFRoaXMgbWF5IGJlIGV4Y2Vzc2l2ZSwgYnV0IGlzIGFkanVz
dGVkIGJ5IHRoZSBjb2RlLgorCWRIZWFkUm9vbSA9IDMyLjA7CisKKwkvLyBDaGVjayB0aGF0IGZp
Zm8gb3ZlcmZsb3cgYW5kIHVuZGVyZmxvdyBjYW4gYmUgYXZvaWRlZAorCWlmKCAoIGRUb3RhbEhC
bGFua08gKyBkRmlmb01hcmdpbiApID49ICggZFRvdGFsSEJsYW5rSSArIGZhYnMoIGRNYXhIc3lu
Y0RyaWZ0ICkgKSApCisJeworCQlkTWF4SFIgPSAoIGRUb3RhbEhCbGFua08gKyBkRmlmb01hcmdp
biApIC0gKCBkVG90YWxIQmxhbmtJIC0gZmFicyggZE1heEhzeW5jRHJpZnQgKSApOworCQlpZigg
ZE1heEhSIDwgKCBkSGVhZFJvb20gKiAyLjAgKSApCisJCXsKKwkJCWRIZWFkUm9vbSA9IChpbnQp
KCBkTWF4SFIgLyAyLjApOworCQl9CisKKwkJLy8gQ2hlY2sgZm9yIG92ZXJmbG93CisJCWlmKCAo
ICggZEZyb250UG9yY2hPdXQgKyBkRmlmb01hcmdpbiApIC0gZEhlYWRSb29tICkgPCAoIGRGcm9u
dFBvcmNoSW4gLSBtaW4oIGRNYXhIc3luY0RyaWZ0LCAwLjAgKSApICkKKwkJeworCQkJZEZyb250
UG9yY2hJbiA9IG1heCggKGRvdWJsZSlNRlAsICggZEZyb250UG9yY2hPdXQgKyBkRmlmb01hcmdp
biArIG1pbiggZE1heEhzeW5jRHJpZnQsIDAuMCApIC0gZEhlYWRSb29tICkgKTsKKwkJCWRCYWNr
UG9yY2hJbiA9IGRUb3RhbEhCbGFua0kgLSBkRnJvbnRQb3JjaEluOworCQl9CisKKwkJLy8gQ2hl
Y2sgZm9yIHVuZGVyZmxvdworCQlpZiggZEJhY2tQb3JjaE91dCAtIGRIZWFkUm9vbSA8IGRCYWNr
UG9yY2hJbiArIG1heCggZE1heEhzeW5jRHJpZnQsIDAuMCApICkKKwkJeworCQkJZEJhY2tQb3Jj
aEluID0gbWF4KCAoZG91YmxlKU1CUCwgKCBkQmFja1BvcmNoT3V0IC0gbWF4KCBkTWF4SHN5bmNE
cmlmdCwgMC4wICkgLSBkSGVhZFJvb20gKSApOworCQkJZEZyb250UG9yY2hJbiA9IGRUb3RhbEhC
bGFua0kgLSBkQmFja1BvcmNoSW47CisJCX0KKwl9CisJZWxzZSBpZiggZE1heEhzeW5jRHJpZnQg
PCAwICkKKwl7CisJCS8vIERlbGF5IHRoZSBvdmVyZmxvdyBhcyBsb25nIGFzIHBvc3NpYmxlCisJ
CWRCYWNrUG9yY2hJbiA9IG1pbiggKCBkQmFja1BvcmNoT3V0IC0gMSApLCAoIGRUb3RhbEhCbGFu
a0kgLSBNRlAgKSApOworCQlkRnJvbnRQb3JjaEluID0gZFRvdGFsSEJsYW5rSSAtIGRCYWNrUG9y
Y2hJbjsKKwl9CisJZWxzZQorCXsKKwkJLy8gRGVsYXkgdGhlIHVuZGVyZmxvdyBhcyBsb25nIGFz
IHBvc3NpYmxlCisJCWRGcm9udFBvcmNoSW4gPSBtaW4oICggZEZyb250UG9yY2hPdXQgKyBkRmlm
b01hcmdpbiAtIDEgKSwgKCBkVG90YWxIQmxhbmtJIC0gTUJQICkgKTsKKwkJZEJhY2tQb3JjaElu
ID0gZFRvdGFsSEJsYW5rSSAtIGRGcm9udFBvcmNoSW47CisJfQorCisJcGFyYW0tPmhfYmxhbmtp
ID0gKGludCkoIGRCYWNrUG9yY2hJbiApOworCit9CmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmln
L2RyaXZlcnMvdmlkZW8veGJveC9jb25leGFudC5oIGxpbnV4LTIuNi41L2RyaXZlcnMvdmlkZW8v
eGJveC9jb25leGFudC5oCi0tLSBsaW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvdmlkZW8veGJveC9j
b25leGFudC5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0y
LjYuNS9kcml2ZXJzL3ZpZGVvL3hib3gvY29uZXhhbnQuaAkyMDA0LTA1LTAxIDE1OjIwOjQzLjAw
MDAwMDAwMCArMDEwMApAQCAtMCwwICsxLDI4IEBACisvKgorICogbGludXgvZHJpdmVycy92aWRl
by9yaXZhL2NvbmV4YW50LmggLSBYYm94IGRyaXZlciBmb3IgY29uZXhhbnQgY2hpcAorICoKKyAq
IE1haW50YWluZXI6IE9saXZlciBTY2h3YXJ0eiA8T2xpdmVyLlNjaHdhcnR6QGdteC5kZT4KKyAq
CisgKiBDb250cmlidXRvcnM6CisgKgorICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRl
cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Uu
ICBTZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNo
aXZlCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIEtub3duIGJ1Z3MgYW5kIGlzc3VlczoK
KyAqCisgKiAgICAgIG5vbmUKKyAqLworCisjaWZuZGVmIGNvbmV4YW50X2gKKyNkZWZpbmUgY29u
ZXhhbnRfaAorCisjaW5jbHVkZSA8bGludXgveGJveGZiY3RsLmg+CisjaW5jbHVkZSAieGJveGZi
LmgiCisjaW5jbHVkZSAiZW5jb2Rlci5oIgorCitpbnQgY29uZXhhbnRfY2FsY19tb2RlKHhib3hf
dmlkZW9fbW9kZSAqIG1vZGUsIHN0cnVjdCByaXZhX3JlZ3MgKiByaXZhX291dCk7CitpbnQgY29u
ZXhhbnRfY2FsY192Z2FfbW9kZSh4Ym94X2F2X3R5cGUgYXZfdHlwZSwgdW5zaWduZWQgY2hhciBw
bGxfaW50LCB1bnNpZ25lZCBjaGFyICogbW9kZV9vdXQpOworaW50IGNvbmV4YW50X2NhbGNfaGR0
dl9tb2RlKHhib3hfaGR0dl9tb2RlIGhkdHZfbW9kZSwgdW5zaWduZWQgY2hhciBwbGxfaW50LCB1
bnNpZ25lZCBjaGFyICogbW9kZV9vdXQpOworCisjZW5kaWYKZGlmZiAtdXJOIGxpbnV4LTIuNi41
Lm9yaWcvZHJpdmVycy92aWRlby94Ym94L2VuY29kZXItaTJjLmMgbGludXgtMi42LjUvZHJpdmVy
cy92aWRlby94Ym94L2VuY29kZXItaTJjLmMKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy92
aWRlby94Ym94L2VuY29kZXItaTJjLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAx
MDAKKysrIGxpbnV4LTIuNi41L2RyaXZlcnMvdmlkZW8veGJveC9lbmNvZGVyLWkyYy5jCTIwMDQt
MDUtMDEgMTU6MjA6NDMuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsMTczIEBACisvKgorICog
bGludXgvZHJpdmVycy92aWRlby9yaXZhL2VuY29kZXItaTJjLmMgLSBYYm94IEkyQyBkcml2ZXIg
Zm9yIGVuY29kZXIgY2hpcAorICoKKyAqIE1haW50YWluZXI6IE9saXZlciBTY2h3YXJ0eiA8T2xp
dmVyLlNjaHdhcnR6QGdteC5kZT4KKyAqCisgKiBDb250cmlidXRvcnM6CisgKgorICogTW9zdCBv
ZiB0aGUgY29kZSB3YXMgc3RvbGVuIGZyb20gZXh0c21pLmMKKyAqIAorICogVGhpcyBmaWxlIGlz
IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UuICBTZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgbWFpbiBkaXJl
Y3Rvcnkgb2YgdGhpcyBhcmNoaXZlCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIEtub3du
IGJ1Z3MgYW5kIGlzc3VlczoKKyAqCisgKiAgICAgIG5vbmUKKyAqLworCisjaW5jbHVkZSA8bGlu
dXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvaW5p
dC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisKKyNkZWZpbmUgQ09ORVhBTlRfQUREUkVT
UyAweDQ1CisjZGVmaW5lIEZPQ1VTX0FERFJFU1MgMHg2YQorI2RlZmluZSBFRVBST01fQUREUkVT
UyAweDU0CisjZGVmaW5lIFBJQ19BRERSRVNTIDB4MTAKKworI2RlZmluZSBEUklWRVJfTkFNRSAi
eGJveC10di1pMmMiCisKK2V4dGVybiBpbnQgX19pbml0IGkyY194Ym94X2luaXQodm9pZCk7CisK
K3N0YXRpYyBpbnQgdHZfYXR0YWNoX2FkYXB0ZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwKTsK
Kworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHR2X2RyaXZlciA9IHsKKwkubmFtZQkJPSAiaTJj
IHhib3ggY29uZXhhbnQgZHJpdmVyIiwKKwkuaWQJCT0gSTJDX0RSSVZFUklEX0kyQ0RFViwKKwku
ZmxhZ3MJCT0gSTJDX0RGX05PVElGWSwKKwkuYXR0YWNoX2FkYXB0ZXIJPSB0dl9hdHRhY2hfYWRh
cHRlciwKK307CisKK3N0YXRpYyBzdHJ1Y3QgaTJjX2NsaWVudCBwaWNfY2xpZW50ID0geworCS5u
YW1lCQk9ICJJMkMgeGJveCBwaWMgY2xpZW50IiwKKwkuaWQJCT0gMiwKKwkuZmxhZ3MJCT0gMCwK
KwkuYWRkcgkJPSBQSUNfQUREUkVTUywKKwkuYWRhcHRlcgk9IE5VTEwsCisJLmRyaXZlcgkJPSAm
dHZfZHJpdmVyLAorfTsKKworc3RhdGljIHN0cnVjdCBpMmNfY2xpZW50IGNvbmV4YW50X2NsaWVu
dCA9IHsKKwkubmFtZQkJPSAiSTJDIHhib3ggY29uZXhhbnQgY2xpZW50IiwKKwkuaWQJCT0gMSwK
KwkuZmxhZ3MJCT0gMCwKKwkuYWRkcgkJPSBDT05FWEFOVF9BRERSRVNTLAorCS5hZGFwdGVyCT0g
TlVMTCwKKwkuZHJpdmVyCQk9ICZ0dl9kcml2ZXIsCit9OworCitzdGF0aWMgc3RydWN0IGkyY19j
bGllbnQgZm9jdXNfY2xpZW50ID0geworCS5uYW1lCQk9ICJJMkMgeGJveCBmb2N1cyBjbGllbnQi
LAorCS5pZAkJPSAxLAorCS5mbGFncwkJPSAwLAorCS5hZGRyCQk9IEZPQ1VTX0FERFJFU1MsCisJ
LmFkYXB0ZXIJPSBOVUxMLAorCS5kcml2ZXIJCT0gJnR2X2RyaXZlciwKK307CisKK3N0YXRpYyBz
dHJ1Y3QgaTJjX2NsaWVudCBlZXByb21fY2xpZW50ID0geworCS5uYW1lCQk9ICJJMkMgeGJveCBl
ZXByb20gY2xpZW50IiwKKwkuaWQJCT0gMywKKwkuZmxhZ3MJCT0gMCwKKwkuYWRkcgkJPSBFRVBS
T01fQUREUkVTUywKKwkuYWRhcHRlcgk9IE5VTEwsCisJLmRyaXZlcgkJPSAmdHZfZHJpdmVyLAor
fTsKKworc3RhdGljIGludCB0dl9hdHRhY2hfYWRhcHRlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFk
YXApCit7CisJaW50IGk7CisKKwlpZiAoKGkgPSBpMmNfYWRhcHRlcl9pZChhZGFwKSkgPCAwKSB7
CisJCXByaW50aygiaTJjLWRldi5vOiBVbmtub3duIGFkYXB0ZXIgPyE/XG4iKTsKKwkJcmV0dXJu
IC1FTk9ERVY7CisJfQorCisJcHJpbnRrKEtFUk5fSU5GTyBEUklWRVJfTkFNRSAiOiBVc2luZyAn
JXMnIVxuIixhZGFwLT5uYW1lKTsKKwlmb2N1c19jbGllbnQuYWRhcHRlciA9IGFkYXA7CisJY29u
ZXhhbnRfY2xpZW50LmFkYXB0ZXIgPSBhZGFwOworCXBpY19jbGllbnQuYWRhcHRlciA9IGFkYXA7
CisJZWVwcm9tX2NsaWVudC5hZGFwdGVyID0gYWRhcDsKKwlpMmNfYXR0YWNoX2NsaWVudCgmZm9j
dXNfY2xpZW50KTsKKwlpMmNfYXR0YWNoX2NsaWVudCgmY29uZXhhbnRfY2xpZW50KTsKKwlpMmNf
YXR0YWNoX2NsaWVudCgmcGljX2NsaWVudCk7CisJaTJjX2F0dGFjaF9jbGllbnQoJmVlcHJvbV9j
bGllbnQpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCB0dl9pMmNfaW5pdCh2b2lkKSB7CisJaW50
IHJlczsKKwlpMmNfeGJveF9pbml0KCk7CisJaWYgKChyZXMgPSBpMmNfYWRkX2RyaXZlcigmdHZf
ZHJpdmVyKSkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIERSSVZFUl9OQU1FICI6IFhCb3ggdHYgZHJp
dmVyIHJlZ2lzdHJhdGlvbiBmYWlsZWQuXG4iKTsKKwkJcmV0dXJuIHJlczsKKwl9CisJcmV0dXJu
IDA7Cit9CisKK2ludCBjb25leGFudF9pMmNfcmVhZF9yZWcodW5zaWduZWQgY2hhciBhZHIpIHsK
KwlpZiAoIWNvbmV4YW50X2NsaWVudC5hZGFwdGVyKSB7CisJCXByaW50ayhLRVJOX0VSUiBEUklW
RVJfTkFNRSAiIDogTm8gY29uZXhhbnQgY2xpZW50IGF0dGFjaGVkLlxuIik7CisJCXJldHVybiAt
MTsKKwl9CisJdWRlbGF5KDUwMCk7CisJcmV0dXJuIGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YSgm
Y29uZXhhbnRfY2xpZW50LCBhZHIpOworfQorCitpbnQgY29uZXhhbnRfaTJjX3dyaXRlX3JlZyh1
bnNpZ25lZCBjaGFyIGFkciwgdW5zaWduZWQgY2hhciB2YWx1ZSkgeworCWlmICghY29uZXhhbnRf
Y2xpZW50LmFkYXB0ZXIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIERSSVZFUl9OQU1FICIgOiBObyBj
b25leGFudCBjbGllbnQgYXR0YWNoZWQuXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwl1ZGVsYXko
NTAwKTsKKwlyZXR1cm4gaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YSgmY29uZXhhbnRfY2xpZW50
LCBhZHIsIHZhbHVlKTsKK30KKworaW50IGZvY3VzX2kyY19yZWFkX3JlZyh1bnNpZ25lZCBjaGFy
IGFkcikgeworCWlmICghZm9jdXNfY2xpZW50LmFkYXB0ZXIpIHsKKwkJcHJpbnRrKEtFUk5fRVJS
IERSSVZFUl9OQU1FICIgOiBObyBmb2N1cyBjbGllbnQgYXR0YWNoZWQuXG4iKTsKKwkJcmV0dXJu
IC0xOworCX0KKwl1ZGVsYXkoNTAwKTsKKwlyZXR1cm4gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRh
KCZmb2N1c19jbGllbnQsIGFkcik7Cit9CisKK2ludCBmb2N1c19pMmNfd3JpdGVfcmVnKHVuc2ln
bmVkIGNoYXIgYWRyLCB1bnNpZ25lZCBjaGFyIHZhbHVlKSB7CisJaWYgKCFmb2N1c19jbGllbnQu
YWRhcHRlcikgeworCQlwcmludGsoS0VSTl9FUlIgRFJJVkVSX05BTUUgIiA6IE5vIGZvY3VzIGNs
aWVudCBhdHRhY2hlZC5cbiIpOworCQlyZXR1cm4gLTE7CisJfQorCXVkZWxheSg1MDApOworCXJl
dHVybiBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKCZmb2N1c19jbGllbnQsIGFkciwgdmFsdWUp
OworfQorCit1bnNpZ25lZCBjaGFyIHBpY19pMmNfcmVhZF9yZWcodW5zaWduZWQgY2hhciBhZHIp
IHsKKwlpZiAoIXBpY19jbGllbnQuYWRhcHRlcikgeworCQlwcmludGsoS0VSTl9FUlIgRFJJVkVS
X05BTUUgIiA6IE5vIHBpYyBjbGllbnQgYXR0YWNoZWQuXG4iKTsKKwkJcmV0dXJuIDA7CisJfQor
CXVkZWxheSg1MDApOworCXJldHVybiAodW5zaWduZWQgY2hhcilpMmNfc21idXNfcmVhZF9ieXRl
X2RhdGEoJnBpY19jbGllbnQsIGFkcik7Cit9CisKK3Vuc2lnbmVkIGNoYXIgZWVwcm9tX2kyY19y
ZWFkKHVuc2lnbmVkIGNoYXIgYWRyKSB7CisJaWYgKCFlZXByb21fY2xpZW50LmFkYXB0ZXIpIHsK
KwkJcHJpbnRrKEtFUk5fRVJSIERSSVZFUl9OQU1FICIgOiBObyBlZXByb20gY2xpZW50IGF0dGFj
aGVkLlxuIik7CisJCXJldHVybiAwOworCX0KKwl1ZGVsYXkoNTAwKTsKKwlyZXR1cm4gKHVuc2ln
bmVkIGNoYXIpaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKCZlZXByb21fY2xpZW50LCBhZHIpOwor
fQorCit2b2lkIHR2X2kyY19leGl0KHZvaWQpeworCWludCByZXM7CisJCisJaWYgKChyZXMgPSBp
MmNfZGVsX2RyaXZlcigmdHZfZHJpdmVyKSkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIERSSVZFUl9O
QU1FICI6IFhCb3ggdHYgRHJpdmVyIGRlcmVnaXN0cmF0aW9uIGZhaWxlZCwgIgorCQkgICAgICAg
Im1vZHVsZSBub3QgcmVtb3ZlZC5cbiIpOworCX0KKwlyZXR1cm47Cit9CisKZGlmZiAtdXJOIGxp
bnV4LTIuNi41Lm9yaWcvZHJpdmVycy92aWRlby94Ym94L2VuY29kZXItaTJjLmggbGludXgtMi42
LjUvZHJpdmVycy92aWRlby94Ym94L2VuY29kZXItaTJjLmgKLS0tIGxpbnV4LTIuNi41Lm9yaWcv
ZHJpdmVycy92aWRlby94Ym94L2VuY29kZXItaTJjLmgJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAw
MDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2RyaXZlcnMvdmlkZW8veGJveC9lbmNvZGVyLWky
Yy5oCTIwMDQtMDUtMDEgMTU6MjA6NDMuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsMjkgQEAK
Ky8qCisgKiBsaW51eC9kcml2ZXJzL3ZpZGVvL3JpdmEvZW5jb2Rlci1pMmMuaCAtIFhib3ggSTJD
IGRyaXZlciBmb3IgZW5jb2RlciBjaGlwCisgKgorICogTWFpbnRhaW5lcjogT2xpdmVyIFNjaHdh
cnR6IDxPbGl2ZXIuU2Nod2FydHpAZ214LmRlPgorICoKKyAqIENvbnRyaWJ1dG9yczoKKyAqIAor
ICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UuICBTZWUgdGhlIGZpbGUgQ09QWUlORyBp
biB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCisgKiBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIEtub3duIGJ1Z3MgYW5kIGlzc3VlczoKKyAqCisgKiAgICAgIG5vbmUKKyAqLwor
IAorI2lmbmRlZiBlbmNvZGVyX2kyY19oCisjZGVmaW5lIGVuY29kZXJfaTJjX2gKKworaW50IHR2
X2kyY19pbml0KHZvaWQpOwordm9pZCB0dl9pMmNfZXhpdCh2b2lkKTsKK2ludCBjb25leGFudF9p
MmNfcmVhZF9yZWcodW5zaWduZWQgY2hhciBhZHIpOworaW50IGNvbmV4YW50X2kyY193cml0ZV9y
ZWcodW5zaWduZWQgY2hhciBhZHIsIHVuc2lnbmVkIGNoYXIgdmFsdWUpOworaW50IGZvY3VzX2ky
Y19yZWFkX3JlZyh1bnNpZ25lZCBjaGFyIGFkcik7CitpbnQgZm9jdXNfaTJjX3dyaXRlX3JlZyh1
bnNpZ25lZCBjaGFyIGFkciwgdW5zaWduZWQgY2hhciB2YWx1ZSk7Cit1bnNpZ25lZCBjaGFyIHBp
Y19pMmNfcmVhZF9yZWcodW5zaWduZWQgY2hhciBhZHIpOwordW5zaWduZWQgY2hhciBlZXByb21f
aTJjX3JlYWQodW5zaWduZWQgY2hhciBhZHIpOworCisjZW5kaWYKZGlmZiAtdXJOIGxpbnV4LTIu
Ni41Lm9yaWcvZHJpdmVycy92aWRlby94Ym94L2VuY29kZXIuYyBsaW51eC0yLjYuNS9kcml2ZXJz
L3ZpZGVvL3hib3gvZW5jb2Rlci5jCi0tLSBsaW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvdmlkZW8v
eGJveC9lbmNvZGVyLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxp
bnV4LTIuNi41L2RyaXZlcnMvdmlkZW8veGJveC9lbmNvZGVyLmMJMjAwNC0wNS0wMSAxNToyMDo0
My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgKiBsaW51eC9kcml2ZXJz
L3ZpZGVvL3JpdmEvZW5jb2Rlci5jIC0gWGJveCBkcml2ZXIgZm9yIGVuY29kZXIgY2hpcAorICoK
KyAqIE1haW50YWluZXI6IE9saXZlciBTY2h3YXJ0eiA8T2xpdmVyLlNjaHdhcnR6QGdteC5kZT4K
KyAqCisgKiBDb250cmlidXRvcnM6CisgKgorICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhl
IHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UuICBTZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBh
cmNoaXZlCisgKiBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIEtub3duIGJ1Z3MgYW5kIGlzc3Vl
czoKKyAqCisgKiAgICAgIG5vbmUKKyAqLworCisjaW5jbHVkZSAiZW5jb2Rlci1pMmMuaCIKKyNp
bmNsdWRlICJlbmNvZGVyLmgiCisjaW5jbHVkZSAiZm9jdXMuaCIKKyNpbmNsdWRlIDxhc20vaW8u
aD4KKworI2RlZmluZSBBRFIoeCkgKHggLyAyIC0gMHgxNykKKworc3RhdGljIGNvbnN0IGNvbmV4
YW50X3ZpZGVvX3BhcmFtZXRlciB2aWRzdGRhW10gPSB7CisJeyAzNTc5NTQ1LjAwLCAwLjAwMDAw
NTMsIDAuMDAwMDA3ODIsIDAuMDAwMDA0NywgMC4wMDAwNjM1NTUsIDAuMDAwMDA5NCwgMC4wMDAw
MzU2NjcsIDAuMDAwMDAxNSwgMjQzLCAyNjIuNSwgMC4wMDAwMDkyIH0sCisJeyAzNTc5NTQ1LjAw
LCAwLjAwMDAwNTMsIDAuMDAwMDA3ODIsIDAuMDAwMDA0NywgMC4wMDAwNjQwMDAsIDAuMDAwMDA5
NCwgMC4wMDAwMzU2NjcsIDAuMDAwMDAxNSwgMjQzLCAyNjIuNSwgMC4wMDAwMDkyIH0sCisJeyA0
NDMzNjE4Ljc1LCAwLjAwMDAwNTYsIDAuMDAwMDA3ODUsIDAuMDAwMDA0NywgMC4wMDAwNjQwMDAs
IDAuMDAwMDEwNSwgMC4wMDAwMzY0MDcsIDAuMDAwMDAxNSwgMjg4LCAzMTIuNSwgMC4wMDAwMTA1
IH0sCisJeyA0NDMzNjE4Ljc1LCAwLjAwMDAwNTYsIDAuMDAwMDA3ODUsIDAuMDAwMDA0NywgMC4w
MDAwNjQwMDAsIDAuMDAwMDA5NCwgMC4wMDAwMzU2NjcsIDAuMDAwMDAxNSwgMjg4LCAzMTIuNSwg
MC4wMDAwMDkyIH0sCisJeyAzNTgyMDU2LjI1LCAwLjAwMDAwNTYsIDAuMDAwMDA4MTEsIDAuMDAw
MDA0NywgMC4wMDAwNjQwMDAsIDAuMDAwMDEwNSwgMC4wMDAwMzY0MDcsIDAuMDAwMDAxNSwgMjg4
LCAzMTIuNSwgMC4wMDAwMTA1IH0sCisJeyAzNTc1NjExLjg4LCAwLjAwMDAwNTgsIDAuMDAwMDA4
MzIsIDAuMDAwMDA0NywgMC4wMDAwNjM1NTUsIDAuMDAwMDA5NCwgMC4wMDAwMzU2NjcsIDAuMDAw
MDAxNSwgMjQzLCAyNjIuNSwgMC4wMDAwMDkyIH0sCisJeyA0NDMzNjE5LjQ5LCAwLjAwMDAwNTMs
IDAuMDAwMDA3NTUsIDAuMDAwMDA0NywgMC4wMDAwNjM1NTUsIDAuMDAwMDEwNSwgMC4wMDAwMzY0
MDcsIDAuMDAwMDAxNSwgMjQzLCAyNjIuNSwgMC4wMDAwMDkyIH0KK307CisKKworc3RhdGljIGNv
bnN0IGRvdWJsZSBwbGxfYmFzZSA9IDEzLjVlNjsKKworeGJveF9lbmNvZGVyX3R5cGUgdHZfZ2V0
X3ZpZGVvX2VuY29kZXIodm9pZCkgeworCXVuc2lnbmVkIGNoYXIgYiA9IDA7CisJeGJveF9lbmNv
ZGVyX3R5cGUgZW5jb2RlciA9IDA7CisKKwliID0gY29uZXhhbnRfaTJjX3JlYWRfcmVnKDB4MDAp
OworCWlmKGIgIT0gMjU1KSB7CisJCWVuY29kZXIgPSBFTkNPREVSX0NPTkVYQU5UOworCX0KKwli
ID0gZm9jdXNfaTJjX3JlYWRfcmVnKDB4MDApOworCWlmKGIgIT0gMjU1KSB7CisJCWVuY29kZXIg
PSBFTkNPREVSX0ZPQ1VTOworCX0KKwlyZXR1cm4gZW5jb2RlcjsKK30KKworaW50IHR2X2luaXQo
dm9pZCkgeworCXJldHVybiB0dl9pMmNfaW5pdCgpOworfQorCit2b2lkIHR2X2V4aXQodm9pZCkg
eworCXR2X2kyY19leGl0KCk7Cit9CisKK3ZvaWQgdHZfbG9hZF9tb2RlKHVuc2lnbmVkIGNoYXIg
KiBtb2RlKSB7CisJaW50IG4sIG4xOworCXVuc2lnbmVkIGNoYXIgYjsKKwlpbnQgZW5jb2RlciA9
IDA7CisJCisJZW5jb2RlciA9IHR2X2dldF92aWRlb19lbmNvZGVyKCk7CisKKwlpZihlbmNvZGVy
ID09IEVOQ09ERVJfQ09ORVhBTlQpIHsKKwkJY29uZXhhbnRfaTJjX3dyaXRlX3JlZygweGM0LCAw
eDAwKTsgLy8gRU5fT1VUID0gMQorCisJCS8vIENvbmV4YW50IGluaXQgKHN0YXJ0cyBhdCByZWdp
c3RlciAweDJlKQorCQluMT0wOworCQlmb3Iobj0weDJlO248MHgxMDA7bis9MikgeworCQkJc3dp
dGNoKG4pIHsKKwkJCQljYXNlIDB4NmM6IC8vIHJlc2V0CisJCQkJCWNvbmV4YW50X2kyY193cml0
ZV9yZWcobiwgbW9kZVtuMV0gJiAweDdmKTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAweGM0OiAv
LyBFTl9PVVQKKwkJCQkJY29uZXhhbnRfaTJjX3dyaXRlX3JlZyhuLCBtb2RlW24xXSAmIDB4ZmUp
OworCQkJCQlicmVhazsKKwkJCQljYXNlIDB4Yjg6IC8vIGF1dG9jb25maWcKKwkJCQkJYnJlYWs7
CisKKwkJCQlkZWZhdWx0OgorCQkJCQljb25leGFudF9pMmNfd3JpdGVfcmVnKG4sIG1vZGVbbjFd
KTsKKwkJCQkJYnJlYWs7CisJCQl9CisJCQluMSsrOworCQl9CisJCS8vIFRpbWluZyBSZXNldAor
CQliPWNvbmV4YW50X2kyY19yZWFkX3JlZygweDZjKSAmICgweDdmKTsKKwkJY29uZXhhbnRfaTJj
X3dyaXRlX3JlZygweDZjLCAweDgwfGIpOworCQliPWNvbmV4YW50X2kyY19yZWFkX3JlZygweGM0
KSAmICgweGZlKTsKKwkJY29uZXhhbnRfaTJjX3dyaXRlX3JlZygweGM0LCAweDAxfGIpOyAvLyBF
Tl9PVVQgPSAxCisJCQorCQkvKgorCQljb25leGFudF9pMmNfd3JpdGVfcmVnKDB4QTgsICgweEQ5
LzEuMykpOworCQljb25leGFudF9pMmNfd3JpdGVfcmVnKDB4QUEsICgweDlBLzEuMykpOworCQlj
b25leGFudF9pMmNfd3JpdGVfcmVnKDB4QUMsICgweEE0LzEuMykpOworCQkqLworCQkKKwkJY29u
ZXhhbnRfaTJjX3dyaXRlX3JlZygweEE4LCAweDgxKTsKKwkJY29uZXhhbnRfaTJjX3dyaXRlX3Jl
ZygweEFBLCAweDQ5KTsKKwkJY29uZXhhbnRfaTJjX3dyaXRlX3JlZygweEFDLCAweDhDKTsKKwkJ
CisJfSAKKwkKKwlpZihlbmNvZGVyID09IEVOQ09ERVJfRk9DVVMpIHsKKwkJLy9TZXQgdGhlIGNv
bW1hbmQgcmVnaXN0ZXIgc29mdCByZXNldAorCQlmb2N1c19pMmNfd3JpdGVfcmVnKDB4MGMsMHgw
Myk7CisJCWZvY3VzX2kyY193cml0ZV9yZWcoMHgwZCwweDIxKTsKKwkJCisJCWZvciAobiA9IDA7
IG48MHhjNDsgbisrKSB7CisJCQlmb2N1c19pMmNfd3JpdGVfcmVnKG4sbW9kZVtuXSk7CisJCX0K
KwkJLy9DbGVhciBzb2Z0IHJlc2V0IGZsYWcKKwkJYiA9IGZvY3VzX2kyY19yZWFkX3JlZygweDBj
KTsKKwkJYiAmPSB+MHgwMTsKKwkJZm9jdXNfaTJjX3dyaXRlX3JlZygweDBjLGIpOworCQliID0g
Zm9jdXNfaTJjX3JlYWRfcmVnKDB4MGQpOworCQlmb2N1c19pMmNfd3JpdGVfcmVnKDB4MGQsYik7
CisJfQorfQorCit2b2lkIHR2X3NhdmVfbW9kZSh1bnNpZ25lZCBjaGFyICogbW9kZSkgeworCWlu
dCBuLCBuMTsKKwlpbnQgZW5jb2RlciA9IDA7CisKKwllbmNvZGVyID0gdHZfZ2V0X3ZpZGVvX2Vu
Y29kZXIoKTsKKworCWlmKGVuY29kZXIgPT0gRU5DT0RFUl9DT05FWEFOVCkgeworCQkvLyBDb25l
eGFudCBpbml0IChzdGFydHMgYXQgcmVnaXN0ZXIgMHgyZSkKKwkJbjE9MDsKKwkJZm9yKG49MHgy
ZTtuPDB4MTAwO24rPTIpIHsKKwkJCW1vZGVbbjFdID0gY29uZXhhbnRfaTJjX3JlYWRfcmVnKG4p
OworCQkJbjErKzsKKwkJfQorCX0gCisJZWxzZSBpZiAoZW5jb2RlciA9PSBFTkNPREVSX0ZPQ1VT
KSB7CisJCWZvciAobj0wO248MHhjNDtuKyspIHsKKwkJCW1vZGVbbl0gPSBmb2N1c19pMmNfcmVh
ZF9yZWcobik7CisJCX0KKworCX0KK30KKworeGJveF90dl9lbmNvZGluZyBnZXRfdHZfZW5jb2Rp
bmcodm9pZCkgeworCXVuc2lnbmVkIGNoYXIgZWVwcm9tX3ZhbHVlOworCXhib3hfdHZfZW5jb2Rp
bmcgZW5jID0gVFZfRU5DX1BBTEJER0hJOworCWVlcHJvbV92YWx1ZSA9IGVlcHJvbV9pMmNfcmVh
ZCgweDVhKTsKKwlpZiAoZWVwcm9tX3ZhbHVlID09IDB4NDApIHsKKwkJZW5jID0gVFZfRU5DX05U
U0M7CisJfQorCWVsc2UgeworCQllbmMgPSBUVl9FTkNfUEFMQkRHSEk7CisJfQorCXJldHVybiBl
bmM7Cit9CisKK3hib3hfYXZfdHlwZSBkZXRlY3RfYXZfdHlwZSh2b2lkKSB7CisJeGJveF9hdl90
eXBlIGF2VHlwZTsKKwlzd2l0Y2ggKHBpY19pMmNfcmVhZF9yZWcoMHgwNCkpIHsKKwkJY2FzZSAw
OiBhdlR5cGUgPSBBVl9TQ0FSVF9SR0I7IGJyZWFrOworCQljYXNlIDE6IGF2VHlwZSA9IEFWX0hE
VFY7IGJyZWFrOworCQljYXNlIDI6IGF2VHlwZSA9IEFWX1ZHQV9TT0c7IGJyZWFrOworCQljYXNl
IDQ6IGF2VHlwZSA9IEFWX1NWSURFTzsgYnJlYWs7CisJCWNhc2UgNjogYXZUeXBlID0gQVZfQ09N
UE9TSVRFOyBicmVhazsKKwkJY2FzZSA3OiBhdlR5cGUgPSBBVl9WR0E7IGJyZWFrOworCQlkZWZh
dWx0OiBhdlR5cGUgPSBBVl9DT01QT1NJVEU7IGJyZWFrOworCX0KKwlyZXR1cm4gYXZUeXBlOwor
fQorCmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvdmlkZW8veGJveC9lbmNvZGVy
LmggbGludXgtMi42LjUvZHJpdmVycy92aWRlby94Ym94L2VuY29kZXIuaAotLS0gbGludXgtMi42
LjUub3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvZW5jb2Rlci5oCTE5NzAtMDEtMDEgMDE6MDA6MDAu
MDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9kcml2ZXJzL3ZpZGVvL3hib3gvZW5jb2Rl
ci5oCTIwMDQtMDUtMDEgMTU6MjA6NDMuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsNjQgQEAK
Ky8qCisgKiBsaW51eC9kcml2ZXJzL3ZpZGVvL3JpdmEvZW5jb2Rlci5oIC0gWGJveCBkcml2ZXIg
Zm9yIGVuY29kZXIgY2hpcAorICoKKyAqIE1haW50YWluZXI6IE9saXZlciBTY2h3YXJ0eiA8T2xp
dmVyLlNjaHdhcnR6QGdteC5kZT4KKyAqCisgKiBDb250cmlidXRvcnM6CisgKiAKKyAqIFRoaXMg
ZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlLiAgU2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIG1h
aW4gZGlyZWN0b3J5IG9mIHRoaXMgYXJjaGl2ZQorICogZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBLbm93biBidWdzIGFuZCBpc3N1ZXM6CisgKgorICogICAgICBub25lCisgKi8KKworCisjaWZu
ZGVmIGVuY29kZXJfaAorI2RlZmluZSBlbmNvZGVyX2gKKworI2luY2x1ZGUgPGxpbnV4L3hib3hm
YmN0bC5oPgorCit0eXBlZGVmIHN0cnVjdCB7CisJZG91YmxlIG1fZEh6QnVyc3RGcmVxdWVuY3k7
CisJZG91YmxlIG1fZFNlY0J1cnN0U3RhcnQ7CisJZG91YmxlIG1fZFNlY0J1cnN0RW5kOworCWRv
dWJsZSBtX2RTZWNIc3luY1dpZHRoOworCWRvdWJsZSBtX2RTZWNIc3luY1BlcmlvZDsKKwlkb3Vi
bGUgbV9kU2VjQWN0aXZlQmVnaW47CisJZG91YmxlIG1fZFNlY0ltYWdlQ2VudHJlOworCWRvdWJs
ZSBtX2RTZWNCbGFua0JlZ2luVG9Ic3luYzsKKwl1bnNpZ25lZCBpbnQgbV9kd0FMTzsKKwlkb3Vi
bGUgbV9Ub3RhbExpbmVzT3V0OworCWRvdWJsZSBtX2RTZWNIc3luY1RvQmxhbmtFbmQ7Cit9IGNv
bmV4YW50X3ZpZGVvX3BhcmFtZXRlcjsKKwordHlwZWRlZiBzdHJ1Y3QgX3hib3hfdmlkZW9fbW9k
ZSB7CisJaW50IHhyZXM7CisJaW50IHlyZXM7CisJaW50IGJwcDsKKwlkb3VibGUgaG9jOworCWRv
dWJsZSB2b2M7CisJeGJveF9hdl90eXBlIGF2X3R5cGU7CisJeGJveF90dl9lbmNvZGluZyB0dl9l
bmNvZGluZzsKK30geGJveF92aWRlb19tb2RlOworCit0eXBlZGVmIGVudW0gZW51bUhkdHZNb2Rl
cyB7CisgICAgICAgIEhEVFZfNDgwcCwKKwlIRFRWXzcyMHAsCisJSERUVl8xMDgwaQorfSB4Ym94
X2hkdHZfbW9kZTsKKworc3RhdGljIGNvbnN0IGNvbmV4YW50X3ZpZGVvX3BhcmFtZXRlciB2aWRz
dGRhW107CisKK2ludCB0dl9pbml0KHZvaWQpOwordm9pZCB0dl9leGl0KHZvaWQpOworeGJveF9l
bmNvZGVyX3R5cGUgdHZfZ2V0X3ZpZGVvX2VuY29kZXIodm9pZCk7CisKK3ZvaWQgdHZfc2F2ZV9t
b2RlKHVuc2lnbmVkIGNoYXIgKiBtb2RlX291dCk7Cit2b2lkIHR2X2xvYWRfbW9kZSh1bnNpZ25l
ZCBjaGFyICogbW9kZSk7Cit4Ym94X3R2X2VuY29kaW5nIGdldF90dl9lbmNvZGluZyh2b2lkKTsK
K3hib3hfYXZfdHlwZSBkZXRlY3RfYXZfdHlwZSh2b2lkKTsKKworI2VuZGlmCmRpZmYgLXVyTiBs
aW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvdmlkZW8veGJveC9mYmRldi5jIGxpbnV4LTIuNi41L2Ry
aXZlcnMvdmlkZW8veGJveC9mYmRldi5jCi0tLSBsaW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvdmlk
ZW8veGJveC9mYmRldi5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyBs
aW51eC0yLjYuNS9kcml2ZXJzL3ZpZGVvL3hib3gvZmJkZXYuYwkyMDA0LTA1LTAxIDE1OjIwOjQz
LjAwMDAwMDAwMCArMDEwMApAQCAtMCwwICsxLDIyMjYgQEAKKy8qCisgKiBsaW51eC9kcml2ZXJz
L3ZpZGVvL3JpdmEvZmJkZXYuYyAtIG5WaWRpYSBYYm94IGZiIGRyaXZlcgorICoKKyAqIE1haW50
YWluZWQgYnkgT2xpdmVyIFNjaHdhcnR6IDxPbGl2ZXIuU2Nod2FydHpAZ214LmRlPgorICoKKyAq
IEJhc2VkIG9uIHRoZSBuVmlkaWEgUklWQSAxMjgvVE5UL1ROVDIgZmIgZHJpdmVyLCBtYWludGFp
bmVkIGJ5IAorICogQW5pIEpvc2hpIDxham9zaGlAc2hlbGwudW5peGJveC5jb20+CisgKgorICog
Q29weXJpZ2h0IDE5OTktMjAwMCBKZWZmIEdhcnppaworICoKKyAqIENvbnRyaWJ1dG9yczoKKyAq
CisgKglBbmkgSm9zaGk6ICBMb3RzIG9mIGRlYnVnZ2luZyBhbmQgY2xlYW51cCB3b3JrLCByZWFs
bHkgaGVscGVkCisgKglnZXQgdGhlIGRyaXZlciBnb2luZworICoKKyAqCUZlcmVuYyBCYWtvbnlp
OiAgQnVnIGZpeGVzLCBjbGVhbnVwLCBtb2R1bGFyaXphdGlvbgorICoKKyAqCUppbmRyaWNoIE1h
a292aWNrYTogIEFjY2VsIGNvZGUgaGVscCwgaHcgY3Vyc29yLCBtdHJyCisgKgorICoJUGF1bCBS
aWNoYXJkczogIEJ1ZyBmaXhlcywgdXBkYXRlcworICoKKyAqIEluaXRpYWwgdGVtcGxhdGUgZnJv
bSBza2VsZXRvbmZiLmMsIGNyZWF0ZWQgMjggRGVjIDE5OTcgYnkgR2VlcnQgVXl0dGVyaG9ldmVu
CisgKiBJbmNsdWRlcyByaXZhX2h3LmMgZnJvbSBuVmlkaWEsIHNlZSBjb3B5cmlnaHQgYmVsb3cu
CisgKiBLR0kgY29kZSBwcm92aWRlZCB0aGUgYmFzaXMgZm9yIHN0YXRlIHN0b3JhZ2UsIGluaXQs
IGFuZCBtb2RlIHN3aXRjaGluZy4KKyAqCisgKiBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUg
dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZS4gIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFy
Y2hpdmUKKyAqIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogS25vd24gYnVncyBhbmQgaXNzdWVz
OgorICoJcmVzdG9yaW5nIHRleHQgbW9kZSBmYWlscworICoJZG91Ymxlc2NhbiBtb2RlcyBhcmUg
YnJva2VuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4
L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2Vy
cm5vLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4K
KyNpbmNsdWRlIDxsaW51eC90dHkuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVk
ZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9mYi5oPgorI2luY2x1ZGUgPGxpbnV4
L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpZmRlZiBDT05GSUdfTVRSUgorI2lu
Y2x1ZGUgPGFzbS9tdHJyLmg+CisjZW5kaWYKKyNpZmRlZiBDT05GSUdfUFBDX09GCisjaW5jbHVk
ZSA8YXNtL3Byb20uaD4KKyNpbmNsdWRlIDxhc20vcGNpLWJyaWRnZS5oPgorI2VuZGlmCisKKyNp
bmNsdWRlICJ4Ym94ZmIuaCIKKyNpbmNsdWRlICJudnJlZy5oIgorI2luY2x1ZGUgPGxpbnV4L3N5
cy5oPgorI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+CisjaW5jbHVkZSA8bGludXgveGJveGZiY3Rs
Lmg+CisjaW5jbHVkZSAiZW5jb2Rlci1pMmMuaCIKKyNpbmNsdWRlICJjb25leGFudC5oIgorI2lu
Y2x1ZGUgImZvY3VzLmgiCisKKyNpZm5kZWYgQ09ORklHX1BDSQkJLyogc2FuaXR5IGNoZWNrICov
CisjZXJyb3IgVGhpcyBkcml2ZXIgcmVxdWlyZXMgUENJIHN1cHBvcnQuCisjZW5kaWYKKworLyog
dmVyc2lvbiBudW1iZXIgb2YgdGhpcyBkcml2ZXIgKi8KKyNkZWZpbmUgUklWQUZCX1ZFUlNJT04g
IjAuOS41YiIKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqCisgKgorICogdmFyaW91cyBoZWxwZnVs
IG1hY3JvcyBhbmQgY29uc3RhbnRzCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjdW5k
ZWYgUklWQUZCREVCVUcKKyNpZmRlZiBSSVZBRkJERUJVRworI2RlZmluZSBEUFJJTlRLKGZtdCwg
YXJncy4uLikgcHJpbnRrKEtFUk5fREVCVUcgIiVzOiAiIGZtdCwgX19GVU5DVElPTl9fICwgIyMg
YXJncykKKyNlbHNlCisjZGVmaW5lIERQUklOVEsoZm10LCBhcmdzLi4uKQorI2VuZGlmCisKKyNp
Zm5kZWYgUklWQV9OREVCVUcKKyNkZWZpbmUgYXNzZXJ0KGV4cHIpIFwKKwlpZighKGV4cHIpKSB7
IFwKKwlwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLFwKKwkj
ZXhwcixfX0ZJTEVfXyxfX0ZVTkNUSU9OX18sX19MSU5FX18pOyBcCisJQlVHKCk7IFwKKwl9Cisj
ZWxzZQorI2RlZmluZSBhc3NlcnQoZXhwcikKKyNlbmRpZgorCisjZGVmaW5lIFBGWCAieGJveGZi
OiAiCisKKy8qIG1hY3JvIHRoYXQgYWxsb3dzIHlvdSB0byBzZXQgb3ZlcmZsb3cgYml0cyAqLwor
I2RlZmluZSBTZXRCaXRGaWVsZCh2YWx1ZSxmcm9tLHRvKSBTZXRCRih0byxHZXRCRih2YWx1ZSxm
cm9tKSkKKyNkZWZpbmUgU2V0Qml0KG4pCQkoMTw8KG4pKQorI2RlZmluZSBTZXQ4Qml0cyh2YWx1
ZSkJCSgodmFsdWUpJjB4ZmYpCisKKy8qIEhXIGN1cnNvciBwYXJhbWV0ZXJzICovCisjZGVmaW5l
IE1BWF9DVVJTCQkzMgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoKKyAqCisgKiBwcm90b3R5cGVz
CisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgaW50IHhib3hmYl9ibGFuayhp
bnQgYmxhbmssIHN0cnVjdCBmYl9pbmZvICppbmZvKTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq
CisgKgorICogY2FyZCBpZGVudGlmaWNhdGlvbgorICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K
KworZW51bSByaXZhX2NoaXBzIHsKKwlDSF9HRUZPUkNFM19YQk9YCit9OworCisvKiBkaXJlY3Rs
eSBpbmRleGVkIGJ5IHJpdmFfY2hpcHMgZW51bSwgYWJvdmUgKi8KK3N0YXRpYyBzdHJ1Y3Qgcml2
YV9jaGlwX2luZm8geworCWNvbnN0IGNoYXIgKm5hbWU7CisJdW5zaWduZWQgYXJjaF9yZXY7Cit9
IHJpdmFfY2hpcF9pbmZvW10gX19pbml0ZGF0YSA9IHsKKyAgICAgICAgeyAiR2VGb3JjZTMiLCBO
Vl9BUkNIXzIwfQorfTsKKworc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIHhib3hmYl9wY2lf
dGJsW10gPSB7CisJeyBQQ0lfVkVORE9SX0lEX05WSURJQSwgMHgyYTAsCisJICBQQ0lfQU5ZX0lE
LCBQQ0lfQU5ZX0lELCAwLCAwLCBDSF9HRUZPUkNFM19YQk9YIH0sCisJeyAwLCB9IC8qIHRlcm1p
bmF0ZSBsaXN0ICovCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHhib3hmYl9wY2lfdGJs
KTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqCisgKgorICogZ2xvYmFsIHZhcmlhYmxlcworICoK
KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyogY29tbWFuZCBsaW5lIGRhdGEsIHNldCBpbiB4
Ym94ZmJfc2V0dXAoKSAqLworc3RhdGljIHUzMiBwc2V1ZG9fcGFsZXR0ZVsxN107CitzdGF0aWMg
aW50IGZsYXRwYW5lbCBfX2luaXRkYXRhID0gLTE7IC8qIEF1dG9kZXRlY3QgbGF0ZXIgKi8KK3N0
YXRpYyBpbnQgZm9yY2VDUlRDIF9faW5pdGRhdGEgPSAtMTsKKyNpZmRlZiBDT05GSUdfTVRSUgor
c3RhdGljIGludCBub210cnIgX19pbml0ZGF0YSA9IDA7CisjZW5kaWYKKworI2lmbmRlZiBNT0RV
TEUKK3N0YXRpYyBjaGFyICptb2RlX29wdGlvbiBfX2luaXRkYXRhID0gTlVMTDsKKyNlbmRpZgor
CitzdGF0aWMgeGJveF90dl9lbmNvZGluZyB0dl9lbmNvZGluZyAgX19pbml0ZGF0YSA9IFRWX0VO
Q19JTlZBTElEOworc3RhdGljIHhib3hfYXZfdHlwZSBhdl90eXBlIF9faW5pdGRhdGEgPSBBVl9J
TlZBTElEOworc3RhdGljIGludCBob2MgX19pbml0ZGF0YSA9IC0xOworc3RhdGljIGludCB2b2Mg
X19pbml0ZGF0YSA9IC0xOworCitzdGF0aWMgc3RydWN0IGZiX2ZpeF9zY3JlZW5pbmZvIHhib3hm
Yl9maXggPSB7CisJLmlkCQk9ICJYYm94IiwKKwkudHlwZQkJPSBGQl9UWVBFX1BBQ0tFRF9QSVhF
TFMsCisJLnhwYW5zdGVwCT0gMSwKKwkueXBhbnN0ZXAJPSAxLAorfTsKKworc3RhdGljIHN0cnVj
dCBmYl92YXJfc2NyZWVuaW5mbyB4Ym94ZmJfZGVmYXVsdF92YXIgPSB7CisJLnhyZXMJCT0gNjQw
LAorCS55cmVzCQk9IDQ4MCwKKwkueHJlc192aXJ0dWFsCT0gNjQwLAorCS55cmVzX3ZpcnR1YWwJ
PSA0ODAsCisJLmJpdHNfcGVyX3BpeGVsCT0gOCwKKwkucmVkCQk9IHswLCA4LCAwfSwKKwkuZ3Jl
ZW4JCT0gezAsIDgsIDB9LAorCS5ibHVlCQk9IHswLCA4LCAwfSwKKwkudHJhbnNwCQk9IHswLCAw
LCAwfSwKKwkuYWN0aXZhdGUJPSBGQl9BQ1RJVkFURV9OT1csCisJLmhlaWdodAkJPSAtMSwKKwku
d2lkdGgJCT0gLTEsCisJLmFjY2VsX2ZsYWdzCT0gRkJfQUNDRUxGX1RFWFQsCisJLnBpeGNsb2Nr
CT0gMzk3MjEsCisJLmxlZnRfbWFyZ2luCT0gNDAsCisJLnJpZ2h0X21hcmdpbgk9IDI0LAorCS51
cHBlcl9tYXJnaW4JPSAzMiwKKwkubG93ZXJfbWFyZ2luCT0gMTEsCisJLmhzeW5jX2xlbgk9IDk2
LAorCS52c3luY19sZW4JPSAyLAorCS52bW9kZQkJPSBGQl9WTU9ERV9OT05JTlRFUkxBQ0VECit9
OworCitzdGF0aWMgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvIHhib3hmYl9tb2RlXzQ4MHAgPSB7
CisJLnhyZXMgICAgICAgICAgID0gNzIwLAorCS55cmVzICAgICAgICAgICA9IDQ4MCwKKwkueHJl
c192aXJ0dWFsICAgPSA3MjAsCisJLnlyZXNfdmlydHVhbCAgID0gNDgwLAorCS5iaXRzX3Blcl9w
aXhlbCA9IDMyLAorCS5yZWQgICAgICAgICAgICA9IHswLCA4LCAxNn0sCisJLmdyZWVuICAgICAg
ICAgID0gezAsIDgsIDh9LAorCS5ibHVlICAgICAgICAgICA9IHswLCA4LCAwfSwKKwkudHJhbnNw
ICAgICAgICAgPSB7MCwgMCwgMH0sCisJLmFjdGl2YXRlICAgICAgID0gRkJfQUNUSVZBVEVfTk9X
LAorCS5oZWlnaHQgICAgICAgICA9IC0xLAorCS53aWR0aCAgICAgICAgICA9IC0xLAorCS5hY2Nl
bF9mbGFncyAgICA9IEZCX0FDQ0VMRl9URVhULAorCS5waXhjbG9jayAgICAgICA9IDM3MDAwLAor
CS5sZWZ0X21hcmdpbiAgICA9IDU2LAorCS5yaWdodF9tYXJnaW4gICA9IDE4LAorCS51cHBlcl9t
YXJnaW4gICA9IDI5LAorCS5sb3dlcl9tYXJnaW4gICA9IDksCisJLmhzeW5jX2xlbiAgICAgID0g
NjQsCisJLnZzeW5jX2xlbiAgICAgID0gNywKKwkudm1vZGUgICAgICAgICAgPSBGQl9WTU9ERV9O
T05JTlRFUkxBQ0VECit9OworCitzdGF0aWMgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvIHhib3hm
Yl9tb2RlXzcyMHAgPSB7CisJLnhyZXMgICAgICAgICAgID0gMTI4MCwKKwkueXJlcyAgICAgICAg
ICAgPSA3MjAsCisJLnhyZXNfdmlydHVhbCAgID0gMTI4MCwKKwkueXJlc192aXJ0dWFsICAgPSA3
MjAsCisJLmJpdHNfcGVyX3BpeGVsID0gOCwKKwkucmVkICAgICAgICAgICAgPSB7MCwgOCwgMH0s
CisJLmdyZWVuICAgICAgICAgID0gezAsIDgsIDB9LAorCS5ibHVlICAgICAgICAgICA9IHswLCA4
LCAwfSwKKwkudHJhbnNwICAgICAgICAgPSB7MCwgMCwgMH0sCisJLmFjdGl2YXRlICAgICAgID0g
RkJfQUNUSVZBVEVfTk9XLAorCS5oZWlnaHQgICAgICAgICA9IC0xLAorCS53aWR0aCAgICAgICAg
ICA9IC0xLAorCS5hY2NlbF9mbGFncyAgICA9IEZCX0FDQ0VMRl9URVhULAorCS5waXhjbG9jayAg
ICAgICA9IDEzNDY4LAorCS5sZWZ0X21hcmdpbiAgICA9IDIyMCwKKwkucmlnaHRfbWFyZ2luICAg
PSA3MCwKKwkudXBwZXJfbWFyZ2luICAgPSAyMiwKKwkubG93ZXJfbWFyZ2luICAgPSAzLAorCS5o
c3luY19sZW4gICAgICA9IDgwLAorCS52c3luY19sZW4gICAgICA9IDUsCisJLnZtb2RlICAgICAg
ICAgID0gRkJfVk1PREVfTk9OSU5URVJMQUNFRAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIqIHR2
RW5jb2RpbmdOYW1lc1tdID0geworICAgICAgICAiTlRTQyIsCisgICAgICAgICJOVFNDLTYwIiwK
KyAgICAgICAgIlBBTC1CREdISSIsCisgICAgICAgICJQQUwtTiIsCisgICAgICAgICJQQUwtTkMi
LAorICAgICAgICAiUEFMLU0iLAorICAgICAgICAiUEFMLTYwIgorfTsKKworc3RhdGljIGNvbnN0
IGNoYXIqIGF2VHlwZU5hbWVzW10gPSB7CisgICAgICAgICJTQ0FSVCAoUkdCKSIsCisgICAgICAg
ICJTLVZpZGVvIiwKKyAgICAgICAgIlZHQSAoU3luYyBvbiBncmVlbikiLAorICAgICAgICAiSERU
ViAoQ29tcG9uZW50IHZpZGVvKSIsCisgICAgICAgICJDb21wb3NpdGUiLAorICAgICAgICAiVkdB
IChpbnRlcm5hbCBzeW5jcykiCit9OworCisvKiBmcm9tIEdHSSAqLworc3RhdGljIGNvbnN0IHN0
cnVjdCByaXZhX3JlZ3MgcmVnX3RlbXBsYXRlID0geworCXsweDAwLCAweDAxLCAweDAyLCAweDAz
LCAweDA0LCAweDA1LCAweDA2LCAweDA3LAkvKiBBVFRSICovCisJIDB4MDgsIDB4MDksIDB4MEEs
IDB4MEIsIDB4MEMsIDB4MEQsIDB4MEUsIDB4MEYsCisJIDB4NDEsIDB4MDEsIDB4MEYsIDB4MDAs
IDB4MDB9LAorCXsweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw
LAkvKiBDUlQgICovCisJIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDAsCisJIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RTMs
CS8qIDB4MTAgKi8KKwkgMHhGRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg
MHgwMCwKKwkgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwJ
LyogMHgyMCAqLworCSAweDQwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw
eDAwLAorCSAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAkv
KiAweDMwICovCisJIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDAsCisJIDB4MDAsCQkJCQkJCS8qIDB4NDAgKi8KKwkgfSwKKwl7MHgwMCwgMHgwMCwgMHgwMCwg
MHgwMCwgMHgwMCwgMHg0MCwgMHgwNSwgMHgwRiwJLyogR1JBICAqLworCSAweEZGfSwKKwl7MHgw
MywgMHgwMSwgMHgwRiwgMHgwMCwgMHgwRX0sCQkJCS8qIFNFUSAgKi8KKwkweEVCCQkJCQkJCS8q
IE1JU0MgKi8KK307CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKgorICoKKyAqIE1NSU8gYWNjZXNz
IG1hY3JvcworICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIGlubGluZSB2b2lk
IENSVENvdXQoc3RydWN0IHJpdmFfcGFyICpwYXIsIHVuc2lnbmVkIGNoYXIgaW5kZXgsCisJCQkg
ICB1bnNpZ25lZCBjaGFyIHZhbCkKK3sKKwlWR0FfV1IwOChwYXItPnJpdmEuUENJTywgMHgzZDQs
IGluZGV4KTsKKwlWR0FfV1IwOChwYXItPnJpdmEuUENJTywgMHgzZDUsIHZhbCk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciBDUlRDaW4oc3RydWN0IHJpdmFfcGFyICpwYXIsCisJ
CQkJICAgdW5zaWduZWQgY2hhciBpbmRleCkKK3sKKwlWR0FfV1IwOChwYXItPnJpdmEuUENJTywg
MHgzZDQsIGluZGV4KTsKKwlyZXR1cm4gKFZHQV9SRDA4KHBhci0+cml2YS5QQ0lPLCAweDNkNSkp
OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgR1JBb3V0KHN0cnVjdCByaXZhX3BhciAqcGFyLCB1
bnNpZ25lZCBjaGFyIGluZGV4LAorCQkJICB1bnNpZ25lZCBjaGFyIHZhbCkKK3sKKwlWR0FfV1Iw
OChwYXItPnJpdmEuUFZJTywgMHgzY2UsIGluZGV4KTsKKwlWR0FfV1IwOChwYXItPnJpdmEuUFZJ
TywgMHgzY2YsIHZhbCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciBHUkFpbihz
dHJ1Y3Qgcml2YV9wYXIgKnBhciwKKwkJCQkgIHVuc2lnbmVkIGNoYXIgaW5kZXgpCit7CisJVkdB
X1dSMDgocGFyLT5yaXZhLlBWSU8sIDB4M2NlLCBpbmRleCk7CisJcmV0dXJuIChWR0FfUkQwOChw
YXItPnJpdmEuUFZJTywgMHgzY2YpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIFNFUW91dChz
dHJ1Y3Qgcml2YV9wYXIgKnBhciwgdW5zaWduZWQgY2hhciBpbmRleCwKKwkJCSAgdW5zaWduZWQg
Y2hhciB2YWwpCit7CisJVkdBX1dSMDgocGFyLT5yaXZhLlBWSU8sIDB4M2M0LCBpbmRleCk7CisJ
VkdBX1dSMDgocGFyLT5yaXZhLlBWSU8sIDB4M2M1LCB2YWwpOworfQorCitzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGNoYXIgU0VRaW4oc3RydWN0IHJpdmFfcGFyICpwYXIsCisJCQkJICB1bnNpZ25l
ZCBjaGFyIGluZGV4KQoreworCVZHQV9XUjA4KHBhci0+cml2YS5QVklPLCAweDNjNCwgaW5kZXgp
OworCXJldHVybiAoVkdBX1JEMDgocGFyLT5yaXZhLlBWSU8sIDB4M2M1KSk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgdm9pZCBBVFRSb3V0KHN0cnVjdCByaXZhX3BhciAqcGFyLCB1bnNpZ25lZCBjaGFy
IGluZGV4LAorCQkJICAgdW5zaWduZWQgY2hhciB2YWwpCit7CisJVkdBX1dSMDgocGFyLT5yaXZh
LlBDSU8sIDB4M2MwLCBpbmRleCk7CisJVkdBX1dSMDgocGFyLT5yaXZhLlBDSU8sIDB4M2MwLCB2
YWwpOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgQVRUUmluKHN0cnVjdCByaXZh
X3BhciAqcGFyLAorCQkJCSAgIHVuc2lnbmVkIGNoYXIgaW5kZXgpCit7CisJVkdBX1dSMDgocGFy
LT5yaXZhLlBDSU8sIDB4M2MwLCBpbmRleCk7CisJcmV0dXJuIChWR0FfUkQwOChwYXItPnJpdmEu
UENJTywgMHgzYzEpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIE1JU0NvdXQoc3RydWN0IHJp
dmFfcGFyICpwYXIsIHVuc2lnbmVkIGNoYXIgdmFsKQoreworCVZHQV9XUjA4KHBhci0+cml2YS5Q
VklPLCAweDNjMiwgdmFsKTsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyIE1JU0Np
bihzdHJ1Y3Qgcml2YV9wYXIgKnBhcikKK3sKKwlyZXR1cm4gKFZHQV9SRDA4KHBhci0+cml2YS5Q
VklPLCAweDNjYykpOworfQorCitzdGF0aWMgdTggYnl0ZV9yZXZbMjU2XSA9IHsKKwkweDAwLCAw
eDgwLCAweDQwLCAweGMwLCAweDIwLCAweGEwLCAweDYwLCAweGUwLAorCTB4MTAsIDB4OTAsIDB4
NTAsIDB4ZDAsIDB4MzAsIDB4YjAsIDB4NzAsIDB4ZjAsCisJMHgwOCwgMHg4OCwgMHg0OCwgMHhj
OCwgMHgyOCwgMHhhOCwgMHg2OCwgMHhlOCwKKwkweDE4LCAweDk4LCAweDU4LCAweGQ4LCAweDM4
LCAweGI4LCAweDc4LCAweGY4LAorCTB4MDQsIDB4ODQsIDB4NDQsIDB4YzQsIDB4MjQsIDB4YTQs
IDB4NjQsIDB4ZTQsCisJMHgxNCwgMHg5NCwgMHg1NCwgMHhkNCwgMHgzNCwgMHhiNCwgMHg3NCwg
MHhmNCwKKwkweDBjLCAweDhjLCAweDRjLCAweGNjLCAweDJjLCAweGFjLCAweDZjLCAweGVjLAor
CTB4MWMsIDB4OWMsIDB4NWMsIDB4ZGMsIDB4M2MsIDB4YmMsIDB4N2MsIDB4ZmMsCisJMHgwMiwg
MHg4MiwgMHg0MiwgMHhjMiwgMHgyMiwgMHhhMiwgMHg2MiwgMHhlMiwKKwkweDEyLCAweDkyLCAw
eDUyLCAweGQyLCAweDMyLCAweGIyLCAweDcyLCAweGYyLAorCTB4MGEsIDB4OGEsIDB4NGEsIDB4
Y2EsIDB4MmEsIDB4YWEsIDB4NmEsIDB4ZWEsCisJMHgxYSwgMHg5YSwgMHg1YSwgMHhkYSwgMHgz
YSwgMHhiYSwgMHg3YSwgMHhmYSwKKwkweDA2LCAweDg2LCAweDQ2LCAweGM2LCAweDI2LCAweGE2
LCAweDY2LCAweGU2LAorCTB4MTYsIDB4OTYsIDB4NTYsIDB4ZDYsIDB4MzYsIDB4YjYsIDB4NzYs
IDB4ZjYsCisJMHgwZSwgMHg4ZSwgMHg0ZSwgMHhjZSwgMHgyZSwgMHhhZSwgMHg2ZSwgMHhlZSwK
KwkweDFlLCAweDllLCAweDVlLCAweGRlLCAweDNlLCAweGJlLCAweDdlLCAweGZlLAorCTB4MDEs
IDB4ODEsIDB4NDEsIDB4YzEsIDB4MjEsIDB4YTEsIDB4NjEsIDB4ZTEsCisJMHgxMSwgMHg5MSwg
MHg1MSwgMHhkMSwgMHgzMSwgMHhiMSwgMHg3MSwgMHhmMSwKKwkweDA5LCAweDg5LCAweDQ5LCAw
eGM5LCAweDI5LCAweGE5LCAweDY5LCAweGU5LAorCTB4MTksIDB4OTksIDB4NTksIDB4ZDksIDB4
MzksIDB4YjksIDB4NzksIDB4ZjksCisJMHgwNSwgMHg4NSwgMHg0NSwgMHhjNSwgMHgyNSwgMHhh
NSwgMHg2NSwgMHhlNSwKKwkweDE1LCAweDk1LCAweDU1LCAweGQ1LCAweDM1LCAweGI1LCAweDc1
LCAweGY1LAorCTB4MGQsIDB4OGQsIDB4NGQsIDB4Y2QsIDB4MmQsIDB4YWQsIDB4NmQsIDB4ZWQs
CisJMHgxZCwgMHg5ZCwgMHg1ZCwgMHhkZCwgMHgzZCwgMHhiZCwgMHg3ZCwgMHhmZCwKKwkweDAz
LCAweDgzLCAweDQzLCAweGMzLCAweDIzLCAweGEzLCAweDYzLCAweGUzLAorCTB4MTMsIDB4OTMs
IDB4NTMsIDB4ZDMsIDB4MzMsIDB4YjMsIDB4NzMsIDB4ZjMsCisJMHgwYiwgMHg4YiwgMHg0Yiwg
MHhjYiwgMHgyYiwgMHhhYiwgMHg2YiwgMHhlYiwKKwkweDFiLCAweDliLCAweDViLCAweGRiLCAw
eDNiLCAweGJiLCAweDdiLCAweGZiLAorCTB4MDcsIDB4ODcsIDB4NDcsIDB4YzcsIDB4MjcsIDB4
YTcsIDB4NjcsIDB4ZTcsCisJMHgxNywgMHg5NywgMHg1NywgMHhkNywgMHgzNywgMHhiNywgMHg3
NywgMHhmNywKKwkweDBmLCAweDhmLCAweDRmLCAweGNmLCAweDJmLCAweGFmLCAweDZmLCAweGVm
LAorCTB4MWYsIDB4OWYsIDB4NWYsIDB4ZGYsIDB4M2YsIDB4YmYsIDB4N2YsIDB4ZmYsCit9Owor
CitzdGF0aWMgaW5saW5lIHZvaWQgcmV2ZXJzZV9vcmRlcih1MzIgKmwpCit7CisJdTggKmEgPSAo
dTggKilsOworCSphID0gYnl0ZV9yZXZbKmFdLCBhKys7CisJKmEgPSBieXRlX3JldlsqYV0sIGEr
KzsKKwkqYSA9IGJ5dGVfcmV2WyphXSwgYSsrOworCSphID0gYnl0ZV9yZXZbKmFdOworfQorCisv
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICoKKyAqCisgKiBjdXJzb3Igc3R1ZmYKKyAqCisgKiAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tICovCisKKy8qKgorICogeGJveGZiX2xvYWRfY3Vyc29yX2ltYWdlIC0gbG9hZCBj
dXJzb3IgaW1hZ2UgdG8gaGFyZHdhcmUKKyAqIEBkYXRhOiBhZGRyZXNzIHRvIG1vbm9jaHJvbWUg
Yml0bWFwICgxID0gZm9yZWdyb3VuZCBjb2xvciwgMCA9IGJhY2tncm91bmQpCisgKiBAcGFyOiAg
cG9pbnRlciB0byBwcml2YXRlIGRhdGEKKyAqIEB3OiAgICB3aWR0aCBvZiBjdXJzb3IgaW1hZ2Ug
aW4gcGl4ZWxzCisgKiBAaDogICAgaGVpZ2h0IG9mIGN1cnNvciBpbWFnZSBpbiBzY2FubGluZXMK
KyAqIEBiZzogICBiYWNrZ3JvdW5kIGNvbG9yIChBUkdCMTU1NSkgLSBhbHBoYSBiaXQgZGV0ZXJt
aW5lcyBvcGFjaXR5CisgKiBAZmc6ICAgZm9yZWdyb3VuZCBjb2xvciAoQVJHQjE1NTUpCisgKgor
ICogREVTQ1JJUFRpT046CisgKiBMb2FkcyBjdXJzb3IgaW1hZ2UgYmFzZWQgb24gYSBtb25vY2hy
b21lIHNvdXJjZSBhbmQgbWFzayBiaXRtYXAuICBUaGUKKyAqIGltYWdlIGJpdHMgZGV0ZXJtaW5l
cyB0aGUgY29sb3Igb2YgdGhlIHBpeGVsLCAwIGZvciBiYWNrZ3JvdW5kLCAxIGZvcgorICogZm9y
ZWdyb3VuZC4gIE9ubHkgdGhlIGFmZmVjdGVkIHJlZ2lvbiAoYXMgZGV0ZXJtaW5lZCBieSBAdyBh
bmQgQGggCisgKiBwYXJhbWV0ZXJzKSB3aWxsIGJlIHVwZGF0ZWQuCisgKgorICogQ0FMTEVEIEZS
T006CisgKiB4Ym94ZmJfY3Vyc29yKCkKKyAqLworc3RhdGljIHZvaWQgeGJveGZiX2xvYWRfY3Vy
c29yX2ltYWdlKHN0cnVjdCByaXZhX3BhciAqcGFyLCB1OCAqZGF0YSwgCisJCQkJICAgICB1OCog
bWFzaywgdTE2IGJnLCB1MTYgZmcsIHUzMiB3LCB1MzIgaCkKK3sKKwlpbnQgaSwgaiwgayA9IDA7
CisJdTMyIGIsIG0sIHRtcDsKKworCWZvciAoaSA9IDA7IGkgPCBoOyBpKyspIHsKKwkJYiA9ICoo
KHUzMiAqKWRhdGEpOworCQlkYXRhID0gKHU4ICopKCh1MzIgKilkYXRhICsgMSk7CisJCW0gPSAq
KCh1MzIgKiltYXNrKTsKKwkJbWFzayA9ICh1OCAqKSgodTMyICopbWFzayArIDEpOworCQlyZXZl
cnNlX29yZGVyKCZiKTsKKwkJCisJCWZvciAoaiA9IDA7IGogPCB3LzI7IGorKykgeworCQkJdG1w
ID0gMDsKKyNpZiBkZWZpbmVkIChfX0JJR19FTkRJQU4pCisJCQl0bXAgPSAoYiAmICgxIDw8IDMx
KSkgPyBmZyA8PCAxNiA6IGJnIDw8IDE2OworCQkJaWYgKG0gJiAoMSA8PCAzMSkpIHsKKwkJCQl0
bXAgfD0gMSA8PCAzMTsKKwkJCX0KKwkJCWIgPDw9IDE7CisJCQltIDw8PSAxOworCisJCQl0bXAg
fD0gKGIgJiAoMSA8PCAzMSkpID8gZmcgOiBiZzsKKwkJCWlmIChtICYgKDEgPDwgMzEpKSB7CisJ
CQkJdG1wIHw9IDEgPDwgMTU7CisJCQl9CisJCQliIDw8PSAxOworCQkJbSA8PD0gMTsKKyNlbHNl
CisJCQl0bXAgPSAoYiAmIDEpID8gZmcgOiBiZzsKKwkJCWlmIChtICYgMSkgeworCQkJCXRtcCB8
PSAxIDw8IDE1OworCQkJfQorCQkJYiA+Pj0gMTsKKwkJCW0gPj49IDE7CisJCQkKKwkJCXRtcCB8
PSAoYiAmIDEpID8gZmcgPDwgMTYgOiBiZyA8PCAxNjsKKwkJCWlmIChtICYgMSkgeworCQkJCXRt
cCB8PSAxIDw8IDMxOworCQkJfQorCQkJYiA+Pj0gMTsKKwkJCW0gPj49IDE7CisjZW5kaWYKKwkJ
CXdyaXRlbCh0bXAsIHBhci0+cml2YS5DVVJTT1IgKyBrKyspOworCQl9CisJCWsgKz0gKE1BWF9D
VVJTIC0gdykvMjsKKwl9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKgorICoKKyAqIGdlbmVy
YWwgdXRpbGl0eSBmdW5jdGlvbnMKKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qKgor
ICogcml2YV93Y2x1dCAtIHNldCBDTFVUIGVudHJ5CisgKiBAY2hpcDogcG9pbnRlciB0byBSSVZB
X0hXX0lOU1Qgb2JqZWN0CisgKiBAcmVnbnVtOiByZWdpc3RlciBudW1iZXIKKyAqIEByZWQ6IHJl
ZCBjb21wb25lbnQKKyAqIEBncmVlbjogZ3JlZW4gY29tcG9uZW50CisgKiBAYmx1ZTogYmx1ZSBj
b21wb25lbnQKKyAqCisgKiBERVNDUklQVElPTjoKKyAqIFNldHMgY29sb3IgcmVnaXN0ZXIgQHJl
Z251bS4KKyAqCisgKiBDQUxMRUQgRlJPTToKKyAqIHhib3hmYl9zZXRjb2xyZWcoKQorICovCitz
dGF0aWMgdm9pZCByaXZhX3djbHV0KFJJVkFfSFdfSU5TVCAqY2hpcCwKKwkJICAgICAgIHVuc2ln
bmVkIGNoYXIgcmVnbnVtLCB1bnNpZ25lZCBjaGFyIHJlZCwKKwkJICAgICAgIHVuc2lnbmVkIGNo
YXIgZ3JlZW4sIHVuc2lnbmVkIGNoYXIgYmx1ZSkKK3sKKwlWR0FfV1IwOChjaGlwLT5QRElPLCAw
eDNjOCwgcmVnbnVtKTsKKwlWR0FfV1IwOChjaGlwLT5QRElPLCAweDNjOSwgcmVkKTsKKwlWR0Ff
V1IwOChjaGlwLT5QRElPLCAweDNjOSwgZ3JlZW4pOworCVZHQV9XUjA4KGNoaXAtPlBESU8sIDB4
M2M5LCBibHVlKTsKK30KKworLyoqCisgKiByaXZhX3JjbHV0IC0gcmVhZCBmcm9tQ0xVVCByZWdp
c3RlcgorICogQGNoaXA6IHBvaW50ZXIgdG8gUklWQV9IV19JTlNUIG9iamVjdAorICogQHJlZ251
bTogcmVnaXN0ZXIgbnVtYmVyCisgKiBAcmVkOiByZWQgY29tcG9uZW50CisgKiBAZ3JlZW46IGdy
ZWVuIGNvbXBvbmVudAorICogQGJsdWU6IGJsdWUgY29tcG9uZW50CisgKgorICogREVTQ1JJUFRJ
T046CisgKiBSZWFkcyByZWQsIGdyZWVuLCBhbmQgYmx1ZSBmcm9tIGNvbG9yIHJlZ2lzdGVyIEBy
ZWdudW0uCisgKgorICogQ0FMTEVEIEZST006CisgKiB4Ym94ZmJfc2V0Y29scmVnKCkKKyAqLwor
c3RhdGljIHZvaWQgcml2YV9yY2x1dChSSVZBX0hXX0lOU1QgKmNoaXAsCisJCSAgICAgICB1bnNp
Z25lZCBjaGFyIHJlZ251bSwgdW5zaWduZWQgY2hhciAqcmVkLAorCQkgICAgICAgdW5zaWduZWQg
Y2hhciAqZ3JlZW4sIHVuc2lnbmVkIGNoYXIgKmJsdWUpCit7CisJCisJVkdBX1dSMDgoY2hpcC0+
UERJTywgMHgzYzgsIHJlZ251bSk7CisJKnJlZCA9IFZHQV9SRDA4KGNoaXAtPlBESU8sIDB4M2M5
KTsKKwkqZ3JlZW4gPSBWR0FfUkQwOChjaGlwLT5QRElPLCAweDNjOSk7CisJKmJsdWUgPSBWR0Ff
UkQwOChjaGlwLT5QRElPLCAweDNjOSk7Cit9CisKKy8qKgorICogcml2YV9zYXZlX3N0YXRlIC0g
c2F2ZXMgY3VycmVudCBjaGlwIHN0YXRlCisgKiBAcGFyOiBwb2ludGVyIHRvIHJpdmFfcGFyIG9i
amVjdCBjb250YWluaW5nIGluZm8gZm9yIGN1cnJlbnQgcml2YSBib2FyZAorICogQHJlZ3M6IHBv
aW50ZXIgdG8gcml2YV9yZWdzIG9iamVjdAorICoKKyAqIERFU0NSSVBUSU9OOgorICogU2F2ZXMg
Y3VycmVudCBjaGlwIHN0YXRlIHRvIEByZWdzLgorICoKKyAqIENBTExFRCBGUk9NOgorICogeGJv
eGZiX3Byb2JlKCkKKyAqLworLyogZnJvbSBHR0kgKi8KK3N0YXRpYyB2b2lkIHJpdmFfc2F2ZV9z
dGF0ZShzdHJ1Y3Qgcml2YV9wYXIgKnBhciwgc3RydWN0IHJpdmFfcmVncyAqcmVncykKK3sKKwlp
bnQgaTsKKworCXBhci0+cml2YS5Mb2NrVW5sb2NrKCZwYXItPnJpdmEsIDApOworCisJcGFyLT5y
aXZhLlVubG9hZFN0YXRlRXh0KCZwYXItPnJpdmEsICZyZWdzLT5leHQpOworCisJcmVncy0+bWlz
Y19vdXRwdXQgPSBNSVNDaW4ocGFyKTsKKworCWZvciAoaSA9IDA7IGkgPCBOVU1fQ1JUX1JFR1M7
IGkrKykKKwkJcmVncy0+Y3J0Y1tpXSA9IENSVENpbihwYXIsIGkpOworCisJZm9yIChpID0gMDsg
aSA8IE5VTV9BVENfUkVHUzsgaSsrKQorCQlyZWdzLT5hdHRyW2ldID0gQVRUUmluKHBhciwgaSk7
CisKKwlmb3IgKGkgPSAwOyBpIDwgTlVNX0dSQ19SRUdTOyBpKyspCisJCXJlZ3MtPmdyYVtpXSA9
IEdSQWluKHBhciwgaSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTlVNX1NFUV9SRUdTOyBpKyspCisJ
CXJlZ3MtPnNlcVtpXSA9IFNFUWluKHBhciwgaSk7Cit9CisKKy8qKgorICogcml2YV9sb2FkX3N0
YXRlIC0gbG9hZHMgY3VycmVudCBjaGlwIHN0YXRlCisgKiBAcGFyOiBwb2ludGVyIHRvIHJpdmFf
cGFyIG9iamVjdCBjb250YWluaW5nIGluZm8gZm9yIGN1cnJlbnQgcml2YSBib2FyZAorICogQHJl
Z3M6IHBvaW50ZXIgdG8gcml2YV9yZWdzIG9iamVjdAorICoKKyAqIERFU0NSSVBUSU9OOgorICog
TG9hZHMgY2hpcCBzdGF0ZSBmcm9tIEByZWdzLgorICoKKyAqIENBTExFRCBGUk9NOgorICogcml2
YV9sb2FkX3ZpZGVvX21vZGUoKQorICogeGJveGZiX3Byb2JlKCkKKyAqIHhib3hmYl9yZW1vdmUo
KQorICovCisvKiBmcm9tIEdHSSAqLworc3RhdGljIHZvaWQgcml2YV9sb2FkX3N0YXRlKHN0cnVj
dCByaXZhX3BhciAqcGFyLCBzdHJ1Y3Qgcml2YV9yZWdzICpyZWdzKQoreworCVJJVkFfSFdfU1RB
VEUgKnN0YXRlID0gJnJlZ3MtPmV4dDsKKwlpbnQgaTsKKworCUNSVENvdXQocGFyLCAweDExLCAw
eDAwKTsKKworCXBhci0+cml2YS5Mb2NrVW5sb2NrKCZwYXItPnJpdmEsIDApOworCisJcGFyLT5y
aXZhLkxvYWRTdGF0ZUV4dCgmcGFyLT5yaXZhLCBzdGF0ZSk7CisKKwlwYXItPnJpdmEuUEdSQVBI
WzB4MDAwMDA4MjAvNF0gPSBwYXItPnJpdmFfZmJfc3RhcnQ7CisJcGFyLT5yaXZhLlBHUkFQSFsw
eDAwMDAwODI0LzRdID0gcGFyLT5yaXZhX2ZiX3N0YXJ0OworCXBhci0+cml2YS5QR1JBUEhbMHgw
MDAwMDgyOC80XSA9IHBhci0+cml2YV9mYl9zdGFydDsKKwlwYXItPnJpdmEuUEdSQVBIWzB4MDAw
MDA4MmMvNF0gPSBwYXItPnJpdmFfZmJfc3RhcnQ7CisKKwlwYXItPnJpdmEuUEdSQVBIWzB4MDAw
MDA2ODQvNF0gPSBwYXItPnJpdmEuUmFtQW1vdW50S0J5dGVzICogMTAyNCAtIDE7CisJcGFyLT5y
aXZhLlBHUkFQSFsweDAwMDAwNjg4LzRdID0gcGFyLT5yaXZhLlJhbUFtb3VudEtCeXRlcyAqIDEw
MjQgLSAxOworCXBhci0+cml2YS5QR1JBUEhbMHgwMDAwMDY4Yy80XSA9IHBhci0+cml2YS5SYW1B
bW91bnRLQnl0ZXMgKiAxMDI0IC0gMTsKKwlwYXItPnJpdmEuUEdSQVBIWzB4MDAwMDA2OTAvNF0g
PSBwYXItPnJpdmEuUmFtQW1vdW50S0J5dGVzICogMTAyNCAtIDE7CisJcGFyLT5yaXZhLlBSQU1E
QUNbMHgwMDAwMDg0OC80XSA9IDB4MTAxMDAxMTE7CisJcGFyLT5yaXZhLlBSQU1EQUNbMHgwMDAw
MDg4MC80XSA9IDA7CisJcGFyLT5yaXZhLlBSQU1EQUNbMHgwMDAwMDhhMC80XSA9IDA7CisJcGFy
LT5yaXZhLlBNQ1sweDAwMDA4OTA4LzRdID0gcGFyLT5yaXZhLlJhbUFtb3VudEtCeXRlcyAqIDEw
MjQgLSAxOworCXBhci0+cml2YS5QTUNbMHgwMDAwODkwYy80XSA9IHBhci0+cml2YS5SYW1BbW91
bnRLQnl0ZXMgKiAxMDI0IC0gMTsKKwkvKiBTd2l0Y2ggR1BVIHRvIFJHQiBvdXRwdXQgKi8KKwlw
YXItPnJpdmEuUFJBTURBQ1sweDAwMDAwNjMwLzRdID0gMDsgCisJLyogVGhlc2UgZml4IHRoZSBt
YXJvb24gYm9yZGVycyBzZWVuIHdoZW4gYm9vdGluZyBmcm9tIFhyb213ZWxsIG9yIAorCSogeGJl
Ym9vdAorCSovCisJcGFyLT5yaXZhLlBSQU1EQUNbMHgwMDAwMDg0Yy80XSA9IDA7CisJcGFyLT5y
aXZhLlBSQU1EQUNbMHgwMDAwMDhjNC80XSA9IDA7CisJCisJLyogZm9yIFlDckNiOgorCXBhci0+
cml2YS5QUkFNREFDWzB4MDAwMDA2MzAvNF0gPSAyOyAKKwlwYXItPnJpdmEuUFJBTURBQ1sweDAw
MDAwODRjLzRdID0weDAwODAxMDgwOworCXBhci0+cml2YS5QUkFNREFDWzB4MDAwMDA4YzQvNF0g
PTB4NDA4MDEwODA7CisJKi8KKwlNSVNDb3V0KHBhciwgcmVncy0+bWlzY19vdXRwdXQpOworCisJ
Zm9yIChpID0gMDsgaSA8IE5VTV9DUlRfUkVHUzsgaSsrKSB7CisJCXN3aXRjaCAoaSkgeworCQlj
YXNlIDB4MGM6CisJCWNhc2UgMHgwZDoKKwkJY2FzZSAweDE5OgorCQljYXNlIDB4MjAgLi4uIDB4
NDA6CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCUNSVENvdXQocGFyLCBpLCByZWdzLT5jcnRj
W2ldKTsKKwkJfQorCX0KKworCWZvciAoaSA9IDA7IGkgPCBOVU1fQVRDX1JFR1M7IGkrKykKKwkJ
QVRUUm91dChwYXIsIGksIHJlZ3MtPmF0dHJbaV0pOworCisJZm9yIChpID0gMDsgaSA8IE5VTV9H
UkNfUkVHUzsgaSsrKQorCQlHUkFvdXQocGFyLCBpLCByZWdzLT5ncmFbaV0pOworCisJZm9yIChp
ID0gMDsgaSA8IE5VTV9TRVFfUkVHUzsgaSsrKQorCQlTRVFvdXQocGFyLCBpLCByZWdzLT5zZXFb
aV0pOworCXR2X3NhdmVfbW9kZShyZWdzLT5lbmNvZGVyX21vZGUpOworfQorCitzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIGxvbmcgeGJveF9tZW1vcnlfc2l6ZSh2b2lkKSB7CisJLyogbWFrZSBhIGd1
ZXNzIG9uIHRoZSB4Ym94IG1lbW9yeSBzaXplLiBUaGVyZSBhcmUganVzdAorCXR3byBwb3NzaWJp
bGl0aWVzICovCisJaWYgKChudW1fcGh5c3BhZ2VzIDw8IFBBR0VfU0hJRlQpID4gNjQqMTAyNCox
MDI0KSB7CisJCXJldHVybiAxMjgqMTAyNCoxMDI0OworCX0gZWxzZSB7CisJCXJldHVybiA2NCox
MDI0KjEwMjQ7CisJfQorfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgYXZhaWxhYmxl
X2ZyYW1lYnVmZmVyX21lbW9yeSh2b2lkKSB7CisJcmV0dXJuIHhib3hfbWVtb3J5X3NpemUoKSAt
IChudW1fcGh5c3BhZ2VzIDw8IFBBR0VfU0hJRlQpOworfQorCisvKioKKyAqIHJpdmFfbG9hZF92
aWRlb19tb2RlIC0gY2FsY3VsYXRlIHRpbWluZ3MKKyAqIEBpbmZvOiBwb2ludGVyIHRvIGZiX2lu
Zm8gb2JqZWN0IGNvbnRhaW5pbmcgaW5mbyBmb3IgY3VycmVudCByaXZhIGJvYXJkCisgKgorICog
REVTQ1JJUFRJT046CisgKiBDYWxjdWxhdGUgc29tZSB0aW1pbmdzIGFuZCB0aGVuIHNlbmQgZW0g
b2ZmIHRvIHJpdmFfbG9hZF9zdGF0ZSgpLgorICoKKyAqIENBTExFRCBGUk9NOgorICogeGJveGZi
X3NldF9wYXIoKQorICovCitzdGF0aWMgdm9pZCByaXZhX2xvYWRfdmlkZW9fbW9kZShzdHJ1Y3Qg
ZmJfaW5mbyAqaW5mbykKK3sKKwlpbnQgYnBwLCB3aWR0aCwgaGVpZ2h0LCBoRGlzcGxheVNpemUs
IGhTdGFydCwgaFRvdGFsLCB2U3RhcnQsIHZUb3RhbDsKKwlpbnQgY3J0Y19oRGlzcGxheSwgY3J0
Y19oU3RhcnQsIGNydGNfaEVuZCwgY3J0Y19oVG90YWw7CisJaW50IGNydGNfdkRpc3BsYXksIGNy
dGNfdlN0YXJ0LCBjcnRjX3ZFbmQsIGNydGNfdlRvdGFsLCBkb3RDbG9jazsKKwlpbnQgY3J0Y19o
QmxhbmtTdGFydCwgY3J0Y19oQmxhbmtFbmQsIGNydGNfdkJsYW5rU3RhcnQsIGNydGNfdkJsYW5r
RW5kOworCXN0cnVjdCByaXZhX3BhciAqcGFyID0gKHN0cnVjdCByaXZhX3BhciAqKSBpbmZvLT5w
YXI7CisJc3RydWN0IHJpdmFfcmVncyBuZXdtb2RlOworCWludCBlbmNvZGVyX29rID0gMDsJCisJ
CisJLyogdGltZSB0byBjYWxjdWxhdGUgKi8KKwl4Ym94ZmJfYmxhbmsoMSwgaW5mbyk7CisKKwli
cHAgPSBpbmZvLT52YXIuYml0c19wZXJfcGl4ZWw7CisJaWYgKGJwcCA9PSAxNiAmJiBpbmZvLT52
YXIuZ3JlZW4ubGVuZ3RoID09IDUpCisJCWJwcCA9IDE1OworCXdpZHRoID0gaW5mby0+dmFyLnhy
ZXNfdmlydHVhbDsKKwloZWlnaHQgPSBpbmZvLT52YXIueXJlc192aXJ0dWFsOworCWhEaXNwbGF5
U2l6ZSA9IGluZm8tPnZhci54cmVzOworCWhTdGFydCA9IGhEaXNwbGF5U2l6ZSArIGluZm8tPnZh
ci5yaWdodF9tYXJnaW47CisJaFRvdGFsID0gaERpc3BsYXlTaXplICsgaW5mby0+dmFyLnJpZ2h0
X21hcmdpbiArCisJCSAgaW5mby0+dmFyLmhzeW5jX2xlbiArIGluZm8tPnZhci5sZWZ0X21hcmdp
bjsKKwl2U3RhcnQgPSBpbmZvLT52YXIueXJlcyArIGluZm8tPnZhci5sb3dlcl9tYXJnaW47CisJ
dlRvdGFsID0gaW5mby0+dmFyLnlyZXMgKyBpbmZvLT52YXIubG93ZXJfbWFyZ2luICsKKwkJIGlu
Zm8tPnZhci52c3luY19sZW4gKyBpbmZvLT52YXIudXBwZXJfbWFyZ2luOworCQorCWNydGNfaERp
c3BsYXkgPSAoaERpc3BsYXlTaXplIC8gOCkgLSAxOworCWNydGNfaFN0YXJ0ID0gKGhUb3RhbCAt
IDMyKSAvIDg7CisJLyogY3J0Y19oU3RhcnQgPSBoU3RhcnQgLyA4IC0gMTsgKi8KKwljcnRjX2hF
bmQgPSBjcnRjX2hTdGFydCArIDE7CisJLyogY3J0Y19oRW5kID0gKGhTdGFydCArIGluZm8tPnZh
ci5oc3luY19sZW4pIC8gOCAtIDE7ICovCisJY3J0Y19oVG90YWwgPSBoVG90YWwgLyA4IC0gNTsK
KwljcnRjX2hCbGFua1N0YXJ0ID0gY3J0Y19oRGlzcGxheTsKKwljcnRjX2hCbGFua0VuZCA9IGNy
dGNfaFRvdGFsICsgNDsKKwkKKwljcnRjX3ZEaXNwbGF5ID0gaW5mby0+dmFyLnlyZXMgLSAxOwor
CS8qIGNydGNfdlN0YXJ0ID0gdlN0YXJ0IC0gMTsgKi8KKwljcnRjX3ZTdGFydCA9IHZTdGFydCAt
IDE7CisJLyogY3J0Y192RW5kID0gdlN0YXJ0ICsgaW5mby0+dmFyLnZzeW5jX2xlbiAtIDE7ICov
CisJY3J0Y192RW5kID0gY3J0Y192U3RhcnQgKyAyOworCWNydGNfdlRvdGFsID0gdlRvdGFsICsg
MjsKKwljcnRjX3ZEaXNwbGF5ID0gaW5mby0+dmFyLnlyZXMgLSAxOworCWNydGNfdkJsYW5rU3Rh
cnQgPSBjcnRjX3ZEaXNwbGF5OworCWNydGNfdkJsYW5rRW5kID0gY3J0Y192VG90YWwgKyAxOwor
CQorCWRvdENsb2NrID0gMTAwMDAwMDAwMCAvIGluZm8tPnZhci5waXhjbG9jazsKKworCW1lbWNw
eSgmbmV3bW9kZSwgJnJlZ190ZW1wbGF0ZSwgc2l6ZW9mKHN0cnVjdCByaXZhX3JlZ3MpKTsKKwor
CWlmICgoaW5mby0+dmFyLnZtb2RlICYgRkJfVk1PREVfTUFTSykgPT0gRkJfVk1PREVfSU5URVJM
QUNFRCkKKwkJdlRvdGFsIHw9IDE7CisKKwlpZiAocGFyLT5GbGF0UGFuZWwpIHsKKwkJY3J0Y192
U3RhcnQgPSBjcnRjX3ZUb3RhbCAtIDM7CisJCWNydGNfdkVuZCA9IGNydGNfdlRvdGFsIC0gMjsK
KwkJY3J0Y192QmxhbmtTdGFydCA9IGNydGNfdlN0YXJ0OworCQljcnRjX2hTdGFydCA9IGNydGNf
aFRvdGFsIC0gMzsKKwkJY3J0Y19oRW5kID0gY3J0Y19oVG90YWwgLSAyOworCQljcnRjX2hCbGFu
a0VuZCA9IGNydGNfaFRvdGFsICsgNDsKKwl9CisKKwluZXdtb2RlLmV4dC5icHAgPSBicHA7CisJ
bmV3bW9kZS5leHQuZmJfc3RhcnQgPSBwYXItPnJpdmFfZmJfc3RhcnQ7CisKKwlpZigocGFyLT5h
dl90eXBlID09IEFWX1ZHQSkgfHwgKHBhci0+YXZfdHlwZSA9PSBBVl9WR0FfU09HKSB8fCAocGFy
LT5hdl90eXBlID09IEFWX0hEVFYpKSB7CisJCXVuc2lnbmVkIGNoYXIgcGxsX2ludCA9ICh1bnNp
Z25lZCBjaGFyKSgoZG91YmxlKWRvdENsb2NrICogNi4wIC8gMTMuNWUzICsgMC41KTsKKwkJaWYg
KHBhci0+YXZfdHlwZSA9PSBBVl9IRFRWKSB7CisJCQl4Ym94X2hkdHZfbW9kZSBoZHR2X21vZGUg
PSBIRFRWXzQ4MHA7CisJCQlpZiAoaW5mby0+dmFyLnlyZXMgPiA4MDApIHsKKwkJCQloZHR2X21v
ZGUgPSBIRFRWXzEwODBpOworCQkJCWNydGNfdlN0YXJ0ID0gdlN0YXJ0ICsgMzE7CisJCQkJY3J0
Y192RW5kID0gY3J0Y192U3RhcnQgKyAyOworCQkJfQorCQkJZWxzZSBpZiAoaW5mby0+dmFyLnly
ZXMgPiA2MDApIHsKKwkJCQloZHR2X21vZGUgPSBIRFRWXzcyMHA7CisJCQl9CisJCQlpZiAocGFy
LT52aWRlb19lbmNvZGVyID09IEVOQ09ERVJfQ09ORVhBTlQpCisJCQkJZW5jb2Rlcl9vayA9IGNv
bmV4YW50X2NhbGNfaGR0dl9tb2RlKGhkdHZfbW9kZSwgcGxsX2ludCwgbmV3bW9kZS5lbmNvZGVy
X21vZGUpOworCQkJZWxzZSBpZiAocGFyLT52aWRlb19lbmNvZGVyID09IEVOQ09ERVJfRk9DVVMp
CisJCQkJZW5jb2Rlcl9vayA9IGZvY3VzX2NhbGNfaGR0dl9tb2RlKGhkdHZfbW9kZSwgcGxsX2lu
dCwgbmV3bW9kZS5lbmNvZGVyX21vZGUpOworCQkJZWxzZSBwcmludGsoIkVycm9yIC0gdW5rbm93
biBlbmNvZGVyIHR5cGUgZGV0ZWN0ZWRcbiIpOworCQl9CisJCWVsc2UgeworCQkJaWYgKHBhci0+
dmlkZW9fZW5jb2RlciA9PSBFTkNPREVSX0NPTkVYQU5UKQorCQkJCWVuY29kZXJfb2sgPSBjb25l
eGFudF9jYWxjX3ZnYV9tb2RlKHBhci0+YXZfdHlwZSwgcGxsX2ludCwgbmV3bW9kZS5lbmNvZGVy
X21vZGUpOworCQkJZWxzZSBpZiAocGFyLT52aWRlb19lbmNvZGVyID09IEVOQ09ERVJfRk9DVVMp
IHsKKwkJCQkvL05vIHZnYSBmdW5jdGlvbnMgYXMgeWV0IC0gc28gc2V0IHVwIGZvciA0ODBwIG90
aGVyd2lzZSB3ZSBkb250IGJvb3QgYXQgYWxsLiAKKwkJCQllbmNvZGVyX29rID0gZm9jdXNfY2Fs
Y19oZHR2X21vZGUoSERUVl80ODBwLCBwbGxfaW50LCBuZXdtb2RlLmVuY29kZXJfbW9kZSk7CisJ
CQl9CisJCQkKKwkJCWVsc2UgcHJpbnRrKCJFcnJvciAtIHVua25vd24gZW5jb2RlciB0eXBlIGRl
dGVjdGVkXG4iKTsKKwkJfQorCQluZXdtb2RlLmV4dC52ZW5kID0gaW5mby0+dmFyLnlyZXMgLSAx
OworCQluZXdtb2RlLmV4dC52dG90YWwgPSB2VG90YWw7CisJCW5ld21vZGUuZXh0LnZjcnRjID0g
aW5mby0+dmFyLnlyZXMgLSAxOworCQluZXdtb2RlLmV4dC52c3luY3N0YXJ0ID0gdlN0YXJ0Owor
CQluZXdtb2RlLmV4dC52c3luY2VuZCA9IHZTdGFydCArIDM7CisJCW5ld21vZGUuZXh0LnZ2YWxp
ZHN0YXJ0ID0gMDsKKwkJbmV3bW9kZS5leHQudnZhbGlkZW5kID0gaW5mby0+dmFyLnlyZXMgLSAx
OworCQluZXdtb2RlLmV4dC5oZW5kID0gaW5mby0+dmFyLnhyZXMgLSAxOworCQluZXdtb2RlLmV4
dC5odG90YWwgPSBoVG90YWw7CisJCW5ld21vZGUuZXh0LmhjcnRjID0gaW5mby0+dmFyLnhyZXMg
LSAxOworCQluZXdtb2RlLmV4dC5oc3luY3N0YXJ0ID0gaFN0YXJ0OworCQluZXdtb2RlLmV4dC5o
c3luY2VuZCA9IGhTdGFydCArIDMyOworCQluZXdtb2RlLmV4dC5odmFsaWRzdGFydCA9IDA7CisJ
CW5ld21vZGUuZXh0Lmh2YWxpZGVuZCA9IGluZm8tPnZhci54cmVzIC0gMTsKKwl9CisKKwkvKiBO
b3JtYWwgY29tcG9zaXRlICovCisJZWxzZSB7CisJCXhib3hfdmlkZW9fbW9kZSBlbmNvZGVyX21v
ZGU7CisJCWVuY29kZXJfbW9kZS54cmVzID0gaW5mby0+dmFyLnhyZXM7CisJCWVuY29kZXJfbW9k
ZS55cmVzID0gaW5mby0+dmFyLnlyZXM7CisJCWVuY29kZXJfbW9kZS50dl9lbmNvZGluZyA9IHBh
ci0+dHZfZW5jb2Rpbmc7CisJCWVuY29kZXJfbW9kZS5icHAgPSBicHA7CisJCWVuY29kZXJfbW9k
ZS5ob2MgPSBwYXItPmhvYzsKKwkJZW5jb2Rlcl9tb2RlLnZvYyA9IHBhci0+dm9jOworCQllbmNv
ZGVyX21vZGUuYXZfdHlwZSA9IHBhci0+YXZfdHlwZTsKKworCQlpZiAocGFyLT52aWRlb19lbmNv
ZGVyID09IEVOQ09ERVJfQ09ORVhBTlQpIHsKKwkJCWVuY29kZXJfb2sgPSBjb25leGFudF9jYWxj
X21vZGUoJmVuY29kZXJfbW9kZSwgJm5ld21vZGUpOworCQl9CisJCWVsc2UgaWYgKHBhci0+dmlk
ZW9fZW5jb2RlciA9PSBFTkNPREVSX0ZPQ1VTKSB7CisJCQllbmNvZGVyX29rID0gZm9jdXNfY2Fs
Y19tb2RlKCZlbmNvZGVyX21vZGUsICZuZXdtb2RlKTsKKwkJfQorCQllbHNlIHByaW50aygiRXJy
b3IgLSB1bmtub3duIGVuY29kZXIgdHlwZSBkZXRlY3RlZFxuIik7CisKKwkJY3J0Y19oRGlzcGxh
eSA9IChuZXdtb2RlLmV4dC5jcnRjaGRpc3BlbmQgLyA4KSAtIDE7CisJCWNydGNfaFN0YXJ0ID0g
KG5ld21vZGUuZXh0Lmh0b3RhbCAtIDMyKSAvIDg7CisJCWNydGNfaEVuZCA9IGNydGNfaFN0YXJ0
ICsgMTsKKwkJY3J0Y19oVG90YWwgPSAobmV3bW9kZS5leHQuaHRvdGFsKSAvIDggLSA1OworCQlj
cnRjX2hCbGFua1N0YXJ0ID0gY3J0Y19oRGlzcGxheTsKKwkJY3J0Y19oQmxhbmtFbmQgPSAobmV3
bW9kZS5leHQuaHRvdGFsKSAvIDggLSAxOworCQkKKwkJY3J0Y192RGlzcGxheSA9IGluZm8tPnZh
ci55cmVzOworCQljcnRjX3ZTdGFydCA9IG5ld21vZGUuZXh0LmNydGN2c3RhcnQ7CisJCWNydGNf
dkVuZCA9IG5ld21vZGUuZXh0LmNydGN2c3RhcnQgKyAzOworCQljcnRjX3ZUb3RhbCA9IG5ld21v
ZGUuZXh0LmNydGN2dG90YWw7CisJCWNydGNfdkJsYW5rU3RhcnQgPSBjcnRjX3ZEaXNwbGF5Owor
CQljcnRjX3ZCbGFua0VuZCA9IGNydGNfdlRvdGFsICsgMTsKKwl9CisKKwlpZiAoZW5jb2Rlcl9v
aykgeworCQluZXdtb2RlLmNydGNbMHgwXSA9IFNldDhCaXRzIChjcnRjX2hUb3RhbCk7IAorCQlu
ZXdtb2RlLmNydGNbMHgxXSA9IFNldDhCaXRzIChjcnRjX2hEaXNwbGF5KTsKKwkJbmV3bW9kZS5j
cnRjWzB4Ml0gPSBTZXQ4Qml0cyAoY3J0Y19oQmxhbmtTdGFydCk7CisJCW5ld21vZGUuY3J0Y1sw
eDNdID0gU2V0Qml0RmllbGQgKGNydGNfaEJsYW5rRW5kLCA0OiAwLCA0OjApIHwgU2V0Qml0ICg3
KTsKKwkJbmV3bW9kZS5jcnRjWzB4NF0gPSBTZXQ4Qml0cyAoY3J0Y19oU3RhcnQpOworCQluZXdt
b2RlLmNydGNbMHg1XSA9IFNldEJpdEZpZWxkIChjcnRjX2hCbGFua0VuZCwgNTogNSwgNzo3KQor
CQkJfCBTZXRCaXRGaWVsZCAoY3J0Y19oRW5kLCA0OiAwLCA0OjApOworCQluZXdtb2RlLmNydGNb
MHg2XSA9IFNldEJpdEZpZWxkIChjcnRjX3ZUb3RhbCwgNzogMCwgNzowKTsKKwkJbmV3bW9kZS5j
cnRjWzB4N10gPSBTZXRCaXRGaWVsZCAoY3J0Y192VG90YWwsIDg6IDgsIDA6MCkKKwkJCXwgU2V0
Qml0RmllbGQgKGNydGNfdkRpc3BsYXksIDg6IDgsIDE6MSkKKwkJCXwgU2V0Qml0RmllbGQgKGNy
dGNfdlN0YXJ0LCA4OiA4LCAyOjIpCisJCQl8IFNldEJpdEZpZWxkIChjcnRjX3ZCbGFua1N0YXJ0
LCA4OiA4LCAzOjMpCisJCQl8IFNldEJpdCAoNCkKKwkJCXwgU2V0Qml0RmllbGQgKGNydGNfdlRv
dGFsLCA5OiA5LCA1OjUpCisJCQl8IFNldEJpdEZpZWxkIChjcnRjX3ZEaXNwbGF5LCA5OiA5LCA2
OjYpCisJCQl8IFNldEJpdEZpZWxkIChjcnRjX3ZTdGFydCwgOTogOSwgNzo3KTsKKwkJbmV3bW9k
ZS5jcnRjWzB4OV0gPSBTZXRCaXRGaWVsZCAoY3J0Y192QmxhbmtTdGFydCwgOTogOSwgNTo1KQor
CQkJfCBTZXRCaXQgKDYpOworCQluZXdtb2RlLmNydGNbMHgxMF0gPSBTZXQ4Qml0cyAoY3J0Y192
U3RhcnQpOworCQluZXdtb2RlLmNydGNbMHgxMV0gPSBTZXRCaXRGaWVsZCAoY3J0Y192RW5kLCAz
OiAwLCAzOjApCisJCQl8IFNldEJpdCAoNSk7CisJCW5ld21vZGUuY3J0Y1sweDEyXSA9IFNldDhC
aXRzIChjcnRjX3ZEaXNwbGF5KTsKKwkJbmV3bW9kZS5jcnRjWzB4MTNdID0gKHdpZHRoIC8gOCkg
KiAoKGJwcCArIDEpIC8gOCk7CisJCW5ld21vZGUuY3J0Y1sweDE1XSA9IFNldDhCaXRzIChjcnRj
X3ZCbGFua1N0YXJ0KTsKKwkJbmV3bW9kZS5jcnRjWzB4MTZdID0gU2V0OEJpdHMgKGNydGNfdkJs
YW5rRW5kKTsKKwkKKwkJbmV3bW9kZS5leHQuc2NyZWVuID0gU2V0Qml0RmllbGQoY3J0Y19oQmxh
bmtFbmQsNjo2LDQ6NCkKKwkJCXwgU2V0Qml0RmllbGQoY3J0Y192QmxhbmtTdGFydCwxMDoxMCwz
OjMpCisJCQl8IFNldEJpdEZpZWxkKGNydGNfdlN0YXJ0LDEwOjEwLDI6MikKKwkJCXwgU2V0Qml0
RmllbGQoY3J0Y192RGlzcGxheSwxMDoxMCwxOjEpCisJCQl8IFNldEJpdEZpZWxkKGNydGNfdlRv
dGFsLDEwOjEwLDA6MCk7CisJCW5ld21vZGUuZXh0Lmhvcml6ICA9IFNldEJpdEZpZWxkKGNydGNf
aFRvdGFsLDg6OCwwOjApIAorCQkJfCBTZXRCaXRGaWVsZChjcnRjX2hEaXNwbGF5LDg6OCwxOjEp
CisJCQl8IFNldEJpdEZpZWxkKGNydGNfaEJsYW5rU3RhcnQsODo4LDI6MikKKwkJCXwgU2V0Qml0
RmllbGQoY3J0Y19oU3RhcnQsODo4LDM6Myk7CisJCW5ld21vZGUuZXh0LmV4dHJhICA9IFNldEJp
dEZpZWxkKGNydGNfdlRvdGFsLDExOjExLDA6MCkKKwkJCXwgU2V0Qml0RmllbGQoY3J0Y192RGlz
cGxheSwxMToxMSwyOjIpCisJCQl8IFNldEJpdEZpZWxkKGNydGNfdlN0YXJ0LDExOjExLDQ6NCkK
KwkJCXwgU2V0Qml0RmllbGQoY3J0Y192QmxhbmtTdGFydCwxMToxMSw2OjYpOyAKKwkKKwkJaWYg
KChpbmZvLT52YXIudm1vZGUgJiBGQl9WTU9ERV9NQVNLKSA9PSBGQl9WTU9ERV9JTlRFUkxBQ0VE
KSB7CisJCQlpbnQgdG1wID0gKGNydGNfaFRvdGFsID4+IDEpICYgfjE7CisJCQluZXdtb2RlLmV4
dC5pbnRlcmxhY2UgPSBTZXQ4Qml0cyh0bXApOworCQkJbmV3bW9kZS5leHQuaG9yaXogfD0gU2V0
Qml0RmllbGQodG1wLCA4OjgsNDo0KTsKKwkJfSBlbHNlIAorCQkJbmV3bW9kZS5leHQuaW50ZXJs
YWNlID0gMHhmZjsgLyogaW50ZXJsYWNlIG9mZiAqLworCQorCQlpZiAocGFyLT5yaXZhLkFyY2hp
dGVjdHVyZSA+PSBOVl9BUkNIXzEwKQorCQkJcGFyLT5yaXZhLkNVUlNPUiA9IChVMDMyICopKGlu
Zm8tPnNjcmVlbl9iYXNlICsgaW5mby0+Zml4LnNtZW1fbGVuKTsKKwkKKwkJaWYgKGluZm8tPnZh
ci5zeW5jICYgRkJfU1lOQ19IT1JfSElHSF9BQ1QpCisJCQluZXdtb2RlLm1pc2Nfb3V0cHV0ICY9
IH4weDQwOworCQllbHNlCisJCQluZXdtb2RlLm1pc2Nfb3V0cHV0IHw9IDB4NDA7CisJCWlmIChp
bmZvLT52YXIuc3luYyAmIEZCX1NZTkNfVkVSVF9ISUdIX0FDVCkKKwkJCW5ld21vZGUubWlzY19v
dXRwdXQgJj0gfjB4ODA7CisJCWVsc2UKKwkJCW5ld21vZGUubWlzY19vdXRwdXQgfD0gMHg4MDsJ
CisJCisJCXBhci0+cml2YS5DYWxjU3RhdGVFeHQoJnBhci0+cml2YSwgJm5ld21vZGUuZXh0LCBi
cHAsIHdpZHRoLAorCQkJCQloRGlzcGxheVNpemUsIGhlaWdodCwgZG90Q2xvY2spOworCQorCQlu
ZXdtb2RlLmV4dC5zY2FsZSA9IHBhci0+cml2YS5QUkFNREFDWzB4MDAwMDA4NDgvNF0gJiAweGZm
ZjAwMGZmOworCQlpZiAocGFyLT5GbGF0UGFuZWwgPT0gMSkgeworCQkJbmV3bW9kZS5leHQucGl4
ZWwgfD0gKDEgPDwgNyk7CisJCQluZXdtb2RlLmV4dC5zY2FsZSB8PSAoMSA8PCA4KTsKKwkJfQor
CQlpZiAocGFyLT5TZWNvbmRDUlRDKSB7CisJCQluZXdtb2RlLmV4dC5oZWFkICA9IHBhci0+cml2
YS5QQ1JUQzBbMHgwMDAwMDg2MC80XSAmIH4weDAwMDAxMDAwOworCQkJbmV3bW9kZS5leHQuaGVh
ZDIgPSBwYXItPnJpdmEuUENSVEMwWzB4MDAwMDI4NjAvNF0gfCAweDAwMDAxMDAwOworCQkJbmV3
bW9kZS5leHQuY3J0Y093bmVyID0gMzsKKwkJCW5ld21vZGUuZXh0LnBsbHNlbCB8PSAweDIwMDAw
ODAwOworCQkJbmV3bW9kZS5leHQudnBsbDIgPSBuZXdtb2RlLmV4dC52cGxsOworCQl9IGVsc2Ug
aWYgKHBhci0+cml2YS50d29IZWFkcykgeworCQkJbmV3bW9kZS5leHQuaGVhZCAgPSAgcGFyLT5y
aXZhLlBDUlRDMFsweDAwMDAwODYwLzRdIHwgMHgwMDAwMTAwMDsKKwkJCW5ld21vZGUuZXh0Lmhl
YWQyID0gIHBhci0+cml2YS5QQ1JUQzBbMHgwMDAwMjg2MC80XSAmIH4weDAwMDAxMDAwOworCQkJ
bmV3bW9kZS5leHQuY3J0Y093bmVyID0gMDsKKwkJCW5ld21vZGUuZXh0LnZwbGwyID0gcGFyLT5y
aXZhLlBSQU1EQUMwWzB4MDAwMDA1MjAvNF07CisJCX0KKwkJaWYgKHBhci0+RmxhdFBhbmVsID09
IDEpIHsKKwkJCW5ld21vZGUuZXh0LnBpeGVsIHw9ICgxIDw8IDcpOworCQkJbmV3bW9kZS5leHQu
c2NhbGUgfD0gKDEgPDwgOCk7CisJCX0KKwkJbmV3bW9kZS5leHQuY3Vyc29yQ29uZmlnID0gMHgw
MjAwMDEwMDsKKwkJcGFyLT5jdXJyZW50X3N0YXRlID0gbmV3bW9kZTsKKwkJcml2YV9sb2FkX3N0
YXRlKHBhciwgJnBhci0+Y3VycmVudF9zdGF0ZSk7CisJCXR2X2xvYWRfbW9kZShuZXdtb2RlLmVu
Y29kZXJfbW9kZSk7CisJCXBhci0+cml2YS5Mb2NrVW5sb2NrKCZwYXItPnJpdmEsIDApOyAvKiBp
bXBvcnRhbnQgZm9yIEhXIGN1cnNvciAqLworCX0KKwllbHNlIHsKKwkJcHJpbnRrKCJFcnJvcjog
VW5hYmxlIHRvIHNldCBlbmNvZGVyIHJlc29sdXRpb24gJWR4JWRcbiIsaW5mby0+dmFyLnhyZXMs
IGluZm8tPnZhci55cmVzKTsKKwl9CisJCisJeGJveGZiX2JsYW5rKDAsIGluZm8pOworfQorCisv
KioKKyAqIHhib3hmYl9kb19tYXhpbWl6ZSAtIAorICogQGluZm86IHBvaW50ZXIgdG8gZmJfaW5m
byBvYmplY3QgY29udGFpbmluZyBpbmZvIGZvciBjdXJyZW50IHJpdmEgYm9hcmQKKyAqIEB2YXI6
CisgKiBAbm9tOgorICogQGRlbjoKKyAqCisgKiBERVNDUklQVElPTjoKKyAqIC4KKyAqCisgKiBS
RVRVUk5TOgorICogLUVJTlZBTCBvbiBmYWlsdXJlLCAwIG9uIHN1Y2Nlc3MKKyAqIAorICoKKyAq
IENBTExFRCBGUk9NOgorICogeGJveGZiX2NoZWNrX3ZhcigpCisgKi8KK3N0YXRpYyBpbnQgeGJv
eGZiX2RvX21heGltaXplKHN0cnVjdCBmYl9pbmZvICppbmZvLAorCQkJICAgICAgc3RydWN0IGZi
X3Zhcl9zY3JlZW5pbmZvICp2YXIsCisJCQkgICAgICBpbnQgbm9tLCBpbnQgZGVuKQoreworCXN0
YXRpYyBzdHJ1Y3QgeworCQlpbnQgeHJlcywgeXJlczsKKwl9IG1vZGVzW10gPSB7CisJCXsxNjAw
LCAxMjgwfSwKKwkJezEyODAsIDEwMjR9LAorCQl7MTAyNCwgNzY4fSwKKwkJezgwMCwgNjAwfSwK
KwkJezY0MCwgNDgwfSwKKwkJey0xLCAtMX0KKwl9OworCWludCBpOworCisJLyogdXNlIGhpZ2hl
c3QgcG9zc2libGUgdmlydHVhbCByZXNvbHV0aW9uICovCisJaWYgKHZhci0+eHJlc192aXJ0dWFs
ID09IC0xICYmIHZhci0+eXJlc192aXJ0dWFsID09IC0xKSB7CisJCXByaW50ayhLRVJOX1dBUk5J
TkcgUEZYCisJCSAgICAgICAidXNpbmcgbWF4aW11bSBhdmFpbGFibGUgdmlydHVhbCByZXNvbHV0
aW9uXG4iKTsKKwkJZm9yIChpID0gMDsgbW9kZXNbaV0ueHJlcyAhPSAtMTsgaSsrKSB7CisJCQlp
ZiAobW9kZXNbaV0ueHJlcyAqIG5vbSAvIGRlbiAqIG1vZGVzW2ldLnlyZXMgPAorCQkJICAgIGlu
Zm8tPmZpeC5zbWVtX2xlbiAvIDIpCisJCQkJYnJlYWs7CisJCX0KKwkJaWYgKG1vZGVzW2ldLnhy
ZXMgPT0gLTEpIHsKKwkJCXByaW50ayhLRVJOX0VSUiBQRlgKKwkJCSAgICAgICAiY291bGQgbm90
IGZpbmQgYSB2aXJ0dWFsIHJlc29sdXRpb24gdGhhdCBmaXRzIGludG8gdmlkZW8gbWVtb3J5ISFc
biIpOworCQkJRFBSSU5USygiRVhJVCAtIEVJTlZBTCBlcnJvclxuIik7CisJCQlyZXR1cm4gLUVJ
TlZBTDsKKwkJfQorCQl2YXItPnhyZXNfdmlydHVhbCA9IG1vZGVzW2ldLnhyZXM7CisJCXZhci0+
eXJlc192aXJ0dWFsID0gbW9kZXNbaV0ueXJlczsKKworCQlwcmludGsoS0VSTl9JTkZPIFBGWAor
CQkgICAgICAgInZpcnR1YWwgcmVzb2x1dGlvbiBzZXQgdG8gbWF4aW11bSBvZiAlZHglZFxuIiwK
KwkJICAgICAgIHZhci0+eHJlc192aXJ0dWFsLCB2YXItPnlyZXNfdmlydHVhbCk7CisJfSBlbHNl
IGlmICh2YXItPnhyZXNfdmlydHVhbCA9PSAtMSkgeworCQl2YXItPnhyZXNfdmlydHVhbCA9IChp
bmZvLT5maXguc21lbV9sZW4gKiBkZW4gLworCQkJKG5vbSAqIHZhci0+eXJlc192aXJ0dWFsICog
MikpICYgfjE1OworCQlwcmludGsoS0VSTl9XQVJOSU5HIFBGWAorCQkgICAgICAgInNldHRpbmcg
dmlydHVhbCBYIHJlc29sdXRpb24gdG8gJWRcbiIsIHZhci0+eHJlc192aXJ0dWFsKTsKKwl9IGVs
c2UgaWYgKHZhci0+eXJlc192aXJ0dWFsID09IC0xKSB7CisJCXZhci0+eHJlc192aXJ0dWFsID0g
KHZhci0+eHJlc192aXJ0dWFsICsgMTUpICYgfjE1OworCQl2YXItPnlyZXNfdmlydHVhbCA9IGlu
Zm8tPmZpeC5zbWVtX2xlbiAqIGRlbiAvCisJCQkobm9tICogdmFyLT54cmVzX3ZpcnR1YWwgKiAy
KTsKKwkJcHJpbnRrKEtFUk5fV0FSTklORyBQRlgKKwkJICAgICAgICJzZXR0aW5nIHZpcnR1YWwg
WSByZXNvbHV0aW9uIHRvICVkXG4iLCB2YXItPnlyZXNfdmlydHVhbCk7CisJfSBlbHNlIHsKKwkJ
dmFyLT54cmVzX3ZpcnR1YWwgPSAodmFyLT54cmVzX3ZpcnR1YWwgKyAxNSkgJiB+MTU7CisJCWlm
ICh2YXItPnhyZXNfdmlydHVhbCAqIG5vbSAvIGRlbiAqIHZhci0+eXJlc192aXJ0dWFsID4gaW5m
by0+Zml4LnNtZW1fbGVuKSB7CisJCQlwcmludGsoS0VSTl9FUlIgUEZYCisJCQkgICAgICAgIm1v
ZGUgJWR4JWR4JWQgcmVqZWN0ZWQuLi5yZXNvbHV0aW9uIHRvbyBoaWdoIHRvIGZpdCBpbnRvIHZp
ZGVvIG1lbW9yeSFcbiIsCisJCQkgICAgICAgdmFyLT54cmVzLCB2YXItPnlyZXMsIHZhci0+Yml0
c19wZXJfcGl4ZWwpOworCQkJRFBSSU5USygiRVhJVCAtIEVJTlZBTCBlcnJvclxuIik7CisJCQly
ZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0KKwkKKwlpZiAodmFyLT54cmVzX3ZpcnR1YWwgKiBub20g
LyBkZW4gPj0gODE5MikgeworCQlwcmludGsoS0VSTl9XQVJOSU5HIFBGWAorCQkgICAgICAgInZp
cnR1YWwgWCByZXNvbHV0aW9uICglZCkgaXMgdG9vIGhpZ2gsIGxvd2VyaW5nIHRvICVkXG4iLAor
CQkgICAgICAgdmFyLT54cmVzX3ZpcnR1YWwsIDgxOTIgKiBkZW4gLyBub20gLSAxNik7CisJCXZh
ci0+eHJlc192aXJ0dWFsID0gODE5MiAqIGRlbiAvIG5vbSAtIDE2OworCX0KKwkKKwlpZiAodmFy
LT54cmVzX3ZpcnR1YWwgPCB2YXItPnhyZXMpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIFBGWAorCQkg
ICAgICAgInZpcnR1YWwgWCByZXNvbHV0aW9uICglZCkgaXMgc21hbGxlciB0aGFuIHJlYWxcbiIs
IHZhci0+eHJlc192aXJ0dWFsKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKHZhci0+
eXJlc192aXJ0dWFsIDwgdmFyLT55cmVzKSB7CisJCXByaW50ayhLRVJOX0VSUiBQRlgKKwkJICAg
ICAgICJ2aXJ0dWFsIFkgcmVzb2x1dGlvbiAoJWQpIGlzIHNtYWxsZXIgdGhhbiByZWFsXG4iLCB2
YXItPnlyZXNfdmlydHVhbCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlyZXR1cm4gMDsKK30K
KworLyogYWNjZWxlcmF0aW9uIHJvdXRpbmVzICovCitpbmxpbmUgdm9pZCB3YWl0X2Zvcl9pZGxl
KHN0cnVjdCByaXZhX3BhciAqcGFyKQoreworCXdoaWxlIChwYXItPnJpdmEuQnVzeSgmcGFyLT5y
aXZhKSk7Cit9CisKKy8qIHNldCBjb3B5IFJPUCwgbm8gbWFzayAqLworc3RhdGljIHZvaWQgcml2
YV9zZXR1cF9ST1Aoc3RydWN0IHJpdmFfcGFyICpwYXIpCit7CisJUklWQV9GSUZPX0ZSRUUocGFy
LT5yaXZhLCBQYXR0LCA1KTsKKwlwYXItPnJpdmEuUGF0dC0+U2hhcGUgPSAwOworCXBhci0+cml2
YS5QYXR0LT5Db2xvcjAgPSAweGZmZmZmZmZmOworCXBhci0+cml2YS5QYXR0LT5Db2xvcjEgPSAw
eGZmZmZmZmZmOworCXBhci0+cml2YS5QYXR0LT5Nb25vY2hyb21lWzBdID0gMHhmZmZmZmZmZjsK
KwlwYXItPnJpdmEuUGF0dC0+TW9ub2Nocm9tZVsxXSA9IDB4ZmZmZmZmZmY7CisKKwlSSVZBX0ZJ
Rk9fRlJFRShwYXItPnJpdmEsIFJvcCwgMSk7CisJcGFyLT5yaXZhLlJvcC0+Um9wMyA9IDB4Q0M7
Cit9CisKK3ZvaWQgcml2YV9zZXR1cF9hY2NlbChzdHJ1Y3Qgcml2YV9wYXIgKnBhcikKK3sKKwlS
SVZBX0ZJRk9fRlJFRShwYXItPnJpdmEsIENsaXAsIDIpOworCXBhci0+cml2YS5DbGlwLT5Ub3BM
ZWZ0ICAgICA9IDB4MDsKKwlwYXItPnJpdmEuQ2xpcC0+V2lkdGhIZWlnaHQgPSAweDgwMDA4MDAw
OworCXJpdmFfc2V0dXBfUk9QKHBhcik7CisJd2FpdF9mb3JfaWRsZShwYXIpOworfQorCisvKioK
KyAqIHJpdmFfZ2V0X2NtYXBfbGVuIC0gcXVlcnkgY3VycmVudCBjb2xvciBtYXAgbGVuZ3RoCisg
KiBAdmFyOiBzdGFuZGFyZCBrZXJuZWwgZmIgY2hhbmdlYWJsZSBkYXRhCisgKgorICogREVTQ1JJ
UFRJT046CisgKiBHZXQgY3VycmVudCBjb2xvciBtYXAgbGVuZ3RoLgorICoKKyAqIFJFVFVSTlM6
CisgKiBMZW5ndGggb2YgY29sb3IgbWFwCisgKgorICogQ0FMTEVEIEZST006CisgKiB4Ym94ZmJf
c2V0Y29scmVnKCkKKyAqLworc3RhdGljIGludCByaXZhX2dldF9jbWFwX2xlbihjb25zdCBzdHJ1
Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhcikKK3sKKwlpbnQgcmMgPSAyNTY7CQkvKiByZWFzb25h
YmxlIGRlZmF1bHQgKi8KKworCXN3aXRjaCAodmFyLT5ncmVlbi5sZW5ndGgpIHsKKwljYXNlIDg6
CisJCXJjID0gMjU2OwkvKiAyNTYgZW50cmllcyAoMl44KSwgOCBicHAgYW5kIFJHQjg4ODggKi8K
KwkJYnJlYWs7CisJY2FzZSA1OgorCQlyYyA9IDMyOwkvKiAzMiBlbnRyaWVzICgyXjUpLCAxNiBi
cHAsIFJHQjU1NSAqLworCQlicmVhazsKKwljYXNlIDY6CisJCXJjID0gNjQ7CS8qIDY0IGVudHJp
ZXMgKDJeNiksIDE2IGJwcCwgUkdCNTY1ICovCisJCWJyZWFrOwkJCisJZGVmYXVsdDoKKwkJLyog
c2hvdWxkIG5vdCBvY2N1ciAqLworCQlicmVhazsKKwl9CisJcmV0dXJuIHJjOworfQorCisvKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICoKKyAqCisgKiBmcmFtZWJ1ZmZlciBvcGVyYXRpb25zCisgKgorICog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgaW50IHhib3hmYl9vcGVuKHN0cnVjdCBmYl9p
bmZvICppbmZvLCBpbnQgdXNlcikKK3sKKwlzdHJ1Y3Qgcml2YV9wYXIgKnBhciA9IChzdHJ1Y3Qg
cml2YV9wYXIgKikgaW5mby0+cGFyOworCWludCBjbnQgPSBhdG9taWNfcmVhZCgmcGFyLT5yZWZf
Y291bnQpOworCisJaWYgKCFjbnQpIHsKKwkJbWVtc2V0KCZwYXItPnN0YXRlLCAwLCBzaXplb2Yo
c3RydWN0IHZnYXN0YXRlKSk7CisJCXBhci0+c3RhdGUuZmxhZ3MgPSBWR0FfU0FWRV9NT0RFICB8
IFZHQV9TQVZFX0ZPTlRTOworCQkvKiBzYXZlIHRoZSBEQUMgZm9yIFJpdmExMjggKi8KKwkJaWYg
KHBhci0+cml2YS5BcmNoaXRlY3R1cmUgPT0gTlZfQVJDSF8wMykKKwkJCXBhci0+c3RhdGUuZmxh
Z3MgfD0gVkdBX1NBVkVfQ01BUDsKKwkJc2F2ZV92Z2EoJnBhci0+c3RhdGUpOworCisJCVJpdmFH
ZXRDb25maWcoJnBhci0+cml2YSwgcGFyLT5DaGlwc2V0KTsKKwkJcGFyLT5yaXZhLkNVUlNPUiA9
IChVMDMyKikoaW5mby0+c2NyZWVuX2Jhc2UgKyBpbmZvLT5maXguc21lbV9sZW4pOworCQlwYXIt
PnJpdmEuUENSVENbMHgwMDAwMDgwMC80XSA9IHBhci0+cml2YV9mYl9zdGFydDsKKwkJcGFyLT5y
aXZhLlBHUkFQSFsweDAwMDAwODIwLzRdID0gcGFyLT5yaXZhX2ZiX3N0YXJ0OworCQlwYXItPnJp
dmEuUEdSQVBIWzB4MDAwMDA4MjQvNF0gPSBwYXItPnJpdmFfZmJfc3RhcnQ7CisJCXBhci0+cml2
YS5QR1JBUEhbMHgwMDAwMDgyOC80XSA9IHBhci0+cml2YV9mYl9zdGFydDsKKwkJcGFyLT5yaXZh
LlBHUkFQSFsweDAwMDAwODJjLzRdID0gcGFyLT5yaXZhX2ZiX3N0YXJ0OworCQkKKwkJcGFyLT5y
aXZhLlBHUkFQSFsweDAwMDAwNjg0LzRdID0gcGFyLT5yaXZhLlJhbUFtb3VudEtCeXRlcyAqIDEw
MjQgLSAxOworCQlwYXItPnJpdmEuUEdSQVBIWzB4MDAwMDA2ODgvNF0gPSBwYXItPnJpdmEuUmFt
QW1vdW50S0J5dGVzICogMTAyNCAtIDE7CisJCXBhci0+cml2YS5QR1JBUEhbMHgwMDAwMDY4Yy80
XSA9IHBhci0+cml2YS5SYW1BbW91bnRLQnl0ZXMgKiAxMDI0IC0gMTsKKwkJcGFyLT5yaXZhLlBH
UkFQSFsweDAwMDAwNjkwLzRdID0gcGFyLT5yaXZhLlJhbUFtb3VudEtCeXRlcyAqIDEwMjQgLSAx
OworCQlwYXItPnJpdmEuUE1DWzB4MDAwMDg5MDgvNF0gPSBwYXItPnJpdmEuUmFtQW1vdW50S0J5
dGVzICogMTAyNCAtIDE7CisJCXBhci0+cml2YS5QTUNbMHgwMDAwODkwYy80XSA9IHBhci0+cml2
YS5SYW1BbW91bnRLQnl0ZXMgKiAxMDI0IC0gMTsKKwkJCisJCS8qIHZnYUhXdW5sb2NrKCkgKyBy
aXZhIHVubG9jayAoMHg3RikgKi8JCQorCQlDUlRDb3V0KHBhciwgMHgxMSwgMHhGRik7CisJCXBh
ci0+cml2YS5Mb2NrVW5sb2NrKCZwYXItPnJpdmEsIDApOworCQorCQlyaXZhX3NhdmVfc3RhdGUo
cGFyLCAmcGFyLT5pbml0aWFsX3N0YXRlKTsKKwl9CisJYXRvbWljX2luYygmcGFyLT5yZWZfY291
bnQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHhib3hmYl9yZWxlYXNlKHN0cnVjdCBm
Yl9pbmZvICppbmZvLCBpbnQgdXNlcikKK3sKKwlzdHJ1Y3Qgcml2YV9wYXIgKnBhciA9IChzdHJ1
Y3Qgcml2YV9wYXIgKikgaW5mby0+cGFyOworCWludCBjbnQgPSBhdG9taWNfcmVhZCgmcGFyLT5y
ZWZfY291bnQpOworCisJaWYgKCFjbnQpCisJCXJldHVybiAtRUlOVkFMOworCWlmIChjbnQgPT0g
MSkgeworCQlwYXItPnJpdmEuTG9ja1VubG9jaygmcGFyLT5yaXZhLCAwKTsKKwkJcGFyLT5yaXZh
LkxvYWRTdGF0ZUV4dCgmcGFyLT5yaXZhLCAmcGFyLT5pbml0aWFsX3N0YXRlLmV4dCk7CisJCXJp
dmFfbG9hZF9zdGF0ZShwYXIsICZwYXItPmluaXRpYWxfc3RhdGUpOworCQlyZXN0b3JlX3ZnYSgm
cGFyLT5zdGF0ZSk7CisJCXBhci0+cml2YS5Mb2NrVW5sb2NrKCZwYXItPnJpdmEsIDEpOworCX0K
KwlhdG9taWNfZGVjKCZwYXItPnJlZl9jb3VudCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp
bnQgeGJveGZiX2NoZWNrX3ZhcihzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwgc3RydWN0
IGZiX2luZm8gKmluZm8pCit7CisJaW50IG5vbSwgZGVuOwkJLyogdHJhbnNsYXRpbmcgZnJvbSBw
aXhlbHMtPmJ5dGVzICovCisJCisJc3dpdGNoICh2YXItPmJpdHNfcGVyX3BpeGVsKSB7CisJY2Fz
ZSAxIC4uLiA4OgorCQl2YXItPnJlZC5vZmZzZXQgPSB2YXItPmdyZWVuLm9mZnNldCA9IHZhci0+
Ymx1ZS5vZmZzZXQgPSAwOworCQl2YXItPnJlZC5sZW5ndGggPSB2YXItPmdyZWVuLmxlbmd0aCA9
IHZhci0+Ymx1ZS5sZW5ndGggPSA4OworCQl2YXItPmJpdHNfcGVyX3BpeGVsID0gODsKKwkJbm9t
ID0gZGVuID0gMTsKKwkJYnJlYWs7CisJY2FzZSA5IC4uLiAxNToKKwkJdmFyLT5ncmVlbi5sZW5n
dGggPSA1OworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIDE2OgorCQl2YXItPmJpdHNfcGVy
X3BpeGVsID0gMTY7CisJCWlmICh2YXItPmdyZWVuLmxlbmd0aCA9PSA1KSB7CisJCQkvKiAwcnJy
cnJnZyBnZ2diYmJiYiAqLworCQkJdmFyLT5yZWQub2Zmc2V0ID0gMTA7CisJCQl2YXItPmdyZWVu
Lm9mZnNldCA9IDU7CisJCQl2YXItPmJsdWUub2Zmc2V0ID0gMDsKKwkJCXZhci0+cmVkLmxlbmd0
aCA9IDU7CisJCQl2YXItPmdyZWVuLmxlbmd0aCA9IDU7CisJCQl2YXItPmJsdWUubGVuZ3RoID0g
NTsKKwkJfSBlbHNlIHsKKwkJCS8qIHJycnJyZ2dnIGdnZ2JiYmJiICovCisJCQl2YXItPnJlZC5v
ZmZzZXQgPSAxMTsKKwkJCXZhci0+Z3JlZW4ub2Zmc2V0ID0gNTsKKwkJCXZhci0+Ymx1ZS5vZmZz
ZXQgPSAwOworCQkJdmFyLT5yZWQubGVuZ3RoID0gNTsKKwkJCXZhci0+Z3JlZW4ubGVuZ3RoID0g
NjsKKwkJCXZhci0+Ymx1ZS5sZW5ndGggPSA1OworCQl9CisJCW5vbSA9IDI7CisJCWRlbiA9IDE7
CisJCWJyZWFrOworCWNhc2UgMTcgLi4uIDMyOgorCQl2YXItPnJlZC5sZW5ndGggPSB2YXItPmdy
ZWVuLmxlbmd0aCA9IHZhci0+Ymx1ZS5sZW5ndGggPSA4OworCQl2YXItPmJpdHNfcGVyX3BpeGVs
ID0gMzI7CisJCXZhci0+cmVkLm9mZnNldCA9IDE2OworCQl2YXItPmdyZWVuLm9mZnNldCA9IDg7
CisJCXZhci0+Ymx1ZS5vZmZzZXQgPSAwOworCQlub20gPSA0OworCQlkZW4gPSAxOworCQlicmVh
azsKKwlkZWZhdWx0OgorCQlwcmludGsoS0VSTl9FUlIgUEZYCisJCSAgICAgICAibW9kZSAlZHgl
ZHglZCByZWplY3RlZC4uLmNvbG9yIGRlcHRoIG5vdCBzdXBwb3J0ZWQuXG4iLAorCQkgICAgICAg
dmFyLT54cmVzLCB2YXItPnlyZXMsIHZhci0+Yml0c19wZXJfcGl4ZWwpOworCQlEUFJJTlRLKCJF
WElULCByZXR1cm5pbmcgLUVJTlZBTFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlm
ICh4Ym94ZmJfZG9fbWF4aW1pemUoaW5mbywgdmFyLCBub20sIGRlbikgPCAwKQorCQlyZXR1cm4g
LUVJTlZBTDsKKworCWlmICh2YXItPnhvZmZzZXQgPCAwKQorCQl2YXItPnhvZmZzZXQgPSAwOwor
CWlmICh2YXItPnlvZmZzZXQgPCAwKQorCQl2YXItPnlvZmZzZXQgPSAwOworCisJLyogdHJ1bmNh
dGUgeG9mZnNldCBhbmQgeW9mZnNldCB0byBtYXhpbXVtIGlmIHRvbyBoaWdoICovCisJaWYgKHZh
ci0+eG9mZnNldCA+IHZhci0+eHJlc192aXJ0dWFsIC0gdmFyLT54cmVzKQorCQl2YXItPnhvZmZz
ZXQgPSB2YXItPnhyZXNfdmlydHVhbCAtIHZhci0+eHJlcyAtIDE7CisKKwlpZiAodmFyLT55b2Zm
c2V0ID4gdmFyLT55cmVzX3ZpcnR1YWwgLSB2YXItPnlyZXMpCisJCXZhci0+eW9mZnNldCA9IHZh
ci0+eXJlc192aXJ0dWFsIC0gdmFyLT55cmVzIC0gMTsKKworCXZhci0+cmVkLm1zYl9yaWdodCA9
IAorCSAgICB2YXItPmdyZWVuLm1zYl9yaWdodCA9CisJICAgIHZhci0+Ymx1ZS5tc2JfcmlnaHQg
PQorCSAgICB2YXItPnRyYW5zcC5vZmZzZXQgPSB2YXItPnRyYW5zcC5sZW5ndGggPSB2YXItPnRy
YW5zcC5tc2JfcmlnaHQgPSAwOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHhib3hmYl9z
ZXRfcGFyKHN0cnVjdCBmYl9pbmZvICppbmZvKQoreworCXN0cnVjdCByaXZhX3BhciAqcGFyID0g
KHN0cnVjdCByaXZhX3BhciAqKSBpbmZvLT5wYXI7CisKKwlyaXZhX2xvYWRfdmlkZW9fbW9kZShp
bmZvKTsKKwlyaXZhX3NldHVwX2FjY2VsKHBhcik7CisJCisJaW5mby0+Zml4LmxpbmVfbGVuZ3Ro
ID0gKGluZm8tPnZhci54cmVzX3ZpcnR1YWwgKiAoaW5mby0+dmFyLmJpdHNfcGVyX3BpeGVsID4+
IDMpKTsKKwlpbmZvLT5maXgudmlzdWFsID0gKGluZm8tPnZhci5iaXRzX3Blcl9waXhlbCA9PSA4
KSA/CisJCQkJRkJfVklTVUFMX1BTRVVET0NPTE9SIDogRkJfVklTVUFMX0RJUkVDVENPTE9SOwor
CXJldHVybiAwOworfQorCisvKioKKyAqIHhib3hmYl9wYW5fZGlzcGxheQorICogQHZhcjogc3Rh
bmRhcmQga2VybmVsIGZiIGNoYW5nZWFibGUgZGF0YQorICogQGNvbjogVE9ETworICogQGluZm86
IHBvaW50ZXIgdG8gZmJfaW5mbyBvYmplY3QgY29udGFpbmluZyBpbmZvIGZvciBjdXJyZW50IHJp
dmEgYm9hcmQKKyAqCisgKiBERVNDUklQVElPTjoKKyAqIFBhbiAob3Igd3JhcCwgZGVwZW5kaW5n
IG9uIHRoZSBgdm1vZGUnIGZpZWxkKSB0aGUgZGlzcGxheSB1c2luZyB0aGUKKyAqIGB4b2Zmc2V0
JyBhbmQgYHlvZmZzZXQnIGZpZWxkcyBvZiB0aGUgYHZhcicgc3RydWN0dXJlLgorICogSWYgdGhl
IHZhbHVlcyBkb24ndCBmaXQsIHJldHVybiAtRUlOVkFMLgorICoKKyAqIFRoaXMgY2FsbCBsb29r
cyBvbmx5IGF0IHhvZmZzZXQsIHlvZmZzZXQgYW5kIHRoZSBGQl9WTU9ERV9ZV1JBUCBmbGFnCisg
Ki8KK3N0YXRpYyBpbnQgeGJveGZiX3Bhbl9kaXNwbGF5KHN0cnVjdCBmYl92YXJfc2NyZWVuaW5m
byAqdmFyLAorCQkJICAgICAgc3RydWN0IGZiX2luZm8gKmluZm8pCit7CisJc3RydWN0IHJpdmFf
cGFyICpwYXIgPSAoc3RydWN0IHJpdmFfcGFyICopaW5mby0+cGFyOworCXVuc2lnbmVkIGludCBi
YXNlOworCisJaWYgKHZhci0+eG9mZnNldCA+ICh2YXItPnhyZXNfdmlydHVhbCAtIHZhci0+eHJl
cykpCisJCXJldHVybiAtRUlOVkFMOworCWlmICh2YXItPnlvZmZzZXQgPiAodmFyLT55cmVzX3Zp
cnR1YWwgLSB2YXItPnlyZXMpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICh2YXItPnZtb2Rl
ICYgRkJfVk1PREVfWVdSQVApIHsKKwkJaWYgKHZhci0+eW9mZnNldCA8IDAKKwkJICAgIHx8IHZh
ci0+eW9mZnNldCA+PSBpbmZvLT52YXIueXJlc192aXJ0dWFsCisJCSAgICB8fCB2YXItPnhvZmZz
ZXQpIHJldHVybiAtRUlOVkFMOworCX0gZWxzZSB7CisJCWlmICh2YXItPnhvZmZzZXQgKyBpbmZv
LT52YXIueHJlcyA+IGluZm8tPnZhci54cmVzX3ZpcnR1YWwgfHwKKwkJICAgIHZhci0+eW9mZnNl
dCArIGluZm8tPnZhci55cmVzID4gaW5mby0+dmFyLnlyZXNfdmlydHVhbCkKKwkJCXJldHVybiAt
RUlOVkFMOworCX0KKworCWJhc2UgPSB2YXItPnlvZmZzZXQgKiBpbmZvLT5maXgubGluZV9sZW5n
dGggKyB2YXItPnhvZmZzZXQ7CisJYmFzZSArPSBwYXItPnJpdmFfZmJfc3RhcnQ7CisJCisJcGFy
LT5yaXZhLlNldFN0YXJ0QWRkcmVzcygmcGFyLT5yaXZhLCBiYXNlKTsKKworCWluZm8tPnZhci54
b2Zmc2V0ID0gdmFyLT54b2Zmc2V0OworCWluZm8tPnZhci55b2Zmc2V0ID0gdmFyLT55b2Zmc2V0
OworCisJaWYgKHZhci0+dm1vZGUgJiBGQl9WTU9ERV9ZV1JBUCkKKwkJaW5mby0+dmFyLnZtb2Rl
IHw9IEZCX1ZNT0RFX1lXUkFQOworCWVsc2UKKwkJaW5mby0+dmFyLnZtb2RlICY9IH5GQl9WTU9E
RV9ZV1JBUDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB4Ym94ZmJfYmxhbmsoaW50IGJs
YW5rLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3Qgcml2YV9wYXIgKnBhcj0gKHN0
cnVjdCByaXZhX3BhciAqKWluZm8tPnBhcjsKKwl1bnNpZ25lZCBjaGFyIHRtcCwgdmVzYTsKKwor
CXRtcCA9IFNFUWluKHBhciwgMHgwMSkgJiB+MHgyMDsJLyogc2NyZWVuIG9uL29mZiAqLworCXZl
c2EgPSBDUlRDaW4ocGFyLCAweDFhKSAmIH4weGMwOwkvKiBzeW5jIG9uL29mZiAqLworCisJaWYg
KGJsYW5rKSB7CisJCXRtcCB8PSAweDIwOworCQlzd2l0Y2ggKGJsYW5rIC0gMSkgeworCQljYXNl
IFZFU0FfTk9fQkxBTktJTkc6CisJCQlicmVhazsKKwkJY2FzZSBWRVNBX1ZTWU5DX1NVU1BFTkQ6
CisJCQl2ZXNhIHw9IDB4ODA7CisJCQlicmVhazsKKwkJY2FzZSBWRVNBX0hTWU5DX1NVU1BFTkQ6
CisJCQl2ZXNhIHw9IDB4NDA7CisJCQlicmVhazsKKwkJY2FzZSBWRVNBX1BPV0VSRE9XTjoKKwkJ
CXZlc2EgfD0gMHhjMDsKKwkJCWJyZWFrOworCQl9CisJfQorCVNFUW91dChwYXIsIDB4MDEsIHRt
cCk7CisJQ1JUQ291dChwYXIsIDB4MWEsIHZlc2EpOworCXJldHVybiAwOworfQorCisvKioKKyAq
IHhib3hmYl9zZXRjb2xyZWcKKyAqIEByZWdubzogcmVnaXN0ZXIgaW5kZXgKKyAqIEByZWQ6IHJl
ZCBjb21wb25lbnQKKyAqIEBncmVlbjogZ3JlZW4gY29tcG9uZW50CisgKiBAYmx1ZTogYmx1ZSBj
b21wb25lbnQKKyAqIEB0cmFuc3A6IHRyYW5zcGFyZW5jeQorICogQGluZm86IHBvaW50ZXIgdG8g
ZmJfaW5mbyBvYmplY3QgY29udGFpbmluZyBpbmZvIGZvciBjdXJyZW50IHJpdmEgYm9hcmQKKyAq
CisgKiBERVNDUklQVElPTjoKKyAqIFNldCBhIHNpbmdsZSBjb2xvciByZWdpc3Rlci4gVGhlIHZh
bHVlcyBzdXBwbGllZCBoYXZlIGEgMTYgYml0CisgKiBtYWduaXR1ZGUuCisgKgorICogUkVUVVJO
UzoKKyAqIFJldHVybiAhPSAwIGZvciBpbnZhbGlkIHJlZ25vLgorICoKKyAqIENBTExFRCBGUk9N
OgorICogZmJjbWFwLmM6ZmJfc2V0X2NtYXAoKQorICovCitzdGF0aWMgaW50IHhib3hmYl9zZXRj
b2xyZWcodW5zaWduZWQgcmVnbm8sIHVuc2lnbmVkIHJlZCwgdW5zaWduZWQgZ3JlZW4sCisJCQkg
IHVuc2lnbmVkIGJsdWUsIHVuc2lnbmVkIHRyYW5zcCwKKwkJCSAgc3RydWN0IGZiX2luZm8gKmlu
Zm8pCit7CisJc3RydWN0IHJpdmFfcGFyICpwYXIgPSAoc3RydWN0IHJpdmFfcGFyICopaW5mby0+
cGFyOworCVJJVkFfSFdfSU5TVCAqY2hpcCA9ICZwYXItPnJpdmE7CisJaW50IGk7CisKKwlpZiAo
cmVnbm8gPj0gcml2YV9nZXRfY21hcF9sZW4oJmluZm8tPnZhcikpCisJCXJldHVybiAtRUlOVkFM
OworCisJaWYgKGluZm8tPnZhci5ncmF5c2NhbGUpIHsKKwkJLyogZ3JheSA9IDAuMzAqUiArIDAu
NTkqRyArIDAuMTEqQiAqLworCQlyZWQgPSBncmVlbiA9IGJsdWUgPQorCQkgICAgKHJlZCAqIDc3
ICsgZ3JlZW4gKiAxNTEgKyBibHVlICogMjgpID4+IDg7CisJfQorCisJc3dpdGNoIChpbmZvLT52
YXIuYml0c19wZXJfcGl4ZWwpIHsKKwljYXNlIDg6CisJCS8qICJ0cmFuc3BhcmVudCIgc3R1ZmYg
aXMgY29tcGxldGVseSBpZ25vcmVkLiAqLworCQlyaXZhX3djbHV0KGNoaXAsIHJlZ25vLCByZWQg
Pj4gOCwgZ3JlZW4gPj4gOCwgYmx1ZSA+PiA4KTsKKwkJYnJlYWs7CisJY2FzZSAxNjoKKwkJaWYg
KGluZm8tPnZhci5ncmVlbi5sZW5ndGggPT0gNSkgeworCQkJaWYgKHJlZ25vIDwgMTYpIHsKKwkJ
CQkvKiAwcnJycnJnZyBnZ2diYmJiYiAqLworCQkJCSgodTMyICopaW5mby0+cHNldWRvX3BhbGV0
dGUpW3JlZ25vXSA9CisJCQkJCSgocmVkICYgMHhmODAwKSA+PiAxKSB8CisJCQkJCSgoZ3JlZW4g
JiAweGY4MDApID4+IDYpIHwKKwkJCQkJKChibHVlICYgMHhmODAwKSA+PiAxMSk7CisJCQl9CisJ
CQlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSAKKwkJCQlyaXZhX3djbHV0KGNoaXAsIHJlZ25vKjgr
aSwgcmVkID4+IDgsCisJCQkJCSAgIGdyZWVuID4+IDgsIGJsdWUgPj4gOCk7CisJCX0gZWxzZSB7
CisJCQl1OCByLCBnLCBiOworCisJCQlpZiAocmVnbm8gPCAxNikgeworCQkJCS8qIHJycnJyZ2dn
IGdnZ2JiYmJiICovCisJCQkJKCh1MzIgKilpbmZvLT5wc2V1ZG9fcGFsZXR0ZSlbcmVnbm9dID0K
KwkJCQkJKChyZWQgJiAweGY4MDApID4+IDApIHwKKwkJCQkJKChncmVlbiAmIDB4ZjgwMCkgPj4g
NSkgfAorCQkJCQkoKGJsdWUgJiAweGY4MDApID4+IDExKTsKKwkJCX0KKwkJCWlmIChyZWdubyA8
IDMyKSB7CisJCQkJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQkJCQlyaXZhX3djbHV0KGNo
aXAsIHJlZ25vKjgraSwgcmVkID4+IDgsIAorCQkJCQkJICAgZ3JlZW4gPj4gOCwgYmx1ZSA+PiA4
KTsKKwkJCQl9CisJCQl9CisJCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCQkJcml2YV9y
Y2x1dChjaGlwLCByZWdubyoyK2ksICZyLCAmZywgJmIpOworCQkJCXJpdmFfd2NsdXQoY2hpcCwg
cmVnbm8qNCtpLCByLCBncmVlbiA+PiA4LCBiKTsKKwkJCX0KKwkJfQorCQlicmVhazsKKwljYXNl
IDMyOgorCQlpZiAocmVnbm8gPCAxNikgeworCQkJKCh1MzIgKilpbmZvLT5wc2V1ZG9fcGFsZXR0
ZSlbcmVnbm9dID0KKwkJCQkoKHJlZCAmIDB4ZmYwMCkgPDwgOCkgfAorCQkJCSgoZ3JlZW4gJiAw
eGZmMDApKSB8ICgoYmx1ZSAmIDB4ZmYwMCkgPj4gOCk7CisJCQkKKwkJfQorCQlyaXZhX3djbHV0
KGNoaXAsIHJlZ25vLCByZWQgPj4gOCwgZ3JlZW4gPj4gOCwgYmx1ZSA+PiA4KTsKKwkJYnJlYWs7
CisJZGVmYXVsdDoKKwkJLyogZG8gbm90aGluZyAqLworCQlicmVhazsKKwl9CisJcmV0dXJuIDA7
Cit9CisKKy8qKgorICogeGJveGZiX2ZpbGxyZWN0IC0gaGFyZHdhcmUgYWNjZWxlcmF0ZWQgY29s
b3IgZmlsbCBmdW5jdGlvbgorICogQGluZm86IHBvaW50ZXIgdG8gZmJfaW5mbyBzdHJ1Y3R1cmUK
KyAqIEByZWN0OiBwb2ludGVyIHRvIGZiX2ZpbGxyZWN0IHN0cnVjdHVyZQorICoKKyAqIERFU0NS
SVBUSU9OOgorICogVGhpcyBmdW5jdGlvbiBmaWxscyB1cCBhIHJlZ2lvbiBvZiBmcmFtZWJ1ZmZl
ciBtZW1vcnkgd2l0aCBhIHNvbGlkCisgKiBjb2xvciB3aXRoIGEgY2hvaWNlIG9mIHR3byBkaWZm
ZXJlbnQgUk9QJ3MsIGNvcHkgb3IgaW52ZXJ0LgorICoKKyAqIENBTExFRCBGUk9NOgorICogZnJh
bWVidWZmZXIgaG9vaworICovCitzdGF0aWMgdm9pZCB4Ym94ZmJfZmlsbHJlY3Qoc3RydWN0IGZi
X2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9maWxscmVjdCAqcmVjdCkKK3sKKwlzdHJ1Y3Qg
cml2YV9wYXIgKnBhciA9IChzdHJ1Y3Qgcml2YV9wYXIgKikgaW5mby0+cGFyOworCXVfaW50IGNv
bG9yLCByb3AgPSAwOworCisJaWYgKGluZm8tPnZhci5iaXRzX3Blcl9waXhlbCA9PSA4KQorCQlj
b2xvciA9IHJlY3QtPmNvbG9yOworCWVsc2UKKwkJY29sb3IgPSAoKHUzMiAqKWluZm8tPnBzZXVk
b19wYWxldHRlKVtyZWN0LT5jb2xvcl07CisKKwlzd2l0Y2ggKHJlY3QtPnJvcCkgeworCWNhc2Ug
Uk9QX1hPUjoKKwkJcm9wID0gMHg2NjsKKwkJYnJlYWs7CisJY2FzZSBST1BfQ09QWToKKwlkZWZh
dWx0OgorCQlyb3AgPSAweENDOworCQlicmVhazsKKwl9CisKKwlSSVZBX0ZJRk9fRlJFRShwYXIt
PnJpdmEsIFJvcCwgMSk7CisJcGFyLT5yaXZhLlJvcC0+Um9wMyA9IHJvcDsKKworCVJJVkFfRklG
T19GUkVFKHBhci0+cml2YSwgQml0bWFwLCAxKTsKKwlwYXItPnJpdmEuQml0bWFwLT5Db2xvcjFB
ID0gY29sb3I7CisKKwlSSVZBX0ZJRk9fRlJFRShwYXItPnJpdmEsIEJpdG1hcCwgMik7CisJcGFy
LT5yaXZhLkJpdG1hcC0+VW5jbGlwcGVkUmVjdGFuZ2xlWzBdLlRvcExlZnQgPQorCQkJKHJlY3Qt
PmR4IDw8IDE2KSB8IHJlY3QtPmR5OworCXBhci0+cml2YS5CaXRtYXAtPlVuY2xpcHBlZFJlY3Rh
bmdsZVswXS5XaWR0aEhlaWdodCA9CisJCQkocmVjdC0+d2lkdGggPDwgMTYpIHwgcmVjdC0+aGVp
Z2h0OworCVJJVkFfRklGT19GUkVFKHBhci0+cml2YSwgUm9wLCAxKTsKKwlwYXItPnJpdmEuUm9w
LT5Sb3AzID0gMHhDQzsJLyogYmFjayB0byBDT1BZICovCit9CisKKy8qKgorICogeGJveGZiX2Nv
cHlhcmVhIC0gaGFyZHdhcmUgYWNjZWxlcmF0ZWQgYmxpdCBmdW5jdGlvbgorICogQGluZm86IHBv
aW50ZXIgdG8gZmJfaW5mbyBzdHJ1Y3R1cmUKKyAqIEByZWdpb246IHBvaW50ZXIgdG8gZmJfY29w
eWFyZWEgc3RydWN0dXJlCisgKgorICogREVTQ1JJUFRJT046CisgKiBUaGlzIGNvcGllcyBhbiBh
cmVhIG9mIHBpeGVscyBmcm9tIG9uZSBsb2NhdGlvbiB0byBhbm90aGVyCisgKgorICogQ0FMTEVE
IEZST006CisgKiBmcmFtZWJ1ZmZlciBob29rCisgKi8KK3N0YXRpYyB2b2lkIHhib3hmYl9jb3B5
YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICpyZWdp
b24pCit7CisJc3RydWN0IHJpdmFfcGFyICpwYXIgPSAoc3RydWN0IHJpdmFfcGFyICopIGluZm8t
PnBhcjsKKworCVJJVkFfRklGT19GUkVFKHBhci0+cml2YSwgQmx0LCAzKTsKKwlwYXItPnJpdmEu
Qmx0LT5Ub3BMZWZ0U3JjICA9IChyZWdpb24tPnN5IDw8IDE2KSB8IHJlZ2lvbi0+c3g7CisJcGFy
LT5yaXZhLkJsdC0+VG9wTGVmdERzdCAgPSAocmVnaW9uLT5keSA8PCAxNikgfCByZWdpb24tPmR4
OworCXBhci0+cml2YS5CbHQtPldpZHRoSGVpZ2h0ID0gKHJlZ2lvbi0+aGVpZ2h0IDw8IDE2KSB8
IHJlZ2lvbi0+d2lkdGg7CisJd2FpdF9mb3JfaWRsZShwYXIpOworfQorCitzdGF0aWMgaW5saW5l
IHZvaWQgY29udmVydF9iZ2NvbG9yXzE2KHUzMiAqY29sKQoreworCSpjb2wgPSAoKCpjb2wgJiAw
eDAwMDA3QzAwKSA8PCA5KQorCQl8ICgoKmNvbCAmIDB4MDAwMDAzRTApIDw8IDYpCisJCXwgKCgq
Y29sICYgMHgwMDAwMDAxRikgPDwgMykKKwkJfAkgICAweEZGMDAwMDAwOworfQorCisvKioKKyAq
IHhib3hmYl9pbWFnZWJsaXQ6IGhhcmR3YXJlIGFjY2VsZXJhdGVkIGNvbG9yIGV4cGFuZCBmdW5j
dGlvbgorICogQGluZm86IHBvaW50ZXIgdG8gZmJfaW5mbyBzdHJ1Y3R1cmUKKyAqIEBpbWFnZTog
cG9pbnRlciB0byBmYl9pbWFnZSBzdHJ1Y3R1cmUKKyAqCisgKiBERVNDUklQVElPTjoKKyAqIElm
IHRoZSBzb3VyY2UgaXMgYSBtb25vY2hyb21lIGJpdG1hcCwgdGhlIGZ1bmN0aW9uIGZpbGxzIHVw
IGEgYSByZWdpb24KKyAqIG9mIGZyYW1lYnVmZmVyIG1lbW9yeSB3aXRoIHBpeGVscyB3aG9zZSBj
b2xvciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBiaXQKKyAqIHNldHRpbmcgb2YgdGhlIGJpdG1hcCwg
MSAtIGZvcmVncm91bmQsIDAgLSBiYWNrZ3JvdW5kLgorICoKKyAqIElmIHRoZSBzb3VyY2UgaXMg
bm90IGEgbW9ub2Nocm9tZSBiaXRtYXAsIGNvbG9yIGV4cGFuc2lvbiBpcyBub3QgZG9uZS4KKyAq
IEluIHRoaXMgY2FzZSwgaXQgaXMgY2hhbm5lbGVkIHRvIGEgc29mdHdhcmUgZnVuY3Rpb24uCisg
KgorICogQ0FMTEVEIEZST006CisgKiBmcmFtZWJ1ZmZlciBob29rCisgKi8KK3N0YXRpYyB2b2lk
IHhib3hmYl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKmluZm8sIAorCQkJICAgICBjb25zdCBz
dHJ1Y3QgZmJfaW1hZ2UgKmltYWdlKQoreworCXN0cnVjdCByaXZhX3BhciAqcGFyID0gKHN0cnVj
dCByaXZhX3BhciAqKSBpbmZvLT5wYXI7CisJdTMyIGZneCA9IDAsIGJneCA9IDAsIHdpZHRoLCB0
bXA7CisJdTggKmNkYXQgPSAodTggKikgaW1hZ2UtPmRhdGE7CisJdm9sYXRpbGUgdTMyICpkOwor
CWludCBpLCBzaXplOworCisJaWYgKGltYWdlLT5kZXB0aCAhPSAxKSB7CisJCWNmYl9pbWFnZWJs
aXQoaW5mbywgaW1hZ2UpOworCQlyZXR1cm47CisJfQorCisJc3dpdGNoIChpbmZvLT52YXIuYml0
c19wZXJfcGl4ZWwpIHsKKwljYXNlIDg6CisJCWZneCA9IGltYWdlLT5mZ19jb2xvcjsKKwkJYmd4
ID0gaW1hZ2UtPmJnX2NvbG9yOworCQlicmVhazsKKwljYXNlIDE2OgorCQlmZ3ggPSAoKHUzMiAq
KWluZm8tPnBzZXVkb19wYWxldHRlKVtpbWFnZS0+ZmdfY29sb3JdOworCQliZ3ggPSAoKHUzMiAq
KWluZm8tPnBzZXVkb19wYWxldHRlKVtpbWFnZS0+YmdfY29sb3JdOworCQlpZiAoaW5mby0+dmFy
LmdyZWVuLmxlbmd0aCA9PSA2KQorCQkJY29udmVydF9iZ2NvbG9yXzE2KCZiZ3gpOwkKKwkJYnJl
YWs7CisJY2FzZSAzMjoKKwkJZmd4ID0gKCh1MzIgKilpbmZvLT5wc2V1ZG9fcGFsZXR0ZSlbaW1h
Z2UtPmZnX2NvbG9yXTsKKwkJYmd4ID0gKCh1MzIgKilpbmZvLT5wc2V1ZG9fcGFsZXR0ZSlbaW1h
Z2UtPmJnX2NvbG9yXTsKKwkJYnJlYWs7CisJfQorCisJUklWQV9GSUZPX0ZSRUUocGFyLT5yaXZh
LCBCaXRtYXAsIDcpOworCXBhci0+cml2YS5CaXRtYXAtPkNsaXBFLlRvcExlZnQgICAgID0gCisJ
CShpbWFnZS0+ZHkgPDwgMTYpIHwgKGltYWdlLT5keCAmIDB4RkZGRik7CisJcGFyLT5yaXZhLkJp
dG1hcC0+Q2xpcEUuQm90dG9tUmlnaHQgPSAKKwkJKCgoaW1hZ2UtPmR5ICsgaW1hZ2UtPmhlaWdo
dCkgPDwgMTYpIHwKKwkJICgoaW1hZ2UtPmR4ICsgaW1hZ2UtPndpZHRoKSAmIDB4ZmZmZikpOwor
CXBhci0+cml2YS5CaXRtYXAtPkNvbG9yMEUgICAgICAgICAgID0gYmd4OworCXBhci0+cml2YS5C
aXRtYXAtPkNvbG9yMUUgICAgICAgICAgID0gZmd4OworCXBhci0+cml2YS5CaXRtYXAtPldpZHRo
SGVpZ2h0SW5FICAgID0gCisJCShpbWFnZS0+aGVpZ2h0IDw8IDE2KSB8ICgoaW1hZ2UtPndpZHRo
ICsgMzEpICYgfjMxKTsKKwlwYXItPnJpdmEuQml0bWFwLT5XaWR0aEhlaWdodE91dEUgICA9IAor
CQkoaW1hZ2UtPmhlaWdodCA8PCAxNikgfCAoKGltYWdlLT53aWR0aCArIDMxKSAmIH4zMSk7CisJ
cGFyLT5yaXZhLkJpdG1hcC0+UG9pbnRFICAgICAgICAgICAgPSAKKwkJKGltYWdlLT5keSA8PCAx
NikgfCAoaW1hZ2UtPmR4ICYgMHhGRkZGKTsKKworCWQgPSAmcGFyLT5yaXZhLkJpdG1hcC0+TW9u
b2Nocm9tZURhdGEwMUU7CisKKwl3aWR0aCA9IChpbWFnZS0+d2lkdGggKyAzMSkvMzI7CisJc2l6
ZSA9IHdpZHRoICogaW1hZ2UtPmhlaWdodDsKKwl3aGlsZSAoc2l6ZSA+PSAxNikgeworCQlSSVZB
X0ZJRk9fRlJFRShwYXItPnJpdmEsIEJpdG1hcCwgMTYpOworCQlmb3IgKGkgPSAwOyBpIDwgMTY7
IGkrKykgeworCQkJdG1wID0gKigodTMyICopY2RhdCk7CisJCQljZGF0ID0gKHU4ICopKCh1MzIg
KiljZGF0ICsgMSk7CisJCQlyZXZlcnNlX29yZGVyKCZ0bXApOworCQkJZFtpXSA9IHRtcDsKKwkJ
fQorCQlzaXplIC09IDE2OworCX0KKwlpZiAoc2l6ZSkgeworCQlSSVZBX0ZJRk9fRlJFRShwYXIt
PnJpdmEsIEJpdG1hcCwgc2l6ZSk7CisJCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKwkJ
CXRtcCA9ICooKHUzMiAqKSBjZGF0KTsKKwkJCWNkYXQgPSAodTggKikoKHUzMiAqKWNkYXQgKyAx
KTsKKwkJCXJldmVyc2Vfb3JkZXIoJnRtcCk7CisJCQlkW2ldID0gdG1wOworCQl9CisJfQorfQor
CisvKioKKyAqIHhib3hmYl9jdXJzb3IgLSBoYXJkd2FyZSBjdXJzb3IgZnVuY3Rpb24KKyAqIEBp
bmZvOiBwb2ludGVyIHRvIGluZm8gc3RydWN0dXJlCisgKiBAY3Vyc29yOiBwb2ludGVyIHRvIGZi
Y3Vyc29yIHN0cnVjdHVyZQorICoKKyAqIERFU0NSSVBUSU9OOgorICogQSBjdXJzb3IgZnVuY3Rp
b24gdGhhdCBzdXBwb3J0cyBkaXNwbGF5aW5nIGEgY3Vyc29yIGltYWdlIHZpYSBoYXJkd2FyZS4K
KyAqIFdpdGhpbiB0aGUga2VybmVsLCBjb3B5IGFuZCBpbnZlcnQgcm9wcyBhcmUgc3VwcG9ydGVk
LiAgSWYgZXhwb3J0ZWQKKyAqIHRvIHVzZXIgc3BhY2UsIG9ubHkgdGhlIGNvcHkgcm9wIHdpbGwg
YmUgc3VwcG9ydGVkLgorICoKKyAqIENBTExFRCBGUk9NCisgKiBmcmFtZWJ1ZmZlciBob29rCisg
Ki8KK3N0YXRpYyBpbnQgeGJveGZiX2N1cnNvcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3RydWN0
IGZiX2N1cnNvciAqY3Vyc29yKQoreworCXN0cnVjdCByaXZhX3BhciAqcGFyID0gKHN0cnVjdCBy
aXZhX3BhciAqKSBpbmZvLT5wYXI7CisJdTggbWFza1tNQVhfQ1VSUyAqIE1BWF9DVVJTLzhdOwor
CXUxNiBmZywgYmc7CisKKwlwYXItPnJpdmEuU2hvd0hpZGVDdXJzb3IoJnBhci0+cml2YSwgMCk7
CisKKwlpZiAoY3Vyc29yLT5zZXQgJiBGQl9DVVJfU0VUUE9TKSB7CisJCXUzMiB4eCwgeXksIHRl
bXA7CisKKwkJaW5mby0+Y3Vyc29yLmltYWdlLmR4ID0gY3Vyc29yLT5pbWFnZS5keDsKKwkJaW5m
by0+Y3Vyc29yLmltYWdlLmR5ID0gY3Vyc29yLT5pbWFnZS5keTsKKwkJeXkgPSBjdXJzb3ItPmlt
YWdlLmR5IC0gaW5mby0+dmFyLnlvZmZzZXQ7CisJCXh4ID0gY3Vyc29yLT5pbWFnZS5keCAtIGlu
Zm8tPnZhci54b2Zmc2V0OworCQl0ZW1wID0geHggJiAweEZGRkY7CisJCXRlbXAgfD0geXkgPDwg
MTY7CisKKwkJcGFyLT5yaXZhLlBSQU1EQUNbMHgwMDAwMzAwLzRdID0gdGVtcDsKKwl9CisKKwlp
ZiAoY3Vyc29yLT5zZXQgJiBGQl9DVVJfU0VUU0laRSkgeworCQlpbmZvLT5jdXJzb3IuaW1hZ2Uu
aGVpZ2h0ID0gY3Vyc29yLT5pbWFnZS5oZWlnaHQ7CisJCWluZm8tPmN1cnNvci5pbWFnZS53aWR0
aCA9IGN1cnNvci0+aW1hZ2Uud2lkdGg7CisJCW1lbXNldF9pbyhwYXItPnJpdmEuQ1VSU09SLCAw
LCBNQVhfQ1VSUyAqIE1BWF9DVVJTICogMik7CisJfQorCisJaWYgKGN1cnNvci0+c2V0ICYgRkJf
Q1VSX1NFVENNQVApIHsKKwkJaW5mby0+Y3Vyc29yLmltYWdlLmJnX2NvbG9yID0gY3Vyc29yLT5p
bWFnZS5iZ19jb2xvcjsKKwkJaW5mby0+Y3Vyc29yLmltYWdlLmZnX2NvbG9yID0gY3Vyc29yLT5p
bWFnZS5mZ19jb2xvcjsKKwl9CisKKwlpZiAoY3Vyc29yLT5zZXQgJiAoRkJfQ1VSX1NFVFNIQVBF
IHwgRkJfQ1VSX1NFVENNQVApKSB7CisJCXUzMiBiZ19pZHggPSBpbmZvLT5jdXJzb3IuaW1hZ2Uu
YmdfY29sb3I7CisJCXUzMiBmZ19pZHggPSBpbmZvLT5jdXJzb3IuaW1hZ2UuZmdfY29sb3I7CisJ
CXUzMiBzX3BpdGNoID0gKGluZm8tPmN1cnNvci5pbWFnZS53aWR0aCs3KSA+PiAzOworCQl1MzIg
ZF9waXRjaCA9IE1BWF9DVVJTLzg7CisJCXU4ICptc2sgPSAodTggKikgaW5mby0+Y3Vyc29yLm1h
c2s7CisJCQorCQlmYl9tb3ZlX2J1Zl9hbGlnbmVkKGluZm8sICZpbmZvLT5zcHJpdGUsIG1hc2ss
IGRfcGl0Y2gsIG1zaywgc19waXRjaCwgaW5mby0+Y3Vyc29yLmltYWdlLmhlaWdodCk7CisJCWJn
ID0gKChpbmZvLT5jbWFwLnJlZFtiZ19pZHhdICYgMHhmOCkgPDwgNykgfAorCQkgICAgICgoaW5m
by0+Y21hcC5ncmVlbltiZ19pZHhdICYgMHhmOCkgPDwgMikgfAorCQkgICAgICgoaW5mby0+Y21h
cC5ibHVlW2JnX2lkeF0gJiAweGY4KSA+PiAzKTsKKworCQlmZyA9ICgoaW5mby0+Y21hcC5yZWRb
ZmdfaWR4XSAmIDB4ZjgpIDw8IDcpIHwKKwkJICAgICAoKGluZm8tPmNtYXAuZ3JlZW5bZmdfaWR4
XSAmIDB4ZjgpIDw8IDIpIHwKKwkJICAgICAoKGluZm8tPmNtYXAuYmx1ZVtmZ19pZHhdICYgMHhm
OCkgPj4gMyk7CisKKwkJcGFyLT5yaXZhLkxvY2tVbmxvY2soJnBhci0+cml2YSwgMCk7CisKKwkJ
eGJveGZiX2xvYWRfY3Vyc29yX2ltYWdlKHBhciwgbWFzaywgbWFzaywgYmcsIGZnLAorCQkJCQkg
aW5mby0+Y3Vyc29yLmltYWdlLndpZHRoLCAKKwkJCQkJIGluZm8tPmN1cnNvci5pbWFnZS5oZWln
aHQpOworCX0KKwlpZiAoaW5mby0+Y3Vyc29yLmVuYWJsZSkKKwkJcGFyLT5yaXZhLlNob3dIaWRl
Q3Vyc29yKCZwYXItPnJpdmEsIDEpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHhib3hm
Yl9zeW5jKHN0cnVjdCBmYl9pbmZvICppbmZvKQoreworCXN0cnVjdCByaXZhX3BhciAqcGFyID0g
KHN0cnVjdCByaXZhX3BhciAqKWluZm8tPnBhcjsKKworCXdhaXRfZm9yX2lkbGUocGFyKTsKKwly
ZXR1cm4gMDsKK30KKworc3RhdGljIGludCB4Ym94ZmJfaW9jdGwoc3RydWN0IGlub2RlICppbm9k
ZSwgc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGFyZywgc3RydWN0IGZiX2luZm8gKmluZm8pCit7CisJc3Ry
dWN0IHJpdmFfcGFyICpwYXIgPSAoc3RydWN0IHJpdmFfcGFyICopIGluZm8tPnBhcjsKKwkKKwl4
Ym94X292ZXJzY2FuIG92ZXJzY2FuOworCXhib3hmYl9jb25maWcgY29uZmlnOworCXhib3hfdHZf
ZW5jb2RpbmcgZW5jb2Rpbmc7CisJaW50IHJldCA9IDA7CisKKwlzd2l0Y2ggKGNtZCkgeworCWNh
c2UgRkJJT19YQk9YX1NFVF9PVkVSU0NBTjoKKwkJaWYoIWNvcHlfZnJvbV91c2VyKCZvdmVyc2Nh
biwgKHhib3hfb3ZlcnNjYW4qKWFyZywgc2l6ZW9mKG92ZXJzY2FuKSkpIHsKKwkJCXBhci0+aG9j
ID0gb3ZlcnNjYW4uaG9jOworCQkJcGFyLT52b2MgPSBvdmVyc2Nhbi52b2M7CisJCQlyaXZhX2xv
YWRfdmlkZW9fbW9kZSAoaW5mbyk7CisJCQlpZiAoaW5mby0+dmFyLmFjY2VsX2ZsYWdzICYgRkJf
QUNDRUxGX1RFWFQpIHsKKwkJCQlyaXZhX3NldHVwX2FjY2VsKHBhcik7CisJCQl9CisKKwkJfQor
CQllbHNlIHsKKwkJCXJldCA9IC1FRkFVTFQ7CisJCX0KKwlicmVhazsKKwljYXNlIEZCSU9fWEJP
WF9HRVRfT1ZFUlNDQU46CisJCW92ZXJzY2FuLmhvYyA9IHBhci0+aG9jOworCQlvdmVyc2Nhbi52
b2MgPSBwYXItPnZvYzsKKwkJaWYgKGNvcHlfdG9fdXNlcigoeGJveF9vdmVyc2NhbiopYXJnLCAm
b3ZlcnNjYW4sIHNpemVvZihvdmVyc2NhbikpKSB7CisJCQlyZXQgPSAtRUZBVUxUOworCQl9CisJ
YnJlYWs7CisJY2FzZSBGQklPX1hCT1hfR0VUX0NPTkZJRzoKKwkJY29uZmlnLmF2X3R5cGUgPSBw
YXItPmF2X3R5cGU7CisJCWNvbmZpZy5lbmNvZGVyX3R5cGUgPSBwYXItPnZpZGVvX2VuY29kZXI7
CisJCWlmIChjb3B5X3RvX3VzZXIoKHhib3hmYl9jb25maWcqKWFyZywgJmNvbmZpZywgc2l6ZW9m
KGNvbmZpZykpKSB7CisJCQlyZXQgPSAtRUZBVUxUOworCQl9CisJYnJlYWs7CisJY2FzZSBGQklP
X1hCT1hfR0VUX1RWX0VOQ09ESU5HOgorCQllbmNvZGluZyA9IHBhci0+dHZfZW5jb2Rpbmc7CisJ
CWlmIChjb3B5X3RvX3VzZXIoKHhib3hfdHZfZW5jb2RpbmcqKWFyZywgJmVuY29kaW5nLCBzaXpl
b2YoZW5jb2RpbmcpKSkgeworCQkJcmV0ID0gLUVGQVVMVDsKKwkJfQorCWJyZWFrOworCWNhc2Ug
RkJJT19YQk9YX1NFVF9UVl9FTkNPRElORzoKKwkJaWYoIWNvcHlfZnJvbV91c2VyKCZlbmNvZGlu
ZywgKHhib3hfdHZfZW5jb2RpbmcqKWFyZywgc2l6ZW9mKGVuY29kaW5nKSkpIHsKKwkJCXBhci0+
dHZfZW5jb2RpbmcgPSBlbmNvZGluZzsKKwkJCXJpdmFfbG9hZF92aWRlb19tb2RlIChpbmZvKTsK
KwkJCWlmIChpbmZvLT52YXIuYWNjZWxfZmxhZ3MgJiBGQl9BQ0NFTEZfVEVYVCkgeworCQkJCXJp
dmFfc2V0dXBfYWNjZWwocGFyKTsKKwkJCX0KKwkJfQorCQllbHNlIHsKKwkJCXJldCA9IC1FRkFV
TFQ7CisJCX0KKwlicmVhazsKKwlkZWZhdWx0OgorCQlyZXQgPSAtRUlOVkFMOworCX0KKwlyZXR1
cm4gcmV0OworfQorCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKgorICoKKyAqIGluaXRpYWxpemF0
aW9uIGhlbHBlciBmdW5jdGlvbnMKKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qIGtl
cm5lbCBpbnRlcmZhY2UgKi8KK3N0YXRpYyBzdHJ1Y3QgZmJfb3BzIHJpdmFfZmJfb3BzID0gewor
CS5vd25lciAJCT0gVEhJU19NT0RVTEUsCisJLmZiX29wZW4JPSB4Ym94ZmJfb3BlbiwKKwkuZmJf
cmVsZWFzZQk9IHhib3hmYl9yZWxlYXNlLAorCS5mYl9jaGVja192YXIgCT0geGJveGZiX2NoZWNr
X3ZhciwKKwkuZmJfc2V0X3BhciAJPSB4Ym94ZmJfc2V0X3BhciwKKwkuZmJfc2V0Y29scmVnIAk9
IHhib3hmYl9zZXRjb2xyZWcsCisJLmZiX3Bhbl9kaXNwbGF5CT0geGJveGZiX3Bhbl9kaXNwbGF5
LAorCS5mYl9ibGFuayAJPSB4Ym94ZmJfYmxhbmssCisJLmZiX2ZpbGxyZWN0IAk9IHhib3hmYl9m
aWxscmVjdCwKKwkuZmJfY29weWFyZWEgCT0geGJveGZiX2NvcHlhcmVhLAorCS5mYl9pbWFnZWJs
aXQgCT0geGJveGZiX2ltYWdlYmxpdCwKKwkuZmJfY3Vyc29yCT0geGJveGZiX2N1cnNvciwKKwku
ZmJfc3luYyAJPSB4Ym94ZmJfc3luYywKKwkuZmJfaW9jdGwJPSB4Ym94ZmJfaW9jdGwsCit9Owor
CitzdGF0aWMgaW50IF9fZGV2aW5pdCByaXZhX3NldF9mYmluZm8oc3RydWN0IGZiX2luZm8gKmlu
Zm8pCit7CisJc3RydWN0IHJpdmFfcGFyICpwYXIgPSAoc3RydWN0IHJpdmFfcGFyICopIGluZm8t
PnBhcjsKKwl1bnNpZ25lZCBpbnQgY21hcF9sZW47CisKKwlpbmZvLT5mbGFncyA9IEZCSU5GT19G
TEFHX0RFRkFVTFQ7CisJaW5mby0+dmFyID0geGJveGZiX2RlZmF1bHRfdmFyOworCWluZm8tPmZp
eCA9IHhib3hmYl9maXg7CisJaW5mby0+ZmJvcHMgPSAmcml2YV9mYl9vcHM7CisJaW5mby0+cHNl
dWRvX3BhbGV0dGUgPSBwc2V1ZG9fcGFsZXR0ZTsKKworI2lmbmRlZiBNT0RVTEUKKwlpZiAobW9k
ZV9vcHRpb24pCisJeworCQlpZiAoIXN0cm5jbXAobW9kZV9vcHRpb24sICI0ODBwIiwgNCkpIHsK
KwkJCWluZm8tPnZhciA9IHhib3hmYl9tb2RlXzQ4MHA7CisJCX0KKwkJZWxzZSBpZiAoIXN0cm5j
bXAobW9kZV9vcHRpb24sICI3MjBwIiwgNCkpIHsKKwkJCWluZm8tPnZhciA9IHhib3hmYl9tb2Rl
XzcyMHA7CisJCX0KKwkJZWxzZSB7CisJCQlmYl9maW5kX21vZGUoJmluZm8tPnZhciwgaW5mbywg
bW9kZV9vcHRpb24sCisJCQkJTlVMTCwgMCwgTlVMTCwgOCk7CisJCX0KKwl9CisjZW5kaWYKKwlp
ZiAocGFyLT51c2VfZGVmYXVsdF92YXIpCisJCS8qIFdlIHdpbGwgdXNlIHRoZSBtb2RpZmllZCBk
ZWZhdWx0IHZhciAqLworCQlpbmZvLT52YXIgPSB4Ym94ZmJfZGVmYXVsdF92YXI7CisKKwljbWFw
X2xlbiA9IHJpdmFfZ2V0X2NtYXBfbGVuKCZpbmZvLT52YXIpOworCWZiX2FsbG9jX2NtYXAoJmlu
Zm8tPmNtYXAsIGNtYXBfbGVuLCAwKTsJCisKKwlpbmZvLT5waXhtYXAuc2l6ZSA9IDY0ICogMTAy
NDsKKwlpbmZvLT5waXhtYXAuYnVmX2FsaWduID0gNDsKKwlpbmZvLT5waXhtYXAuc2Nhbl9hbGln
biA9IDQ7CisJaW5mby0+cGl4bWFwLmZsYWdzID0gRkJfUElYTUFQX1NZU1RFTTsKKwlyZXR1cm4g
MDsKK30KKworI2lmZGVmIENPTkZJR19QUENfT0YKK3N0YXRpYyBpbnQgcml2YV9nZXRfRURJRF9P
RihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3RydWN0IHBjaV9kZXYgKnBkKQoreworCXN0cnVjdCBy
aXZhX3BhciAqcGFyID0gKHN0cnVjdCByaXZhX3BhciAqKSBpbmZvLT5wYXI7CisJc3RydWN0IGRl
dmljZV9ub2RlICpkcDsKKwl1bnNpZ25lZCBjaGFyICpwZWRpZCA9IE5VTEw7CisKKwlkcCA9IHBj
aV9kZXZpY2VfdG9fT0Zfbm9kZShwZCk7CisJcGVkaWQgPSAodW5zaWduZWQgY2hhciAqKWdldF9w
cm9wZXJ0eShkcCwgIkVESUQsQiIsIDApOworCisJaWYgKHBlZGlkKSB7CisJCXBhci0+RURJRCA9
IHBlZGlkOworCQlyZXR1cm4gMTsKKwl9IGVsc2UKKwkJcmV0dXJuIDA7Cit9CisjZW5kaWYgLyog
Q09ORklHX1BQQ19PRiAqLworCitzdGF0aWMgaW50IHJpdmFfZGZwX3BhcnNlX0VESUQoc3RydWN0
IHJpdmFfcGFyICpwYXIpCit7CisJdW5zaWduZWQgY2hhciAqYmxvY2sgPSBwYXItPkVESUQ7CisK
KwlpZiAoIWJsb2NrKQorCQlyZXR1cm4gMDsKKworCS8qIGp1bXAgdG8gZGV0YWlsZWQgdGltaW5n
IGJsb2NrIHNlY3Rpb24gKi8KKwlibG9jayArPSA1NDsKKworCXBhci0+Y2xvY2sgPSAoYmxvY2tb
MF0gKyAoYmxvY2tbMV0gPDwgOCkpOworCXBhci0+cGFuZWxfeHJlcyA9IChibG9ja1syXSArICgo
YmxvY2tbNF0gJiAweGYwKSA8PCA0KSk7CisJcGFyLT5oYmxhbmsgPSAoYmxvY2tbM10gKyAoKGJs
b2NrWzRdICYgMHgwZikgPDwgOCkpOworCXBhci0+cGFuZWxfeXJlcyA9IChibG9ja1s1XSArICgo
YmxvY2tbN10gJiAweGYwKSA8PCA0KSk7CisJcGFyLT52YmxhbmsgPSAoYmxvY2tbNl0gKyAoKGJs
b2NrWzddICYgMHgwZikgPDwgOCkpOworCXBhci0+aE92ZXJfcGx1cyA9IChibG9ja1s4XSArICgo
YmxvY2tbMTFdICYgMHhjMCkgPDwgMikpOworCXBhci0+aFN5bmNfd2lkdGggPSAoYmxvY2tbOV0g
KyAoKGJsb2NrWzExXSAmIDB4MzApIDw8IDQpKTsKKwlwYXItPnZPdmVyX3BsdXMgPSAoKGJsb2Nr
WzEwXSA+PiA0KSArICgoYmxvY2tbMTFdICYgMHgwYykgPDwgMikpOworCXBhci0+dlN5bmNfd2lk
dGggPSAoKGJsb2NrWzEwXSAmIDB4MGYpICsgKChibG9ja1sxMV0gJiAweDAzKSA8PCA0KSk7CisJ
cGFyLT5pbnRlcmxhY2VkID0gKChibG9ja1sxN10gJiAweDgwKSA+PiA3KTsKKwlwYXItPnN5bmN0
ID0gKChibG9ja1sxN10gJiAweDE4KSA+PiAzKTsKKwlwYXItPm1pc2MgPSAoKGJsb2NrWzE3XSAm
IDB4MDYpID4+IDEpOworCXBhci0+aEFjdF9oaWdoID0gcGFyLT52QWN0X2hpZ2ggPSAwOworCWlm
IChwYXItPnN5bmN0ID09IDMpIHsKKwkJaWYgKHBhci0+bWlzYyAmIDIpCisJCQlwYXItPmhBY3Rf
aGlnaCA9IDE7CisJCWlmIChwYXItPm1pc2MgJiAxKQorCQkJcGFyLT52QWN0X2hpZ2ggPSAxOwor
CX0KKworCXByaW50ayhLRVJOX0lORk8gUEZYCisJCQkiZGV0ZWN0ZWQgREZQIHBhbmVsIHNpemUg
ZnJvbSBFRElEOiAlZHglZFxuIiwgCisJCQlwYXItPnBhbmVsX3hyZXMsIHBhci0+cGFuZWxfeXJl
cyk7CisJcGFyLT5nb3RfZGZwaW5mbyA9IDE7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lk
IHJpdmFfdXBkYXRlX2RlZmF1bHRfdmFyKHN0cnVjdCBmYl9pbmZvICppbmZvKQoreworCXN0cnVj
dCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyID0gJnhib3hmYl9kZWZhdWx0X3ZhcjsKKwlzdHJ1Y3Qg
cml2YV9wYXIgKnBhciA9IChzdHJ1Y3Qgcml2YV9wYXIgKikgaW5mby0+cGFyOworCisgICAgICAg
IHZhci0+eHJlcyA9IHBhci0+cGFuZWxfeHJlczsKKyAgICAgICAgdmFyLT55cmVzID0gcGFyLT5w
YW5lbF95cmVzOworICAgICAgICB2YXItPnhyZXNfdmlydHVhbCA9IHBhci0+cGFuZWxfeHJlczsK
KyAgICAgICAgdmFyLT55cmVzX3ZpcnR1YWwgPSBwYXItPnBhbmVsX3lyZXM7CisgICAgICAgIHZh
ci0+eG9mZnNldCA9IHZhci0+eW9mZnNldCA9IDA7CisgICAgICAgIHZhci0+Yml0c19wZXJfcGl4
ZWwgPSA4OworICAgICAgICB2YXItPnBpeGNsb2NrID0gMTAwMDAwMDAwIC8gcGFyLT5jbG9jazsK
KyAgICAgICAgdmFyLT5sZWZ0X21hcmdpbiA9IChwYXItPmhibGFuayAtIHBhci0+aE92ZXJfcGx1
cyAtIHBhci0+aFN5bmNfd2lkdGgpOworICAgICAgICB2YXItPnJpZ2h0X21hcmdpbiA9IHBhci0+
aE92ZXJfcGx1czsKKyAgICAgICAgdmFyLT51cHBlcl9tYXJnaW4gPSAocGFyLT52YmxhbmsgLSBw
YXItPnZPdmVyX3BsdXMgLSBwYXItPnZTeW5jX3dpZHRoKTsKKyAgICAgICAgdmFyLT5sb3dlcl9t
YXJnaW4gPSBwYXItPnZPdmVyX3BsdXM7CisgICAgICAgIHZhci0+aHN5bmNfbGVuID0gcGFyLT5o
U3luY193aWR0aDsKKyAgICAgICAgdmFyLT52c3luY19sZW4gPSBwYXItPnZTeW5jX3dpZHRoOwor
ICAgICAgICB2YXItPnN5bmMgPSAwOworCisgICAgICAgIGlmIChwYXItPnN5bmN0ID09IDMpIHsK
KyAgICAgICAgICAgICAgICBpZiAocGFyLT5oQWN0X2hpZ2gpCisgICAgICAgICAgICAgICAgICAg
ICAgICB2YXItPnN5bmMgfD0gRkJfU1lOQ19IT1JfSElHSF9BQ1Q7CisgICAgICAgICAgICAgICAg
aWYgKHBhci0+dkFjdF9oaWdoKQorICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5zeW5jIHw9
IEZCX1NZTkNfVkVSVF9ISUdIX0FDVDsKKyAgICAgICAgfQorIAorICAgICAgICB2YXItPnZtb2Rl
ID0gMDsKKyAgICAgICAgaWYgKHBhci0+aW50ZXJsYWNlZCkKKyAgICAgICAgICAgICAgICB2YXIt
PnZtb2RlIHw9IEZCX1ZNT0RFX0lOVEVSTEFDRUQ7CisKKwl2YXItPmFjY2VsX2ZsYWdzIHw9IEZC
X0FDQ0VMRl9URVhUOworICAgICAgICAKKyAgICAgICAgcGFyLT51c2VfZGVmYXVsdF92YXIgPSAx
OworfQorCisKK3N0YXRpYyB2b2lkIHJpdmFfZ2V0X0VESUQoc3RydWN0IGZiX2luZm8gKmluZm8s
IHN0cnVjdCBwY2lfZGV2ICpwZGV2KQoreworI2lmZGVmIENPTkZJR19QUENfT0YKKwlpZiAoIXJp
dmFfZ2V0X0VESURfT0YoaW5mbywgcGRldikpCisJCXByaW50aygieGJveGZiOiBjb3VsZCBub3Qg
cmV0cmlldmUgRURJRCBmcm9tIE9GXG4iKTsKKyNlbHNlCisJLyogWFhYIHVzZSBvdGhlciBtZXRo
b2RzIGxhdGVyICovCisjZW5kaWYKK30KKworCitzdGF0aWMgdm9pZCByaXZhX2dldF9kZnBpbmZv
KHN0cnVjdCBmYl9pbmZvICppbmZvKQoreworCXN0cnVjdCByaXZhX3BhciAqcGFyID0gKHN0cnVj
dCByaXZhX3BhciAqKSBpbmZvLT5wYXI7CisKKwlpZiAocml2YV9kZnBfcGFyc2VfRURJRChwYXIp
KQorCQlyaXZhX3VwZGF0ZV9kZWZhdWx0X3ZhcihpbmZvKTsKKworCS8qIGlmIHVzZXIgc3BlY2lm
aWVkIGZsYXRwYW5lbCwgd2UgcmVzcGVjdCB0aGF0ICovCisJaWYgKHBhci0+Z290X2RmcGluZm8g
PT0gMSkKKwkJcGFyLT5GbGF0UGFuZWwgPSAxOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoK
KyAqCisgKiBQQ0kgYnVzCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgaW50
IF9fZGV2aW5pdCB4Ym94ZmJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkLAorCQkJICAgICAJY29u
c3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKK3sKKwlzdHJ1Y3Qgcml2YV9jaGlwX2luZm8g
KnJjaSA9ICZyaXZhX2NoaXBfaW5mb1tlbnQtPmRyaXZlcl9kYXRhXTsKKwlzdHJ1Y3Qgcml2YV9w
YXIgKmRlZmF1bHRfcGFyOworCXN0cnVjdCBmYl9pbmZvICppbmZvOworCXVuc2lnbmVkIGxvbmcg
ZmJfc3RhcnQ7CisJdW5zaWduZWQgbG9uZyBmYl9zaXplOworCisJYXNzZXJ0KHBkICE9IE5VTEwp
OworCWFzc2VydChyY2kgIT0gTlVMTCk7CisKKwlpbmZvID0ga21hbGxvYyhzaXplb2Yoc3RydWN0
IGZiX2luZm8pLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWluZm8pCisJCWdvdG8gZXJyX291dDsKKwor
CWRlZmF1bHRfcGFyID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHJpdmFfcGFyKSwgR0ZQX0tFUk5F
TCk7CisJaWYgKCFkZWZhdWx0X3BhcikKKwkJZ290byBlcnJfb3V0X2tmcmVlOworCisJbWVtc2V0
KGluZm8sIDAsIHNpemVvZihzdHJ1Y3QgZmJfaW5mbykpOworCW1lbXNldChkZWZhdWx0X3Bhciwg
MCwgc2l6ZW9mKHN0cnVjdCByaXZhX3BhcikpOworCisJaW5mby0+cGl4bWFwLmFkZHIgPSBrbWFs
bG9jKDY0ICogMTAyNCwgR0ZQX0tFUk5FTCk7CisJaWYgKGluZm8tPnBpeG1hcC5hZGRyID09IE5V
TEwpCisJCWdvdG8gZXJyX291dF9rZnJlZTE7CisJbWVtc2V0KGluZm8tPnBpeG1hcC5hZGRyLCAw
LCA2NCAqIDEwMjQpOworCisJc3RyY2F0KHhib3hmYl9maXguaWQsIHJjaS0+bmFtZSk7CisJZGVm
YXVsdF9wYXItPnJpdmEuQXJjaGl0ZWN0dXJlID0gcmNpLT5hcmNoX3JldjsKKworCWRlZmF1bHRf
cGFyLT5DaGlwc2V0ID0gKHBkLT52ZW5kb3IgPDwgMTYpIHwgcGQtPmRldmljZTsKKwlwcmludGso
S0VSTl9JTkZPIFBGWCAiblZpZGlhIGRldmljZS9jaGlwc2V0ICVYXG4iLGRlZmF1bHRfcGFyLT5D
aGlwc2V0KTsKKwkKKwlkZWZhdWx0X3Bhci0+RmxhdFBhbmVsID0gZmxhdHBhbmVsOworCWlmIChm
bGF0cGFuZWwgPT0gMSkKKwkJcHJpbnRrKEtFUk5fSU5GTyBQRlggImZsYXRwYW5lbCBzdXBwb3J0
IGVuYWJsZWRcbiIpOworCWRlZmF1bHRfcGFyLT5mb3JjZUNSVEMgPSBmb3JjZUNSVEM7CisJCisJ
eGJveGZiX2ZpeC5tbWlvX2xlbiA9IHBjaV9yZXNvdXJjZV9sZW4ocGQsIDApOworCisJeworCQkv
KiBlbmFibGUgSU8gYW5kIG1lbSBpZiBub3QgYWxyZWFkeSBkb25lICovCisJCXVuc2lnbmVkIHNo
b3J0IGNtZDsKKworCQlwY2lfcmVhZF9jb25maWdfd29yZChwZCwgUENJX0NPTU1BTkQsICZjbWQp
OworCQljbWQgfD0gKFBDSV9DT01NQU5EX0lPIHwgUENJX0NPTU1BTkRfTUVNT1JZKTsKKwkJcGNp
X3dyaXRlX2NvbmZpZ193b3JkKHBkLCBQQ0lfQ09NTUFORCwgY21kKTsKKwl9CisJCisJeGJveGZi
X2ZpeC5tbWlvX3N0YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBkLCAwKTsKKwl4Ym94ZmJfZml4
LnNtZW1fc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGQsIDEpOworCQorICAgICAgICBpZiAo
eGJveF9tZW1vcnlfc2l6ZSgpID09IDY0KjEwMjQqMTAyNCkgcHJpbnRrKEtFUk5fSU5GTyBQRlgg
IkRldGVjdGVkIDY0TUIgb2Ygc3lzdGVtIFJBTVxuIik7CisJZWxzZSBwcmludGsoS0VSTl9JTkZP
IFBGWCAiRGV0ZWN0ZWQgMTI4TUIgb2Ygc3lzdGVtIFJBTVxuIik7CisJCisJZmJfc2l6ZSA9IGF2
YWlsYWJsZV9mcmFtZWJ1ZmZlcl9tZW1vcnkoKTsKKwlmYl9zdGFydCA9IHhib3hfbWVtb3J5X3Np
emUoKSAtIGZiX3NpemU7CisJcHJpbnRrKEtFUk5fSU5GTyBQRlggIlVzaW5nICVkTSBmcmFtZWJ1
ZmZlciBtZW1vcnlcbiIsIChpbnQpKGZiX3NpemUvKDEwMjQqMTAyNCkpKTsKKwlkZWZhdWx0X3Bh
ci0+cml2YV9mYl9zdGFydCA9IGZiX3N0YXJ0OworCXhib3hmYl9maXguc21lbV9zdGFydCArPSBm
Yl9zdGFydDsKKwl4Ym94ZmJfZml4LnNtZW1fbGVuID0gZmJfc2l6ZSAtIDEwMjQgKiAyOyAvKiAy
IEtCeXRlIGZvciBDdXJzb3IgKi8KKwl0dl9pbml0KCk7CisJaWYgKHR2X2VuY29kaW5nID09IFRW
X0VOQ19JTlZBTElEKSB7CisJCXR2X2VuY29kaW5nID0gZ2V0X3R2X2VuY29kaW5nKCk7CisJCXBy
aW50ayhLRVJOX0lORk8gUEZYICJTZXR0aW5nIFRWIG1vZGUgZnJvbSBFRVBST00gKCVzKVxuIiwg
dHZFbmNvZGluZ05hbWVzW3R2X2VuY29kaW5nXSk7CisJfQorCWRlZmF1bHRfcGFyLT50dl9lbmNv
ZGluZyA9IHR2X2VuY29kaW5nOworCWRlZmF1bHRfcGFyLT52aWRlb19lbmNvZGVyID0gdHZfZ2V0
X3ZpZGVvX2VuY29kZXIoKTsKKwlzd2l0Y2goZGVmYXVsdF9wYXItPnZpZGVvX2VuY29kZXIpIHsK
KwkJY2FzZSBFTkNPREVSX0NPTkVYQU5UOgorCQkJcHJpbnRrKEtFUk5fSU5GTyBQRlggImRldGVj
dGVkIGNvbmV4YW50IGVuY29kZXJcbiIpOworCQkJYnJlYWs7CisJCWNhc2UgRU5DT0RFUl9GT0NV
UzoKKwkJCXByaW50ayhLRVJOX0lORk8gUEZYICJkZXRlY3RlZCBmb2N1cyBlbmNvZGVyXG4iKTsK
KwkJCWJyZWFrOworCX0KKwkKKwkKKwlpZiAoYXZfdHlwZSA9PSBBVl9JTlZBTElEKSB7CisJCWF2
X3R5cGUgPSBkZXRlY3RfYXZfdHlwZSgpOworCQlwcmludGsoS0VSTl9JTkZPIFBGWCAiU2V0dGlu
ZyBjYWJsZSB0eXBlIGZyb20gQVZJUCBJRDogJXNcbiIsIGF2VHlwZU5hbWVzW2F2X3R5cGVdKTsK
Kwl9CisJZGVmYXVsdF9wYXItPmF2X3R5cGUgPSBhdl90eXBlOworCWlmICgoaG9jIDwgMCkgfHwg
KGhvYyA+IDIwKSkgeworCQlob2MgPSAxMDsKKwl9CisJZGVmYXVsdF9wYXItPmhvYyA9IGhvYyAv
IDEwMC4wOworCWlmICgodm9jIDwgMCkgfHwgKHZvYyA+IDIwKSkgeworCQl2b2MgPSAxMDsKKwl9
CisJZGVmYXVsdF9wYXItPnZvYyA9IHZvYyAvIDEwMC4wOworCQorCWlmICghcmVxdWVzdF9tZW1f
cmVnaW9uKHhib3hmYl9maXgubW1pb19zdGFydCwKKwkJCQl4Ym94ZmJfZml4Lm1taW9fbGVuLCAi
eGJveGZiIikpIHsKKwkJcHJpbnRrKEtFUk5fRVJSIFBGWCAiY2Fubm90IHJlc2VydmUgTU1JTyBy
ZWdpb25cbiIpOworCQlnb3RvIGVycl9vdXRfa2ZyZWUyOworCX0KKworCWRlZmF1bHRfcGFyLT5j
dHJsX2Jhc2UgPSBpb3JlbWFwKHhib3hmYl9maXgubW1pb19zdGFydCwKKwkJCQkJIHhib3hmYl9m
aXgubW1pb19sZW4pOworCWlmICghZGVmYXVsdF9wYXItPmN0cmxfYmFzZSkgeworCQlwcmludGso
S0VSTl9FUlIgUEZYICJjYW5ub3QgaW9yZW1hcCBNTUlPIGJhc2VcbiIpOworCQlnb3RvIGVycl9v
dXRfZnJlZV9iYXNlMDsKKwl9CisKKwlpbmZvLT5wYXIgPSBkZWZhdWx0X3BhcjsKKworCXJpdmFf
Z2V0X0VESUQoaW5mbywgcGQpOworCisJcml2YV9nZXRfZGZwaW5mbyhpbmZvKTsKKworCXN3aXRj
aCAoZGVmYXVsdF9wYXItPnJpdmEuQXJjaGl0ZWN0dXJlKSB7CisJY2FzZSBOVl9BUkNIXzAzOgor
CQkvKiBSaXZhMTI4J3MgUFJBTUlOIGlzIGluIHRoZSAiZnJhbWVidWZmZXIiIHNwYWNlCisJCSAq
IFNpbmNlIHRoZXNlIGNhcmRzIHdlcmUgbmV2ZXIgbWFkZSB3aXRoIG1vcmUgdGhhbiA4IG1lZ2Fi
eXRlcworCQkgKiB3ZSBjYW4gc2FmZWx5IGFsbG9jYXRlIHRoaXMgc2VwYXJhdGVseS4KKwkJICov
CisJCWlmICghcmVxdWVzdF9tZW1fcmVnaW9uKHhib3hmYl9maXguc21lbV9zdGFydCArIDB4MDBD
MDAwMDAsCisJCQkJCSAweDAwMDA4MDAwLCAieGJveGZiIikpIHsKKwkJCXByaW50ayhLRVJOX0VS
UiBQRlggImNhbm5vdCByZXNlcnZlIFBSQU1JTiByZWdpb25cbiIpOworCQkJZ290byBlcnJfb3V0
X2lvdW5tYXBfY3RybDsKKwkJfQorCQlkZWZhdWx0X3Bhci0+cml2YS5QUkFNSU4gPSBpb3JlbWFw
KHhib3hmYl9maXguc21lbV9zdGFydCArIDB4MDBDMDAwMDAsIDB4MDAwMDgwMDApOworCQlpZiAo
IWRlZmF1bHRfcGFyLT5yaXZhLlBSQU1JTikgeworCQkJcHJpbnRrKEtFUk5fRVJSIFBGWCAiY2Fu
bm90IGlvcmVtYXAgUFJBTUlOIHJlZ2lvblxuIik7CisJCQlnb3RvIGVycl9vdXRfZnJlZV9udjNf
cHJhbWluOworCQl9CisJCXhib3hmYl9maXguYWNjZWwgPSBGQl9BQ0NFTF9OVjM7CisJCWJyZWFr
OworCWNhc2UgTlZfQVJDSF8wNDoKKwljYXNlIE5WX0FSQ0hfMTA6CisJY2FzZSBOVl9BUkNIXzIw
OgorCQlkZWZhdWx0X3Bhci0+cml2YS5QQ1JUQzAgPSAodW5zaWduZWQgKikoZGVmYXVsdF9wYXIt
PmN0cmxfYmFzZSArIDB4MDA2MDAwMDApOworCQlkZWZhdWx0X3Bhci0+cml2YS5QUkFNSU4gPSAo
dW5zaWduZWQgKikoZGVmYXVsdF9wYXItPmN0cmxfYmFzZSArIDB4MDA3MTAwMDApOworCQl4Ym94
ZmJfZml4LmFjY2VsID0gRkJfQUNDRUxfTlY0OworCQlicmVhazsKKwl9CisKKwlyaXZhX2NvbW1v
bl9zZXR1cChkZWZhdWx0X3Bhcik7CisKKwlpZiAoZGVmYXVsdF9wYXItPnJpdmEuQXJjaGl0ZWN0
dXJlID09IE5WX0FSQ0hfMDMpIHsKKwkJZGVmYXVsdF9wYXItPnJpdmEuUENSVEMgPSBkZWZhdWx0
X3Bhci0+cml2YS5QQ1JUQzAgPSBkZWZhdWx0X3Bhci0+cml2YS5QR1JBUEg7CisJfQorCisJLyog
eGJveGZiX2ZpeC5zbWVtX2xlbiA9IHJpdmFfZ2V0X21lbWxlbihkZWZhdWx0X3BhcikgKiAxMDI0
OyAqLworCWRlZmF1bHRfcGFyLT5kY2xrX21heCA9IHJpdmFfZ2V0X21heGRjbGsoZGVmYXVsdF9w
YXIpICogMTAwMDsKKworCWlmICghcmVxdWVzdF9tZW1fcmVnaW9uKHhib3hmYl9maXguc21lbV9z
dGFydCwgeGJveGZiX2ZpeC5zbWVtX2xlbiwgInhib3hmYiIpKSB7CisJCXByaW50ayhLRVJOX0VS
UiBQRlggImNhbm5vdCByZXNlcnZlIEZCIHJlZ2lvblxuIik7CisJCWdvdG8gZXJyX291dF9pb3Vu
bWFwX252M19wcmFtaW47CisJfQorCQorCWluZm8tPnNjcmVlbl9iYXNlID0gaW9yZW1hcCh4Ym94
ZmJfZml4LnNtZW1fc3RhcnQsIGZiX3NpemUpOworCWlmICghaW5mby0+c2NyZWVuX2Jhc2UpIHsK
KwkJcHJpbnRrKEtFUk5fRVJSIFBGWCAiY2Fubm90IGlvcmVtYXAgRkIgYmFzZVxuIik7CisJCWdv
dG8gZXJyX291dF9mcmVlX2Jhc2UxOworCX0KKworI2lmZGVmIENPTkZJR19NVFJSCisJaWYgKCFu
b210cnIpIHsKKwkJZGVmYXVsdF9wYXItPm10cnIudnJhbSA9IG10cnJfYWRkKHhib3hmYl9maXgu
c21lbV9zdGFydCwgZmJfc2l6ZSwKKwkJCU1UUlJfVFlQRV9XUkNPTUIsIDEpOworCQlpZiAoZGVm
YXVsdF9wYXItPm10cnIudnJhbSA8IDApIHsKKwkJCXByaW50ayhLRVJOX0VSUiBQRlggInVuYWJs
ZSB0byBzZXR1cCBNVFJSXG4iKTsKKwkJfSBlbHNlIHsKKwkJCWRlZmF1bHRfcGFyLT5tdHJyLnZy
YW1fdmFsaWQgPSAxOworCQkJLyogbGV0IHRoZXJlIGJlIHNwZWVkICovCisJCQlwcmludGsoS0VS
Tl9JTkZPIFBGWCAiUklWQSBNVFJSIHNldCB0byBPTlxuIik7CisJCX0KKwl9CisjZW5kaWYgLyog
Q09ORklHX01UUlIgKi8KKworCWlmIChyaXZhX3NldF9mYmluZm8oaW5mbykgPCAwKSB7CisJCXBy
aW50ayhLRVJOX0VSUiBQRlggImVycm9yIHNldHRpbmcgaW5pdGlhbCB2aWRlbyBtb2RlXG4iKTsK
KwkJZ290byBlcnJfb3V0X2lvdW5tYXBfZmI7CisJfQorCisJaWYgKHJlZ2lzdGVyX2ZyYW1lYnVm
ZmVyKGluZm8pIDwgMCkgeworCQlwcmludGsoS0VSTl9FUlIgUEZYCisJCQkiZXJyb3IgcmVnaXN0
ZXJpbmcgcml2YSBmcmFtZWJ1ZmZlclxuIik7CisJCWdvdG8gZXJyX291dF9pb3VubWFwX2ZiOwor
CX0KKworCXBjaV9zZXRfZHJ2ZGF0YShwZCwgaW5mbyk7CisKKwlwcmludGsoS0VSTl9JTkZPIFBG
WAorCQkiUENJIG5WaWRpYSBOViV4IGZyYW1lYnVmZmVyIHZlciAlcyAoJXMsICVsZE1CIEAgMHgl
bFgpXG4iLAorCQlkZWZhdWx0X3Bhci0+cml2YS5BcmNoaXRlY3R1cmUsCisJCVJJVkFGQl9WRVJT
SU9OLAorCQlpbmZvLT5maXguaWQsCisJCWZiX3NpemUgLyAoMTAyNCAqIDEwMjQpLAorCQlpbmZv
LT5maXguc21lbV9zdGFydCk7CisJcmV0dXJuIDA7CisKK2Vycl9vdXRfaW91bm1hcF9mYjoKKwlp
b3VubWFwKGluZm8tPnNjcmVlbl9iYXNlKTsKK2Vycl9vdXRfZnJlZV9iYXNlMToKKwlyZWxlYXNl
X21lbV9yZWdpb24oeGJveGZiX2ZpeC5zbWVtX3N0YXJ0LCBmYl9zaXplKTsKK2Vycl9vdXRfaW91
bm1hcF9udjNfcHJhbWluOgorCWlmIChkZWZhdWx0X3Bhci0+cml2YS5BcmNoaXRlY3R1cmUgPT0g
TlZfQVJDSF8wMykgCisJCWlvdW5tYXAoKGNhZGRyX3QpZGVmYXVsdF9wYXItPnJpdmEuUFJBTUlO
KTsKK2Vycl9vdXRfZnJlZV9udjNfcHJhbWluOgorCWlmIChkZWZhdWx0X3Bhci0+cml2YS5BcmNo
aXRlY3R1cmUgPT0gTlZfQVJDSF8wMykKKwkJcmVsZWFzZV9tZW1fcmVnaW9uKHhib3hmYl9maXgu
c21lbV9zdGFydCArIDB4MDBDMDAwMDAsIDB4MDAwMDgwMDApOworZXJyX291dF9pb3VubWFwX2N0
cmw6CisJaW91bm1hcChkZWZhdWx0X3Bhci0+Y3RybF9iYXNlKTsKK2Vycl9vdXRfZnJlZV9iYXNl
MDoKKwlyZWxlYXNlX21lbV9yZWdpb24oeGJveGZiX2ZpeC5tbWlvX3N0YXJ0LCB4Ym94ZmJfZml4
Lm1taW9fbGVuKTsKK2Vycl9vdXRfa2ZyZWUyOgorCWtmcmVlKGluZm8tPnBpeG1hcC5hZGRyKTsK
K2Vycl9vdXRfa2ZyZWUxOgorCWtmcmVlKGRlZmF1bHRfcGFyKTsKK2Vycl9vdXRfa2ZyZWU6CisJ
a2ZyZWUoaW5mbyk7CitlcnJfb3V0OgorCXJldHVybiAtRU5PREVWOworfQorCitzdGF0aWMgdm9p
ZCBfX2V4aXQgeGJveGZiX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGQpCit7CisJc3RydWN0IGZi
X2luZm8gKmluZm8gPSBwY2lfZ2V0X2RydmRhdGEocGQpOworCXN0cnVjdCByaXZhX3BhciAqcGFy
ID0gKHN0cnVjdCByaXZhX3BhciAqKSBpbmZvLT5wYXI7CisJCisJaWYgKCFpbmZvKQorCQlyZXR1
cm47CisKKwl1bnJlZ2lzdGVyX2ZyYW1lYnVmZmVyKGluZm8pOworI2lmZGVmIENPTkZJR19NVFJS
CisJaWYgKHBhci0+bXRyci52cmFtX3ZhbGlkKQorCQltdHJyX2RlbChwYXItPm10cnIudnJhbSwg
aW5mby0+Zml4LnNtZW1fc3RhcnQsIGluZm8tPmZpeC5zbWVtX2xlbiArIDEwMjQgKiAyKTsKKyNl
bmRpZiAvKiBDT05GSUdfTVRSUiAqLworCisJaW91bm1hcChwYXItPmN0cmxfYmFzZSk7CisJaW91
bm1hcChpbmZvLT5zY3JlZW5fYmFzZSk7CisKKwlyZWxlYXNlX21lbV9yZWdpb24oaW5mby0+Zml4
Lm1taW9fc3RhcnQsCisJCQkgICBpbmZvLT5maXgubW1pb19sZW4pOworCXJlbGVhc2VfbWVtX3Jl
Z2lvbihpbmZvLT5maXguc21lbV9zdGFydCwgaW5mby0+Zml4LnNtZW1fbGVuICsgMTAyNCAqIDIp
OworCisJaWYgKHBhci0+cml2YS5BcmNoaXRlY3R1cmUgPT0gTlZfQVJDSF8wMykgeworCQlpb3Vu
bWFwKChjYWRkcl90KXBhci0+cml2YS5QUkFNSU4pOworCQlyZWxlYXNlX21lbV9yZWdpb24oaW5m
by0+Zml4LnNtZW1fc3RhcnQgKyAweDAwQzAwMDAwLCAweDAwMDA4MDAwKTsKKwl9CisJa2ZyZWUo
aW5mby0+cGl4bWFwLmFkZHIpOworCWtmcmVlKHBhcik7CisJa2ZyZWUoaW5mbyk7CisJcGNpX3Nl
dF9kcnZkYXRhKHBkLCBOVUxMKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqCisgKgorICog
aW5pdGlhbGl6YXRpb24KKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyNpZm5kZWYgTU9E
VUxFCitpbnQgX19pbml0IHhib3hmYl9zZXR1cChjaGFyICpvcHRpb25zKQoreworCWNoYXIgKnRo
aXNfb3B0OworCisJaWYgKCFvcHRpb25zIHx8ICEqb3B0aW9ucykKKwkJcmV0dXJuIDA7CisKKwl3
aGlsZSAoKHRoaXNfb3B0ID0gc3Ryc2VwKCZvcHRpb25zLCAiLCIpKSAhPSBOVUxMKSB7CisJCWlm
ICghc3RybmNtcCh0aGlzX29wdCwgImZvcmNlQ1JUQyIsIDkpKSB7CisJCQljaGFyICpwOworCQkJ
CisJCQlwID0gdGhpc19vcHQgKyA5OworCQkJaWYgKCEqcCB8fCAhKigrK3ApKSBjb250aW51ZTsg
CisJCQlmb3JjZUNSVEMgPSAqcCAtICcwJzsKKwkJCWlmIChmb3JjZUNSVEMgPCAwIHx8IGZvcmNl
Q1JUQyA+IDEpIAorCQkJCWZvcmNlQ1JUQyA9IC0xOworCQl9IGVsc2UgaWYgKCFzdHJuY21wKHRo
aXNfb3B0LCAiZmxhdHBhbmVsIiwgOSkpIHsKKwkJCWZsYXRwYW5lbCA9IDE7CisjaWZkZWYgQ09O
RklHX01UUlIKKwkJfSBlbHNlIGlmICghc3RybmNtcCh0aGlzX29wdCwgIm5vbXRyciIsIDYpKSB7
CisJCQlub210cnIgPSAxOworI2VuZGlmCisJCX0gZWxzZSBpZiAoIXN0cm5jbXAodGhpc19vcHQs
ICJ0dj0iLCAzKSkgeworCQkJCWlmKCFzdHJuY21wKHRoaXNfb3B0ICsgMywgIlBBTCIsIDMpKSB7
CisJCQkJCQl0dl9lbmNvZGluZyA9IFRWX0VOQ19QQUxCREdISTsKKwkJCQl9CisJCQkJZWxzZSBp
Zighc3RybmNtcCh0aGlzX29wdCArIDMsICJOVFNDIiwgNCkpIHsKKwkJCQkJCXR2X2VuY29kaW5n
ID0gVFZfRU5DX05UU0M7CisJCQkJfQorCQkJCWVsc2UgaWYoIXN0cm5jbXAodGhpc19vcHQgKyAz
LCAiVkdBIiwgMykpIHsKKwkJCQkJCWF2X3R5cGUgPSBBVl9WR0FfU09HOworCQkJCX0KKwkJfSBl
bHNlIGlmICghc3RybmNtcCh0aGlzX29wdCwgImhvYz0iLCA0KSkgeworCQkJCXNzY2FuZih0aGlz
X29wdCs0LCAiJWQiLCAmaG9jKTsKKwkJfSBlbHNlIGlmICghc3RybmNtcCh0aGlzX29wdCwgInZv
Yz0iLCA0KSkgeworCQkJCXNzY2FuZih0aGlzX29wdCs0LCAiJWQiLCAmdm9jKTsKKwkJfSBlbHNl
CisJCQltb2RlX29wdGlvbiA9IHRoaXNfb3B0OworCX0KKwlyZXR1cm4gMDsKK30KKyNlbmRpZiAv
KiAhTU9EVUxFICovCisKK3N0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciB4Ym94ZmJfZHJpdmVyID0g
eworCS5uYW1lCQk9ICJ4Ym94ZmIiLAorCS5pZF90YWJsZQk9IHhib3hmYl9wY2lfdGJsLAorCS5w
cm9iZQkJPSB4Ym94ZmJfcHJvYmUsCisJLnJlbW92ZQkJPSBfX2V4aXRfcCh4Ym94ZmJfcmVtb3Zl
KSwKK307CisKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoKKyAqCisgKiBtb2R1bGFyaXphdGlv
bgorICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworaW50IF9faW5pdCB4Ym94ZmJfaW5pdCh2
b2lkKQoreworCWlmIChwY2lfcmVnaXN0ZXJfZHJpdmVyKCZ4Ym94ZmJfZHJpdmVyKSA+IDApCisJ
CXJldHVybiAwOworCXBjaV91bnJlZ2lzdGVyX2RyaXZlcigmeGJveGZiX2RyaXZlcik7CisJcmV0
dXJuIC1FTk9ERVY7Cit9CisKKworI2lmZGVmIE1PRFVMRQorc3RhdGljIHZvaWQgX19leGl0IHhi
b3hmYl9leGl0KHZvaWQpCit7CisJcGNpX3VucmVnaXN0ZXJfZHJpdmVyKCZ4Ym94ZmJfZHJpdmVy
KTsKK30KKworbW9kdWxlX2luaXQoeGJveGZiX2luaXQpOworbW9kdWxlX2V4aXQoeGJveGZiX2V4
aXQpOworCitNT0RVTEVfUEFSTShmbGF0cGFuZWwsICJpIik7CitNT0RVTEVfUEFSTV9ERVNDKGZs
YXRwYW5lbCwgIkVuYWJsZXMgZXhwZXJpbWVudGFsIGZsYXQgcGFuZWwgc3VwcG9ydCBmb3Igc29t
ZSBjaGlwc2V0cy4gKDAgb3IgMT1lbmFibGVkKSAoZGVmYXVsdD0wKSIpOworTU9EVUxFX1BBUk0o
Zm9yY2VDUlRDLCAiaSIpOworTU9EVUxFX1BBUk1fREVTQyhmb3JjZUNSVEMsICJGb3JjZXMgdXNh
Z2Ugb2YgYSBwYXJ0aWN1bGFyIENSVEMgaW4gY2FzZSBhdXRvZGV0ZWN0aW9uIGZhaWxzLiAoMCBv
ciAxKSAoZGVmYXVsdD1hdXRvZGV0ZWN0KSIpOworCisjaWZkZWYgQ09ORklHX01UUlIKK01PRFVM
RV9QQVJNKG5vbXRyciwgImkiKTsKK01PRFVMRV9QQVJNX0RFU0Mobm9tdHJyLCAiRGlzYWJsZXMg
TVRSUiBzdXBwb3J0ICgwIG9yIDE9ZGlzYWJsZWQpIChkZWZhdWx0PTApIik7CisjZW5kaWYKKwor
TU9EVUxFX1BBUk0odHYsICJzIik7CitNT0RVTEVfUEFSTV9ERVNDKHR2LCAiU3BlY2lmaWVzIHRo
ZSBUViBlbmNvZGluZyAoXCJQQUxcIiwgXCJOVFNDXCIgb3IgXCJWR0FcIikuIik7CitNT0RVTEVf
UEFSTShob2MsICJpIik7CitNT0RVTEVfUEFSTV9ERVNDKGhvYywgIkhvcml6b250YWwgb3ZlcnNj
YW4gY29tcGVuc2F0aW9uIHJhdGlvLCBpbiAlICgwLTIwKSIpOworTU9EVUxFX1BBUk0odm9jLCAi
aSIpOworTU9EVUxFX1BBUk1fREVTQyh2b2MsICJWZXJ0aWNhbCBvdmVyc2NhbiBjb21wZW5zYXRp
b24gcmF0aW8sIGluICUgKDAtMjApIik7CisKKyNlbmRpZiAvKiBNT0RVTEUgKi8KKworTU9EVUxF
X0FVVEhPUigiT2xpdmVyIFNjaHdhcnR6Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkZyYW1lYnVm
ZmVyIGRyaXZlciBmb3IgWGJveCIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC11ck4g
bGludXgtMi42LjUub3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvZm9jdXMuYyBsaW51eC0yLjYuNS9k
cml2ZXJzL3ZpZGVvL3hib3gvZm9jdXMuYwotLS0gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL3Zp
ZGVvL3hib3gvZm9jdXMuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysg
bGludXgtMi42LjUvZHJpdmVycy92aWRlby94Ym94L2ZvY3VzLmMJMjAwNC0wNS0wMSAxNToyMDo0
My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSwzMjggQEAKKy8qCisgKiBsaW51eC9kcml2ZXJz
L3ZpZGVvL3JpdmEvZm9jdXMuYyAtIFhib3ggZHJpdmVyIGZvciBGb2N1cyBlbmNvZGVyCisgKgor
ICogTWFpbnRhaW5lcjogRGF2aWQgUHllIChkbXApIDxkbXBAZGF2aWRtcHllLmR5bmRucy5vcmc+
CisgKgorICogVGhpcyBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25z
IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UuICBTZWUgdGhlIGZpbGUgQ09Q
WUlORyBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhpcyBhcmNoaXZlCisgKiBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIEtub3duIGJ1Z3MgYW5kIGlzc3VlczoKKyAqCisgKiBWR0EgU29HL2lu
dGVybmFsIHN5bmMgbm90IHlldCBpbXBsZW1lbnRlZAorKi8KKyNpbmNsdWRlICJmb2N1cy5oIgor
I2luY2x1ZGUgImVuY29kZXIuaCIKKworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBmb2N1
c19kZWZhdWx0c1sweGM0XSA9IHsKKwkvKjB4MDAqLyAweDAwLDB4MDAsMHgwMCwweDAwLDB4ODAs
MHgwMiwweGFhLDB4MGEsCisJLyoweDA4Ki8gMHgwMCwweDEwLDB4MDAsMHgwMCwweDAzLDB4MjEs
MHgxNSwweDA0LAorCS8qMHgxMCovIDB4MDAsMHhlOSwweDA3LDB4MDAsMHg4MCwweGY1LDB4MjAs
MHgwMCwKKwkvKjB4MTgqLyAweGVmLDB4MjEsMHgxZiwweDAwLDB4MDMsMHgwMywweDAwLDB4MDAs
CisJLyoweDIwKi8gMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgxMCwweDAwLAorCS8q
MHgyOCovIDB4MGMsMHgwMSwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDgsMHgxMSwKKwkvKjB4MzAq
LyAweDAwLDB4MGYsMHgwNSwweGZlLDB4MGIsMHg4MCwweDAwLDB4MDAsCisJLyoweDM4Ki8gMHhh
NCwweDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwweDAwLAorCS8qMHg0MCovIDB4MmEsMHgw
OSwweDhhLDB4Y2IsMHgwMCwweDAwLDB4OGQsMHgwMCwKKwkvKjB4NDgqLyAweDdjLDB4M2MsMHg5
YSwweDJmLDB4MjEsMHgwMSwweDNmLDB4MDAsCisJLyoweDUwKi8gMHgzZSwweDAzLDB4MTcsMHgy
MSwweDFiLDB4MWIsMHgyNCwweDljLAorCS8qMHg1OCovIDB4MDEsMHgzZSwweDBmLDB4MGYsMHg2
MCwweDA1LDB4YzgsMHgwMCwKKwkvKjB4NjAqLyAweDlkLDB4MDQsMHg5ZCwweDAxLDB4MDIsMHgw
MCwweDBhLDB4MDUsCisJLyoweDY4Ki8gMHgwMCwweDFhLDB4ZmYsMHgwMywweDFlLDB4MGYsMHg3
OCwweDAwLAorCS8qMHg3MCovIDB4MDAsMHhiMSwweDA0LDB4MTUsMHg0OSwweDEwLDB4MDAsMHhh
MywKKwkvKjB4NzgqLyAweGM4LDB4MTUsMHgwNSwweDE1LDB4M2UsMHgwMywweDAwLDB4MjAsCisJ
LyoweDgwKi8gMHg1NywweDJmLDB4MDcsMHgwMCwweDAwLDB4MDgsMHgwMCwweDAwLAorCS8qMHg4
OCovIDB4MDgsMHgxNiwweDE2LDB4OWMsMHgwMywweDAwLDB4MDAsMHgwMCwKKwkvKjB4OTAqLyAw
eDAwLDB4MDAsMHhjNCwweDQ4LDB4MDAsMHgwMCwweDAwLDB4MDAsCisJLyoweDk4Ki8gMHgwMCww
eDAwLDB4MDAsMHg4MCwweDAwLDB4MDAsMHhlNCwweDAwLAorCS8qMHhhMCovIDB4MDAsMHgwMiww
eDAwLDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCwKKwkvKjB4YTgqLyAweEZGLDB4MDAsMHhGRiww
eDAwLDB4RkYsMHgwMCwweDAwLDB4MDAsCisJLyoweGIwKi8gMHgwMCwweDAwLDB4ZDcsMHgwNSww
eDAwLDB4MDAsMHhmMCwweDAwLAorCS8qMHhiOCovIDB4MDAsMHgwMCwweDAwLDB4MDAsMHgwMCww
eDAwLDB4MDAsMHgwMCwKKwkvKjB4YzAqLyAweDAwLDB4MDAsMHhlZSwweDAwCit9OworCitpbnQg
Zm9jdXNfY2FsY19oZHR2X21vZGUoCisJeGJveF9oZHR2X21vZGUgaGR0dl9tb2RlLAorCXVuc2ln
bmVkIGNoYXIgcGxsX2ludCwKKwl1bnNpZ25lZCBjaGFyICogcmVncworCSl7CisJdW5zaWduZWQg
Y2hhciBiOworCWludCBtPTA7CisJaW50IHR2X3Z0b3RhbCwgdHZfaHRvdGFsLCB0dl92YWN0aXZl
LCB0dl9oYWN0aXZlLCB2Z2FfaHRvdGFsLCB2Z2FfdnRvdGFsOworCWludCBwbGxfbiwgcGxsX20s
IHBsbF9wLCBuY29uLCBuY29kOworCisJbWVtY3B5KHJlZ3MsZm9jdXNfZGVmYXVsdHMsc2l6ZW9m
KGZvY3VzX2RlZmF1bHRzKSk7CQorCS8qIFVuY29tbWVudCBmb3IgSERUViA0ODBwIGNvbG91ciBi
YXJzICovCisJLy9yZWdzWzB4MGRdfD0weDAyOworCQorCS8qIFR1cm4gb24gYnJpZGdlIGJ5cGFz
cyAqLworCXJlZ3NbMHgwYV0gfD0gMHgxMDsKKwkvKiBUdXJuIG9uIHRoZSBIRFRWIGNsb2NrLCBh
bmQgdHVybiBvZmYgdGhlIFNEVFYgb25lICovCQorCXJlZ3NbMHhhMV0gPSAweDA0OworCQorCS8q
IEhEVFYgSG9yIHN0YXJ0ICovCisJcmVnc1sweGI4XSA9IDB4YmU7CisJCisJLypTZXQgdXAgdmlk
ZW8gbW9kZSB0byBIRFRWLCBwcm9ncmVzc2l2ZSwgCisJICogYW5kIGRpc2FibGUgWVVWIG1hdHJp
eCBieXBhc3MgKi8KKwlyZWdzWzB4OTJdID0gMHgxYTsJCisJcmVnc1sweDkzXSAmPSB+MHg0MDsK
KwkKKwlzd2l0Y2ggKGhkdHZfbW9kZSkgeworCQljYXNlIEhEVFZfNDgwcDoKKwkJCS8qIFBMTCBz
ZXR0aW5ncyAqLworCQkJcmVnc1sweDEwXSA9IDB4MDA7CisJCQlyZWdzWzB4MTFdID0gMHgwMDsK
KwkJCXJlZ3NbMHgxMl0gPSAweDAwOworCQkJcmVnc1sweDEzXSA9IDB4MDA7CisJCQlyZWdzWzB4
MTRdID0gMHgwMDsKKwkJCXJlZ3NbMHgxNV0gPSAweDAwOworCQkJcmVnc1sweDE2XSA9IDB4MDA7
CisJCQlyZWdzWzB4MTddID0gMHgwMDsKKwkJCXJlZ3NbMHgxOF0gPSAweEQ3OworCQkJcmVnc1sw
eDE5XSA9IDB4MDM7CisJCQlyZWdzWzB4MUFdID0gMHg3QzsKKwkJCXJlZ3NbMHgxQl0gPSAweDAw
OworCQkJcmVnc1sweDFDXSA9IDB4MDc7CisJCQlyZWdzWzB4MURdID0gMHgwNzsKKwkJCS8qIFBv
cmNoZXMvSFN5bmMgd2lkdGgvTHVtYSBvZmZzZXQgKi8KKwkJCXJlZ3NbMHg5NF0gPSAweDNGOwor
CQkJcmVnc1sweDk1XSA9IDB4MkQ7CisJCQlyZWdzWzB4OTZdID0gMHgzQjsKKwkJCXJlZ3NbMHg5
N10gPSAweDAwOworCQkJcmVnc1sweDk4XSA9IDB4MUI7CisJCQlyZWdzWzB4OTldID0gMHgwMzsK
KwkJCS8qIENvbG91ciBzY2FsaW5nICovCisJCQlyZWdzWzB4QTJdID0gMHg0RDsKKwkJCXJlZ3Nb
MHhBNF0gPSAweDk2OworCQkJcmVnc1sweEE2XSA9IDB4MUQ7CisJCQlyZWdzWzB4QThdID0gMHg1
ODsKKwkJCXJlZ3NbMHhBQV0gPSAweDhBOworCQkJcmVnc1sweEFDXSA9IDB4NEE7CisJCQlicmVh
azsKKwkJY2FzZSBIRFRWXzcyMHA6CisJCQkvKiBQTEwgc2V0dGluZ3MgKi8KKwkJCXJlZ3NbMHgx
MF0gPSAweDAwOworCQkJcmVnc1sweDExXSA9IDB4MDA7CisJCQlyZWdzWzB4MTJdID0gMHgwMDsK
KwkJCXJlZ3NbMHgxM10gPSAweDAwOworCQkJcmVnc1sweDE0XSA9IDB4MDA7CisJCQlyZWdzWzB4
MTVdID0gMHgwMDsKKwkJCXJlZ3NbMHgxNl0gPSAweDAwOworCQkJcmVnc1sweDE3XSA9IDB4MDA7
CisJCQlyZWdzWzB4MThdID0gMHgzQjsKKwkJCXJlZ3NbMHgxOV0gPSAweDA0OworCQkJcmVnc1sw
eDFBXSA9IDB4Qzc7CisJCQlyZWdzWzB4MUJdID0gMHgwMDsKKwkJCXJlZ3NbMHgxQ10gPSAweDAx
OworCQkJcmVnc1sweDFEXSA9IDB4MDE7CisJCQkvKiBQb3JjaGVzL0hTeW5jIHdpZHRoL0x1bWEg
b2Zmc2V0ICovCisJCQlyZWdzWzB4OTRdID0gMHgyODsKKwkJCXJlZ3NbMHg5NV0gPSAweDQ2Owor
CQkJcmVnc1sweDk2XSA9IDB4REM7CisJCQlyZWdzWzB4OTddID0gMHgwMDsKKwkJCXJlZ3NbMHg5
OF0gPSAweDJDOworCQkJcmVnc1sweDk5XSA9IDB4MDY7CisJCQkvKiBDb2xvdXIgc2NhbGluZyAq
LworCQkJcmVnc1sweEEyXSA9IDB4MzY7CisJCQlyZWdzWzB4QTRdID0gMHhCNzsKKwkJCXJlZ3Nb
MHhBNl0gPSAweDEzOworCQkJcmVnc1sweEE4XSA9IDB4NTg7CisJCQlyZWdzWzB4QUFdID0gMHg4
QTsKKwkJCXJlZ3NbMHhBQ10gPSAweDRBOworCQkJLyogSFN5bmMgdGltaW5nIGludmVydCAtIG5l
ZWRlZCB0byBjZW50cmUgcGljdHVyZSAqLworCQkJcmVnc1sweDkzXSB8PSAweDAxOworCQkJCisJ
CQlicmVhazsKKwkJY2FzZSBIRFRWXzEwODBpOgorCQkJLyogUExMIHNldHRpbmdzICovCisJCQly
ZWdzWzB4MTBdID0gMHgwMDsKKwkJCXJlZ3NbMHgxMV0gPSAweDAwOworCQkJcmVnc1sweDEyXSA9
IDB4MDA7CisJCQlyZWdzWzB4MTNdID0gMHgwMDsKKwkJCXJlZ3NbMHgxNF0gPSAweDAwOworCQkJ
cmVnc1sweDE1XSA9IDB4MDA7CisJCQlyZWdzWzB4MTZdID0gMHgwMDsKKwkJCXJlZ3NbMHgxN10g
PSAweDAwOworCQkJcmVnc1sweDE4XSA9IDB4M0I7CisJCQlyZWdzWzB4MTldID0gMHgwNDsKKwkJ
CXJlZ3NbMHgxQV0gPSAweEM3OworCQkJcmVnc1sweDFCXSA9IDB4MDA7CisJCQlyZWdzWzB4MUNd
ID0gMHgwMTsKKwkJCXJlZ3NbMHgxRF0gPSAweDAxOworCQkJLyogUG9yY2hlcy9IU3luYyB3aWR0
aC9MdW1hIG9mZnNldCAqLworCQkJcmVnc1sweDk0XSA9IDB4MkM7CisJCQlyZWdzWzB4OTVdID0g
MHgyQzsKKwkJCXJlZ3NbMHg5Nl0gPSAweDU4OworCQkJcmVnc1sweDk3XSA9IDB4MDA7CisJCQly
ZWdzWzB4OThdID0gMHg2QzsKKwkJCXJlZ3NbMHg5OV0gPSAweDA4OworCQkJLyogQ29sb3VyIHNj
YWxpbmcgKi8KKwkJCXJlZ3NbMHhBMl0gPSAweDM2OworCQkJcmVnc1sweEE0XSA9IDB4Qjc7CisJ
CQlyZWdzWzB4QTZdID0gMHgxMzsKKwkJCXJlZ3NbMHhBOF0gPSAweDU4OworCQkJcmVnc1sweEFB
XSA9IDB4OEE7CisJCQlyZWdzWzB4QUNdID0gMHg0QTsKKwkJCS8qIFNldCBtb2RlIHRvIGludGVy
bGFjZWQgKi8KKwkJCXJlZ3NbMHg5Ml0gfD0gMHg4MDsKKwkJCWJyZWFrOworCX0KKwlyZXR1cm4g
MTsKK30KKworaW50IGZvY3VzX2NhbGNfbW9kZSh4Ym94X3ZpZGVvX21vZGUgKiBtb2RlLCBzdHJ1
Y3Qgcml2YV9yZWdzICogcml2YV9vdXQpCit7CisJdW5zaWduZWQgY2hhciBiOworCWNoYXIqIHJl
Z3MgPSByaXZhX291dC0+ZW5jb2Rlcl9tb2RlOworCWludCBtID0gMDsKKwlpbnQgdHZfaHRvdGFs
LCB0dl92dG90YWwsIHR2X3ZhY3RpdmUsIHR2X2hhY3RpdmU7CisJaW50IHZnYV9odG90YWwsIHZn
YV92dG90YWw7CisJbG9uZyBuY29uLCBuY29kOworCWludCBwbGxfbSwgcGxsX24sIHBsbF9wLCB2
c2MsIGhzYzsKKworCW1lbWNweShyZWdzLGZvY3VzX2RlZmF1bHRzLHNpemVvZihmb2N1c19kZWZh
dWx0cykpOworCQorCS8qIFVuY29tbWVudCBmb3IgU0RUViBjb2xvdXIgYmFycyAqLworCS8vcmVn
c1sweDQ1XT0weDAyOworCQorCXN3aXRjaChtb2RlLT50dl9lbmNvZGluZykgeworCQljYXNlIFRW
X0VOQ19OVFNDOgorCQkJdHZfdnRvdGFsPTUyNTsKKwkJCXR2X3ZhY3RpdmU9NDgwOwkJCQorCQkJ
dHZfaGFjdGl2ZSA9IDcxMDsKKwkJCXR2X2h0b3RhbCAgPSA4NTg7CisJCQlyZWdzWzB4MGRdICY9
IH4weDAxOworCQkJcmVnc1sweDQwXSA9IDB4MjE7CisJCQlyZWdzWzB4NDFdID0gMHhGMDsKKwkJ
CXJlZ3NbMHg0Ml0gPSAweDdDOworCQkJcmVnc1sweDQzXSA9IDB4MUY7CisJCQlyZWdzWzB4NDld
ID0gMHg0NDsKKwkJCXJlZ3NbMHg0YV0gPSAweDc2OworCQkJcmVnc1sweDRiXSA9IDB4M0I7CisJ
CQlyZWdzWzB4NGNdID0gMHgwMDsKKwkJCXJlZ3NbMHg2MF0gPSAweDg5OworCQkJcmVnc1sweDYy
XSA9IDB4ODk7CisJCQlyZWdzWzB4NjldID0gMHgxNjsKKwkJCXJlZ3NbMHg2Q10gPSAweDIwOwor
CQkJcmVnc1sweDc0XSA9IDB4MDQ7CQkKKwkJCXJlZ3NbMHg3NV0gPSAweDEwOworCQkJcmVnc1sw
eDgwXSA9IDB4Njc7IAorCQkJcmVnc1sweDgxXSA9IDB4MjE7IAorCQkJcmVnc1sweDgyXSA9IDB4
MEM7CisJCQlyZWdzWzB4ODNdID0gMHgxODsKKwkJCXJlZ3NbMHg4Nl0gPSAweDE4OworCQkJcmVn
c1sweDg5XSA9IDB4MTM7CisJCQlyZWdzWzB4OEFdID0gMHgxMzsKKwkJCWJyZWFrOworCQljYXNl
IFRWX0VOQ19QQUxCREdISToKKwkJCXR2X3Z0b3RhbCA9IDYyNTsKKwkJCXR2X3ZhY3RpdmUgPSA1
NzY7CisJCQl0dl9oYWN0aXZlID0gNzAyOworCQkJdHZfaHRvdGFsID0gODY0OworCQkJYnJlYWs7
CisJCWRlZmF1bHQ6CisJCQkvKiBEZWZhdWx0IHRvIFBBTCAqLworCQkJdHZfdnRvdGFsID0gNjI1
OworCQkJdHZfdmFjdGl2ZSA9IDU3NjsKKwkJCXR2X2hhY3RpdmUgPSA3MDI7CisJCQl0dl9odG90
YWwgPSA4NjQ7CisJCQlicmVhazsKKwl9CisKKwkvKiBWaWRlbyBjb250cm9sICAtIHNldCB0byBS
R0IgaW5wdXQqLworCWIgPSAocmVnc1sweDkyXSAmPSB+MHgwNCk7CisJcmVnc1sweDkyXSA9IChi
fD0gMHgwMSk7CisJcmVnc1sweDkzXSAmPSB+MHg0MDsKKwkvKiBDb2xvdXIgc2NhbGluZyAqLwor
CXJlZ3NbMHhBMl0gPSAweDREOworCXJlZ3NbMHhBNF0gPSAweDk2OworCXJlZ3NbMHhBNl0gPSAw
eDFEOworCXJlZ3NbMHhBOF0gPSAweEEwOworCXJlZ3NbMHhBQV0gPSAweERCOworCXJlZ3NbMHhB
Q10gPSAweDdFOworCQorCXR2X3ZhY3RpdmUgPSB0dl92YWN0aXZlICogKDEuMGYtbW9kZS0+dm9j
KTsKKwl2Z2FfdnRvdGFsID0gbW9kZS0+eXJlcyAqICgoZmxvYXQpdHZfdnRvdGFsL3R2X3ZhY3Rp
dmUpOworCXZnYV9odG90YWwgPSBtb2RlLT54cmVzICogMS4yNWY7CisJdHZfaGFjdGl2ZSA9IHR2
X2hhY3RpdmUgKiAoMS4wZi1tb2RlLT5ob2MpOworCS8qVGhlc2Ugc2hvdWxkIGJlIGNhbGN1bGF0
ZWQgb3IgYXQgbGVhc3QgZGVkdWNlZC4KKwkgKkhvd2V2ZXIgdGhleSBhcmUgZ29vZCBlbm91Z2gg
Zm9yIDY0MHg0ODAgLT4gODAweDYwMCBub3cqLworCXBsbF9uICA9IDMyOworCXBsbF9tID0gNTEy
OworCXBsbF9wID0gNDsgCisJCisJbmNvbiA9IHZnYV9odG90YWwgKiB2Z2FfdnRvdGFsOworCW5j
b2QgPSB0dl9odG90YWwgKiB0dl92dG90YWwgICogcGxsX3A7CisJCisJcmVnc1sweDA0XSA9ICht
b2RlLT54cmVzKzY0KSYweEZGOworCXJlZ3NbMHgwNV0gPSAoKG1vZGUtPnhyZXMrNjQpPj44KSYw
eEZGOworCisJaWYgKHR2X3Z0b3RhbD52Z2FfdnRvdGFsKSB7CisJCS8qIFVwc2NhbGluZyAqLwor
CQl2c2MgPSAoKCgoZmxvYXQpdHZfdnRvdGFsLyhmbG9hdCl2Z2FfdnRvdGFsKS0xKSo2NTUzNik7
CisJCS8qIEZvciB1cHNjYWxpbmcsIGFkanVzdCBGSUZPX0xBVCAoRklGTyBsYXRlbmN5KSAqLwor
CQlyZWdzWzB4MzhdID0gMHg4MjsKKwl9CisJZWxzZSB7CisJCS8qIERvd25zY2FsaW5nICovCisJ
CXZzYyA9ICgoKChmbG9hdCl0dl92dG90YWwvKGZsb2F0KXZnYV92dG90YWwpKSo2NTUzNik7CisJ
fQorCXJlZ3NbMHgwNl0gPSAodnNjKSYweEZGOworCXJlZ3NbMHgwN10gPSAodnNjPj44KSYweEZG
OworCisJaHNjID0gMTI4KigoZmxvYXQpdHZfaGFjdGl2ZS8oZmxvYXQpbW9kZS0+eHJlcy0xKTsK
KwlpZiAodHZfaGFjdGl2ZSA+IG1vZGUtPnhyZXMpIHsKKwkJLyogVXBzY2FsaW5nICovCisJCXJl
Z3NbMHgwOF0gPSAwOworCQlyZWdzWzB4MDldID0gaHNjJjB4RkY7CisJfQorCWVsc2UgeyAgLyog
RG93bnNjYWxpbmcgKi8KKwkJaHNjID0gMjU2ICsgaHNjOworCQlyZWdzWzB4MDhdID0gaHNjJjB4
RkY7CisJCXJlZ3NbMHgwOV0gPSAwOworCX0KKworCisJcmVnc1sweDEwXSA9IChuY29uKSYweEZG
OworCXJlZ3NbMHgxMV0gPSAobmNvbj4+OCkmMHhGRiA7CisJcmVnc1sweDEyXSA9IChuY29uPj4x
NikmMHhGRiA7CisJcmVnc1sweDEzXSA9IChuY29uPj4yNCkmMHhGRiA7CisJcmVnc1sweDE0XSA9
IChuY29kKSYweEZGIDsKKwlyZWdzWzB4MTVdID0gKG5jb2Q+PjgpJjB4RkYgOworCXJlZ3NbMHgx
Nl0gPSAobmNvZD4+MTYpJjB4RkYgOworCXJlZ3NbMHgxN10gPSAobmNvZD4+MjQpJjB4RkYgOwor
CXJlZ3NbMHgxOF0gPSAocGxsX20tMTcpJjB4RkY7CisJcmVnc1sweDE5XSA9ICgocGxsX20tMTcp
Pj44KSYweEZGOworCXJlZ3NbMHgxQV0gPSAocGxsX24tMSkmMHhGRiA7CisJcmVnc1sweDFCXSA9
ICgocGxsX24tMSk+PjgpJjB4RkYgOworCXJlZ3NbMHgxQ10gPSAocGxsX3AtMSkmMHhGRjsKKwly
ZWdzWzB4MURdID0gKHBsbF9wLTEpJjB4RkY7CisJICAgICAgICAKKwkvKiBHdWVzc3dvcmsgKi8K
KwlyaXZhX291dC0+ZXh0LnZzeW5jc3RhcnQgPSB2Z2FfdnRvdGFsICogMC45NTsKKwlyaXZhX291
dC0+ZXh0LmhzeW5jc3RhcnQgPSB2Z2FfaHRvdGFsICogMC45NTsKKwkKKwlyaXZhX291dC0+ZXh0
LndpZHRoID0gbW9kZS0+eHJlczsKKwlyaXZhX291dC0+ZXh0LmhlaWdodCA9IG1vZGUtPnlyZXM7
CisJcml2YV9vdXQtPmV4dC5odG90YWwgPSB2Z2FfaHRvdGFsIC0gMTsKKwlyaXZhX291dC0+ZXh0
LnZlbmQgPSBtb2RlLT55cmVzIC0gMTsKKwlyaXZhX291dC0+ZXh0LnZ0b3RhbCA9IHZnYV92dG90
YWwtIDE7CisJcml2YV9vdXQtPmV4dC52Y3J0YyA9IG1vZGUtPnlyZXMgLSAxOworCXJpdmFfb3V0
LT5leHQudnN5bmNlbmQgPSByaXZhX291dC0+ZXh0LnZzeW5jc3RhcnQgKyAzOworICAgICAgICBy
aXZhX291dC0+ZXh0LnZ2YWxpZHN0YXJ0ID0gMDsKKwlyaXZhX291dC0+ZXh0LnZ2YWxpZGVuZCA9
IG1vZGUtPnlyZXMgLSAxOworCXJpdmFfb3V0LT5leHQuaGVuZCA9IG1vZGUtPnhyZXMgKyA3IDsK
KwlyaXZhX291dC0+ZXh0LmhjcnRjID0gbW9kZS0+eHJlcyAtIDE7CisgICAgICAgIHJpdmFfb3V0
LT5leHQuaHN5bmNlbmQgPSByaXZhX291dC0+ZXh0LmhzeW5jc3RhcnQgKyAzMjsKKyAgICAgICAg
cml2YV9vdXQtPmV4dC5odmFsaWRzdGFydCA9IDA7CisgICAgICAgIHJpdmFfb3V0LT5leHQuaHZh
bGlkZW5kID0gbW9kZS0+eHJlcyAtIDE7CisJcml2YV9vdXQtPmV4dC5jcnRjaGRpc3BlbmQgPSBt
b2RlLT54cmVzOworICAgICAgICByaXZhX291dC0+ZXh0LmNydGN2c3RhcnQgPSBtb2RlLT55cmVz
ICsgMzI7CisJLy9pbmNyZWFzZWQgZnJvbSAzMgorCXJpdmFfb3V0LT5leHQuY3J0Y3Z0b3RhbCA9
IG1vZGUtPnlyZXMgKyA2NDsKKworCXJldHVybiAxOworfQpkaWZmIC11ck4gbGludXgtMi42LjUu
b3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvZm9jdXMuaCBsaW51eC0yLjYuNS9kcml2ZXJzL3ZpZGVv
L3hib3gvZm9jdXMuaAotLS0gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvZm9j
dXMuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUv
ZHJpdmVycy92aWRlby94Ym94L2ZvY3VzLmgJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAg
KzAxMDAKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqIGxpbnV4L2RyaXZlcnMvdmlkZW8vcml2YS9m
b2N1cy5jIC0gWGJveCBkcml2ZXIgZm9yIEZvY3VzIGVuY29kZXIKKyAqCisgKiBNYWludGFpbmVy
OiBPbGl2ZXIgU2Nod2FydHogPE9saXZlci5TY2h3YXJ0ekBnbXguZGU+CisgKgorICogQ29udHJp
YnV0b3JzOiBEYXZpZCBQeWUgKGRtcCkgPGRtcEBkYXZpZG1weWUuZHluZG5zLm9yZz4KKyAqCisg
KiBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZS4gIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGlu
IHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUKKyAqIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogS25vd24gYnVncyBhbmQgaXNzdWVzOgorICoKKyAqIG5vbmUKKyAqLworCisKKyNp
Zm5kZWYgZm9jdXNfaF8KKyNkZWZpbmUgZm9jdXNfaF8KKworI2luY2x1ZGUgImVuY29kZXIuaCIK
KyNpbmNsdWRlICJ4Ym94ZmIuaCIKKworaW50IGZvY3VzX2NhbGNfbW9kZSh4Ym94X3ZpZGVvX21v
ZGUgKiBtb2RlLCBzdHJ1Y3Qgcml2YV9yZWdzICogcml2YV9vdXQgKTsKK2ludCBmb2N1c19jYWxj
X2hkdHZfbW9kZSh4Ym94X2hkdHZfbW9kZSBoZHR2X21vZGUsIHVuc2lnbmVkIGNoYXIgcGxsX2lu
dCwgdW5zaWduZWQgY2hhciAqIG1vZGVfb3V0KTsKKyNlbmRpZgpkaWZmIC11ck4gbGludXgtMi42
LjUub3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvbnZfZHJpdmVyLmMgbGludXgtMi42LjUvZHJpdmVy
cy92aWRlby94Ym94L252X2RyaXZlci5jCi0tLSBsaW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvdmlk
ZW8veGJveC9udl9kcml2ZXIuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAor
KysgbGludXgtMi42LjUvZHJpdmVycy92aWRlby94Ym94L252X2RyaXZlci5jCTIwMDQtMDUtMDEg
MTU6MjA6NDMuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsMzY0IEBACisvKiAkWENvbnNvcnRp
dW06IG52X2RyaXZlci5jIC9tYWluLzMgMTk5Ni8xMC8yOCAwNToxMzozNyBrYWxlYiAkICovCisv
KgorICogQ29weXJpZ2h0IDE5OTYtMTk5NyAgRGF2aWQgSi4gTWNLYXkKKyAqCisgKiBQZXJtaXNz
aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh
aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50
YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl
IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo
ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl
LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k
IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg
dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo
ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxs
IGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg
V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D
TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN
RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIERBVklEIEouIE1DS0FZIEJFIExJQUJMRSBGT1Ig
QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyAqIFdIRVRIRVIgSU4gQU4g
QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQg
T0YKKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP
VEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNPRlRXQVJFLgorICovCisKKy8qCisgKiBHUEwgbGlj
ZW5zaW5nIG5vdGUgLS0gblZpZGlhIGlzIGFsbG93aW5nIGEgbGliZXJhbCBpbnRlcnByZXRhdGlv
biBvZgorICogdGhlIGRvY3VtZW50YXRpb24gcmVzdHJpY3Rpb24gYWJvdmUsIHRvIG1lcmVseSBz
YXkgdGhhdCB0aGlzIG5WaWRpYSdzCisgKiBjb3B5cmlnaHQgYW5kIGRpc2NsYWltZXIgc2hvdWxk
IGJlIGluY2x1ZGVkIHdpdGggYWxsIGNvZGUgZGVyaXZlZAorICogZnJvbSB0aGlzIHNvdXJjZS4g
IC0tIEplZmYgR2FyemlrIDxqZ2FyemlrQHBvYm94LmNvbT4sIDAxL05vdi85OSAKKyAqLworCisv
KiBIYWNrZWQgdG9nZXRoZXIgZnJvbSBtZ2EgZHJpdmVyIGFuZCAzLjMuNCBOVklESUEgZHJpdmVy
IGJ5IEphcm5vIFBhYW5hbmVuCisgICA8anBhYW5hQHMyLm9yZz4gKi8KKworLyogJFhGcmVlODY6
IHhjL3Byb2dyYW1zL1hzZXJ2ZXIvaHcveGZyZWU4Ni9kcml2ZXJzL252L252X3NldHVwLmMsdiAx
LjE4IDIwMDIvMDgvMAorNSAyMDo0NzowNiBtdm9qa292aSBFeHAgJCAqLworCisjaW5jbHVkZSA8
bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9w
Y2lfaWRzLmg+CisjaW5jbHVkZSAibnZfdHlwZS5oIgorI2luY2x1ZGUgInhib3hmYi5oIgorI2lu
Y2x1ZGUgIm52cmVnLmgiCisKKworI2lmbmRlZiBDT05GSUdfUENJCQkvKiBzYW5pdHkgY2hlY2sg
Ki8KKyNlcnJvciBUaGlzIGRyaXZlciByZXF1aXJlcyBQQ0kgc3VwcG9ydC4KKyNlbmRpZgorCisj
ZGVmaW5lIFBGWCAicml2YWZiOiAiCisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciBNSVND
aW4oc3RydWN0IHJpdmFfcGFyICpwYXIpCit7CisJcmV0dXJuIChWR0FfUkQwOChwYXItPnJpdmEu
UFZJTywgMHgzY2MpKTsKK30KKworc3RhdGljIEJvb2wgCityaXZhX2lzX2Nvbm5lY3RlZChzdHJ1
Y3Qgcml2YV9wYXIgKnBhciwgQm9vbCBzZWNvbmQpCit7CisJdm9sYXRpbGUgVTAzMiAqUFJBTURB
QyA9IHBhci0+cml2YS5QUkFNREFDMDsKKwlVMDMyIHJlZzUyQywgcmVnNjA4OworCUJvb2wgcHJl
c2VudDsKKworCWlmKHNlY29uZCkgUFJBTURBQyArPSAweDgwMDsKKworCXJlZzUyQyA9IFBSQU1E
QUNbMHgwNTJDLzRdOworCXJlZzYwOCA9IFBSQU1EQUNbMHgwNjA4LzRdOworCisJUFJBTURBQ1sw
eDA2MDgvNF0gPSByZWc2MDggJiB+MHgwMDAxMDAwMDsKKworCVBSQU1EQUNbMHgwNTJDLzRdID0g
cmVnNTJDICYgMHgwMDAwRkVFRTsKKwltZGVsYXkoMSk7IAorCVBSQU1EQUNbMHgwNTJDLzRdIHw9
IDE7CisKKwlwYXItPnJpdmEuUFJBTURBQzBbMHgwNjEwLzRdID0gMHg5NDA1MDE0MDsKKwlwYXIt
PnJpdmEuUFJBTURBQzBbMHgwNjA4LzRdIHw9IDB4MDAwMDEwMDA7CisKKwltZGVsYXkoMSk7CisK
KwlwcmVzZW50ID0gKFBSQU1EQUNbMHgwNjA4LzRdICYgKDEgPDwgMjgpKSA/IFRSVUUgOiBGQUxT
RTsKKworCXBhci0+cml2YS5QUkFNREFDMFsweDA2MDgvNF0gJj0gMHgwMDAwRUZGRjsKKworCVBS
QU1EQUNbMHgwNTJDLzRdID0gcmVnNTJDOworCVBSQU1EQUNbMHgwNjA4LzRdID0gcmVnNjA4Owor
CisJcmV0dXJuIHByZXNlbnQ7Cit9CisKK3N0YXRpYyB2b2lkCityaXZhX292ZXJyaWRlX0NSVEMo
c3RydWN0IHJpdmFfcGFyICpwYXIpCit7CisJcHJpbnRrKEtFUk5fSU5GTyBQRlgKKwkJIkRldGVj
dGVkIENSVEMgY29udHJvbGxlciAlaSBiZWluZyB1c2VkXG4iLAorCQlwYXItPlNlY29uZENSVEMg
PyAxIDogMCk7CisKKwlpZihwYXItPmZvcmNlQ1JUQyAhPSAtMSkgeworCQlwcmludGsoS0VSTl9J
TkZPIFBGWAorCQkJIkZvcmNpbmcgdXNhZ2Ugb2YgQ1JUQyAlaVxuIiwgcGFyLT5mb3JjZUNSVEMp
OworCQlwYXItPlNlY29uZENSVEMgPSBwYXItPmZvcmNlQ1JUQzsKKwl9Cit9CisKK3N0YXRpYyB2
b2lkCityaXZhX2lzX3NlY29uZChzdHJ1Y3Qgcml2YV9wYXIgKnBhcikKK3sKKwlpZiAocGFyLT5G
bGF0UGFuZWwgPT0gMSkgeworCQlzd2l0Y2gocGFyLT5DaGlwc2V0KSB7CisJCWNhc2UgTlZfQ0hJ
UF9HRUZPUkNFNF80NDBfR086CisJCWNhc2UgTlZfQ0hJUF9HRUZPUkNFNF80NDBfR09fTTY0Ogor
CQljYXNlIE5WX0NISVBfR0VGT1JDRTRfNDIwX0dPOgorCQljYXNlIE5WX0NISVBfR0VGT1JDRTRf
NDIwX0dPX00zMjoKKwkJY2FzZSBOVl9DSElQX1FVQURSTzRfNTAwX0dPR0w6CisJCQlwYXItPlNl
Y29uZENSVEMgPSBUUlVFOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlwYXItPlNlY29uZENS
VEMgPSBGQUxTRTsKKwkJCWJyZWFrOworCQl9CisJfSBlbHNlIHsKKwkJaWYocml2YV9pc19jb25u
ZWN0ZWQocGFyLCAwKSkgeworCQkJaWYocGFyLT5yaXZhLlBSQU1EQUMwWzB4MDAwMDA1MkMvNF0g
JiAweDEwMCkKKwkJCQlwYXItPlNlY29uZENSVEMgPSBUUlVFOworCQkJZWxzZQorCQkJCXBhci0+
U2Vjb25kQ1JUQyA9IEZBTFNFOworCQl9IGVsc2UgCisJCWlmIChyaXZhX2lzX2Nvbm5lY3RlZChw
YXIsIDEpKSB7CisJCQlpZihwYXItPnJpdmEuUFJBTURBQzBbMHgwMDAwMjUyQy80XSAmIDB4MTAw
KQorCQkJCXBhci0+U2Vjb25kQ1JUQyA9IFRSVUU7CisJCQllbHNlCisJCQkJcGFyLT5TZWNvbmRD
UlRDID0gRkFMU0U7CisJCX0gZWxzZSAvKiBkZWZhdWx0ICovCisJCQlwYXItPlNlY29uZENSVEMg
PSBGQUxTRTsKKwl9CisJcml2YV9vdmVycmlkZV9DUlRDKHBhcik7Cit9CisKK3Vuc2lnbmVkIGxv
bmcgcml2YV9nZXRfbWVtbGVuKHN0cnVjdCByaXZhX3BhciAqcGFyKQoreworCVJJVkFfSFdfSU5T
VCAqY2hpcCA9ICZwYXItPnJpdmE7CisJdW5zaWduZWQgbG9uZyBtZW1sZW4gPSAwOworCXVuc2ln
bmVkIGludCBjaGlwc2V0ID0gcGFyLT5DaGlwc2V0OworCXN0cnVjdCBwY2lfZGV2KiBkZXY7CisJ
aW50IGFtdDsKKworCXN3aXRjaCAoY2hpcC0+QXJjaGl0ZWN0dXJlKSB7CisJY2FzZSBOVl9BUkNI
XzAzOgorCQlpZiAoY2hpcC0+UEZCWzB4MDAwMDAwMDAvNF0gJiAweDAwMDAwMDIwKSB7CisJCQlp
ZiAoKChjaGlwLT5QTUNbMHgwMDAwMDAwMC80XSAmIDB4RjApID09IDB4MjApCisJCQkgICAgJiYg
KChjaGlwLT5QTUNbMHgwMDAwMDAwMC80XSAmIDB4MEYpID49IDB4MDIpKSB7CisJCQkJLyoKKwkJ
CQkgKiBTRFJBTSAxMjggWlguCisJCQkJICovCisJCQkJc3dpdGNoIChjaGlwLT5QRkJbMHgwMDAw
MDAwMC80XSAmIDB4MDMpIHsKKwkJCQljYXNlIDI6CisJCQkJCW1lbWxlbiA9IDEwMjQgKiA0Owor
CQkJCQlicmVhazsKKwkJCQljYXNlIDE6CisJCQkJCW1lbWxlbiA9IDEwMjQgKiAyOworCQkJCQli
cmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQltZW1sZW4gPSAxMDI0ICogODsKKwkJCQkJYnJlYWs7
CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQltZW1sZW4gPSAxMDI0ICogODsKKwkJCX0gICAgICAg
ICAgICAKKwkJfSBlbHNlIAl7CisJCQkvKgorCQkJICogU0dSQU0gMTI4LgorCQkJICovCisJCQlz
d2l0Y2ggKGNoaXAtPlBGQlsweDAwMDAwMDAwLzRdICYgMHgwMDAwMDAwMykgeworCQkJY2FzZSAw
OgorCQkJCW1lbWxlbiA9IDEwMjQgKiA4OworCQkJCWJyZWFrOworCQkJY2FzZSAyOgorCQkJCW1l
bWxlbiA9IDEwMjQgKiA0OworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQltZW1sZW4gPSAx
MDI0ICogMjsKKwkJCQlicmVhazsKKwkJCX0KKwkJfSAgICAgICAgCisJCWJyZWFrOworCWNhc2Ug
TlZfQVJDSF8wNDoKKwkJaWYgKGNoaXAtPlBGQlsweDAwMDAwMDAwLzRdICYgMHgwMDAwMDEwMCkg
eworCQkJbWVtbGVuID0gKChjaGlwLT5QRkJbMHgwMDAwMDAwMC80XSA+PiAxMikgJiAweDBGKSAq
IAorCQkJCTEwMjQgKiAyICsgMTAyNCAqIDI7CisJCX0gZWxzZSB7CisJCQlzd2l0Y2ggKGNoaXAt
PlBGQlsweDAwMDAwMDAwLzRdICYgMHgwMDAwMDAwMykgeworCQkJY2FzZSAwOgorCQkJCW1lbWxl
biA9IDEwMjQgKiAzMjsKKwkJCQlicmVhazsKKwkJCWNhc2UgMToKKwkJCQltZW1sZW4gPSAxMDI0
ICogNDsKKwkJCQlicmVhazsKKwkJCWNhc2UgMjoKKwkJCQltZW1sZW4gPSAxMDI0ICogODsKKwkJ
CQlicmVhazsKKwkJCWNhc2UgMzoKKwkJCWRlZmF1bHQ6CisJCQkJbWVtbGVuID0gMTAyNCAqIDE2
OworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWJyZWFrOworCWNhc2UgTlZfQVJDSF8xMDoKKwlj
YXNlIE5WX0FSQ0hfMjA6CisJCWlmKGNoaXBzZXQgPT0gTlZfQ0hJUF9JR0VGT1JDRTIpIHsKKwor
CQkJZGV2ID0gcGNpX2ZpbmRfc2xvdCgwLCAxKTsKKwkJCXBjaV9yZWFkX2NvbmZpZ19kd29yZChk
ZXYsIDB4N0MsICZhbXQpOworCQkJbWVtbGVuID0gKCgoYW10ID4+IDYpICYgMzEpICsgMSkgKiAx
MDI0OworCQl9IGVsc2UgaWYgKGNoaXBzZXQgPT0gTlZfQ0hJUF8weDAxRjApIHsKKwkJCWRldiA9
IHBjaV9maW5kX3Nsb3QoMCwgMSk7CisJCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2LCAweDg0
LCAmYW10KTsKKwkJCW1lbWxlbiA9ICgoKGFtdCA+PiA0KSAmIDEyNykgKyAxKSAqIDEwMjQ7CisJ
CX0gZWxzZSB7CisJCQlzd2l0Y2ggKChjaGlwLT5QRkJbMHgwMDAwMDIwQy80XSA+PiAyMCkgJiAw
eDAwMDAwMEZGKXsKKwkJCWNhc2UgMHgwMjoKKwkJCQltZW1sZW4gPSAxMDI0ICogMjsKKwkJCQli
cmVhazsKKwkJCWNhc2UgMHgwNDoKKwkJCQltZW1sZW4gPSAxMDI0ICogNDsKKwkJCQlicmVhazsK
KwkJCWNhc2UgMHgwODoKKwkJCQltZW1sZW4gPSAxMDI0ICogODsKKwkJCQlicmVhazsKKwkJCWNh
c2UgMHgxMDoKKwkJCQltZW1sZW4gPSAxMDI0ICogMTY7CisJCQkJYnJlYWs7CisJCQljYXNlIDB4
MjA6CisJCQkJbWVtbGVuID0gMTAyNCAqIDMyOworCQkJCWJyZWFrOworCQkJY2FzZSAweDQwOgor
CQkJCW1lbWxlbiA9IDEwMjQgKiA2NDsKKwkJCQlicmVhazsKKwkJCWNhc2UgMHg4MDoKKwkJCQlt
ZW1sZW4gPSAxMDI0ICogMTI4OworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQltZW1sZW4g
PSAxMDI0ICogMTY7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJYnJlYWs7CisJfQorCXJldHVy
biBtZW1sZW47Cit9CisKK3Vuc2lnbmVkIGxvbmcgcml2YV9nZXRfbWF4ZGNsayhzdHJ1Y3Qgcml2
YV9wYXIgKnBhcikKK3sKKwlSSVZBX0hXX0lOU1QgKmNoaXAgPSAmcGFyLT5yaXZhOworCXVuc2ln
bmVkIGxvbmcgZGNsayA9IDA7CisKKwlzd2l0Y2ggKGNoaXAtPkFyY2hpdGVjdHVyZSkgeworCWNh
c2UgTlZfQVJDSF8wMzoKKwkJaWYgKGNoaXAtPlBGQlsweDAwMDAwMDAwLzRdICYgMHgwMDAwMDAy
MCkgeworCQkJaWYgKCgoY2hpcC0+UE1DWzB4MDAwMDAwMDAvNF0gJiAweEYwKSA9PSAweDIwKQor
CQkJICAgICYmICgoY2hpcC0+UE1DWzB4MDAwMDAwMDAvNF0gJiAweDBGKSA+PSAweDAyKSkgeyAg
IAorCQkJCS8qCisJCQkJICogU0RSQU0gMTI4IFpYLgorCQkJCSAqLworCQkJCWRjbGsgPSA4MDAw
MDA7CisJCQl9IGVsc2UgeworCQkJCWRjbGsgPSAxMDAwMDAwOworCQkJfSAgICAgICAgICAgIAor
CQl9IGVsc2UgeworCQkJLyoKKwkJCSAqIFNHUkFNIDEyOC4KKwkJCSAqLworCQkJZGNsayA9IDEw
MDAwMDA7CisJCX0gCisJCWJyZWFrOworCWNhc2UgTlZfQVJDSF8wNDoKKwljYXNlIE5WX0FSQ0hf
MTA6CisJY2FzZSBOVl9BUkNIXzIwOgorCQlzd2l0Y2ggKChjaGlwLT5QRkJbMHgwMDAwMDAwMC80
XSA+PiAzKSAmIDB4MDAwMDAwMDMpIHsKKwkJY2FzZSAzOgorCQkJZGNsayA9IDgwMDAwMDsKKwkJ
CWJyZWFrOworCQlkZWZhdWx0OgorCQkJZGNsayA9IDEwMDAwMDA7CisJCQlicmVhazsKKwkJfQor
CQlicmVhazsKKwl9CisJcmV0dXJuIGRjbGs7Cit9CisKK3ZvaWQKK3JpdmFfY29tbW9uX3NldHVw
KHN0cnVjdCByaXZhX3BhciAqcGFyKQoreworCXBhci0+cml2YS5FbmFibGVJUlEgPSAwOworCXBh
ci0+cml2YS5QUkFNREFDMCA9ICh1bnNpZ25lZCAqKShwYXItPmN0cmxfYmFzZSArIDB4MDA2ODAw
MDApOworCXBhci0+cml2YS5QRkIgPSAodW5zaWduZWQgKikocGFyLT5jdHJsX2Jhc2UgKyAweDAw
MTAwMDAwKTsKKwlwYXItPnJpdmEuUEZJRk8gPSAodW5zaWduZWQgKikocGFyLT5jdHJsX2Jhc2Ug
KyAweDAwMDAyMDAwKTsKKwlwYXItPnJpdmEuUEdSQVBIID0gKHVuc2lnbmVkICopKHBhci0+Y3Ry
bF9iYXNlICsgMHgwMDQwMDAwMCk7CisJcGFyLT5yaXZhLlBFWFRERVYgPSAodW5zaWduZWQgKiko
cGFyLT5jdHJsX2Jhc2UgKyAweDAwMTAxMDAwKTsKKwlwYXItPnJpdmEuUFRJTUVSID0gKHVuc2ln
bmVkICopKHBhci0+Y3RybF9iYXNlICsgMHgwMDAwOTAwMCk7CisJcGFyLT5yaXZhLlBNQyA9ICh1
bnNpZ25lZCAqKShwYXItPmN0cmxfYmFzZSArIDB4MDAwMDAwMDApOworCXBhci0+cml2YS5GSUZP
ID0gKHVuc2lnbmVkICopKHBhci0+Y3RybF9iYXNlICsgMHgwMDgwMDAwMCk7CisJcGFyLT5yaXZh
LlBDSU8wID0gKFUwMDggKikocGFyLT5jdHJsX2Jhc2UgKyAweDAwNjAxMDAwKTsKKwlwYXItPnJp
dmEuUERJTzAgPSAoVTAwOCAqKShwYXItPmN0cmxfYmFzZSArIDB4MDA2ODEwMDApOworCXBhci0+
cml2YS5QVklPID0gKFUwMDggKikocGFyLT5jdHJsX2Jhc2UgKyAweDAwMEMwMDAwKTsKKworCXBh
ci0+cml2YS5JTyA9IChNSVNDaW4ocGFyKSAmIDB4MDEpID8gMHgzRDAgOiAweDNCMDsKKwkKKwlp
ZiAocGFyLT5GbGF0UGFuZWwgPT0gLTEpIHsKKwkJc3dpdGNoIChwYXItPkNoaXBzZXQpIHsKKwkJ
Y2FzZSBOVl9DSElQX0dFRk9SQ0U0XzQ0MF9HTzoKKwkJY2FzZSBOVl9DSElQX0dFRk9SQ0U0XzQ0
MF9HT19NNjQ6CisJCWNhc2UgTlZfQ0hJUF9HRUZPUkNFNF80MjBfR086CisJCWNhc2UgTlZfQ0hJ
UF9HRUZPUkNFNF80MjBfR09fTTMyOgorCQljYXNlIE5WX0NISVBfUVVBRFJPNF81MDBfR09HTDoK
KwkJY2FzZSBOVl9DSElQX0dFRk9SQ0UyX0dPOgorCQkJcHJpbnRrKEtFUk5fSU5GTyBQRlggCisJ
CQkJIk9uIGEgbGFwdG9wLiAgQXNzdW1pbmcgRGlnaXRhbCBGbGF0IFBhbmVsXG4iKTsKKwkJCXBh
ci0+RmxhdFBhbmVsID0gMTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0K
Kwl9CisJCisJc3dpdGNoIChwYXItPkNoaXBzZXQgJiAweDBmZjApIHsKKwljYXNlIDB4MDExMDoK
KwkJaWYgKHBhci0+Q2hpcHNldCA9PSBOVl9DSElQX0dFRk9SQ0UyX0dPKQorCQkJcGFyLT5TZWNv
bmRDUlRDID0gVFJVRTsgCisjaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKKwkJaWYgKHBhci0+Rmxh
dFBhbmVsID09IDEpCisJCQlwYXItPlNlY29uZENSVEMgPSBUUlVFOworI2VuZGlmCisJCXJpdmFf
b3ZlcnJpZGVfQ1JUQyhwYXIpOworCQlicmVhazsKKwljYXNlIDB4MDE3MDoKKwljYXNlIDB4MDE4
MDoKKwljYXNlIDB4MDFGMDoKKwljYXNlIDB4MDI1MDoKKwljYXNlIDB4MDI4MDoKKwkJcml2YV9p
c19zZWNvbmQocGFyKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCisJaWYg
KHBhci0+U2Vjb25kQ1JUQykgeworCQlwYXItPnJpdmEuUENJTyA9IHBhci0+cml2YS5QQ0lPMCAr
IDB4MjAwMDsKKwkJcGFyLT5yaXZhLlBDUlRDID0gcGFyLT5yaXZhLlBDUlRDMCArIDB4ODAwOwor
CQlwYXItPnJpdmEuUFJBTURBQyA9IHBhci0+cml2YS5QUkFNREFDMCArIDB4ODAwOworCQlwYXIt
PnJpdmEuUERJTyA9IHBhci0+cml2YS5QRElPMCArIDB4MjAwMDsKKwl9IGVsc2UgeworCQlwYXIt
PnJpdmEuUENJTyA9IHBhci0+cml2YS5QQ0lPMDsKKwkJcGFyLT5yaXZhLlBDUlRDID0gcGFyLT5y
aXZhLlBDUlRDMDsKKwkJcGFyLT5yaXZhLlBSQU1EQUMgPSBwYXItPnJpdmEuUFJBTURBQzA7CisJ
CXBhci0+cml2YS5QRElPID0gcGFyLT5yaXZhLlBESU8wOworCX0KKworCWlmIChwYXItPkZsYXRQ
YW5lbCA9PSAtMSkgeworCQkvKiBGaXggbWUsIG5lZWQgeDg2IEREQyBjb2RlICovCisJCXBhci0+
RmxhdFBhbmVsID0gMDsKKwl9CisJcGFyLT5yaXZhLmZsYXRQYW5lbCA9IChwYXItPkZsYXRQYW5l
bCA+IDApID8gVFJVRSA6IEZBTFNFOworfQorCmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL2Ry
aXZlcnMvdmlkZW8veGJveC9udl90eXBlLmggbGludXgtMi42LjUvZHJpdmVycy92aWRlby94Ym94
L252X3R5cGUuaAotLS0gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvbnZfdHlw
ZS5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9k
cml2ZXJzL3ZpZGVvL3hib3gvbnZfdHlwZS5oCTIwMDQtMDUtMDEgMTU6MjA6NDMuMDAwMDAwMDAw
ICswMTAwCkBAIC0wLDAgKzEsNTggQEAKKy8qICRYRnJlZTg2OiB4Yy9wcm9ncmFtcy9Yc2VydmVy
L2h3L3hmcmVlODYvZHJpdmVycy9udi9udl90eXBlLmgsdiAxLjM1IDIwMDIvMDgvMDUgMjA6NDc6
MDYgbXZvamtvdmkgRXhwICQgKi8KKworI2lmbmRlZiBfX05WX1NUUlVDVF9IX18KKyNkZWZpbmUg
X19OVl9TVFJVQ1RfSF9fCisKKyNkZWZpbmUgTlZfQ0hJUF9SSVZBXzEyOCAgICAgICAgICAgICgo
UENJX1ZFTkRPUl9JRF9OVklESUFfU0dTIDw8IDE2KXwgUENJX0RFVklDRV9JRF9OVklESUFfUklW
QTEyOCkKKyNkZWZpbmUgTlZfQ0hJUF9UTlQgICAgICAgICAgICAgICAgICgoUENJX1ZFTkRPUl9J
RF9OVklESUEgPDwgMTYpfCBQQ0lfREVWSUNFX0lEX05WSURJQV9UTlQpCisjZGVmaW5lIE5WX0NI
SVBfVE5UMiAgICAgICAgICAgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KXwgUENJ
X0RFVklDRV9JRF9OVklESUFfVE5UMikKKyNkZWZpbmUgTlZfQ0hJUF9VVE5UMiAgICAgICAgICAg
ICAgICgoUENJX1ZFTkRPUl9JRF9OVklESUEgPDwgMTYpfCBQQ0lfREVWSUNFX0lEX05WSURJQV9V
VE5UMikKKyNkZWZpbmUgTlZfQ0hJUF9WVE5UMiAgICAgICAgICAgICAgICgoUENJX1ZFTkRPUl9J
RF9OVklESUEgPDwgMTYpfCBQQ0lfREVWSUNFX0lEX05WSURJQV9WVE5UMikKKyNkZWZpbmUgTlZf
Q0hJUF9VVlROVDIgICAgICAgICAgICAgICgoUENJX1ZFTkRPUl9JRF9OVklESUEgPDwgMTYpfCBQ
Q0lfREVWSUNFX0lEX05WSURJQV9VVlROVDIpCisjZGVmaW5lIE5WX0NISVBfSVROVDIgICAgICAg
ICAgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KXwgUENJX0RFVklDRV9JRF9OVklE
SUFfSVROVDIpCisjZGVmaW5lIE5WX0NISVBfR0VGT1JDRV8yNTYgICAgICAgICAoKFBDSV9WRU5E
T1JfSURfTlZJRElBIDw8IDE2KXwgUENJX0RFVklDRV9JRF9OVklESUFfR0VGT1JDRV8yNTYpCisj
ZGVmaW5lIE5WX0NISVBfR0VGT1JDRV9ERFIgICAgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElB
IDw8IDE2KXwgUENJX0RFVklDRV9JRF9OVklESUFfR0VGT1JDRV9ERFIpCisjZGVmaW5lIE5WX0NI
SVBfUVVBRFJPICAgICAgICAgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KXwgUENJ
X0RFVklDRV9JRF9OVklESUFfUVVBRFJPKQorI2RlZmluZSBOVl9DSElQX0dFRk9SQ0UyX01YICAg
ICAgICAgKChQQ0lfVkVORE9SX0lEX05WSURJQSA8PCAxNikgfCBQQ0lfREVWSUNFX0lEX05WSURJ
QV9HRUZPUkNFMl9NWCkKKyNkZWZpbmUgTlZfQ0hJUF9HRUZPUkNFMl9NWF8xMDAgICAgICgoUENJ
X1ZFTkRPUl9JRF9OVklESUEgPDwgMTYpIHwgUENJX0RFVklDRV9JRF9OVklESUFfR0VGT1JDRTJf
TVhfMTAwKQorI2RlZmluZSBOVl9DSElQX1FVQURSTzJfTVhSICAgICAgICAgKChQQ0lfVkVORE9S
X0lEX05WSURJQSA8PCAxNikgfCBQQ0lfREVWSUNFX0lEX05WSURJQV9RVUFEUk8yX01YUikKKyNk
ZWZpbmUgTlZfQ0hJUF9HRUZPUkNFMl9HTyAgICAgICAgICgoUENJX1ZFTkRPUl9JRF9OVklESUEg
PDwgMTYpIHwgUENJX0RFVklDRV9JRF9OVklESUFfR0VGT1JDRTJfR08pCisjZGVmaW5lIE5WX0NI
SVBfR0VGT1JDRTJfR1RTICAgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KSB8IFBD
SV9ERVZJQ0VfSURfTlZJRElBX0dFRk9SQ0UyX0dUUykKKyNkZWZpbmUgTlZfQ0hJUF9HRUZPUkNF
Ml9USSAgICAgICAgICgoUENJX1ZFTkRPUl9JRF9OVklESUEgPDwgMTYpIHwgUENJX0RFVklDRV9J
RF9OVklESUFfR0VGT1JDRTJfVEkpCisjZGVmaW5lIE5WX0NISVBfR0VGT1JDRTJfVUxUUkEgICAg
ICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KSB8IFBDSV9ERVZJQ0VfSURfTlZJRElBX0dF
Rk9SQ0UyX1VMVFJBKQorI2RlZmluZSBOVl9DSElQX1FVQURSTzJfUFJPICAgICAgICAgKChQQ0lf
VkVORE9SX0lEX05WSURJQSA8PCAxNikgfCBQQ0lfREVWSUNFX0lEX05WSURJQV9RVUFEUk8yX1BS
TykKKyNkZWZpbmUgTlZfQ0hJUF9HRUZPUkNFNF9NWF80NjAgICAgICgoUENJX1ZFTkRPUl9JRF9O
VklESUEgPDwgMTYpIHwgUENJX0RFVklDRV9JRF9OVklESUFfR0VGT1JDRTRfTVhfNDYwKQorI2Rl
ZmluZSBOVl9DSElQX0dFRk9SQ0U0X01YXzQ0MCAgICAgKChQQ0lfVkVORE9SX0lEX05WSURJQSA8
PCAxNikgfCBQQ0lfREVWSUNFX0lEX05WSURJQV9HRUZPUkNFNF9NWF80NDApCisjZGVmaW5lIE5W
X0NISVBfR0VGT1JDRTRfTVhfNDIwICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KSB8
IFBDSV9ERVZJQ0VfSURfTlZJRElBX0dFRk9SQ0U0X01YXzQyMCkKKyNkZWZpbmUgTlZfQ0hJUF9H
RUZPUkNFNF80NDBfR08gICAgICgoUENJX1ZFTkRPUl9JRF9OVklESUEgPDwgMTYpIHwgUENJX0RF
VklDRV9JRF9OVklESUFfR0VGT1JDRTRfNDQwX0dPKQorI2RlZmluZSBOVl9DSElQX0dFRk9SQ0U0
XzQyMF9HTyAgICAgKChQQ0lfVkVORE9SX0lEX05WSURJQSA8PCAxNikgfCBQQ0lfREVWSUNFX0lE
X05WSURJQV9HRUZPUkNFNF80MjBfR08pCisjZGVmaW5lIE5WX0NISVBfR0VGT1JDRTRfNDIwX0dP
X00zMiAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KSB8IFBDSV9ERVZJQ0VfSURfTlZJRElB
X0dFRk9SQ0U0XzQyMF9HT19NMzIpCisjZGVmaW5lIE5WX0NISVBfUVVBRFJPNF81MDBYR0wgICAg
ICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KSB8IFBDSV9ERVZJQ0VfSURfTlZJRElBX1FV
QURSTzRfNTAwWEdMKQorI2RlZmluZSBOVl9DSElQX0dFRk9SQ0U0XzQ0MF9HT19NNjQgKChQQ0lf
VkVORE9SX0lEX05WSURJQSA8PCAxNikgfCBQQ0lfREVWSUNFX0lEX05WSURJQV9HRUZPUkNFNF80
NDBfR09fTTY0KQorI2RlZmluZSBOVl9DSElQX1FVQURSTzRfMjAwICAgICAgICAgKChQQ0lfVkVO
RE9SX0lEX05WSURJQSA8PCAxNikgfCBQQ0lfREVWSUNFX0lEX05WSURJQV9RVUFEUk80XzIwMCkK
KyNkZWZpbmUgTlZfQ0hJUF9RVUFEUk80XzU1MFhHTCAgICAgICgoUENJX1ZFTkRPUl9JRF9OVklE
SUEgPDwgMTYpIHwgUENJX0RFVklDRV9JRF9OVklESUFfUVVBRFJPNF81NTBYR0wpCisjZGVmaW5l
IE5WX0NISVBfUVVBRFJPNF81MDBfR09HTCAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2
KSB8IFBDSV9ERVZJQ0VfSURfTlZJRElBX1FVQURSTzRfNTAwX0dPR0wpCisjZGVmaW5lIE5WX0NI
SVBfMHgwMTgwICAgICAgICAgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KSB8IDB4
MDE4MCkKKyNkZWZpbmUgTlZfQ0hJUF8weDAxODEgICAgICAgICAgICAgICgoUENJX1ZFTkRPUl9J
RF9OVklESUEgPDwgMTYpIHwgMHgwMTgxKQorI2RlZmluZSBOVl9DSElQXzB4MDE4MiAgICAgICAg
ICAgICAgKChQQ0lfVkVORE9SX0lEX05WSURJQSA8PCAxNikgfCAweDAxODIpCisjZGVmaW5lIE5W
X0NISVBfMHgwMTg4ICAgICAgICAgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KSB8
IDB4MDE4OCkKKyNkZWZpbmUgTlZfQ0hJUF8weDAxOEEgICAgICAgICAgICAgICgoUENJX1ZFTkRP
Ul9JRF9OVklESUEgPDwgMTYpIHwgMHgwMThBKQorI2RlZmluZSBOVl9DSElQXzB4MDE4QiAgICAg
ICAgICAgICAgKChQQ0lfVkVORE9SX0lEX05WSURJQSA8PCAxNikgfCAweDAxOEIpCisjZGVmaW5l
IE5WX0NISVBfSUdFRk9SQ0UyICAgICAgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2
KSB8IFBDSV9ERVZJQ0VfSURfTlZJRElBX0lHRUZPUkNFMikKKyNkZWZpbmUgTlZfQ0hJUF8weDAx
RjAgICAgICAgICAgICAgICgoUENJX1ZFTkRPUl9JRF9OVklESUEgPDwgMTYpIHwgMHgwMUYwKQor
I2RlZmluZSBOVl9DSElQX0dFRk9SQ0UzICAgICAgICAgICAgKChQQ0lfVkVORE9SX0lEX05WSURJ
QSA8PCAxNikgfCBQQ0lfREVWSUNFX0lEX05WSURJQV9HRUZPUkNFMykKKyNkZWZpbmUgTlZfQ0hJ
UF9HRUZPUkNFM19USV8yMDAgICAgICgoUENJX1ZFTkRPUl9JRF9OVklESUEgPDwgMTYpIHwgUENJ
X0RFVklDRV9JRF9OVklESUFfR0VGT1JDRTNfVElfMjAwKQorI2RlZmluZSBOVl9DSElQX0dFRk9S
Q0UzX1RJXzUwMCAgICAgKChQQ0lfVkVORE9SX0lEX05WSURJQSA8PCAxNikgfCBQQ0lfREVWSUNF
X0lEX05WSURJQV9HRUZPUkNFM19USV81MDApCisjZGVmaW5lIE5WX0NISVBfUVVBRFJPX0RDQyAg
ICAgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KSB8IFBDSV9ERVZJQ0VfSURfTlZJ
RElBX1FVQURST19EQ0MpCisjZGVmaW5lIE5WX0NISVBfR0VGT1JDRTRfVElfNDYwMCAgICAoKFBD
SV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KSB8IFBDSV9ERVZJQ0VfSURfTlZJRElBX0dFRk9SQ0U0
X1RJXzQ2MDApCisjZGVmaW5lIE5WX0NISVBfR0VGT1JDRTRfVElfNDQwMCAgICAoKFBDSV9WRU5E
T1JfSURfTlZJRElBIDw8IDE2KSB8IFBDSV9ERVZJQ0VfSURfTlZJRElBX0dFRk9SQ0U0X1RJXzQ0
MDApCisjZGVmaW5lIE5WX0NISVBfR0VGT1JDRTRfVElfNDIwMCAgICAoKFBDSV9WRU5ET1JfSURf
TlZJRElBIDw8IDE2KSB8IFBDSV9ERVZJQ0VfSURfTlZJRElBX0dFRk9SQ0U0X1RJXzQyMDApCisj
ZGVmaW5lIE5WX0NISVBfUVVBRFJPNF85MDBYR0wgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElB
IDw8IDE2KSB8IFBDSV9ERVZJQ0VfSURfTlZJRElBX1FVQURSTzRfOTAwWEdMKQorI2RlZmluZSBO
Vl9DSElQX1FVQURSTzRfNzUwWEdMICAgICAgKChQQ0lfVkVORE9SX0lEX05WSURJQSA8PCAxNikg
fCBQQ0lfREVWSUNFX0lEX05WSURJQV9RVUFEUk80Xzc1MFhHTCkKKyNkZWZpbmUgTlZfQ0hJUF9R
VUFEUk80XzcwMFhHTCAgICAgICgoUENJX1ZFTkRPUl9JRF9OVklESUEgPDwgMTYpIHwgUENJX0RF
VklDRV9JRF9OVklESUFfUVVBRFJPNF83MDBYR0wpCisjZGVmaW5lIE5WX0NISVBfMHgwMjgwICAg
ICAgICAgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KSB8IDB4MDI4MCkKKyNkZWZp
bmUgTlZfQ0hJUF8weDAyODEgICAgICAgICAgICAgICgoUENJX1ZFTkRPUl9JRF9OVklESUEgPDwg
MTYpIHwgMHgwMjgxKQorI2RlZmluZSBOVl9DSElQXzB4MDI4OCAgICAgICAgICAgICAgKChQQ0lf
VkVORE9SX0lEX05WSURJQSA8PCAxNikgfCAweDAyODgpCisjZGVmaW5lIE5WX0NISVBfMHgwMjg5
ICAgICAgICAgICAgICAoKFBDSV9WRU5ET1JfSURfTlZJRElBIDw8IDE2KSB8IDB4MDI4OSkKKwor
I2VuZGlmIC8qIF9fTlZfU1RSVUNUX0hfXyAqLwpkaWZmIC11ck4gbGludXgtMi42LjUub3JpZy9k
cml2ZXJzL3ZpZGVvL3hib3gvbnZyZWcuaCBsaW51eC0yLjYuNS9kcml2ZXJzL3ZpZGVvL3hib3gv
bnZyZWcuaAotLS0gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvbnZyZWcuaAkx
OTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUvZHJpdmVy
cy92aWRlby94Ym94L252cmVnLmgJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAK
QEAgLTAsMCArMSwxODggQEAKKy8qICRYQ29uc29ydGl1bTogbnZyZWcuaCAvbWFpbi8yIDE5OTYv
MTAvMjggMDU6MTM6NDEga2FsZWIgJCAqLworLyoKKyAqIENvcHlyaWdodCAxOTk2LTE5OTcgIERh
dmlkIEouIE1jS2F5CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0
d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks
CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp
bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5
LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs
IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
IEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBE
QVZJRCBKLiBNQ0tBWSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBM
SUFCSUxJVFksCisgKiBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP
VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GCisgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgKiBTT0ZU
V0FSRS4KKyAqLworCisvKiAkWEZyZWU4NjogeGMvcHJvZ3JhbXMvWHNlcnZlci9ody94ZnJlZTg2
L3ZnYTI1Ni9kcml2ZXJzL252L252cmVnLmgsdiAzLjIuMi4xIDE5OTgvMDEvMTggMTA6MzU6MzYg
aG9obmRlbCBFeHAgJCAqLworCisjaWZuZGVmIF9fTlZSRUdfSF8KKyNkZWZpbmUgX19OVlJFR19I
XworCisvKiBMaXR0bGUgbWFjcm8gdG8gY29uc3RydWN0IGJpdG1hc2sgZm9yIGNvbnRpZ3VvdXMg
cmFuZ2VzIG9mIGJpdHMgKi8KKyNkZWZpbmUgQklUTUFTSyh0LGIpICgoKHVuc2lnbmVkKSgxVSA8
PCAoKCh0KS0oYikrMSkpKS0xKSAgPDwgKGIpKQorI2RlZmluZSBNQVNLRVhQQU5EKG1hc2spIEJJ
VE1BU0soMT9tYXNrLDA/bWFzaykKKworLyogTWFjcm8gdG8gc2V0IHNwZWNpZmljIGJpdGZpZWxk
cyAobWFzayBoYXMgdG8gYmUgYSBtYWNybyB4OnkpICEgKi8KKyNkZWZpbmUgU2V0QkYobWFzayx2
YWx1ZSkgKCh2YWx1ZSkgPDwgKDA/bWFzaykpCisjZGVmaW5lIEdldEJGKHZhcixtYXNrKSAoKCh1
bnNpZ25lZCkoKHZhcikgJiBNQVNLRVhQQU5EKG1hc2spKSkgPj4gKDA/bWFzaykgKQorCisjZGVm
aW5lIE1hc2tBbmRTZXRCRih2YXIsbWFzayx2YWx1ZSkgKHZhcik9KCgodmFyKSYofk1BU0tFWFBB
TkQobWFzaykpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgU2V0QkYobWFzayx2YWx1ZSkpKQorCisjZGVmaW5lIERFVklDRV9CQVNFKGRldmljZSkgKDA/
TlYjI18jI2RldmljZSkKKyNkZWZpbmUgREVWSUNFX1NJWkUoZGV2aWNlKSAoKDE/TlYjI18jI2Rl
dmljZSkgLSBERVZJQ0VfQkFTRShkZXZpY2UpKzEpCisKKy8qIFRoaXMgaXMgd2hlcmUgd2Ugd2ls
bCBoYXZlIHRvIGhhdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gKi8KKyNkZWZpbmUgREVWSUNF
X0FDQ0VTUyhkZXZpY2UscmVnKSBcCisgIG52Q09OVFJPTFsoTlZfIyNkZXZpY2UjI18jI3JlZykv
NF0KKworI2RlZmluZSBERVZJQ0VfV1JJVEUoZGV2aWNlLHJlZyx2YWx1ZSkgREVWSUNFX0FDQ0VT
UyhkZXZpY2UscmVnKT0odmFsdWUpCisjZGVmaW5lIERFVklDRV9SRUFEKGRldmljZSxyZWcpICAg
ICAgICBERVZJQ0VfQUNDRVNTKGRldmljZSxyZWcpCisjZGVmaW5lIERFVklDRV9QUklOVChkZXZp
Y2UscmVnKSBcCisgIEVycm9yRigiTlZfIiNkZXZpY2UiXyIjcmVnIj0jJTA4bHhcbiIsREVWSUNF
X0FDQ0VTUyhkZXZpY2UscmVnKSkKKyNkZWZpbmUgREVWSUNFX0RFRihkZXZpY2UsbWFzayx2YWx1
ZSkgXAorICBTZXRCRihOVl8jI2RldmljZSMjXyMjbWFzayxOVl8jI2RldmljZSMjXyMjbWFzayMj
XyMjdmFsdWUpCisjZGVmaW5lIERFVklDRV9WQUxVRShkZXZpY2UsbWFzayx2YWx1ZSkgU2V0QkYo
TlZfIyNkZXZpY2UjI18jI21hc2ssdmFsdWUpCisjZGVmaW5lIERFVklDRV9NQVNLKGRldmljZSxt
YXNrKSBNQVNLRVhQQU5EKE5WXyMjZGV2aWNlIyNfIyNtYXNrKQorCisjZGVmaW5lIFBEQUNfV3Jp
dGUocmVnLHZhbHVlKSAgICAgICAgICAgREVWSUNFX1dSSVRFKFBEQUMscmVnLHZhbHVlKQorI2Rl
ZmluZSBQREFDX1JlYWQocmVnKSAgICAgICAgICAgICAgICAgIERFVklDRV9SRUFEKFBEQUMscmVn
KQorI2RlZmluZSBQREFDX1ByaW50KHJlZykgICAgICAgICAgICAgICAgIERFVklDRV9QUklOVChQ
REFDLHJlZykKKyNkZWZpbmUgUERBQ19EZWYobWFzayx2YWx1ZSkgICAgICAgICAgICBERVZJQ0Vf
REVGKFBEQUMsbWFzayx2YWx1ZSkKKyNkZWZpbmUgUERBQ19WYWwobWFzayx2YWx1ZSkgICAgICAg
ICAgICBERVZJQ0VfVkFMVUUoUERBQyxtYXNrLHZhbHVlKQorI2RlZmluZSBQREFDX01hc2sobWFz
aykgICAgICAgICAgICAgICAgIERFVklDRV9NQVNLKFBEQUMsbWFzaykKKworI2RlZmluZSBQRkJf
V3JpdGUocmVnLHZhbHVlKSAgICAgICAgICAgIERFVklDRV9XUklURShQRkIscmVnLHZhbHVlKQor
I2RlZmluZSBQRkJfUmVhZChyZWcpICAgICAgICAgICAgICAgICAgIERFVklDRV9SRUFEKFBGQixy
ZWcpCisjZGVmaW5lIFBGQl9QcmludChyZWcpICAgICAgICAgICAgICAgICAgREVWSUNFX1BSSU5U
KFBGQixyZWcpCisjZGVmaW5lIFBGQl9EZWYobWFzayx2YWx1ZSkgICAgICAgICAgICAgREVWSUNF
X0RFRihQRkIsbWFzayx2YWx1ZSkKKyNkZWZpbmUgUEZCX1ZhbChtYXNrLHZhbHVlKSAgICAgICAg
ICAgICBERVZJQ0VfVkFMVUUoUEZCLG1hc2ssdmFsdWUpCisjZGVmaW5lIFBGQl9NYXNrKG1hc2sp
ICAgICAgICAgICAgICAgICAgREVWSUNFX01BU0soUEZCLG1hc2spCisKKyNkZWZpbmUgUFJNX1dy
aXRlKHJlZyx2YWx1ZSkgICAgICAgICAgICBERVZJQ0VfV1JJVEUoUFJNLHJlZyx2YWx1ZSkKKyNk
ZWZpbmUgUFJNX1JlYWQocmVnKSAgICAgICAgICAgICAgICAgICBERVZJQ0VfUkVBRChQUk0scmVn
KQorI2RlZmluZSBQUk1fUHJpbnQocmVnKSAgICAgICAgICAgICAgICAgIERFVklDRV9QUklOVChQ
Uk0scmVnKQorI2RlZmluZSBQUk1fRGVmKG1hc2ssdmFsdWUpICAgICAgICAgICAgIERFVklDRV9E
RUYoUFJNLG1hc2ssdmFsdWUpCisjZGVmaW5lIFBSTV9WYWwobWFzayx2YWx1ZSkgICAgICAgICAg
ICAgREVWSUNFX1ZBTFVFKFBSTSxtYXNrLHZhbHVlKQorI2RlZmluZSBQUk1fTWFzayhtYXNrKSAg
ICAgICAgICAgICAgICAgIERFVklDRV9NQVNLKFBSTSxtYXNrKQorCisjZGVmaW5lIFBHUkFQSF9X
cml0ZShyZWcsdmFsdWUpICAgICAgICAgREVWSUNFX1dSSVRFKFBHUkFQSCxyZWcsdmFsdWUpCisj
ZGVmaW5lIFBHUkFQSF9SZWFkKHJlZykgICAgICAgICAgICAgICAgREVWSUNFX1JFQUQoUEdSQVBI
LHJlZykKKyNkZWZpbmUgUEdSQVBIX1ByaW50KHJlZykgICAgICAgICAgICAgICBERVZJQ0VfUFJJ
TlQoUEdSQVBILHJlZykKKyNkZWZpbmUgUEdSQVBIX0RlZihtYXNrLHZhbHVlKSAgICAgICAgICBE
RVZJQ0VfREVGKFBHUkFQSCxtYXNrLHZhbHVlKQorI2RlZmluZSBQR1JBUEhfVmFsKG1hc2ssdmFs
dWUpICAgICAgICAgIERFVklDRV9WQUxVRShQR1JBUEgsbWFzayx2YWx1ZSkKKyNkZWZpbmUgUEdS
QVBIX01hc2sobWFzaykgICAgICAgICAgICAgICBERVZJQ0VfTUFTSyhQR1JBUEgsbWFzaykKKwor
I2RlZmluZSBQRE1BX1dyaXRlKHJlZyx2YWx1ZSkgICAgICAgICAgIERFVklDRV9XUklURShQRE1B
LHJlZyx2YWx1ZSkKKyNkZWZpbmUgUERNQV9SZWFkKHJlZykgICAgICAgICAgICAgICAgICBERVZJ
Q0VfUkVBRChQRE1BLHJlZykKKyNkZWZpbmUgUERNQV9QcmludChyZWcpICAgICAgICAgICAgICAg
ICBERVZJQ0VfUFJJTlQoUERNQSxyZWcpCisjZGVmaW5lIFBETUFfRGVmKG1hc2ssdmFsdWUpICAg
ICAgICAgICAgREVWSUNFX0RFRihQRE1BLG1hc2ssdmFsdWUpCisjZGVmaW5lIFBETUFfVmFsKG1h
c2ssdmFsdWUpICAgICAgICAgICAgREVWSUNFX1ZBTFVFKFBETUEsbWFzayx2YWx1ZSkKKyNkZWZp
bmUgUERNQV9NYXNrKG1hc2spICAgICAgICAgICAgICAgICBERVZJQ0VfTUFTSyhQRE1BLG1hc2sp
CisKKyNkZWZpbmUgUFRJTUVSX1dyaXRlKHJlZyx2YWx1ZSkgICAgICAgICBERVZJQ0VfV1JJVEUo
UFRJTUVSLHJlZyx2YWx1ZSkKKyNkZWZpbmUgUFRJTUVSX1JlYWQocmVnKSAgICAgICAgICAgICAg
ICBERVZJQ0VfUkVBRChQVElNRVIscmVnKQorI2RlZmluZSBQVElNRVJfUHJpbnQocmVnKSAgICAg
ICAgICAgICAgIERFVklDRV9QUklOVChQVElNRVIscmVnKQorI2RlZmluZSBQVElNRVJfRGVmKG1h
c2ssdmFsdWUpICAgICAgICAgIERFVklDRV9ERUYoUFRJTUVSLG1hc2ssdmFsdWUpCisjZGVmaW5l
IFBUSU1FUl9WYWwobWFzayx2YWx1ZSkgICAgICAgICAgREVWSUNFX1ZBTFVFKFBUSUVNUixtYXNr
LHZhbHVlKQorI2RlZmluZSBQVElNRVJfTWFzayhtYXNrKSAgICAgICAgICAgICAgIERFVklDRV9N
QVNLKFBUSU1FUixtYXNrKQorCisjZGVmaW5lIFBFWFRERVZfV3JpdGUocmVnLHZhbHVlKSAgICAg
ICAgIERFVklDRV9XUklURShQRVhUREVWLHJlZyx2YWx1ZSkKKyNkZWZpbmUgUEVYVERFVl9SZWFk
KHJlZykgICAgICAgICAgICAgICAgREVWSUNFX1JFQUQoUEVYVERFVixyZWcpCisjZGVmaW5lIFBF
WFRERVZfUHJpbnQocmVnKSAgICAgICAgICAgICAgIERFVklDRV9QUklOVChQRVhUREVWLHJlZykK
KyNkZWZpbmUgUEVYVERFVl9EZWYobWFzayx2YWx1ZSkgICAgICAgICAgREVWSUNFX0RFRihQRVhU
REVWLG1hc2ssdmFsdWUpCisjZGVmaW5lIFBFWFRERVZfVmFsKG1hc2ssdmFsdWUpICAgICAgICAg
IERFVklDRV9WQUxVRShQRVhUREVWLG1hc2ssdmFsdWUpCisjZGVmaW5lIFBFWFRERVZfTWFzayht
YXNrKSAgICAgICAgICAgICAgIERFVklDRV9NQVNLKFBFWFRERVYsbWFzaykKKworI2RlZmluZSBQ
RklGT19Xcml0ZShyZWcsdmFsdWUpICAgICAgICAgIERFVklDRV9XUklURShQRklGTyxyZWcsdmFs
dWUpCisjZGVmaW5lIFBGSUZPX1JlYWQocmVnKSAgICAgICAgICAgICAgICAgREVWSUNFX1JFQUQo
UEZJRk8scmVnKQorI2RlZmluZSBQRklGT19QcmludChyZWcpICAgICAgICAgICAgICAgIERFVklD
RV9QUklOVChQRklGTyxyZWcpCisjZGVmaW5lIFBGSUZPX0RlZihtYXNrLHZhbHVlKSAgICAgICAg
ICAgREVWSUNFX0RFRihQRklGTyxtYXNrLHZhbHVlKQorI2RlZmluZSBQRklGT19WYWwobWFzayx2
YWx1ZSkgICAgICAgICAgIERFVklDRV9WQUxVRShQRklGTyxtYXNrLHZhbHVlKQorI2RlZmluZSBQ
RklGT19NYXNrKG1hc2spICAgICAgICAgICAgICAgIERFVklDRV9NQVNLKFBGSUZPLG1hc2spCisK
KyNkZWZpbmUgUFJBTV9Xcml0ZShyZWcsdmFsdWUpICAgICAgICAgICBERVZJQ0VfV1JJVEUoUFJB
TSxyZWcsdmFsdWUpCisjZGVmaW5lIFBSQU1fUmVhZChyZWcpICAgICAgICAgICAgICAgICAgREVW
SUNFX1JFQUQoUFJBTSxyZWcpCisjZGVmaW5lIFBSQU1fUHJpbnQocmVnKSAgICAgICAgICAgICAg
ICAgREVWSUNFX1BSSU5UKFBSQU0scmVnKQorI2RlZmluZSBQUkFNX0RlZihtYXNrLHZhbHVlKSAg
ICAgICAgICAgIERFVklDRV9ERUYoUFJBTSxtYXNrLHZhbHVlKQorI2RlZmluZSBQUkFNX1ZhbCht
YXNrLHZhbHVlKSAgICAgICAgICAgIERFVklDRV9WQUxVRShQUkFNLG1hc2ssdmFsdWUpCisjZGVm
aW5lIFBSQU1fTWFzayhtYXNrKSAgICAgICAgICAgICAgICAgREVWSUNFX01BU0soUFJBTSxtYXNr
KQorCisjZGVmaW5lIFBSQU1GQ19Xcml0ZShyZWcsdmFsdWUpICAgICAgICAgREVWSUNFX1dSSVRF
KFBSQU1GQyxyZWcsdmFsdWUpCisjZGVmaW5lIFBSQU1GQ19SZWFkKHJlZykgICAgICAgICAgICAg
ICAgREVWSUNFX1JFQUQoUFJBTUZDLHJlZykKKyNkZWZpbmUgUFJBTUZDX1ByaW50KHJlZykgICAg
ICAgICAgICAgICBERVZJQ0VfUFJJTlQoUFJBTUZDLHJlZykKKyNkZWZpbmUgUFJBTUZDX0RlZiht
YXNrLHZhbHVlKSAgICAgICAgICBERVZJQ0VfREVGKFBSQU1GQyxtYXNrLHZhbHVlKQorI2RlZmlu
ZSBQUkFNRkNfVmFsKG1hc2ssdmFsdWUpICAgICAgICAgIERFVklDRV9WQUxVRShQUkFNRkMsbWFz
ayx2YWx1ZSkKKyNkZWZpbmUgUFJBTUZDX01hc2sobWFzaykgICAgICAgICAgICAgICBERVZJQ0Vf
TUFTSyhQUkFNRkMsbWFzaykKKworI2RlZmluZSBQTUNfV3JpdGUocmVnLHZhbHVlKSAgICAgICAg
ICAgIERFVklDRV9XUklURShQTUMscmVnLHZhbHVlKQorI2RlZmluZSBQTUNfUmVhZChyZWcpICAg
ICAgICAgICAgICAgICAgIERFVklDRV9SRUFEKFBNQyxyZWcpCisjZGVmaW5lIFBNQ19QcmludChy
ZWcpICAgICAgICAgICAgICAgICAgREVWSUNFX1BSSU5UKFBNQyxyZWcpCisjZGVmaW5lIFBNQ19E
ZWYobWFzayx2YWx1ZSkgICAgICAgICAgICAgREVWSUNFX0RFRihQTUMsbWFzayx2YWx1ZSkKKyNk
ZWZpbmUgUE1DX1ZhbChtYXNrLHZhbHVlKSAgICAgICAgICAgICBERVZJQ0VfVkFMVUUoUE1DLG1h
c2ssdmFsdWUpCisjZGVmaW5lIFBNQ19NYXNrKG1hc2spICAgICAgICAgICAgICAgICAgREVWSUNF
X01BU0soUE1DLG1hc2spCisKKyNkZWZpbmUgUE1DX1dyaXRlKHJlZyx2YWx1ZSkgICAgICAgICAg
ICBERVZJQ0VfV1JJVEUoUE1DLHJlZyx2YWx1ZSkKKyNkZWZpbmUgUE1DX1JlYWQocmVnKSAgICAg
ICAgICAgICAgICAgICBERVZJQ0VfUkVBRChQTUMscmVnKQorI2RlZmluZSBQTUNfUHJpbnQocmVn
KSAgICAgICAgICAgICAgICAgIERFVklDRV9QUklOVChQTUMscmVnKQorI2RlZmluZSBQTUNfRGVm
KG1hc2ssdmFsdWUpICAgICAgICAgICAgIERFVklDRV9ERUYoUE1DLG1hc2ssdmFsdWUpCisjZGVm
aW5lIFBNQ19WYWwobWFzayx2YWx1ZSkgICAgICAgICAgICAgREVWSUNFX1ZBTFVFKFBNQyxtYXNr
LHZhbHVlKQorI2RlZmluZSBQTUNfTWFzayhtYXNrKSAgICAgICAgICAgICAgICAgIERFVklDRV9N
QVNLKFBNQyxtYXNrKQorCisKKyNkZWZpbmUgUEJVU19Xcml0ZShyZWcsdmFsdWUpICAgICAgICAg
REVWSUNFX1dSSVRFKFBCVVMscmVnLHZhbHVlKQorI2RlZmluZSBQQlVTX1JlYWQocmVnKSAgICAg
ICAgICAgICAgICBERVZJQ0VfUkVBRChQQlVTLHJlZykKKyNkZWZpbmUgUEJVU19QcmludChyZWcp
ICAgICAgICAgICAgICAgREVWSUNFX1BSSU5UKFBCVVMscmVnKQorI2RlZmluZSBQQlVTX0RlZiht
YXNrLHZhbHVlKSAgICAgICAgICBERVZJQ0VfREVGKFBCVVMsbWFzayx2YWx1ZSkKKyNkZWZpbmUg
UEJVU19WYWwobWFzayx2YWx1ZSkgICAgICAgICAgREVWSUNFX1ZBTFVFKFBCVVMsbWFzayx2YWx1
ZSkKKyNkZWZpbmUgUEJVU19NYXNrKG1hc2spICAgICAgICAgICAgICAgREVWSUNFX01BU0soUEJV
UyxtYXNrKQorCisKKyNkZWZpbmUgUFJBTURBQ19Xcml0ZShyZWcsdmFsdWUpICAgICAgICAgREVW
SUNFX1dSSVRFKFBSQU1EQUMscmVnLHZhbHVlKQorI2RlZmluZSBQUkFNREFDX1JlYWQocmVnKSAg
ICAgICAgICAgICAgICBERVZJQ0VfUkVBRChQUkFNREFDLHJlZykKKyNkZWZpbmUgUFJBTURBQ19Q
cmludChyZWcpICAgICAgICAgICAgICAgREVWSUNFX1BSSU5UKFBSQU1EQUMscmVnKQorI2RlZmlu
ZSBQUkFNREFDX0RlZihtYXNrLHZhbHVlKSAgICAgICAgICBERVZJQ0VfREVGKFBSQU1EQUMsbWFz
ayx2YWx1ZSkKKyNkZWZpbmUgUFJBTURBQ19WYWwobWFzayx2YWx1ZSkgICAgICAgICAgREVWSUNF
X1ZBTFVFKFBSQU1EQUMsbWFzayx2YWx1ZSkKKyNkZWZpbmUgUFJBTURBQ19NYXNrKG1hc2spICAg
ICAgICAgICAgICAgREVWSUNFX01BU0soUFJBTURBQyxtYXNrKQorCisKKyNkZWZpbmUgUERBQ19S
ZWFkRXh0KHJlZykgXAorICAoKFBEQUNfV3JpdGUoSU5ERVhfTE8sKE5WX1BEQUNfRVhUXyMjcmVn
KSAmIDB4ZmYpKSxcCisgIChQREFDX1dyaXRlKElOREVYX0hJLCgoTlZfUERBQ19FWFRfIyNyZWcp
ID4+IDgpICYgMHhmZikpLFwKKyAgKFBEQUNfUmVhZChJTkRFWF9EQVRBKSkpCisKKyNkZWZpbmUg
UERBQ19Xcml0ZUV4dChyZWcsdmFsdWUpXAorICAoKFBEQUNfV3JpdGUoSU5ERVhfTE8sKE5WX1BE
QUNfRVhUXyMjcmVnKSAmIDB4ZmYpKSxcCisgIChQREFDX1dyaXRlKElOREVYX0hJLCgoTlZfUERB
Q19FWFRfIyNyZWcpID4+IDgpICYgMHhmZikpLFwKKyAgKFBEQUNfV3JpdGUoSU5ERVhfREFUQSwo
dmFsdWUpKSkpCisKKyNkZWZpbmUgQ1JUQ19Xcml0ZShpbmRleCx2YWx1ZSkgb3V0YigoaW5kZXgp
LCAweDNkNCk7IG91dGIodmFsdWUsIDB4M2Q1KQorI2RlZmluZSBDUlRDX1JlYWQoaW5kZXgpIChv
dXRiKGluZGV4LCAweDNkNCksaW5iKDB4M2Q1KSkKKworI2RlZmluZSBQQ1JUQ19Xcml0ZShpbmRl
eCx2YWx1ZSkgQ1JUQ19Xcml0ZShOVl9QQ1JUQ18jI2luZGV4LHZhbHVlKQorI2RlZmluZSBQQ1JU
Q19SZWFkKGluZGV4KSBDUlRDX1JlYWQoTlZfUENSVENfIyNpbmRleCkKKworI2RlZmluZSBQQ1JU
Q19EZWYobWFzayx2YWx1ZSkgICAgICAgICAgREVWSUNFX0RFRihQQ1JUQyxtYXNrLHZhbHVlKQor
I2RlZmluZSBQQ1JUQ19WYWwobWFzayx2YWx1ZSkgICAgICAgICAgREVWSUNFX1ZBTFVFKFBDUlRD
LG1hc2ssdmFsdWUpCisjZGVmaW5lIFBDUlRDX01hc2sobWFzaykgICAgICAgICAgICAgICBERVZJ
Q0VfTUFTSyhQQ1JUQyxtYXNrKQorCisjZGVmaW5lIFNSX1dyaXRlKGluZGV4LHZhbHVlKSBvdXRi
KDB4M2M0LChpbmRleCkpO291dGIoMHgzYzUsdmFsdWUpCisjZGVmaW5lIFNSX1JlYWQoaW5kZXgp
IChvdXRiKDB4M2M0LGluZGV4KSxpbmIoMHgzYzUpKQorCitleHRlcm4gdm9sYXRpbGUgdW5zaWdu
ZWQgICpudkNPTlRST0w7CisKK3R5cGVkZWYgZW51bSB7TlYxLE5WMyxOVjQsTnVtTlZDaGlwc30g
TlZDaGlwVHlwZTsKKworTlZDaGlwVHlwZSBHZXRDaGlwVHlwZSh2b2lkKTsKKworI2VuZGlmCisK
KwpkaWZmIC11ck4gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvcml2YV9ody5j
IGxpbnV4LTIuNi41L2RyaXZlcnMvdmlkZW8veGJveC9yaXZhX2h3LmMKLS0tIGxpbnV4LTIuNi41
Lm9yaWcvZHJpdmVycy92aWRlby94Ym94L3JpdmFfaHcuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAw
MDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUvZHJpdmVycy92aWRlby94Ym94L3JpdmFfaHcu
YwkyMDA0LTA1LTAxIDE1OjIwOjQzLjAwMDAwMDAwMCArMDEwMApAQCAtMCwwICsxLDIyNTMgQEAK
KyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqXAorfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogICAgICAg
Q29weXJpZ2h0IDE5OTMtMTk5OSBOVklESUEsIENvcnBvcmF0aW9uLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4gICAgICAqfAorfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogICAgIE5PVElDRSBUTyBV
U0VSOiAgIFRoZSBzb3VyY2UgY29kZSAgaXMgY29weXJpZ2h0ZWQgdW5kZXIgIFUuUy4gYW5kICAg
ICAqfAorfCogICAgIGludGVybmF0aW9uYWwgbGF3cy4gIFVzZXJzIGFuZCBwb3NzZXNzb3JzIG9m
IHRoaXMgc291cmNlIGNvZGUgYXJlICAgICAqfAorfCogICAgIGhlcmVieSBncmFudGVkIGEgbm9u
ZXhjbHVzaXZlLCAgcm95YWx0eS1mcmVlIGNvcHlyaWdodCBsaWNlbnNlIHRvICAgICAqfAorfCog
ICAgIHVzZSB0aGlzIGNvZGUgaW4gaW5kaXZpZHVhbCBhbmQgY29tbWVyY2lhbCBzb2Z0d2FyZS4g
ICAgICAgICAgICAgICAgICAqfAorfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogICAgIEFueSB1
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBtdXN0IGluY2x1ZGUsICBpbiB0aGUgdXNlciBkb2N1bWVu
dGEtICAgICAqfAorfCogICAgIHRpb24gYW5kICBpbnRlcm5hbCBjb21tZW50cyB0byB0aGUgY29k
ZSwgIG5vdGljZXMgdG8gdGhlIGVuZCB1c2VyICAgICAqfAorfCogICAgIGFzIGZvbGxvd3M6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
fAorfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogICAgICAgQ29weXJpZ2h0IDE5OTMtMTk5OSBO
VklESUEsIENvcnBvcmF0aW9uLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gICAgICAqfAorfCogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqfAorfCogICAgIE5WSURJQSwgQ09SUE9SQVRJT04gTUFLRVMgTk8gUkVQ
UkVTRU5UQVRJT04gQUJPVVQgVEhFIFNVSVRBQklMSVRZICAgICAqfAorfCogICAgIE9GICBUSElT
IFNPVVJDRSAgQ09ERSAgRk9SIEFOWSBQVVJQT1NFLiAgSVQgSVMgIFBST1ZJREVEICAiQVMgSVMi
ICAgICAqfAorfCogICAgIFdJVEhPVVQgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELiAgTlZJRElBLCBDT1JQT1ItICAgICAqfAorfCogICAgIEFUSU9OIERJU0NMQUlNUyBB
TEwgV0FSUkFOVElFUyAgV0lUSCBSRUdBUkQgIFRPIFRISVMgU09VUkNFIENPREUsICAgICAqfAor
fCogICAgIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSwgTk9OSU5GUklOR0UtICAgICAqfAorfCogICAgIE1FTlQsICBBTkQgRklUTkVTUyAgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgIElOIE5PIEVWRU5UIFNIQUxMICAgICAqfAorfCogICAgIE5W
SURJQSwgQ09SUE9SQVRJT04gIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsICBJTkRJUkVDVCwg
IElOQ0ktICAgICAqfAorfCogICAgIERFTlRBTCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTLCAg
T1IgQU5ZIERBTUFHRVMgIFdIQVRTT0VWRVIgUkUtICAgICAqfAorfCogICAgIFNVTFRJTkcgRlJP
TSBMT1NTIE9GIFVTRSwgIERBVEEgT1IgUFJPRklUUywgIFdIRVRIRVIgSU4gQU4gQUNUSU9OICAg
ICAqfAorfCogICAgIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFD
VElPTiwgIEFSSVNJTkcgT1VUIE9GICAgICAqfAorfCogICAgIE9SIElOIENPTk5FQ1RJT04gV0lU
SCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09VUkNFIENPREUuICAgICAqfAorfCog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqfAorfCogICAgIFUuUy4gR292ZXJubWVudCAgRW5kICBVc2Vycy4g
ICBUaGlzIHNvdXJjZSBjb2RlICBpcyBhICJjb21tZXJjaWFsICAgICAqfAorfCogICAgIGl0ZW0s
IiAgYXMgdGhhdCAgdGVybSBpcyAgZGVmaW5lZCBhdCAgNDggQy5GLlIuIDIuMTAxIChPQ1QgMTk5
NSksICAgICAqfAorfCogICAgIGNvbnNpc3RpbmcgIG9mICJjb21tZXJjaWFsICBjb21wdXRlciAg
c29mdHdhcmUiICBhbmQgICJjb21tZXJjaWFsICAgICAqfAorfCogICAgIGNvbXB1dGVyICBzb2Z0
d2FyZSAgZG9jdW1lbnRhdGlvbiwiICBhcyBzdWNoICB0ZXJtcyAgYXJlICB1c2VkIGluICAgICAq
fAorfCogICAgIDQ4IEMuRi5SLiAxMi4yMTIgKFNFUFQgMTk5NSkgIGFuZCBpcyBwcm92aWRlZCB0
byB0aGUgVS5TLiBHb3Zlcm4tICAgICAqfAorfCogICAgIG1lbnQgb25seSBhcyAgYSBjb21tZXJj
aWFsIGVuZCBpdGVtLiAgIENvbnNpc3RlbnQgd2l0aCAgNDggQy5GLlIuICAgICAqfAorfCogICAg
IDEyLjIxMiBhbmQgIDQ4IEMuRi5SLiAyMjcuNzIwMi0xIHRocm91Z2ggIDIyNy43MjAyLTQgKEpV
TkUgMTk5NSksICAgICAqfAorfCogICAgIGFsbCBVLlMuIEdvdmVybm1lbnQgRW5kIFVzZXJzICBh
Y3F1aXJlIHRoZSBzb3VyY2UgY29kZSAgd2l0aCBvbmx5ICAgICAqfAorfCogICAgIHRob3NlIHJp
Z2h0cyBzZXQgZm9ydGggaGVyZWluLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqfAorfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorIFwqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisK
Ky8qCisgKiBHUEwgbGljZW5zaW5nIG5vdGUgLS0gblZpZGlhIGlzIGFsbG93aW5nIGEgbGliZXJh
bCBpbnRlcnByZXRhdGlvbiBvZgorICogdGhlIGRvY3VtZW50YXRpb24gcmVzdHJpY3Rpb24gYWJv
dmUsIHRvIG1lcmVseSBzYXkgdGhhdCB0aGlzIG5WaWRpYSdzCisgKiBjb3B5cmlnaHQgYW5kIGRp
c2NsYWltZXIgc2hvdWxkIGJlIGluY2x1ZGVkIHdpdGggYWxsIGNvZGUgZGVyaXZlZAorICogZnJv
bSB0aGlzIHNvdXJjZS4gIC0tIEplZmYgR2FyemlrIDxqZ2FyemlrQHBvYm94LmNvbT4sIDAxL05v
di85OSAKKyAqLworCisvKiAkWEZyZWU4NjogeGMvcHJvZ3JhbXMvWHNlcnZlci9ody94ZnJlZTg2
L2RyaXZlcnMvbnYvcml2YV9ody5jLHYgMS4zMyAyMDAyLzA4LzA1IDIwOjQ3OjA2IG12b2prb3Zp
IEV4cCAkICovCisKKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2lf
aWRzLmg+CisjaW5jbHVkZSAicml2YV9ody5oIgorI2luY2x1ZGUgInJpdmFfdGJsLmgiCisjaW5j
bHVkZSAibnZfdHlwZS5oIgorCisvKgorICogVGhpcyBmaWxlIGlzIGFuIE9TLWFnbm9zdGljIGZp
bGUgdXNlZCB0byBtYWtlIFJJVkEgMTI4IGFuZCBSSVZBIFROVAorICogb3BlcmF0ZSBpZGVudGlj
YWxseSAoZXhjZXB0IFROVCBoYXMgbW9yZSBtZW1vcnkgYW5kIGJldHRlciAzRCBxdWFsaXR5Lgor
ICovCitzdGF0aWMgaW50IG52M0J1c3kKKygKKyAgICBSSVZBX0hXX0lOU1QgKmNoaXAKKykKK3sK
KyAgICByZXR1cm4gKChjaGlwLT5Sb3AtPkZpZm9GcmVlIDwgY2hpcC0+Rmlmb0VtcHR5Q291bnQp
IHx8IChjaGlwLT5QR1JBUEhbMHgwMDAwMDZCMC80XSAmIDB4MDEpKTsKK30KK3N0YXRpYyBpbnQg
bnY0QnVzeQorKAorICAgIFJJVkFfSFdfSU5TVCAqY2hpcAorKQoreworICAgIHJldHVybiAoKGNo
aXAtPlJvcC0+Rmlmb0ZyZWUgPCBjaGlwLT5GaWZvRW1wdHlDb3VudCkgfHwgKGNoaXAtPlBHUkFQ
SFsweDAwMDAwNzAwLzRdICYgMHgwMSkpOworfQorc3RhdGljIGludCBudjEwQnVzeQorKAorICAg
IFJJVkFfSFdfSU5TVCAqY2hpcAorKQoreworICAgIHJldHVybiAoKGNoaXAtPlJvcC0+Rmlmb0Zy
ZWUgPCBjaGlwLT5GaWZvRW1wdHlDb3VudCkgfHwgKGNoaXAtPlBHUkFQSFsweDAwMDAwNzAwLzRd
ICYgMHgwMSkpOworfQorCitzdGF0aWMgdm9pZCB2Z2FMb2NrVW5sb2NrCisoCisgICAgUklWQV9I
V19JTlNUICpjaGlwLAorICAgIGludCAgICAgICAgICAgTG9jaworKQoreworICAgIFUwMDggY3Ix
MTsKKyAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDNENCwgMHgxMSk7CisgICAgY3IxMSA9IFZH
QV9SRDA4KGNoaXAtPlBDSU8sIDB4M0Q1KTsKKyAgICBpZihMb2NrKSBjcjExIHw9IDB4ODA7Cisg
ICAgZWxzZSBjcjExICY9IH4weDgwOworICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4M0Q1LCBj
cjExKTsKK30KK3N0YXRpYyB2b2lkIG52M0xvY2tVbmxvY2sKKygKKyAgICBSSVZBX0hXX0lOU1Qg
KmNoaXAsCisgICAgaW50ICAgICAgICAgICBMb2NrCispCit7CisgICAgVkdBX1dSMDgoY2hpcC0+
UFZJTywgMHgzQzQsIDB4MDYpOworICAgIFZHQV9XUjA4KGNoaXAtPlBWSU8sIDB4M0M1LCBMb2Nr
ID8gMHg5OSA6IDB4NTcpOworICAgIHZnYUxvY2tVbmxvY2soY2hpcCwgTG9jayk7Cit9CitzdGF0
aWMgdm9pZCBudjRMb2NrVW5sb2NrCisoCisgICAgUklWQV9IV19JTlNUICpjaGlwLAorICAgIGlu
dCAgICAgICAgICAgTG9jaworKQoreworICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4M0Q0LCAw
eDFGKTsKKyAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDNENSwgTG9jayA/IDB4OTkgOiAweDU3
KTsKKyAgICB2Z2FMb2NrVW5sb2NrKGNoaXAsIExvY2spOworfQorCitzdGF0aWMgaW50IFNob3dI
aWRlQ3Vyc29yCisoCisgICAgUklWQV9IV19JTlNUICpjaGlwLAorICAgIGludCAgICAgICAgICAg
U2hvd0hpZGUKKykKK3sKKyAgICBpbnQgY3Vyc29yOworICAgIGN1cnNvciAgICAgICAgICAgICAg
ICAgICAgICA9ICBjaGlwLT5DdXJyZW50U3RhdGUtPmN1cnNvcjE7CisgICAgY2hpcC0+Q3VycmVu
dFN0YXRlLT5jdXJzb3IxID0gKGNoaXAtPkN1cnJlbnRTdGF0ZS0+Y3Vyc29yMSAmIDB4RkUpIHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2hvd0hpZGUgJiAweDAxKTsKKyAg
ICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDNENCwgMHgzMSk7CisgICAgVkdBX1dSMDgoY2hpcC0+
UENJTywgMHgzRDUsIGNoaXAtPkN1cnJlbnRTdGF0ZS0+Y3Vyc29yMSk7CisgICAgcmV0dXJuIChj
dXJzb3IgJiAweDAxKTsKK30KKworc3RhdGljIGludCBudjEwU2hvd0hpZGVDdXJzb3IKKygKKyAg
ICBSSVZBX0hXX0lOU1QgKmNoaXAsCisgICAgaW50ICAgICAgICAgICBTaG93SGlkZQorKQorewor
ICAgIHVuc2lnbmVkIGludCBjdXJzb3I7CisgICAgY3Vyc29yICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAgY2hpcC0+Q3VycmVudFN0YXRlLT5jdXJzb3JDb25maWc7CisgICAgY2hpcC0+Q3Vy
cmVudFN0YXRlLT5jdXJzb3JDb25maWcgPSAoY2hpcC0+UENSVENbMHgwMDAwMDgxMC80XSAmIDB4
RkZGRkZGRkUpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2hvd0hpZGUg
JiAweDAxKTsKKyAgICBjaGlwLT5QQ1JUQ1sweDAwMDAwODEwLzRdID0gY2hpcC0+Q3VycmVudFN0
YXRlLT5jdXJzb3JDb25maWc7CisgICAgcmV0dXJuIChjdXJzb3IgJiAweDAxKTsKK30KKworLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKipcCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyogVGhlIHZpZGVvIGFy
Yml0cmF0aW9uIHJvdXRpbmVzIGNhbGN1bGF0ZSBzb21lICJtYWdpYyIgbnVtYmVycy4gIEZpeGVz
ICAgICAgKgorKiB0aGUgc25vdyBzZWVuIHdoZW4gYWNjZXNzaW5nIHRoZSBmcmFtZWJ1ZmZlciB3
aXRob3V0IGl0LiAgICAgICAgICAgICAgICAgICAqCisqIEl0IGp1c3Qgd29ya3MgKEkgaG9wZSku
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKgorXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgREVG
QVVMVF9HUl9MV00gMTAwCisjZGVmaW5lIERFRkFVTFRfVklEX0xXTSAxMDAKKyNkZWZpbmUgREVG
QVVMVF9HUl9CVVJTVF9TSVpFIDI1NgorI2RlZmluZSBERUZBVUxUX1ZJRF9CVVJTVF9TSVpFIDEy
OAorI2RlZmluZSBWSURFTwkJMAorI2RlZmluZSBHUkFQSElDUwkxCisjZGVmaW5lIE1QT1JUCQky
CisjZGVmaW5lIEVOR0lORQkJMworI2RlZmluZSBHRklGT19TSVpFCTMyMAorI2RlZmluZSBHRklG
T19TSVpFXzEyOAkyNTYKKyNkZWZpbmUgTUZJRk9fU0laRQkxMjAKKyNkZWZpbmUgVkZJRk9fU0la
RQkyNTYKKyNkZWZpbmUJQUJTKGEpCShhPjA/YTotYSkKK3R5cGVkZWYgc3RydWN0IHsKKyAgaW50
IGdkcmFpbl9yYXRlOworICBpbnQgdmRyYWluX3JhdGU7CisgIGludCBtZHJhaW5fcmF0ZTsKKyAg
aW50IGdidXJzdF9zaXplOworICBpbnQgdmJ1cnN0X3NpemU7CisgIGNoYXIgdmlkX2VuOworICBj
aGFyIGdyX2VuOworICBpbnQgd2Ntb2NjLCB3Y2dvY2MsIHdjdm9jYywgd2N2bHdtLCB3Y2dsd207
CisgIGludCBieV9nZmFjYzsKKyAgY2hhciB2aWRfb25seV9vbmNlOworICBjaGFyIGdyX29ubHlf
b25jZTsKKyAgY2hhciBmaXJzdF92YWNjOworICBjaGFyIGZpcnN0X2dhY2M7CisgIGNoYXIgZmly
c3RfbWFjYzsKKyAgaW50IHZvY2M7CisgIGludCBnb2NjOworICBpbnQgbW9jYzsKKyAgY2hhciBj
dXI7CisgIGNoYXIgZW5naW5lX2VuOworICBjaGFyIGNvbnZlcmdlZDsKKyAgaW50IHByaW9yaXR5
OworfSBudjNfYXJiX2luZm87Cit0eXBlZGVmIHN0cnVjdCB7CisgIGludCBncmFwaGljc19sd207
CisgIGludCB2aWRlb19sd207CisgIGludCBncmFwaGljc19idXJzdF9zaXplOworICBpbnQgdmlk
ZW9fYnVyc3Rfc2l6ZTsKKyAgaW50IGdyYXBoaWNzX2hpX3ByaW9yaXR5OworICBpbnQgbWVkaWFf
aGlfcHJpb3JpdHk7CisgIGludCBydGxfdmFsdWVzOworICBpbnQgdmFsaWQ7Cit9IG52M19maWZv
X2luZm87Cit0eXBlZGVmIHN0cnVjdCB7CisgIGNoYXIgcGl4X2JwcDsKKyAgY2hhciBlbmFibGVf
dmlkZW87CisgIGNoYXIgZ3JfZHVyaW5nX3ZpZDsKKyAgY2hhciBlbmFibGVfbXA7CisgIGludCBt
ZW1vcnlfd2lkdGg7CisgIGludCB2aWRlb19zY2FsZTsKKyAgaW50IHBjbGtfa2h6OworICBpbnQg
bWNsa19raHo7CisgIGludCBtZW1fcGFnZV9taXNzOworICBpbnQgbWVtX2xhdGVuY3k7CisgIGNo
YXIgbWVtX2FsaWduZWQ7Cit9IG52M19zaW1fc3RhdGU7Cit0eXBlZGVmIHN0cnVjdCB7CisgIGlu
dCBncmFwaGljc19sd207CisgIGludCB2aWRlb19sd207CisgIGludCBncmFwaGljc19idXJzdF9z
aXplOworICBpbnQgdmlkZW9fYnVyc3Rfc2l6ZTsKKyAgaW50IHZhbGlkOworfSBudjRfZmlmb19p
bmZvOwordHlwZWRlZiBzdHJ1Y3QgeworICBpbnQgcGNsa19raHo7CisgIGludCBtY2xrX2toejsK
KyAgaW50IG52Y2xrX2toejsKKyAgY2hhciBtZW1fcGFnZV9taXNzOworICBjaGFyIG1lbV9sYXRl
bmN5OworICBpbnQgbWVtb3J5X3dpZHRoOworICBjaGFyIGVuYWJsZV92aWRlbzsKKyAgY2hhciBn
cl9kdXJpbmdfdmlkOworICBjaGFyIHBpeF9icHA7CisgIGNoYXIgbWVtX2FsaWduZWQ7CisgIGNo
YXIgZW5hYmxlX21wOworfSBudjRfc2ltX3N0YXRlOwordHlwZWRlZiBzdHJ1Y3QgeworICBpbnQg
Z3JhcGhpY3NfbHdtOworICBpbnQgdmlkZW9fbHdtOworICBpbnQgZ3JhcGhpY3NfYnVyc3Rfc2l6
ZTsKKyAgaW50IHZpZGVvX2J1cnN0X3NpemU7CisgIGludCB2YWxpZDsKK30gbnYxMF9maWZvX2lu
Zm87Cit0eXBlZGVmIHN0cnVjdCB7CisgIGludCBwY2xrX2toejsKKyAgaW50IG1jbGtfa2h6Owor
ICBpbnQgbnZjbGtfa2h6OworICBjaGFyIG1lbV9wYWdlX21pc3M7CisgIGNoYXIgbWVtX2xhdGVu
Y3k7CisgIGludCBtZW1vcnlfdHlwZTsKKyAgaW50IG1lbW9yeV93aWR0aDsKKyAgY2hhciBlbmFi
bGVfdmlkZW87CisgIGNoYXIgZ3JfZHVyaW5nX3ZpZDsKKyAgY2hhciBwaXhfYnBwOworICBjaGFy
IG1lbV9hbGlnbmVkOworICBjaGFyIGVuYWJsZV9tcDsKK30gbnYxMF9zaW1fc3RhdGU7CitzdGF0
aWMgaW50IG52M19pdGVyYXRlKG52M19maWZvX2luZm8gKnJlc19pbmZvLCBudjNfc2ltX3N0YXRl
ICogc3RhdGUsIG52M19hcmJfaW5mbyAqYWluZm8pCit7CisgICAgaW50IGl0ZXIgPSAwOworICAg
IGludCB0bXA7CisgICAgaW50IHZmc2l6ZSwgbWZzaXplLCBnZnNpemU7CisgICAgaW50IG1idXJz
dF9zaXplID0gMzI7CisgICAgaW50IG1taXNzZXMsIGdtaXNzZXMsIHZtaXNzZXM7CisgICAgaW50
IG1pc3NlczsKKyAgICBpbnQgdmx3bSwgZ2x3bSwgbWx3bTsKKyAgICBpbnQgbGFzdCwgbmV4dCwg
Y3VyOworICAgIGludCBtYXhfZ2ZzaXplIDsKKyAgICBsb25nIG5zOworCisgICAgdmx3bSA9IDA7
CisgICAgZ2x3bSA9IDA7CisgICAgbWx3bSA9IDA7CisgICAgdmZzaXplID0gMDsKKyAgICBnZnNp
emUgPSAwOworICAgIGN1ciA9IGFpbmZvLT5jdXI7CisgICAgbW1pc3NlcyA9IDI7CisgICAgZ21p
c3NlcyA9IDI7CisgICAgdm1pc3NlcyA9IDI7CisgICAgaWYgKGFpbmZvLT5nYnVyc3Rfc2l6ZSA9
PSAxMjgpIG1heF9nZnNpemUgPSBHRklGT19TSVpFXzEyODsKKyAgICBlbHNlICBtYXhfZ2ZzaXpl
ID0gR0ZJRk9fU0laRTsKKyAgICBtYXhfZ2ZzaXplID0gR0ZJRk9fU0laRTsKKyAgICB3aGlsZSAo
MSkKKyAgICB7CisgICAgICAgIGlmIChhaW5mby0+dmlkX2VuKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoYWluZm8tPndjdm9jYyA+IGFpbmZvLT52b2NjKSBhaW5mby0+d2N2b2NjID0gYWlu
Zm8tPnZvY2M7CisgICAgICAgICAgICBpZiAoYWluZm8tPndjdmx3bSA+IHZsd20pIGFpbmZvLT53
Y3Zsd20gPSB2bHdtIDsKKyAgICAgICAgICAgIG5zID0gMTAwMDAwMCAqIGFpbmZvLT52YnVyc3Rf
c2l6ZS8oc3RhdGUtPm1lbW9yeV93aWR0aC84KS9zdGF0ZS0+bWNsa19raHo7CisgICAgICAgICAg
ICB2ZnNpemUgPSBucyAqIGFpbmZvLT52ZHJhaW5fcmF0ZSAvIDEwMDAwMDA7CisgICAgICAgICAg
ICB2ZnNpemUgPSAgYWluZm8tPndjdmx3bSAtIGFpbmZvLT52YnVyc3Rfc2l6ZSArIHZmc2l6ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoc3RhdGUtPmVuYWJsZV9tcCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKGFpbmZvLT53Y21vY2MgPiBhaW5mby0+bW9jYykgYWluZm8tPndjbW9jYyA9
IGFpbmZvLT5tb2NjOworICAgICAgICB9CisgICAgICAgIGlmIChhaW5mby0+Z3JfZW4pCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChhaW5mby0+d2NnbHdtID4gZ2x3bSkgYWluZm8tPndjZ2x3
bSA9IGdsd20gOworICAgICAgICAgICAgaWYgKGFpbmZvLT53Y2dvY2MgPiBhaW5mby0+Z29jYykg
YWluZm8tPndjZ29jYyA9IGFpbmZvLT5nb2NjOworICAgICAgICAgICAgbnMgPSAxMDAwMDAwICog
KGFpbmZvLT5nYnVyc3Rfc2l6ZS8oc3RhdGUtPm1lbW9yeV93aWR0aC84KSkvc3RhdGUtPm1jbGtf
a2h6OworICAgICAgICAgICAgZ2ZzaXplID0gKG5zICogKGxvbmcpIGFpbmZvLT5nZHJhaW5fcmF0
ZSkvMTAwMDAwMDsKKyAgICAgICAgICAgIGdmc2l6ZSA9IGFpbmZvLT53Y2dsd20gLSBhaW5mby0+
Z2J1cnN0X3NpemUgKyBnZnNpemU7CisgICAgICAgIH0KKyAgICAgICAgbWZzaXplID0gMDsKKyAg
ICAgICAgaWYgKCFzdGF0ZS0+Z3JfZHVyaW5nX3ZpZCAmJiBhaW5mby0+dmlkX2VuKQorICAgICAg
ICAgICAgaWYgKGFpbmZvLT52aWRfZW4gJiYgKGFpbmZvLT52b2NjIDwgMCkgJiYgIWFpbmZvLT52
aWRfb25seV9vbmNlKQorICAgICAgICAgICAgICAgIG5leHQgPSBWSURFTzsKKyAgICAgICAgICAg
IGVsc2UgaWYgKGFpbmZvLT5tb2NjIDwgMCkKKyAgICAgICAgICAgICAgICBuZXh0ID0gTVBPUlQ7
CisgICAgICAgICAgICBlbHNlIGlmIChhaW5mby0+Z29jYzwgYWluZm8tPmJ5X2dmYWNjKQorICAg
ICAgICAgICAgICAgIG5leHQgPSBHUkFQSElDUzsKKyAgICAgICAgICAgIGVsc2UgcmV0dXJuICgw
KTsKKyAgICAgICAgZWxzZSBzd2l0Y2ggKGFpbmZvLT5wcmlvcml0eSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjYXNlIFZJREVPOgorICAgICAgICAgICAgICAgICAgICBpZiAoYWlu
Zm8tPnZpZF9lbiAmJiBhaW5mby0+dm9jYzwwICYmICFhaW5mby0+dmlkX29ubHlfb25jZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSBWSURFTzsKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoYWluZm8tPmdyX2VuICYmIGFpbmZvLT5nb2NjPDAgJiYgIWFpbmZvLT5ncl9vbmx5
X29uY2UpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gR1JBUEhJQ1M7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGFpbmZvLT5tb2NjPDApCisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXh0ID0gTVBPUlQ7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgICAgcmV0dXJuICgw
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHUkFQ
SElDUzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFpbmZvLT5ncl9lbiAmJiBhaW5mby0+Z29j
YzwwICYmICFhaW5mby0+Z3Jfb25seV9vbmNlKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV4
dCA9IEdSQVBISUNTOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhaW5mby0+dmlkX2Vu
ICYmIGFpbmZvLT52b2NjPDAgJiYgIWFpbmZvLT52aWRfb25seV9vbmNlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgbmV4dCA9IFZJREVPOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChh
aW5mby0+bW9jYzwwKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCA9IE1QT1JUOworICAg
ICAgICAgICAgICAgICAgICBlbHNlICAgIHJldHVybiAoMCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGlm
IChhaW5mby0+bW9jYzwwKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCA9IE1QT1JUOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhaW5mby0+Z3JfZW4gJiYgYWluZm8tPmdvY2M8
MCAmJiAhYWluZm8tPmdyX29ubHlfb25jZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHQg
PSBHUkFQSElDUzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYWluZm8tPnZpZF9lbiAm
JiBhaW5mby0+dm9jYzwwICYmICFhaW5mby0+dmlkX29ubHlfb25jZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5leHQgPSBWSURFTzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSAgICByZXR1
cm4gKDApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgbGFzdCA9IGN1cjsKKyAgICAgICAgY3VyID0gbmV4dDsKKyAgICAgICAgaXRlcisrOworICAg
ICAgICBzd2l0Y2ggKGN1cikKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBWSURFTzoKKyAg
ICAgICAgICAgICAgICBpZiAobGFzdD09Y3VyKSAgICBtaXNzZXMgPSAwOworICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGFpbmZvLT5maXJzdF92YWNjKSAgIG1pc3NlcyA9IHZtaXNzZXM7CisgICAg
ICAgICAgICAgICAgZWxzZSAgICBtaXNzZXMgPSAxOworICAgICAgICAgICAgICAgIGFpbmZvLT5m
aXJzdF92YWNjID0gMDsKKyAgICAgICAgICAgICAgICBpZiAobGFzdCE9Y3VyKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbnMgPSAgMTAwMDAwMCAqICh2bWlzc2VzKnN0
YXRlLT5tZW1fcGFnZV9taXNzICsgc3RhdGUtPm1lbV9sYXRlbmN5KS9zdGF0ZS0+bWNsa19raHo7
IAorICAgICAgICAgICAgICAgICAgICB2bHdtID0gbnMgKiBhaW5mby0+dmRyYWluX3JhdGUvIDEw
MDAwMDA7CisgICAgICAgICAgICAgICAgICAgIHZsd20gPSBhaW5mby0+dm9jYyAtIHZsd207Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG5zID0gMTAwMDAwMCoobWlzc2VzKnN0
YXRlLT5tZW1fcGFnZV9taXNzICsgYWluZm8tPnZidXJzdF9zaXplKS8oc3RhdGUtPm1lbW9yeV93
aWR0aC84KS9zdGF0ZS0+bWNsa19raHo7CisgICAgICAgICAgICAgICAgYWluZm8tPnZvY2MgPSBh
aW5mby0+dm9jYyArIGFpbmZvLT52YnVyc3Rfc2l6ZSAtIG5zKmFpbmZvLT52ZHJhaW5fcmF0ZS8x
MDAwMDAwOworICAgICAgICAgICAgICAgIGFpbmZvLT5nb2NjID0gYWluZm8tPmdvY2MgLSBucyph
aW5mby0+Z2RyYWluX3JhdGUvMTAwMDAwMDsKKyAgICAgICAgICAgICAgICBhaW5mby0+bW9jYyA9
IGFpbmZvLT5tb2NjIC0gbnMqYWluZm8tPm1kcmFpbl9yYXRlLzEwMDAwMDA7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdSQVBISUNTOgorICAgICAgICAgICAgICAg
IGlmIChsYXN0PT1jdXIpICAgIG1pc3NlcyA9IDA7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAo
YWluZm8tPmZpcnN0X2dhY2MpICAgbWlzc2VzID0gZ21pc3NlczsKKyAgICAgICAgICAgICAgICBl
bHNlICAgIG1pc3NlcyA9IDE7CisgICAgICAgICAgICAgICAgYWluZm8tPmZpcnN0X2dhY2MgPSAw
OworICAgICAgICAgICAgICAgIGlmIChsYXN0IT1jdXIpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBucyA9IDEwMDAwMDAqKGdtaXNzZXMqc3RhdGUtPm1lbV9wYWdlX21p
c3MgKyBzdGF0ZS0+bWVtX2xhdGVuY3kpL3N0YXRlLT5tY2xrX2toeiA7CisgICAgICAgICAgICAg
ICAgICAgIGdsd20gPSBucyAqIGFpbmZvLT5nZHJhaW5fcmF0ZS8xMDAwMDAwOworICAgICAgICAg
ICAgICAgICAgICBnbHdtID0gYWluZm8tPmdvY2MgLSBnbHdtOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBucyA9IDEwMDAwMDAqKG1pc3NlcypzdGF0ZS0+bWVtX3BhZ2VfbWlz
cyArIGFpbmZvLT5nYnVyc3Rfc2l6ZS8oc3RhdGUtPm1lbW9yeV93aWR0aC84KSkvc3RhdGUtPm1j
bGtfa2h6OworICAgICAgICAgICAgICAgIGFpbmZvLT52b2NjID0gYWluZm8tPnZvY2MgKyAwIC0g
bnMqYWluZm8tPnZkcmFpbl9yYXRlLzEwMDAwMDA7CisgICAgICAgICAgICAgICAgYWluZm8tPmdv
Y2MgPSBhaW5mby0+Z29jYyArIGFpbmZvLT5nYnVyc3Rfc2l6ZSAtIG5zKmFpbmZvLT5nZHJhaW5f
cmF0ZS8xMDAwMDAwOworICAgICAgICAgICAgICAgIGFpbmZvLT5tb2NjID0gYWluZm8tPm1vY2Mg
KyAwIC0gbnMqYWluZm8tPm1kcmFpbl9yYXRlLzEwMDAwMDA7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGlmIChsYXN0PT1jdXIp
ICAgIG1pc3NlcyA9IDA7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYWluZm8tPmZpcnN0X21h
Y2MpICAgbWlzc2VzID0gbW1pc3NlczsKKyAgICAgICAgICAgICAgICBlbHNlICAgIG1pc3NlcyA9
IDE7CisgICAgICAgICAgICAgICAgYWluZm8tPmZpcnN0X21hY2MgPSAwOworICAgICAgICAgICAg
ICAgIG5zID0gMTAwMDAwMCoobWlzc2VzKnN0YXRlLT5tZW1fcGFnZV9taXNzICsgbWJ1cnN0X3Np
emUvKHN0YXRlLT5tZW1vcnlfd2lkdGgvOCkpL3N0YXRlLT5tY2xrX2toejsKKyAgICAgICAgICAg
ICAgICBhaW5mby0+dm9jYyA9IGFpbmZvLT52b2NjICsgMCAtIG5zKmFpbmZvLT52ZHJhaW5fcmF0
ZS8xMDAwMDAwOworICAgICAgICAgICAgICAgIGFpbmZvLT5nb2NjID0gYWluZm8tPmdvY2MgKyAw
IC0gbnMqYWluZm8tPmdkcmFpbl9yYXRlLzEwMDAwMDA7CisgICAgICAgICAgICAgICAgYWluZm8t
Pm1vY2MgPSBhaW5mby0+bW9jYyArIG1idXJzdF9zaXplIC0gbnMqYWluZm8tPm1kcmFpbl9yYXRl
LzEwMDAwMDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGl0ZXI+MTAwKQorICAgICAgICB7CisgICAgICAgICAgICBhaW5mby0+Y29udmVyZ2VkID0gMDsK
KyAgICAgICAgICAgIHJldHVybiAoMSk7CisgICAgICAgIH0KKyAgICAgICAgbnMgPSAxMDAwMDAw
KmFpbmZvLT5nYnVyc3Rfc2l6ZS8oc3RhdGUtPm1lbW9yeV93aWR0aC84KS9zdGF0ZS0+bWNsa19r
aHo7CisgICAgICAgIHRtcCA9IG5zICogYWluZm8tPmdkcmFpbl9yYXRlLzEwMDAwMDA7CisgICAg
ICAgIGlmIChBQlMoYWluZm8tPmdidXJzdF9zaXplKSArICgoQUJTKGFpbmZvLT53Y2dsd20pICsg
MTYgKSAmIH4weDcpIC0gdG1wID4gbWF4X2dmc2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAg
YWluZm8tPmNvbnZlcmdlZCA9IDA7CisgICAgICAgICAgICByZXR1cm4gKDEpOworICAgICAgICB9
CisgICAgICAgIG5zID0gMTAwMDAwMCphaW5mby0+dmJ1cnN0X3NpemUvKHN0YXRlLT5tZW1vcnlf
d2lkdGgvOCkvc3RhdGUtPm1jbGtfa2h6OworICAgICAgICB0bXAgPSBucyAqIGFpbmZvLT52ZHJh
aW5fcmF0ZS8xMDAwMDAwOworICAgICAgICBpZiAoQUJTKGFpbmZvLT52YnVyc3Rfc2l6ZSkgKyAo
QUJTKGFpbmZvLT53Y3Zsd20gKyAzMikgJiB+MHhmKSAgLSB0bXA+IFZGSUZPX1NJWkUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGFpbmZvLT5jb252ZXJnZWQgPSAwOworICAgICAgICAgICAgcmV0
dXJuICgxKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoQUJTKGFpbmZvLT5nb2NjKSA+IG1heF9n
ZnNpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFpbmZvLT5jb252ZXJnZWQgPSAwOworICAg
ICAgICAgICAgcmV0dXJuICgxKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoQUJTKGFpbmZvLT52
b2NjKSA+IFZGSUZPX1NJWkUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFpbmZvLT5jb252ZXJn
ZWQgPSAwOworICAgICAgICAgICAgcmV0dXJuICgxKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
QUJTKGFpbmZvLT5tb2NjKSA+IE1GSUZPX1NJWkUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFp
bmZvLT5jb252ZXJnZWQgPSAwOworICAgICAgICAgICAgcmV0dXJuICgxKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoQUJTKHZmc2l6ZSkgPiBWRklGT19TSVpFKQorICAgICAgICB7CisgICAgICAg
ICAgICBhaW5mby0+Y29udmVyZ2VkID0gMDsKKyAgICAgICAgICAgIHJldHVybiAoMSk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKEFCUyhnZnNpemUpID4gbWF4X2dmc2l6ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgYWluZm8tPmNvbnZlcmdlZCA9IDA7CisgICAgICAgICAgICByZXR1cm4gKDEp
OworICAgICAgICB9CisgICAgICAgIGlmIChBQlMobWZzaXplKSA+IE1GSUZPX1NJWkUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGFpbmZvLT5jb252ZXJnZWQgPSAwOworICAgICAgICAgICAgcmV0
dXJuICgxKTsKKyAgICAgICAgfQorICAgIH0KK30KK3N0YXRpYyBjaGFyIG52M19hcmIobnYzX2Zp
Zm9faW5mbyAqIHJlc19pbmZvLCBudjNfc2ltX3N0YXRlICogc3RhdGUsICBudjNfYXJiX2luZm8g
KmFpbmZvKSAKK3sKKyAgICBsb25nIGVucywgdm5zLCBtbnMsIGduczsKKyAgICBpbnQgbW1pc3Nl
cywgZ21pc3Nlcywgdm1pc3NlcywgZWJ1cnN0X3NpemUsIG1idXJzdF9zaXplOworICAgIGludCBy
ZWZyZXNoX2N5Y2xlOworCisgICAgcmVmcmVzaF9jeWNsZSA9IDA7CisgICAgcmVmcmVzaF9jeWNs
ZSA9IDIqKHN0YXRlLT5tY2xrX2toei9zdGF0ZS0+cGNsa19raHopICsgNTsKKyAgICBtbWlzc2Vz
ID0gMjsKKyAgICBpZiAoc3RhdGUtPm1lbV9hbGlnbmVkKSBnbWlzc2VzID0gMjsKKyAgICBlbHNl
ICAgIGdtaXNzZXMgPSAzOworICAgIHZtaXNzZXMgPSAyOworICAgIGVidXJzdF9zaXplID0gc3Rh
dGUtPm1lbW9yeV93aWR0aCAqIDE7CisgICAgbWJ1cnN0X3NpemUgPSAzMjsKKyAgICBnbnMgPSAx
MDAwMDAwICogKGdtaXNzZXMqc3RhdGUtPm1lbV9wYWdlX21pc3MgKyBzdGF0ZS0+bWVtX2xhdGVu
Y3kpL3N0YXRlLT5tY2xrX2toejsKKyAgICBhaW5mby0+YnlfZ2ZhY2MgPSBnbnMqYWluZm8tPmdk
cmFpbl9yYXRlLzEwMDAwMDA7CisgICAgYWluZm8tPndjbW9jYyA9IDA7CisgICAgYWluZm8tPndj
Z29jYyA9IDA7CisgICAgYWluZm8tPndjdm9jYyA9IDA7CisgICAgYWluZm8tPndjdmx3bSA9IDA7
CisgICAgYWluZm8tPndjZ2x3bSA9IDA7CisgICAgYWluZm8tPmVuZ2luZV9lbiA9IDE7CisgICAg
YWluZm8tPmNvbnZlcmdlZCA9IDE7CisgICAgaWYgKGFpbmZvLT5lbmdpbmVfZW4pCisgICAgewor
ICAgICAgICBlbnMgPSAgMTAwMDAwMCooc3RhdGUtPm1lbV9wYWdlX21pc3MgKyBlYnVyc3Rfc2l6
ZS8oc3RhdGUtPm1lbW9yeV93aWR0aC84KSArcmVmcmVzaF9jeWNsZSkvc3RhdGUtPm1jbGtfa2h6
OworICAgICAgICBhaW5mby0+bW9jYyA9IHN0YXRlLT5lbmFibGVfbXAgPyAwLWVucyphaW5mby0+
bWRyYWluX3JhdGUvMTAwMDAwMCA6IDA7CisgICAgICAgIGFpbmZvLT52b2NjID0gYWluZm8tPnZp
ZF9lbiA/IDAtZW5zKmFpbmZvLT52ZHJhaW5fcmF0ZS8xMDAwMDAwIDogMDsKKyAgICAgICAgYWlu
Zm8tPmdvY2MgPSBhaW5mby0+Z3JfZW4gPyAwLWVucyphaW5mby0+Z2RyYWluX3JhdGUvMTAwMDAw
MCA6IDA7CisgICAgICAgIGFpbmZvLT5jdXIgPSBFTkdJTkU7CisgICAgICAgIGFpbmZvLT5maXJz
dF92YWNjID0gMTsKKyAgICAgICAgYWluZm8tPmZpcnN0X2dhY2MgPSAxOworICAgICAgICBhaW5m
by0+Zmlyc3RfbWFjYyA9IDE7CisgICAgICAgIG52M19pdGVyYXRlKHJlc19pbmZvLCBzdGF0ZSxh
aW5mbyk7CisgICAgfQorICAgIGlmIChzdGF0ZS0+ZW5hYmxlX21wKQorICAgIHsKKyAgICAgICAg
bW5zID0gMTAwMDAwMCAqIChtbWlzc2VzKnN0YXRlLT5tZW1fcGFnZV9taXNzICsgbWJ1cnN0X3Np
emUvKHN0YXRlLT5tZW1vcnlfd2lkdGgvOCkgKyByZWZyZXNoX2N5Y2xlKS9zdGF0ZS0+bWNsa19r
aHo7CisgICAgICAgIGFpbmZvLT5tb2NjID0gc3RhdGUtPmVuYWJsZV9tcCA/IDAgOiBtYnVyc3Rf
c2l6ZSAtIG1ucyphaW5mby0+bWRyYWluX3JhdGUvMTAwMDAwMDsKKyAgICAgICAgYWluZm8tPnZv
Y2MgPSBhaW5mby0+dmlkX2VuID8gMCA6IDAtIG1ucyphaW5mby0+dmRyYWluX3JhdGUvMTAwMDAw
MDsKKyAgICAgICAgYWluZm8tPmdvY2MgPSBhaW5mby0+Z3JfZW4gPyAwOiAwLSBtbnMqYWluZm8t
PmdkcmFpbl9yYXRlLzEwMDAwMDA7CisgICAgICAgIGFpbmZvLT5jdXIgPSBNUE9SVDsKKyAgICAg
ICAgYWluZm8tPmZpcnN0X3ZhY2MgPSAxOworICAgICAgICBhaW5mby0+Zmlyc3RfZ2FjYyA9IDE7
CisgICAgICAgIGFpbmZvLT5maXJzdF9tYWNjID0gMDsKKyAgICAgICAgbnYzX2l0ZXJhdGUocmVz
X2luZm8sIHN0YXRlLGFpbmZvKTsKKyAgICB9CisgICAgaWYgKGFpbmZvLT5ncl9lbikKKyAgICB7
CisgICAgICAgIGFpbmZvLT5maXJzdF92YWNjID0gMTsKKyAgICAgICAgYWluZm8tPmZpcnN0X2dh
Y2MgPSAwOworICAgICAgICBhaW5mby0+Zmlyc3RfbWFjYyA9IDE7CisgICAgICAgIGducyA9IDEw
MDAwMDAqKGdtaXNzZXMqc3RhdGUtPm1lbV9wYWdlX21pc3MgKyBhaW5mby0+Z2J1cnN0X3NpemUv
KHN0YXRlLT5tZW1vcnlfd2lkdGgvOCkgKyByZWZyZXNoX2N5Y2xlKS9zdGF0ZS0+bWNsa19raHo7
CisgICAgICAgIGFpbmZvLT5nb2NjID0gYWluZm8tPmdidXJzdF9zaXplIC0gZ25zKmFpbmZvLT5n
ZHJhaW5fcmF0ZS8xMDAwMDAwOworICAgICAgICBhaW5mby0+dm9jYyA9IGFpbmZvLT52aWRfZW4/
IDAtZ25zKmFpbmZvLT52ZHJhaW5fcmF0ZS8xMDAwMDAwIDogMDsKKyAgICAgICAgYWluZm8tPm1v
Y2MgPSBzdGF0ZS0+ZW5hYmxlX21wID8gIDAtZ25zKmFpbmZvLT5tZHJhaW5fcmF0ZS8xMDAwMDAw
OiAwOworICAgICAgICBhaW5mby0+Y3VyID0gR1JBUEhJQ1M7CisgICAgICAgIG52M19pdGVyYXRl
KHJlc19pbmZvLCBzdGF0ZSxhaW5mbyk7CisgICAgfQorICAgIGlmIChhaW5mby0+dmlkX2VuKQor
ICAgIHsKKyAgICAgICAgYWluZm8tPmZpcnN0X3ZhY2MgPSAwOworICAgICAgICBhaW5mby0+Zmly
c3RfZ2FjYyA9IDE7CisgICAgICAgIGFpbmZvLT5maXJzdF9tYWNjID0gMTsKKyAgICAgICAgdm5z
ID0gMTAwMDAwMCoodm1pc3NlcypzdGF0ZS0+bWVtX3BhZ2VfbWlzcyArIGFpbmZvLT52YnVyc3Rf
c2l6ZS8oc3RhdGUtPm1lbW9yeV93aWR0aC84KSArIHJlZnJlc2hfY3ljbGUpL3N0YXRlLT5tY2xr
X2toejsKKyAgICAgICAgYWluZm8tPnZvY2MgPSBhaW5mby0+dmJ1cnN0X3NpemUgLSB2bnMqYWlu
Zm8tPnZkcmFpbl9yYXRlLzEwMDAwMDA7CisgICAgICAgIGFpbmZvLT5nb2NjID0gYWluZm8tPmdy
X2VuPyAoMC12bnMqYWluZm8tPmdkcmFpbl9yYXRlLzEwMDAwMDApIDogMDsKKyAgICAgICAgYWlu
Zm8tPm1vY2MgPSBzdGF0ZS0+ZW5hYmxlX21wPyAwLXZucyphaW5mby0+bWRyYWluX3JhdGUvMTAw
MDAwMCA6MCA7CisgICAgICAgIGFpbmZvLT5jdXIgPSBWSURFTzsKKyAgICAgICAgbnYzX2l0ZXJh
dGUocmVzX2luZm8sIHN0YXRlLCBhaW5mbyk7CisgICAgfQorICAgIGlmIChhaW5mby0+Y29udmVy
Z2VkKQorICAgIHsKKyAgICAgICAgcmVzX2luZm8tPmdyYXBoaWNzX2x3bSA9IChpbnQpQUJTKGFp
bmZvLT53Y2dsd20pICsgMTY7CisgICAgICAgIHJlc19pbmZvLT52aWRlb19sd20gPSAoaW50KUFC
UyhhaW5mby0+d2N2bHdtKSArIDMyOworICAgICAgICByZXNfaW5mby0+Z3JhcGhpY3NfYnVyc3Rf
c2l6ZSA9IGFpbmZvLT5nYnVyc3Rfc2l6ZTsKKyAgICAgICAgcmVzX2luZm8tPnZpZGVvX2J1cnN0
X3NpemUgPSBhaW5mby0+dmJ1cnN0X3NpemU7CisgICAgICAgIHJlc19pbmZvLT5ncmFwaGljc19o
aV9wcmlvcml0eSA9IChhaW5mby0+cHJpb3JpdHkgPT0gR1JBUEhJQ1MpOworICAgICAgICByZXNf
aW5mby0+bWVkaWFfaGlfcHJpb3JpdHkgPSAoYWluZm8tPnByaW9yaXR5ID09IE1QT1JUKTsKKyAg
ICAgICAgaWYgKHJlc19pbmZvLT52aWRlb19sd20gPiAxNjApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJlc19pbmZvLT5ncmFwaGljc19sd20gPSAyNTY7CisgICAgICAgICAgICByZXNfaW5mby0+
dmlkZW9fbHdtID0gMTI4OworICAgICAgICAgICAgcmVzX2luZm8tPmdyYXBoaWNzX2J1cnN0X3Np
emUgPSA2NDsKKyAgICAgICAgICAgIHJlc19pbmZvLT52aWRlb19idXJzdF9zaXplID0gNjQ7Cisg
ICAgICAgICAgICByZXNfaW5mby0+Z3JhcGhpY3NfaGlfcHJpb3JpdHkgPSAwOworICAgICAgICAg
ICAgcmVzX2luZm8tPm1lZGlhX2hpX3ByaW9yaXR5ID0gMDsKKyAgICAgICAgICAgIGFpbmZvLT5j
b252ZXJnZWQgPSAwOworICAgICAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAocmVzX2luZm8tPnZpZGVvX2x3bSA+IDEyOCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmVzX2luZm8tPnZpZGVvX2x3bSA9IDEyODsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKDEp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXNfaW5mby0+Z3JhcGhpY3NfbHdt
ID0gMjU2OworICAgICAgICByZXNfaW5mby0+dmlkZW9fbHdtID0gMTI4OworICAgICAgICByZXNf
aW5mby0+Z3JhcGhpY3NfYnVyc3Rfc2l6ZSA9IDY0OworICAgICAgICByZXNfaW5mby0+dmlkZW9f
YnVyc3Rfc2l6ZSA9IDY0OworICAgICAgICByZXNfaW5mby0+Z3JhcGhpY3NfaGlfcHJpb3JpdHkg
PSAwOworICAgICAgICByZXNfaW5mby0+bWVkaWFfaGlfcHJpb3JpdHkgPSAwOworICAgICAgICBy
ZXR1cm4gKDApOworICAgIH0KK30KK3N0YXRpYyBjaGFyIG52M19nZXRfcGFyYW0obnYzX2ZpZm9f
aW5mbyAqcmVzX2luZm8sIG52M19zaW1fc3RhdGUgKiBzdGF0ZSwgbnYzX2FyYl9pbmZvICphaW5m
bykKK3sKKyAgICBpbnQgZG9uZSwgZyx2LCBwOworICAgIAorICAgIGRvbmUgPSAwOworICAgIGZv
ciAocD0wOyBwIDwgMjsgcCsrKQorICAgIHsKKyAgICAgICAgZm9yIChnPTEyOCA7IGcgPiAzMjsg
Zz0gZz4+IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodj0xMjg7IHYgPj0zMjsgdiA9
IHY+PiAxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGFpbmZvLT5wcmlvcml0eSA9
IHA7CisgICAgICAgICAgICAgICAgYWluZm8tPmdidXJzdF9zaXplID0gZzsgICAgIAorICAgICAg
ICAgICAgICAgIGFpbmZvLT52YnVyc3Rfc2l6ZSA9IHY7CisgICAgICAgICAgICAgICAgZG9uZSA9
IG52M19hcmIocmVzX2luZm8sIHN0YXRlLGFpbmZvKTsKKyAgICAgICAgICAgICAgICBpZiAoZG9u
ZSAmJiAoZz09MTI4KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKChyZXNfaW5mby0+Z3JhcGhp
Y3NfbHdtICsgZykgPiAyNTYpCisgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gMDsKKyAg
ICAgICAgICAgICAgICBpZiAoZG9uZSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBEb25lOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgRG9uZToKKyAgICByZXR1cm4gZG9u
ZTsKK30KK3N0YXRpYyB2b2lkIG52M0NhbGNBcmJpdHJhdGlvbiAKKygKKyAgICBudjNfZmlmb19p
bmZvICogcmVzX2luZm8sCisgICAgbnYzX3NpbV9zdGF0ZSAqIHN0YXRlCispCit7CisgICAgbnYz
X2ZpZm9faW5mbyBzYXZlX2luZm87CisgICAgbnYzX2FyYl9pbmZvIGFpbmZvOworICAgIGNoYXIg
ICByZXNfZ3IsIHJlc192aWQ7CisKKyAgICBhaW5mby5ncl9lbiA9IDE7CisgICAgYWluZm8udmlk
X2VuID0gc3RhdGUtPmVuYWJsZV92aWRlbzsKKyAgICBhaW5mby52aWRfb25seV9vbmNlID0gMDsK
KyAgICBhaW5mby5ncl9vbmx5X29uY2UgPSAwOworICAgIGFpbmZvLmdkcmFpbl9yYXRlID0gKGlu
dCkgc3RhdGUtPnBjbGtfa2h6ICogKHN0YXRlLT5waXhfYnBwLzgpOworICAgIGFpbmZvLnZkcmFp
bl9yYXRlID0gKGludCkgc3RhdGUtPnBjbGtfa2h6ICogMjsKKyAgICBpZiAoc3RhdGUtPnZpZGVv
X3NjYWxlICE9IDApCisgICAgICAgIGFpbmZvLnZkcmFpbl9yYXRlID0gYWluZm8udmRyYWluX3Jh
dGUvc3RhdGUtPnZpZGVvX3NjYWxlOworICAgIGFpbmZvLm1kcmFpbl9yYXRlID0gMzMwMDA7Cisg
ICAgcmVzX2luZm8tPnJ0bF92YWx1ZXMgPSAwOworICAgIGlmICghc3RhdGUtPmdyX2R1cmluZ192
aWQgJiYgc3RhdGUtPmVuYWJsZV92aWRlbykKKyAgICB7CisgICAgICAgIGFpbmZvLmdyX29ubHlf
b25jZSA9IDE7CisgICAgICAgIGFpbmZvLmdyX2VuID0gMTsKKyAgICAgICAgYWluZm8uZ2RyYWlu
X3JhdGUgPSAwOworICAgICAgICByZXNfdmlkID0gbnYzX2dldF9wYXJhbShyZXNfaW5mbywgc3Rh
dGUsICAmYWluZm8pOworICAgICAgICByZXNfdmlkID0gYWluZm8uY29udmVyZ2VkOworICAgICAg
ICBzYXZlX2luZm8udmlkZW9fbHdtID0gcmVzX2luZm8tPnZpZGVvX2x3bTsKKyAgICAgICAgc2F2
ZV9pbmZvLnZpZGVvX2J1cnN0X3NpemUgPSByZXNfaW5mby0+dmlkZW9fYnVyc3Rfc2l6ZTsKKyAg
ICAgICAgYWluZm8udmlkX2VuID0gMTsKKyAgICAgICAgYWluZm8udmlkX29ubHlfb25jZSA9IDE7
CisgICAgICAgIGFpbmZvLmdyX2VuID0gMTsKKyAgICAgICAgYWluZm8uZ2RyYWluX3JhdGUgPSAo
aW50KSBzdGF0ZS0+cGNsa19raHogKiAoc3RhdGUtPnBpeF9icHAvOCk7CisgICAgICAgIGFpbmZv
LnZkcmFpbl9yYXRlID0gMDsKKyAgICAgICAgcmVzX2dyID0gbnYzX2dldF9wYXJhbShyZXNfaW5m
bywgc3RhdGUsICAmYWluZm8pOworICAgICAgICByZXNfZ3IgPSBhaW5mby5jb252ZXJnZWQ7Cisg
ICAgICAgIHJlc19pbmZvLT52aWRlb19sd20gPSBzYXZlX2luZm8udmlkZW9fbHdtOworICAgICAg
ICByZXNfaW5mby0+dmlkZW9fYnVyc3Rfc2l6ZSA9IHNhdmVfaW5mby52aWRlb19idXJzdF9zaXpl
OworICAgICAgICByZXNfaW5mby0+dmFsaWQgPSByZXNfZ3IgJiByZXNfdmlkOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBpZiAoIWFpbmZvLmdyX2VuKSBhaW5mby5nZHJhaW5fcmF0
ZSA9IDA7CisgICAgICAgIGlmICghYWluZm8udmlkX2VuKSBhaW5mby52ZHJhaW5fcmF0ZSA9IDA7
CisgICAgICAgIHJlc19nciA9IG52M19nZXRfcGFyYW0ocmVzX2luZm8sIHN0YXRlLCAgJmFpbmZv
KTsKKyAgICAgICAgcmVzX2luZm8tPnZhbGlkID0gYWluZm8uY29udmVyZ2VkOworICAgIH0KK30K
K3N0YXRpYyB2b2lkIG52M1VwZGF0ZUFyYml0cmF0aW9uU2V0dGluZ3MKKygKKyAgICB1bnNpZ25l
ZCAgICAgIFZDbGssIAorICAgIHVuc2lnbmVkICAgICAgcGl4ZWxEZXB0aCwgCisgICAgdW5zaWdu
ZWQgICAgICpidXJzdCwKKyAgICB1bnNpZ25lZCAgICAgKmx3bSwKKyAgICBSSVZBX0hXX0lOU1Qg
KmNoaXAKKykKK3sKKyAgICBudjNfZmlmb19pbmZvIGZpZm9fZGF0YTsKKyAgICBudjNfc2ltX3N0
YXRlIHNpbV9kYXRhOworICAgIHVuc2lnbmVkIGludCBNLCBOLCBQLCBwbGwsIE1DbGs7CisgICAg
CisgICAgcGxsID0gY2hpcC0+UFJBTURBQzBbMHgwMDAwMDUwNC80XTsgCisgICAgTSA9IChwbGwg
Pj4gMCkgJiAweEZGOyBOID0gKHBsbCA+PiA4KSAmIDB4RkY7IFAgPSAocGxsID4+IDE2KSAmIDB4
MEY7CisgICAgTUNsayA9IChOICogY2hpcC0+Q3J5c3RhbEZyZXFLSHogLyBNKSA+PiBQOworICAg
IHNpbV9kYXRhLnBpeF9icHAgICAgICAgID0gKGNoYXIpcGl4ZWxEZXB0aDsKKyAgICBzaW1fZGF0
YS5lbmFibGVfdmlkZW8gICA9IDA7CisgICAgc2ltX2RhdGEuZW5hYmxlX21wICAgICAgPSAwOwor
ICAgIHNpbV9kYXRhLnZpZGVvX3NjYWxlICAgID0gMTsKKyAgICBzaW1fZGF0YS5tZW1vcnlfd2lk
dGggICA9IChjaGlwLT5QRVhUREVWWzB4MDAwMDAwMDAvNF0gJiAweDEwKSA/IDEyOCA6IDY0Owor
ICAgIHNpbV9kYXRhLm1lbW9yeV93aWR0aCAgID0gMTI4OworCisgICAgc2ltX2RhdGEubWVtX2xh
dGVuY3kgICAgPSA5OworICAgIHNpbV9kYXRhLm1lbV9hbGlnbmVkICAgID0gMTsKKyAgICBzaW1f
ZGF0YS5tZW1fcGFnZV9taXNzICA9IDExOworICAgIHNpbV9kYXRhLmdyX2R1cmluZ192aWQgID0g
MDsKKyAgICBzaW1fZGF0YS5wY2xrX2toeiAgICAgICA9IFZDbGs7CisgICAgc2ltX2RhdGEubWNs
a19raHogICAgICAgPSBNQ2xrOworICAgIG52M0NhbGNBcmJpdHJhdGlvbigmZmlmb19kYXRhLCAm
c2ltX2RhdGEpOworICAgIGlmIChmaWZvX2RhdGEudmFsaWQpCisgICAgeworICAgICAgICBpbnQg
IGIgPSBmaWZvX2RhdGEuZ3JhcGhpY3NfYnVyc3Rfc2l6ZSA+PiA0OworICAgICAgICAqYnVyc3Qg
PSAwOworICAgICAgICB3aGlsZSAoYiA+Pj0gMSkgKCpidXJzdCkrKzsKKyAgICAgICAgKmx3bSAg
ID0gZmlmb19kYXRhLmdyYXBoaWNzX2x3bSA+PiAzOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICAqbHdtICAgPSAweDI0OworICAgICAgICAqYnVyc3QgPSAweDI7CisgICAgfQorfQor
c3RhdGljIHZvaWQgbnY0Q2FsY0FyYml0cmF0aW9uIAorKAorICAgIG52NF9maWZvX2luZm8gKmZp
Zm8sCisgICAgbnY0X3NpbV9zdGF0ZSAqYXJiCispCit7CisgICAgaW50IGRhdGEsIHBhZ2VtaXNz
LCBjYXMsd2lkdGgsIHZpZGVvX2VuYWJsZSwgY29sb3Jfa2V5X2VuYWJsZSwgYnBwLCBhbGlnbjsK
KyAgICBpbnQgbnZjbGtzLCBtY2xrcywgcGNsa3MsIHZwYWdlbWlzcywgY3J0cGFnZW1pc3MsIHZi
czsKKyAgICBpbnQgZm91bmQsIG1jbGtfZXh0cmEsIG1jbGtfbG9vcCwgY2JzLCBtMSwgcDE7Cisg
ICAgaW50IG1jbGtfZnJlcSwgcGNsa19mcmVxLCBudmNsa19mcmVxLCBtcF9lbmFibGU7CisgICAg
aW50IHVzX20sIHVzX24sIHVzX3AsIHZpZGVvX2RyYWluX3JhdGUsIGNydGNfZHJhaW5fcmF0ZTsK
KyAgICBpbnQgdnBtX3VzLCB1c192aWRlbywgdmx3bSwgdmlkZW9fZmlsbF91cywgY3BtX3VzLCB1
c19jcnQsY2x3bTsKKyAgICBpbnQgY3JhdywgdnJhdzsKKworICAgIGZpZm8tPnZhbGlkID0gMTsK
KyAgICBwY2xrX2ZyZXEgPSBhcmItPnBjbGtfa2h6OworICAgIG1jbGtfZnJlcSA9IGFyYi0+bWNs
a19raHo7CisgICAgbnZjbGtfZnJlcSA9IGFyYi0+bnZjbGtfa2h6OworICAgIHBhZ2VtaXNzID0g
YXJiLT5tZW1fcGFnZV9taXNzOworICAgIGNhcyA9IGFyYi0+bWVtX2xhdGVuY3k7CisgICAgd2lk
dGggPSBhcmItPm1lbW9yeV93aWR0aCA+PiA2OworICAgIHZpZGVvX2VuYWJsZSA9IGFyYi0+ZW5h
YmxlX3ZpZGVvOworICAgIGNvbG9yX2tleV9lbmFibGUgPSBhcmItPmdyX2R1cmluZ192aWQ7Cisg
ICAgYnBwID0gYXJiLT5waXhfYnBwOworICAgIGFsaWduID0gYXJiLT5tZW1fYWxpZ25lZDsKKyAg
ICBtcF9lbmFibGUgPSBhcmItPmVuYWJsZV9tcDsKKyAgICBjbHdtID0gMDsKKyAgICB2bHdtID0g
MDsKKyAgICBjYnMgPSAxMjg7CisgICAgcGNsa3MgPSAyOworICAgIG52Y2xrcyA9IDI7CisgICAg
bnZjbGtzICs9IDI7CisgICAgbnZjbGtzICs9IDE7CisgICAgbWNsa3MgPSA1OworICAgIG1jbGtz
ICs9IDM7CisgICAgbWNsa3MgKz0gMTsKKyAgICBtY2xrcyArPSBjYXM7CisgICAgbWNsa3MgKz0g
MTsKKyAgICBtY2xrcyArPSAxOworICAgIG1jbGtzICs9IDE7CisgICAgbWNsa3MgKz0gMTsKKyAg
ICBtY2xrX2V4dHJhID0gMzsKKyAgICBudmNsa3MgKz0gMjsKKyAgICBudmNsa3MgKz0gMTsKKyAg
ICBudmNsa3MgKz0gMTsKKyAgICBudmNsa3MgKz0gMTsKKyAgICBpZiAobXBfZW5hYmxlKQorICAg
ICAgICBtY2xrcys9NDsKKyAgICBudmNsa3MgKz0gMDsKKyAgICBwY2xrcyArPSAwOworICAgIGZv
dW5kID0gMDsKKyAgICB2YnMgPSAwOworICAgIHdoaWxlIChmb3VuZCAhPSAxKQorICAgIHsKKyAg
ICAgICAgZmlmby0+dmFsaWQgPSAxOworICAgICAgICBmb3VuZCA9IDE7CisgICAgICAgIG1jbGtf
bG9vcCA9IG1jbGtzK21jbGtfZXh0cmE7CisgICAgICAgIHVzX20gPSBtY2xrX2xvb3AgKjEwMDAq
MTAwMCAvIG1jbGtfZnJlcTsKKyAgICAgICAgdXNfbiA9IG52Y2xrcyoxMDAwKjEwMDAgLyBudmNs
a19mcmVxOworICAgICAgICB1c19wID0gbnZjbGtzKjEwMDAqMTAwMCAvIHBjbGtfZnJlcTsKKyAg
ICAgICAgaWYgKHZpZGVvX2VuYWJsZSkKKyAgICAgICAgeworICAgICAgICAgICAgdmlkZW9fZHJh
aW5fcmF0ZSA9IHBjbGtfZnJlcSAqIDI7CisgICAgICAgICAgICBjcnRjX2RyYWluX3JhdGUgPSBw
Y2xrX2ZyZXEgKiBicHAvODsKKyAgICAgICAgICAgIHZwYWdlbWlzcyA9IDI7CisgICAgICAgICAg
ICB2cGFnZW1pc3MgKz0gMTsKKyAgICAgICAgICAgIGNydHBhZ2VtaXNzID0gMjsKKyAgICAgICAg
ICAgIHZwbV91cyA9ICh2cGFnZW1pc3MgKiBwYWdlbWlzcykqMTAwMCoxMDAwL21jbGtfZnJlcTsK
KyAgICAgICAgICAgIGlmIChudmNsa19mcmVxICogMiA+IG1jbGtfZnJlcSAqIHdpZHRoKQorICAg
ICAgICAgICAgICAgIHZpZGVvX2ZpbGxfdXMgPSBjYnMqMTAwMCoxMDAwIC8gMTYgLyBudmNsa19m
cmVxIDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2aWRlb19maWxsX3VzID0g
Y2JzKjEwMDAqMTAwMCAvICg4ICogd2lkdGgpIC8gbWNsa19mcmVxOworICAgICAgICAgICAgdXNf
dmlkZW8gPSB2cG1fdXMgKyB1c19tICsgdXNfbiArIHVzX3AgKyB2aWRlb19maWxsX3VzOworICAg
ICAgICAgICAgdmx3bSA9IHVzX3ZpZGVvICogdmlkZW9fZHJhaW5fcmF0ZS8oMTAwMCoxMDAwKTsK
KyAgICAgICAgICAgIHZsd20rKzsKKyAgICAgICAgICAgIHZicyA9IDEyODsKKyAgICAgICAgICAg
IGlmICh2bHdtID4gMTI4KSB2YnMgPSA2NDsKKyAgICAgICAgICAgIGlmICh2bHdtID4gKDI1Ni02
NCkpIHZicyA9IDMyOworICAgICAgICAgICAgaWYgKG52Y2xrX2ZyZXEgKiAyID4gbWNsa19mcmVx
ICogd2lkdGgpCisgICAgICAgICAgICAgICAgdmlkZW9fZmlsbF91cyA9IHZicyAqMTAwMCoxMDAw
LyAxNiAvIG52Y2xrX2ZyZXEgOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHZp
ZGVvX2ZpbGxfdXMgPSB2YnMqMTAwMCoxMDAwIC8gKDggKiB3aWR0aCkgLyBtY2xrX2ZyZXE7Cisg
ICAgICAgICAgICBjcG1fdXMgPSBjcnRwYWdlbWlzcyAgKiBwYWdlbWlzcyAqMTAwMCoxMDAwLyBt
Y2xrX2ZyZXE7CisgICAgICAgICAgICB1c19jcnQgPQorICAgICAgICAgICAgdXNfdmlkZW8KKyAg
ICAgICAgICAgICt2aWRlb19maWxsX3VzCisgICAgICAgICAgICArY3BtX3VzCisgICAgICAgICAg
ICArdXNfbSArIHVzX24gK3VzX3AKKyAgICAgICAgICAgIDsKKyAgICAgICAgICAgIGNsd20gPSB1
c19jcnQgKiBjcnRjX2RyYWluX3JhdGUvKDEwMDAqMTAwMCk7CisgICAgICAgICAgICBjbHdtKys7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBjcnRjX2Ry
YWluX3JhdGUgPSBwY2xrX2ZyZXEgKiBicHAvODsKKyAgICAgICAgICAgIGNydHBhZ2VtaXNzID0g
MjsKKyAgICAgICAgICAgIGNydHBhZ2VtaXNzICs9IDE7CisgICAgICAgICAgICBjcG1fdXMgPSBj
cnRwYWdlbWlzcyAgKiBwYWdlbWlzcyAqMTAwMCoxMDAwLyBtY2xrX2ZyZXE7CisgICAgICAgICAg
ICB1c19jcnQgPSAgY3BtX3VzICsgdXNfbSArIHVzX24gKyB1c19wIDsKKyAgICAgICAgICAgIGNs
d20gPSB1c19jcnQgKiBjcnRjX2RyYWluX3JhdGUvKDEwMDAqMTAwMCk7CisgICAgICAgICAgICBj
bHdtKys7CisgICAgICAgIH0KKyAgICAgICAgbTEgPSBjbHdtICsgY2JzIC0gNTEyOworICAgICAg
ICBwMSA9IG0xICogcGNsa19mcmVxIC8gbWNsa19mcmVxOworICAgICAgICBwMSA9IHAxICogYnBw
IC8gODsKKyAgICAgICAgaWYgKChwMSA8IG0xKSAmJiAobTEgPiAwKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgZmlmby0+dmFsaWQgPSAwOworICAgICAgICAgICAgZm91bmQgPSAwOworICAgICAg
ICAgICAgaWYgKG1jbGtfZXh0cmEgPT0wKSAgIGZvdW5kID0gMTsKKyAgICAgICAgICAgIG1jbGtf
ZXh0cmEtLTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh2aWRlb19lbmFibGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICgoY2x3bSA+IDUxMSkgfHwgKHZsd20gPiAyNTUpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpZm8tPnZhbGlkID0gMDsKKyAgICAgICAgICAg
ICAgICBmb3VuZCA9IDA7CisgICAgICAgICAgICAgICAgaWYgKG1jbGtfZXh0cmEgPT0wKSAgIGZv
dW5kID0gMTsKKyAgICAgICAgICAgICAgICBtY2xrX2V4dHJhLS07CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY2x3bSA+
IDUxOSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaWZvLT52YWxpZCA9IDA7Cisg
ICAgICAgICAgICAgICAgZm91bmQgPSAwOworICAgICAgICAgICAgICAgIGlmIChtY2xrX2V4dHJh
ID09MCkgICBmb3VuZCA9IDE7CisgICAgICAgICAgICAgICAgbWNsa19leHRyYS0tOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNyYXcgPSBjbHdtOworICAgICAgICB2cmF3ID0g
dmx3bTsKKyAgICAgICAgaWYgKGNsd20gPCAzODQpIGNsd20gPSAzODQ7CisgICAgICAgIGlmICh2
bHdtIDwgMTI4KSB2bHdtID0gMTI4OworICAgICAgICBkYXRhID0gKGludCkoY2x3bSk7CisgICAg
ICAgIGZpZm8tPmdyYXBoaWNzX2x3bSA9IGRhdGE7CisgICAgICAgIGZpZm8tPmdyYXBoaWNzX2J1
cnN0X3NpemUgPSAxMjg7CisgICAgICAgIGRhdGEgPSAoaW50KSgodmx3bSsxNSkpOworICAgICAg
ICBmaWZvLT52aWRlb19sd20gPSBkYXRhOworICAgICAgICBmaWZvLT52aWRlb19idXJzdF9zaXpl
ID0gdmJzOworICAgIH0KK30KK3N0YXRpYyB2b2lkIG52NFVwZGF0ZUFyYml0cmF0aW9uU2V0dGlu
Z3MKKygKKyAgICB1bnNpZ25lZCAgICAgIFZDbGssIAorICAgIHVuc2lnbmVkICAgICAgcGl4ZWxE
ZXB0aCwgCisgICAgdW5zaWduZWQgICAgICpidXJzdCwKKyAgICB1bnNpZ25lZCAgICAgKmx3bSwK
KyAgICBSSVZBX0hXX0lOU1QgKmNoaXAKKykKK3sKKyAgICBudjRfZmlmb19pbmZvIGZpZm9fZGF0
YTsKKyAgICBudjRfc2ltX3N0YXRlIHNpbV9kYXRhOworICAgIHVuc2lnbmVkIGludCBNLCBOLCBQ
LCBwbGwsIE1DbGssIE5WQ2xrLCBjZmcxOworCisgICAgcGxsID0gY2hpcC0+UFJBTURBQzBbMHgw
MDAwMDUwNC80XTsKKyAgICBNID0gKHBsbCA+PiAwKSAgJiAweEZGOyBOID0gKHBsbCA+PiA4KSAg
JiAweEZGOyBQID0gKHBsbCA+PiAxNikgJiAweDBGOworICAgIE1DbGsgID0gKE4gKiBjaGlwLT5D
cnlzdGFsRnJlcUtIeiAvIE0pID4+IFA7CisgICAgcGxsID0gY2hpcC0+UFJBTURBQzBbMHgwMDAw
MDUwMC80XTsKKyAgICBNID0gKHBsbCA+PiAwKSAgJiAweEZGOyBOID0gKHBsbCA+PiA4KSAgJiAw
eEZGOyBQID0gKHBsbCA+PiAxNikgJiAweDBGOworICAgIE5WQ2xrICA9IChOICogY2hpcC0+Q3J5
c3RhbEZyZXFLSHogLyBNKSA+PiBQOworICAgIGNmZzEgPSBjaGlwLT5QRkJbMHgwMDAwMDIwNC80
XTsKKyAgICBzaW1fZGF0YS5waXhfYnBwICAgICAgICA9IChjaGFyKXBpeGVsRGVwdGg7CisgICAg
c2ltX2RhdGEuZW5hYmxlX3ZpZGVvICAgPSAwOworICAgIHNpbV9kYXRhLmVuYWJsZV9tcCAgICAg
ID0gMDsKKyAgICBzaW1fZGF0YS5tZW1vcnlfd2lkdGggICA9IChjaGlwLT5QRVhUREVWWzB4MDAw
MDAwMDAvNF0gJiAweDEwKSA/IDEyOCA6IDY0OworICAgIHNpbV9kYXRhLm1lbV9sYXRlbmN5ICAg
ID0gKGNoYXIpY2ZnMSAmIDB4MEY7CisgICAgc2ltX2RhdGEubWVtX2FsaWduZWQgICAgPSAxOwor
ICAgIHNpbV9kYXRhLm1lbV9wYWdlX21pc3MgID0gKGNoYXIpKCgoY2ZnMSA+PiA0KSAmMHgwRikg
KyAoKGNmZzEgPj4gMzEpICYgMHgwMSkpOworICAgIHNpbV9kYXRhLmdyX2R1cmluZ192aWQgID0g
MDsKKyAgICBzaW1fZGF0YS5wY2xrX2toeiAgICAgICA9IFZDbGs7CisgICAgc2ltX2RhdGEubWNs
a19raHogICAgICAgPSBNQ2xrOworICAgIHNpbV9kYXRhLm52Y2xrX2toeiAgICAgID0gTlZDbGs7
CisgICAgbnY0Q2FsY0FyYml0cmF0aW9uKCZmaWZvX2RhdGEsICZzaW1fZGF0YSk7CisgICAgaWYg
KGZpZm9fZGF0YS52YWxpZCkKKyAgICB7CisgICAgICAgIGludCAgYiA9IGZpZm9fZGF0YS5ncmFw
aGljc19idXJzdF9zaXplID4+IDQ7CisgICAgICAgICpidXJzdCA9IDA7CisgICAgICAgIHdoaWxl
IChiID4+PSAxKSAoKmJ1cnN0KSsrOworICAgICAgICAqbHdtICAgPSBmaWZvX2RhdGEuZ3JhcGhp
Y3NfbHdtID4+IDM7CisgICAgfQorfQorc3RhdGljIHZvaWQgbnYxMENhbGNBcmJpdHJhdGlvbiAK
KygKKyAgICBudjEwX2ZpZm9faW5mbyAqZmlmbywKKyAgICBudjEwX3NpbV9zdGF0ZSAqYXJiCisp
Cit7CisgICAgaW50IGRhdGEsIHBhZ2VtaXNzLCBjYXMsd2lkdGgsIHZpZGVvX2VuYWJsZSwgY29s
b3Jfa2V5X2VuYWJsZSwgYnBwLCBhbGlnbjsKKyAgICBpbnQgbnZjbGtzLCBtY2xrcywgcGNsa3Ms
IHZwYWdlbWlzcywgY3J0cGFnZW1pc3MsIHZiczsKKyAgICBpbnQgbnZjbGtfZmlsbCwgdXNfZXh0
cmE7CisgICAgaW50IGZvdW5kLCBtY2xrX2V4dHJhLCBtY2xrX2xvb3AsIGNicywgbTE7CisgICAg
aW50IG1jbGtfZnJlcSwgcGNsa19mcmVxLCBudmNsa19mcmVxLCBtcF9lbmFibGU7CisgICAgaW50
IHVzX20sIHVzX21fbWluLCB1c19uLCB1c19wLCB2aWRlb19kcmFpbl9yYXRlLCBjcnRjX2RyYWlu
X3JhdGU7CisgICAgaW50IHZ1c19tLCB2dXNfbiwgdnVzX3A7CisgICAgaW50IHZwbV91cywgdXNf
dmlkZW8sIHZsd20sIGNwbV91cywgdXNfY3J0LGNsd207CisgICAgaW50IGNsd21fcm5kX2Rvd247
CisgICAgaW50IGNyYXcsIG0ydXMsIHVzX3BpcGUsIHVzX3BpcGVfbWluLCB2dXNfcGlwZSwgcDFj
bGssIHAyOworICAgIGludCBwY2xrc18yX3RvcF9maWZvLCBtaW5fbWNsa19leHRyYTsKKyAgICBp
bnQgdXNfbWluX21jbGtfZXh0cmE7CisKKyAgICBmaWZvLT52YWxpZCA9IDE7CisgICAgcGNsa19m
cmVxID0gYXJiLT5wY2xrX2toejsgLyogZnJlcSBpbiBLSHogKi8KKyAgICBtY2xrX2ZyZXEgPSBh
cmItPm1jbGtfa2h6OworICAgIG52Y2xrX2ZyZXEgPSBhcmItPm52Y2xrX2toejsKKyAgICBwYWdl
bWlzcyA9IGFyYi0+bWVtX3BhZ2VfbWlzczsKKyAgICBjYXMgPSBhcmItPm1lbV9sYXRlbmN5Owor
ICAgIHdpZHRoID0gYXJiLT5tZW1vcnlfd2lkdGgvNjQ7CisgICAgdmlkZW9fZW5hYmxlID0gYXJi
LT5lbmFibGVfdmlkZW87CisgICAgY29sb3Jfa2V5X2VuYWJsZSA9IGFyYi0+Z3JfZHVyaW5nX3Zp
ZDsKKyAgICBicHAgPSBhcmItPnBpeF9icHA7CisgICAgYWxpZ24gPSBhcmItPm1lbV9hbGlnbmVk
OworICAgIG1wX2VuYWJsZSA9IGFyYi0+ZW5hYmxlX21wOworICAgIGNsd20gPSAwOworICAgIHZs
d20gPSAxMDI0OworCisgICAgY2JzID0gNTEyOworICAgIHZicyA9IDUxMjsKKworICAgIHBjbGtz
ID0gNDsgLyogbHdtIGRldGVjdC4gKi8KKworICAgIG52Y2xrcyA9IDM7IC8qIGx3bSAtPiBzeW5j
LiAqLworICAgIG52Y2xrcyArPSAyOyAvKiBmYmkgYnVzIGN5Y2xlcyAoMSByZXEgKyAxIGJ1c3kp
ICovCisKKyAgICBtY2xrcyAgPSAxOyAgIC8qIDIgZWRnZSBzeW5jLiAgbWF5IGJlIHZlcnkgY2xv
c2UgdG8gZWRnZSBzbyBqdXN0IHB1dCBvbmUuICovCisKKyAgICBtY2xrcyArPSAxOyAgIC8qIGFy
Yl9ocF9yZXEgKi8KKyAgICBtY2xrcyArPSA1OyAgIC8qIGFwX2hwX3JlcSAgIHRpbGluZyBwaXBl
bGluZSAqLworCisgICAgbWNsa3MgKz0gMjsgICAgLyogdGNfcmVxICAgICBsYXRlbmN5IGZpZm8g
Ki8KKyAgICBtY2xrcyArPSAyOyAgICAvKiBmYl9jYXNfbl8gIG1lbW9yeSByZXF1ZXN0IHRvIGZi
aW8gYmxvY2sgKi8KKyAgICBtY2xrcyArPSA3OyAgICAvKiBzbV9kX3JkdiAgIGRhdGEgcmV0dXJu
ZWQgZnJvbSBmYmlvIGJsb2NrICovCisKKyAgICAvKiBmYi5yZC5kLlB1dF9nYyAgIG5lZWQgdG8g
YWNjdW11bGF0ZSAyNTYgYml0cyBmb3IgcmVhZCAqLworICAgIGlmIChhcmItPm1lbW9yeV90eXBl
ID09IDApCisgICAgICBpZiAoYXJiLT5tZW1vcnlfd2lkdGggPT0gNjQpIC8qIDY0IGJpdCBidXMg
Ki8KKyAgICAgICAgbWNsa3MgKz0gNDsKKyAgICAgIGVsc2UKKyAgICAgICAgbWNsa3MgKz0gMjsK
KyAgICBlbHNlCisgICAgICBpZiAoYXJiLT5tZW1vcnlfd2lkdGggPT0gNjQpIC8qIDY0IGJpdCBi
dXMgKi8KKyAgICAgICAgbWNsa3MgKz0gMjsKKyAgICAgIGVsc2UKKyAgICAgICAgbWNsa3MgKz0g
MTsKKworICAgIGlmICgoIXZpZGVvX2VuYWJsZSkgJiYgKGFyYi0+bWVtb3J5X3dpZHRoID09IDEy
OCkpCisgICAgeyAgCisgICAgICBtY2xrX2V4dHJhID0gKGJwcCA9PSAzMikgPyAzMSA6IDQyOyAv
KiBNYXJnaW4gb2YgZXJyb3IgKi8KKyAgICAgIG1pbl9tY2xrX2V4dHJhID0gMTc7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICBtY2xrX2V4dHJhID0gKGJwcCA9PSAzMikgPyA4IDogNDsg
LyogTWFyZ2luIG9mIGVycm9yICovCisgICAgICAvKiBtY2xrX2V4dHJhID0gNDsgKi8gLyogTWFy
Z2luIG9mIGVycm9yICovCisgICAgICBtaW5fbWNsa19leHRyYSA9IDE4OworICAgIH0KKworICAg
IG52Y2xrcyArPSAxOyAvKiAyIGVkZ2Ugc3luYy4gIG1heSBiZSB2ZXJ5IGNsb3NlIHRvIGVkZ2Ug
c28ganVzdCBwdXQgb25lLiAqLworICAgIG52Y2xrcyArPSAxOyAvKiBmYmlfZF9yZHZfbiAqLwor
ICAgIG52Y2xrcyArPSAxOyAvKiBGYmlfZF9yZGF0YSAqLworICAgIG52Y2xrcyArPSAxOyAvKiBj
cnRmaWZvIGxvYWQgKi8KKworICAgIGlmKG1wX2VuYWJsZSkKKyAgICAgIG1jbGtzKz00OyAvKiBN
cCBjYW4gZ2V0IGluIHdpdGggYSBidXJzdCBvZiA4LiAqLworICAgIC8qIEV4dHJhIGNsb2NrcyBk
ZXRlcm1pbmVkIGJ5IGhldXJpc3RpY3MgKi8KKworICAgIG52Y2xrcyArPSAwOworICAgIHBjbGtz
ICs9IDA7CisgICAgZm91bmQgPSAwOworICAgIHdoaWxlKGZvdW5kICE9IDEpIHsKKyAgICAgIGZp
Zm8tPnZhbGlkID0gMTsKKyAgICAgIGZvdW5kID0gMTsKKyAgICAgIG1jbGtfbG9vcCA9IG1jbGtz
K21jbGtfZXh0cmE7CisgICAgICB1c19tID0gbWNsa19sb29wICoxMDAwKjEwMDAgLyBtY2xrX2Zy
ZXE7IC8qIE1jbGsgbGF0ZW5jeSBpbiB1cyAqLworICAgICAgdXNfbV9taW4gPSBtY2xrcyAqIDEw
MDAqMTAwMCAvIG1jbGtfZnJlcTsgLyogTWluaW11bSBNY2xrIGxhdGVuY3kgaW4gdXMgKi8KKyAg
ICAgIHVzX21pbl9tY2xrX2V4dHJhID0gbWluX21jbGtfZXh0cmEgKjEwMDAqMTAwMCAvIG1jbGtf
ZnJlcTsKKyAgICAgIHVzX24gPSBudmNsa3MqMTAwMCoxMDAwIC8gbnZjbGtfZnJlcTsvKiBudmNs
ayBsYXRlbmN5IGluIHVzICovCisgICAgICB1c19wID0gcGNsa3MqMTAwMCoxMDAwIC8gcGNsa19m
cmVxOy8qIG52Y2xrIGxhdGVuY3kgaW4gdXMgKi8KKyAgICAgIHVzX3BpcGUgPSB1c19tICsgdXNf
biArIHVzX3A7CisgICAgICB1c19waXBlX21pbiA9IHVzX21fbWluICsgdXNfbiArIHVzX3A7Cisg
ICAgICB1c19leHRyYSA9IDA7CisKKyAgICAgIHZ1c19tID0gbWNsa19sb29wICoxMDAwKjEwMDAg
LyBtY2xrX2ZyZXE7IC8qIE1jbGsgbGF0ZW5jeSBpbiB1cyAqLworICAgICAgdnVzX24gPSAoNCkq
MTAwMCoxMDAwIC8gbnZjbGtfZnJlcTsvKiBudmNsayBsYXRlbmN5IGluIHVzICovCisgICAgICB2
dXNfcCA9IDAqMTAwMCoxMDAwIC8gcGNsa19mcmVxOy8qIHBjbGsgbGF0ZW5jeSBpbiB1cyAqLwor
ICAgICAgdnVzX3BpcGUgPSB2dXNfbSArIHZ1c19uICsgdnVzX3A7CisKKyAgICAgIGlmKHZpZGVv
X2VuYWJsZSkgeworICAgICAgICB2aWRlb19kcmFpbl9yYXRlID0gcGNsa19mcmVxICogNDsgLyog
TUIvcyAqLworICAgICAgICBjcnRjX2RyYWluX3JhdGUgPSBwY2xrX2ZyZXEgKiBicHAvODsgLyog
TUIvcyAqLworCisgICAgICAgIHZwYWdlbWlzcyA9IDE7IC8qIHNlbGYgZ2VuZXJhdGluZyBwYWdl
IG1pc3MgKi8KKyAgICAgICAgdnBhZ2VtaXNzICs9IDE7IC8qIE9uZSBoaWdoZXIgcHJpb3JpdHkg
YmVmb3JlICovCisKKyAgICAgICAgY3J0cGFnZW1pc3MgPSAyOyAvKiBzZWxmIGdlbmVyYXRpbmcg
cGFnZSBtaXNzICovCisgICAgICAgIGlmKG1wX2VuYWJsZSkKKyAgICAgICAgICAgIGNydHBhZ2Vt
aXNzICs9IDE7IC8qIGlmIE1BMCBjb25mbGljdCAqLworCisgICAgICAgIHZwbV91cyA9ICh2cGFn
ZW1pc3MgKiBwYWdlbWlzcykqMTAwMCoxMDAwL21jbGtfZnJlcTsKKworICAgICAgICB1c192aWRl
byA9IHZwbV91cyArIHZ1c19tOyAvKiBWaWRlbyBoYXMgc2VwYXJhdGUgcmVhZCByZXR1cm4gcGF0
aCAqLworCisgICAgICAgIGNwbV91cyA9IGNydHBhZ2VtaXNzICAqIHBhZ2VtaXNzICoxMDAwKjEw
MDAvIG1jbGtfZnJlcTsKKyAgICAgICAgdXNfY3J0ID0KKyAgICAgICAgICB1c192aWRlbyAgLyog
V2FpdCBmb3IgdmlkZW8gKi8KKyAgICAgICAgICArY3BtX3VzIC8qIENSVCBQYWdlIG1pc3MgKi8K
KyAgICAgICAgICArdXNfbSArIHVzX24gK3VzX3AgLyogb3RoZXIgbGF0ZW5jeSAqLworICAgICAg
ICAgIDsKKworICAgICAgICBjbHdtID0gdXNfY3J0ICogY3J0Y19kcmFpbl9yYXRlLygxMDAwKjEw
MDApOworICAgICAgICBjbHdtKys7IC8qIGZpeGVkIHBvaW50IDw9IGZsb2F0X3BvaW50IC0gMS4g
IEZpeGVzIHRoYXQgKi8KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGNydGNfZHJhaW5fcmF0ZSA9
IHBjbGtfZnJlcSAqIGJwcC84OyAvKiBicHAgKiBwY2xrLzggKi8KKworICAgICAgICBjcnRwYWdl
bWlzcyA9IDE7IC8qIHNlbGYgZ2VuZXJhdGluZyBwYWdlIG1pc3MgKi8KKyAgICAgICAgY3J0cGFn
ZW1pc3MgKz0gMTsgLyogTUEwIHBhZ2UgbWlzcyAqLworICAgICAgICBpZihtcF9lbmFibGUpCisg
ICAgICAgICAgICBjcnRwYWdlbWlzcyArPSAxOyAvKiBpZiBNQTAgY29uZmxpY3QgKi8KKyAgICAg
ICAgY3BtX3VzID0gY3J0cGFnZW1pc3MgICogcGFnZW1pc3MgKjEwMDAqMTAwMC8gbWNsa19mcmVx
OworICAgICAgICB1c19jcnQgPSAgY3BtX3VzICsgdXNfbSArIHVzX24gKyB1c19wIDsKKyAgICAg
ICAgY2x3bSA9IHVzX2NydCAqIGNydGNfZHJhaW5fcmF0ZS8oMTAwMCoxMDAwKTsKKyAgICAgICAg
Y2x3bSsrOyAvKiBmaXhlZCBwb2ludCA8PSBmbG9hdF9wb2ludCAtIDEuICBGaXhlcyB0aGF0ICov
CisKKyAgLyoKKyAgICAgICAgICAvLworICAgICAgICAgIC8vIEFub3RoZXIgY29uY2Vybiwgb25s
eSBmb3IgaGlnaCBwY2xrcyBzbyBkb24ndCBkbyB0aGlzCisgICAgICAgICAgLy8gd2l0aCB2aWRl
bzoKKyAgICAgICAgICAvLyBXaGF0IGhhcHBlbnMgaWYgdGhlIGxhdGVuY3kgdG8gZmV0Y2ggdGhl
IGNicyBpcyBzbyBsYXJnZSB0aGF0CisgICAgICAgICAgLy8gZmlmbyBlbXB0aWVzLiAgSW4gdGhh
dCBjYXNlIHdlIG5lZWQgdG8gaGF2ZSBhbiBhbHRlcm5hdGUgY2x3bSB2YWx1ZQorICAgICAgICAg
IC8vIGJhc2VkIG9mZiB0aGUgdG90YWwgYnVyc3QgZmV0Y2gKKyAgICAgICAgICAvLworICAgICAg
ICAgIHVzX2NydCA9IChjYnMgKiAxMDAwICogMTAwMCkvICg4KndpZHRoKS9tY2xrX2ZyZXEgOwor
ICAgICAgICAgIHVzX2NydCA9IHVzX2NydCArIHVzX20gKyB1c19uICsgdXNfcCArICg0ICogMTAw
MCAqIDEwMDApL21jbGtfZnJlcTsKKyAgICAgICAgICBjbHdtX210ID0gdXNfY3J0ICogY3J0Y19k
cmFpbl9yYXRlLygxMDAwKjEwMDApOworICAgICAgICAgIGNsd21fbXQgKys7CisgICAgICAgICAg
aWYoY2x3bV9tdCA+IGNsd20pCisgICAgICAgICAgICAgIGNsd20gPSBjbHdtX210OworICAqLwor
ICAgICAgICAgIC8qIEZpbmFsbHksIGEgaGV1cmlzdGljIGNoZWNrIHdoZW4gd2lkdGggPT0gNjQg
Yml0cyAqLworICAgICAgICAgIGlmKHdpZHRoID09IDEpeworICAgICAgICAgICAgICBudmNsa19m
aWxsID0gbnZjbGtfZnJlcSAqIDg7CisgICAgICAgICAgICAgIGlmKGNydGNfZHJhaW5fcmF0ZSAq
IDEwMCA+PSBudmNsa19maWxsICogMTAyKQorICAgICAgICAgICAgICAgICAgICAgIGNsd20gPSAw
eGZmZjsgLypMYXJnZSBudW1iZXIgdG8gZmFpbCAqLworCisgICAgICAgICAgICAgIGVsc2UgaWYo
Y3J0Y19kcmFpbl9yYXRlICogMTAwICA+PSBudmNsa19maWxsICogOTgpIHsKKyAgICAgICAgICAg
ICAgICAgIGNsd20gPSAxMDI0OworICAgICAgICAgICAgICAgICAgY2JzID0gNTEyOworICAgICAg
ICAgICAgICAgICAgdXNfZXh0cmEgPSAoY2JzICogMTAwMCAqIDEwMDApLyAoOCp3aWR0aCkvbWNs
a19mcmVxIDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgIH0KKworCisgICAg
ICAvKgorICAgICAgICBPdmVyZmlsbCBjaGVjazoKKworICAgICAgICAqLworCisgICAgICBjbHdt
X3JuZF9kb3duID0gKChpbnQpY2x3bS84KSo4OworICAgICAgaWYgKGNsd21fcm5kX2Rvd24gPCBj
bHdtKQorICAgICAgICAgIGNsd20gKz0gODsKKworICAgICAgbTEgPSBjbHdtICsgY2JzIC0gIDEw
MjQ7IC8qIEFtb3VudCBvZiBvdmVyZmlsbCAqLworICAgICAgbTJ1cyA9IHVzX3BpcGVfbWluICsg
dXNfbWluX21jbGtfZXh0cmE7CisgICAgICBwY2xrc18yX3RvcF9maWZvID0gKDEwMjQtY2x3bSkv
KDgqd2lkdGgpOworCisgICAgICAvKiBwY2xrIGN5Y2xlcyB0byBkcmFpbiAqLworICAgICAgcDFj
bGsgPSBtMnVzICogcGNsa19mcmVxLygxMDAwKjEwMDApOyAKKyAgICAgIHAyID0gcDFjbGsgKiBi
cHAgLyA4OyAvKiBieXRlcyBkcmFpbmVkLiAqLworCisgICAgICBpZigocDIgPCBtMSkgJiYgKG0x
ID4gMCkpIHsKKyAgICAgICAgICBmaWZvLT52YWxpZCA9IDA7CisgICAgICAgICAgZm91bmQgPSAw
OworICAgICAgICAgIGlmKG1pbl9tY2xrX2V4dHJhID09IDApICAgeworICAgICAgICAgICAgaWYo
Y2JzIDw9IDMyKSB7CisgICAgICAgICAgICAgIGZvdW5kID0gMTsgLyogQ2FuJ3QgYWRqdXN0IGFu
eW1vcmUhICovCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBjYnMgPSBjYnMv
MjsgIC8qIHJlZHVjZSB0aGUgYnVyc3Qgc2l6ZSAqLworICAgICAgICAgICAgfQorICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtaW5fbWNsa19leHRyYS0tOworICAgICAgICAgIH0KKyAg
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjbHdtID4gMTAyMyl7IC8qIEhhdmUgc29tZSBtYXJn
aW4gKi8KKyAgICAgICAgICBmaWZvLT52YWxpZCA9IDA7CisgICAgICAgICAgZm91bmQgPSAwOwor
ICAgICAgICAgIGlmKG1pbl9tY2xrX2V4dHJhID09IDApICAgCisgICAgICAgICAgICAgIGZvdW5k
ID0gMTsgLyogQ2FuJ3QgYWRqdXN0IGFueW1vcmUhICovCisgICAgICAgICAgZWxzZSAKKyAgICAg
ICAgICAgICAgbWluX21jbGtfZXh0cmEtLTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgY3Jh
dyA9IGNsd207CisKKyAgICAgIGlmKGNsd20gPCAoMTAyNC1jYnMrOCkpIGNsd20gPSAxMDI0LWNi
cys4OworICAgICAgZGF0YSA9IChpbnQpKGNsd20pOworICAgICAgLyogIHByaW50ZigiQ1JUIExX
TTogJWYgYnl0ZXMsIHByb2c6IDB4JXgsIGJzOiAyNTZcbiIsIGNsd20sIGRhdGEgKTsgKi8KKyAg
ICAgIGZpZm8tPmdyYXBoaWNzX2x3bSA9IGRhdGE7ICAgZmlmby0+Z3JhcGhpY3NfYnVyc3Rfc2l6
ZSA9IGNiczsKKworICAgICAgLyogIHByaW50ZigiVklEIExXTTogJWYgYnl0ZXMsIHByb2c6IDB4
JXgsIGJzOiAlZFxuLCAiLCB2bHdtLCBkYXRhLCB2YnMgKTsgKi8KKyAgICAgIGZpZm8tPnZpZGVv
X2x3bSA9IDEwMjQ7ICBmaWZvLT52aWRlb19idXJzdF9zaXplID0gNTEyOworICAgIH0KK30KK3N0
YXRpYyB2b2lkIG52MTBVcGRhdGVBcmJpdHJhdGlvblNldHRpbmdzCisoCisgICAgdW5zaWduZWQg
ICAgICBWQ2xrLCAKKyAgICB1bnNpZ25lZCAgICAgIHBpeGVsRGVwdGgsIAorICAgIHVuc2lnbmVk
ICAgICAqYnVyc3QsCisgICAgdW5zaWduZWQgICAgICpsd20sCisgICAgUklWQV9IV19JTlNUICpj
aGlwCispCit7CisgICAgbnYxMF9maWZvX2luZm8gZmlmb19kYXRhOworICAgIG52MTBfc2ltX3N0
YXRlIHNpbV9kYXRhOworICAgIHVuc2lnbmVkIGludCBNLCBOLCBQLCBwbGwsIE1DbGssIE5WQ2xr
LCBjZmcxOworCisgICAgcGxsID0gY2hpcC0+UFJBTURBQzBbMHgwMDAwMDUwNC80XTsKKyAgICBN
ID0gKHBsbCA+PiAwKSAgJiAweEZGOyBOID0gKHBsbCA+PiA4KSAgJiAweEZGOyBQID0gKHBsbCA+
PiAxNikgJiAweDBGOworICAgIE1DbGsgID0gKE4gKiBjaGlwLT5DcnlzdGFsRnJlcUtIeiAvIE0p
ID4+IFA7CisgICAgcGxsID0gY2hpcC0+UFJBTURBQzBbMHgwMDAwMDUwMC80XTsKKyAgICBNID0g
KHBsbCA+PiAwKSAgJiAweEZGOyBOID0gKHBsbCA+PiA4KSAgJiAweEZGOyBQID0gKHBsbCA+PiAx
NikgJiAweDBGOworICAgIE5WQ2xrICA9IChOICogY2hpcC0+Q3J5c3RhbEZyZXFLSHogLyBNKSA+
PiBQOworICAgIGNmZzEgPSBjaGlwLT5QRkJbMHgwMDAwMDIwNC80XTsKKyAgICBzaW1fZGF0YS5w
aXhfYnBwICAgICAgICA9IChjaGFyKXBpeGVsRGVwdGg7CisgICAgc2ltX2RhdGEuZW5hYmxlX3Zp
ZGVvICAgPSAwOworICAgIHNpbV9kYXRhLmVuYWJsZV9tcCAgICAgID0gMDsKKyAgICBzaW1fZGF0
YS5tZW1vcnlfdHlwZSAgICA9IChjaGlwLT5QRkJbMHgwMDAwMDIwMC80XSAmIDB4MDEpID8gMSA6
IDA7CisgICAgc2ltX2RhdGEubWVtb3J5X3dpZHRoICAgPSAoY2hpcC0+UEVYVERFVlsweDAwMDAw
MDAwLzRdICYgMHgxMCkgPyAxMjggOiA2NDsKKyAgICBzaW1fZGF0YS5tZW1fbGF0ZW5jeSAgICA9
IChjaGFyKWNmZzEgJiAweDBGOworICAgIHNpbV9kYXRhLm1lbV9hbGlnbmVkICAgID0gMTsKKyAg
ICBzaW1fZGF0YS5tZW1fcGFnZV9taXNzICA9IChjaGFyKSgoKGNmZzEgPj4gNCkgJjB4MEYpICsg
KChjZmcxID4+IDMxKSAmIDB4MDEpKTsKKyAgICBzaW1fZGF0YS5ncl9kdXJpbmdfdmlkICA9IDA7
CisgICAgc2ltX2RhdGEucGNsa19raHogICAgICAgPSBWQ2xrOworICAgIHNpbV9kYXRhLm1jbGtf
a2h6ICAgICAgID0gTUNsazsKKyAgICBzaW1fZGF0YS5udmNsa19raHogICAgICA9IE5WQ2xrOwor
ICAgIG52MTBDYWxjQXJiaXRyYXRpb24oJmZpZm9fZGF0YSwgJnNpbV9kYXRhKTsKKyAgICBpZiAo
Zmlmb19kYXRhLnZhbGlkKQorICAgIHsKKyAgICAgICAgaW50ICBiID0gZmlmb19kYXRhLmdyYXBo
aWNzX2J1cnN0X3NpemUgPj4gNDsKKyAgICAgICAgKmJ1cnN0ID0gMDsKKyAgICAgICAgd2hpbGUg
KGIgPj49IDEpICgqYnVyc3QpKys7CisgICAgICAgICpsd20gICA9IGZpZm9fZGF0YS5ncmFwaGlj
c19sd20gPj4gMzsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIG5Gb3JjZVVwZGF0ZUFyYml0cmF0
aW9uU2V0dGluZ3MKKygKKyAgICB1bnNpZ25lZCAgICAgIFZDbGssCisgICAgdW5zaWduZWQgICAg
ICBwaXhlbERlcHRoLAorICAgIHVuc2lnbmVkICAgICAqYnVyc3QsCisgICAgdW5zaWduZWQgICAg
ICpsd20sCisgICAgUklWQV9IV19JTlNUICpjaGlwCispCit7CisgICAgbnYxMF9maWZvX2luZm8g
Zmlmb19kYXRhOworICAgIG52MTBfc2ltX3N0YXRlIHNpbV9kYXRhOworICAgIHVuc2lnbmVkIGlu
dCBNLCBOLCBQLCBwbGwsIE1DbGssIE5WQ2xrOworICAgIHVuc2lnbmVkIGludCB1TUNsa1Bvc3RE
aXY7CisgICAgc3RydWN0IHBjaV9kZXYgKmRldjsKKworICAgIGRldiA9IHBjaV9maW5kX3Nsb3Qo
MCwgMyk7CisgICAgcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgMHg2QywgJnVNQ2xrUG9zdERp
dik7CisgICAgdU1DbGtQb3N0RGl2ID0gKHVNQ2xrUG9zdERpdiA+PiA4KSAmIDB4ZjsKKworICAg
IGlmKCF1TUNsa1Bvc3REaXYpIHVNQ2xrUG9zdERpdiA9IDQ7CisgICAgTUNsayA9IDQwMDAwMCAv
IHVNQ2xrUG9zdERpdjsKKworICAgIHBsbCA9IGNoaXAtPlBSQU1EQUMwWzB4MDAwMDA1MDAvNF07
CisgICAgTSA9IChwbGwgPj4gMCkgICYgMHhGRjsgTiA9IChwbGwgPj4gOCkgICYgMHhGRjsgUCA9
IChwbGwgPj4gMTYpICYgMHgwRjsKKyAgICBOVkNsayAgPSAoTiAqIGNoaXAtPkNyeXN0YWxGcmVx
S0h6IC8gTSkgPj4gUDsKKyAgICBzaW1fZGF0YS5waXhfYnBwICAgICAgICA9IChjaGFyKXBpeGVs
RGVwdGg7CisgICAgc2ltX2RhdGEuZW5hYmxlX3ZpZGVvICAgPSAwOworICAgIHNpbV9kYXRhLmVu
YWJsZV9tcCAgICAgID0gMDsKKworICAgIGRldiA9IHBjaV9maW5kX3Nsb3QoMCwgMSk7CisgICAg
cGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgMHg3QywgJnNpbV9kYXRhLm1lbW9yeV90eXBlKTsK
KyAgICBzaW1fZGF0YS5tZW1vcnlfdHlwZSAgICA9IChzaW1fZGF0YS5tZW1vcnlfdHlwZSA+PiAx
MikgJiAxOworCisgICAgc2ltX2RhdGEubWVtb3J5X3dpZHRoICAgPSA2NDsKKyAgICBzaW1fZGF0
YS5tZW1fbGF0ZW5jeSAgICA9IDM7CisgICAgc2ltX2RhdGEubWVtX2FsaWduZWQgICAgPSAxOwor
ICAgIHNpbV9kYXRhLm1lbV9wYWdlX21pc3MgID0gMTA7CisgICAgc2ltX2RhdGEuZ3JfZHVyaW5n
X3ZpZCAgPSAwOworICAgIHNpbV9kYXRhLnBjbGtfa2h6ICAgICAgID0gVkNsazsKKyAgICBzaW1f
ZGF0YS5tY2xrX2toeiAgICAgICA9IE1DbGs7CisgICAgc2ltX2RhdGEubnZjbGtfa2h6ICAgICAg
PSBOVkNsazsKKyAgICBudjEwQ2FsY0FyYml0cmF0aW9uKCZmaWZvX2RhdGEsICZzaW1fZGF0YSk7
CisgICAgaWYgKGZpZm9fZGF0YS52YWxpZCkKKyAgICB7CisgICAgICAgIGludCAgYiA9IGZpZm9f
ZGF0YS5ncmFwaGljc19idXJzdF9zaXplID4+IDQ7CisgICAgICAgICpidXJzdCA9IDA7CisgICAg
ICAgIHdoaWxlIChiID4+PSAxKSAoKmJ1cnN0KSsrOworICAgICAgICAqbHdtICAgPSBmaWZvX2Rh
dGEuZ3JhcGhpY3NfbHdtID4+IDM7CisgICAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwK
KyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgUklWQSBN
b2RlIFN0YXRlIFJvdXRpbmVzICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICoKK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQ2FsY3VsYXRlIHRo
ZSBWaWRlbyBDbG9jayBwYXJhbWV0ZXJzIGZvciB0aGUgUExMLgorICovCitzdGF0aWMgaW50IENh
bGNWQ2xvY2sKKygKKyAgICBpbnQgICAgICAgICAgIGNsb2NrSW4sCisgICAgaW50ICAgICAgICAg
ICpjbG9ja091dCwKKyAgICBpbnQgICAgICAgICAgKm1PdXQsCisgICAgaW50ICAgICAgICAgICpu
T3V0LAorICAgIGludCAgICAgICAgICAqcE91dCwKKyAgICBSSVZBX0hXX0lOU1QgKmNoaXAKKykK
K3sKKyAgICB1bnNpZ25lZCBsb3dNLCBoaWdoTSwgaGlnaFA7CisgICAgdW5zaWduZWQgRGVsdGFO
ZXcsIERlbHRhT2xkOworICAgIHVuc2lnbmVkIFZDbGssIEZyZXE7CisgICAgdW5zaWduZWQgTSwg
TiwgUDsKKyAgICAKKyAgICBEZWx0YU9sZCA9IDB4RkZGRkZGRkY7CisKKyAgICBWQ2xrICAgICA9
ICh1bnNpZ25lZCljbG9ja0luOworICAgIAorICAgIGlmIChjaGlwLT5DcnlzdGFsRnJlcUtIeiA9
PSAxMzUwMCkKKyAgICB7CisgICAgICAgIGxvd00gID0gNzsKKyAgICAgICAgaGlnaE0gPSAxMyAt
IChjaGlwLT5BcmNoaXRlY3R1cmUgPT0gTlZfQVJDSF8wMyk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIGxvd00gID0gODsKKyAgICAgICAgaGlnaE0gPSAxNCAtIChjaGlwLT5BcmNo
aXRlY3R1cmUgPT0gTlZfQVJDSF8wMyk7CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAKKwor
ICAgIGhpZ2hQID0gNCAtIChjaGlwLT5BcmNoaXRlY3R1cmUgPT0gTlZfQVJDSF8wMyk7CisgICAg
Zm9yIChQID0gMDsgUCA8PSBoaWdoUDsgUCArKykKKyAgICB7CisgICAgICAgIEZyZXEgPSBWQ2xr
IDw8IFA7CisgICAgICAgIGlmICgoRnJlcSA+PSAxMjgwMDApICYmIChGcmVxIDw9IGNoaXAtPk1h
eFZDbG9ja0ZyZXFLSHopKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKE0gPSBsb3dNOyBN
IDw9IGhpZ2hNOyBNKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTiAgICA9IChW
Q2xrIDw8IFApICogTSAvIGNoaXAtPkNyeXN0YWxGcmVxS0h6OworICAgICAgICAgICAgICAgIGlm
KE4gPD0gMjU1KSB7CisgICAgICAgICAgICAgICAgRnJlcSA9IChjaGlwLT5DcnlzdGFsRnJlcUtI
eiAqIE4gLyBNKSA+PiBQOworICAgICAgICAgICAgICAgIGlmIChGcmVxID4gVkNsaykKKyAgICAg
ICAgICAgICAgICAgICAgRGVsdGFOZXcgPSBGcmVxIC0gVkNsazsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIERlbHRhTmV3ID0gVkNsayAtIEZyZXE7CisgICAgICAg
ICAgICAgICAgaWYgKERlbHRhTmV3IDwgRGVsdGFPbGQpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAqbU91dCAgICAgPSBNOworICAgICAgICAgICAgICAgICAgICAqbk91
dCAgICAgPSBOOworICAgICAgICAgICAgICAgICAgICAqcE91dCAgICAgPSBQOworICAgICAgICAg
ICAgICAgICAgICAqY2xvY2tPdXQgPSBGcmVxOworICAgICAgICAgICAgICAgICAgICBEZWx0YU9s
ZCAgPSBEZWx0YU5ldzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgfQorICAgIHJldHVybiAoRGVsdGFPbGQgIT0gMHhGRkZGRkZGRik7Cit9
CisvKgorICogQ2FsY3VsYXRlIGV4dGVuZGVkIG1vZGUgcGFyYW1ldGVycyAoU1ZHQSkgYW5kIHNh
dmUgaW4gYSAKKyAqIG1vZGUgc3RhdGUgc3RydWN0dXJlLgorICovCitzdGF0aWMgdm9pZCBDYWxj
U3RhdGVFeHQKKygKKyAgICBSSVZBX0hXX0lOU1QgICpjaGlwLAorICAgIFJJVkFfSFdfU1RBVEUg
KnN0YXRlLAorICAgIGludCAgICAgICAgICAgIGJwcCwKKyAgICBpbnQgICAgICAgICAgICB3aWR0
aCwKKyAgICBpbnQgICAgICAgICAgICBoRGlzcGxheVNpemUsCisgICAgaW50ICAgICAgICAgICAg
aGVpZ2h0LAorICAgIGludCAgICAgICAgICAgIGRvdENsb2NrCispCit7CisgICAgaW50IHBpeGVs
RGVwdGgsIFZDbGssIG0sIG4sIHA7CisgICAgLyoKKyAgICAgKiBTYXZlIG1vZGUgcGFyYW1ldGVy
cy4KKyAgICAgKi8KKyAgICBzdGF0ZS0+YnBwICAgID0gYnBwOyAgICAvKiB0aGlzIGlzIG5vdCBi
aXRzUGVyUGl4ZWwsIGl0J3MgOCwxNSwxNiwzMiAqLworICAgIHN0YXRlLT53aWR0aCAgPSB3aWR0
aDsKKyAgICBzdGF0ZS0+aGVpZ2h0ID0gaGVpZ2h0OworICAgIC8qCisgICAgICogRXh0ZW5kZWQg
UklWQSByZWdpc3RlcnMuCisgICAgICovCisgICAgcGl4ZWxEZXB0aCA9IChicHAgKyAxKS84Owor
ICAgIENhbGNWQ2xvY2soZG90Q2xvY2ssICZWQ2xrLCAmbSwgJm4sICZwLCBjaGlwKTsKKworICAg
IHN3aXRjaCAoY2hpcC0+QXJjaGl0ZWN0dXJlKQorICAgIHsKKyAgICAgICAgY2FzZSBOVl9BUkNI
XzAzOgorICAgICAgICAgICAgbnYzVXBkYXRlQXJiaXRyYXRpb25TZXR0aW5ncyhWQ2xrLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxEZXB0aCAqIDgsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoc3RhdGUtPmFyYml0cmF0
aW9uMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihzdGF0ZS0+
YXJiaXRyYXRpb24xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hpcCk7CisgICAgICAgICAgICBzdGF0ZS0+Y3Vyc29yMCAgPSAweDAwOworICAgICAgICAgICAg
c3RhdGUtPmN1cnNvcjEgID0gMHg3ODsKKyAgICAgICAgICAgIHN0YXRlLT5jdXJzb3IyICA9IDB4
MDAwMDAwMDA7CisgICAgICAgICAgICBzdGF0ZS0+cGxsc2VsICAgPSAweDEwMDEwMTAwOworICAg
ICAgICAgICAgc3RhdGUtPmNvbmZpZyAgID0gKCh3aWR0aCArIDMxKS8zMikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICgoKHBpeGVsRGVwdGggPiAyKSA/IDMgOiBwaXhlbERlcHRoKSA8
PCA4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMHgxMDAwOworICAgICAgICAgICAg
c3RhdGUtPmdlbmVyYWwgID0gMHgwMDEwMDEwMDsKKyAgICAgICAgICAgIHN0YXRlLT5yZXBhaW50
MSA9IGhEaXNwbGF5U2l6ZSA8IDEyODAgPyAweDA2IDogMHgwMjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIE5WX0FSQ0hfMDQ6CisgICAgICAgICAgICBudjRVcGRhdGVBcmJpdHJh
dGlvblNldHRpbmdzKFZDbGssIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwaXhlbERlcHRoICogOCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJihzdGF0ZS0+YXJiaXRyYXRpb24wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmKHN0YXRlLT5hcmJpdHJhdGlvbjEpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGlwKTsKKyAgICAgICAgICAgIHN0YXRlLT5jdXJzb3Iw
ICA9IDB4MDA7CisgICAgICAgICAgICBzdGF0ZS0+Y3Vyc29yMSAgPSAweEZDOworICAgICAgICAg
ICAgc3RhdGUtPmN1cnNvcjIgID0gMHgwMDAwMDAwMDsKKyAgICAgICAgICAgIHN0YXRlLT5wbGxz
ZWwgICA9IDB4MTAwMDA3MDA7CisgICAgICAgICAgICBzdGF0ZS0+Y29uZmlnICAgPSAweDAwMDAx
MTE0OworICAgICAgICAgICAgc3RhdGUtPmdlbmVyYWwgID0gYnBwID09IDE2ID8gMHgwMDEwMTEw
MCA6IDB4MDAxMDAxMDA7CisgICAgICAgICAgICBzdGF0ZS0+cmVwYWludDEgPSBoRGlzcGxheVNp
emUgPCAxMjgwID8gMHgwNCA6IDB4MDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBOVl9BUkNIXzEwOgorICAgICAgICBjYXNlIE5WX0FSQ0hfMjA6CisgICAgICAgICAgICBpZigo
Y2hpcC0+Q2hpcHNldCA9PSBOVl9DSElQX0lHRUZPUkNFMikgfHwKKyAgICAgICAgICAgICAgIChj
aGlwLT5DaGlwc2V0ID09IE5WX0NISVBfMHgwMUYwKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBuRm9yY2VVcGRhdGVBcmJpdHJhdGlvblNldHRpbmdzKFZDbGssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbERlcHRoICogOCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihzdGF0ZS0+YXJiaXRyYXRpb24wKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihzdGF0ZS0+YXJiaXRy
YXRpb24xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaXAp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBudjEwVXBkYXRlQXJiaXRy
YXRpb25TZXR0aW5ncyhWQ2xrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBpeGVsRGVwdGggKiA4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJihzdGF0ZS0+YXJiaXRyYXRpb24wKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJihzdGF0ZS0+YXJiaXRyYXRpb24xKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaXApOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgc3RhdGUtPmN1cnNvcjAgID0gY2hpcC0+Q3Vyc29yU3RhcnQ7CisgICAgICAgICAgICBz
dGF0ZS0+cGxsc2VsICAgPSAweDEwMDAwNzAwOworICAgICAgICAgICAgc3RhdGUtPmNvbmZpZyAg
ID0gY2hpcC0+UEZCWzB4MDAwMDAyMDAvNF07CisgICAgICAgICAgICBzdGF0ZS0+Z2VuZXJhbCAg
PSBicHAgPT0gMTYgPyAweDAwMTAxMTAwIDogMHgwMDEwMDEwMDsKKyAgICAgICAgICAgIHN0YXRl
LT5yZXBhaW50MSA9IGhEaXNwbGF5U2l6ZSA8IDEyODAgPyAweDA0IDogMHgwMDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIC8qIFBhdWwgUmljaGFyZHM6IGJlbG93IGlmIGJsb2Nr
IGJvcmtzIHRoaW5ncyBpbiBrZXJuZWwgZm9yIHNvbWUgcmVhc29uICovCisgICAgLyogaWYoKGJw
cCAhPSA4KSAmJiAoY2hpcC0+QXJjaGl0ZWN0dXJlICE9IE5WX0FSQ0hfMDMpKQorICAgIHN0YXRl
LT5nZW5lcmFsIHw9IDB4MDAwMDAwMzA7ICovCisKKyAgICBzdGF0ZS0+dnBsbCAgICAgPSAocCA8
PCAxNikgfCAobiA8PCA4KSB8IG07CisgICAgc3RhdGUtPnJlcGFpbnQwID0gKCgod2lkdGgvOCkq
cGl4ZWxEZXB0aCkgJiAweDcwMCkgPj4gMzsKKyAgICBzdGF0ZS0+cGl4ZWwgICAgPSBwaXhlbERl
cHRoID4gMiAgID8gMyAgICA6IHBpeGVsRGVwdGg7CisgICAgc3RhdGUtPnBpeGVsICAgIHw9IDB4
ODA7CisgICAgc3RhdGUtPm9mZnNldDAgID0KKyAgICBzdGF0ZS0+b2Zmc2V0MSAgPQorICAgIHN0
YXRlLT5vZmZzZXQyICA9CisgICAgc3RhdGUtPm9mZnNldDMgID0gMDsKKyAgICBzdGF0ZS0+cGl0
Y2gwICAgPQorICAgIHN0YXRlLT5waXRjaDEgICA9CisgICAgc3RhdGUtPnBpdGNoMiAgID0KKyAg
ICBzdGF0ZS0+cGl0Y2gzICAgPSBwaXhlbERlcHRoICogd2lkdGg7Cit9CisvKgorICogTG9hZCBm
aXhlZCBmdW5jdGlvbiBzdGF0ZSBhbmQgcHJlLWNhbGN1bGF0ZWQvc3RvcmVkIHN0YXRlLgorICov
CisjZGVmaW5lIExPQURfRklYRURfU1RBVEUodGJsLGRldikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZih0YmwjI1RhYmxl
IyNkZXYpLzg7IGkrKykgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2hpcC0+ZGV2W3RibCMj
VGFibGUjI2RldltpXVswXV0gPSB0YmwjI1RhYmxlIyNkZXZbaV1bMV0KKyNkZWZpbmUgTE9BRF9G
SVhFRF9TVEFURV84QlBQKHRibCxkZXYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRibCMjVGFibGUjI2RldiMjXzhCUFApLzg7
IGkrKykgICAgICAgICAgICBcCisgICAgICAgIGNoaXAtPmRldlt0YmwjI1RhYmxlIyNkZXYjI184
QlBQW2ldWzBdXSA9IHRibCMjVGFibGUjI2RldiMjXzhCUFBbaV1bMV0KKyNkZWZpbmUgTE9BRF9G
SVhFRF9TVEFURV8xNUJQUCh0YmwsZGV2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRibCMjVGFibGUjI2RldiMjXzE1QlBQKS84
OyBpKyspICAgICAgICAgICBcCisgICAgICAgIGNoaXAtPmRldlt0YmwjI1RhYmxlIyNkZXYjI18x
NUJQUFtpXVswXV0gPSB0YmwjI1RhYmxlIyNkZXYjI18xNUJQUFtpXVsxXQorI2RlZmluZSBMT0FE
X0ZJWEVEX1NUQVRFXzE2QlBQKHRibCxkZXYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YodGJsIyNUYWJsZSMjZGV2IyNfMTZCUFAp
Lzg7IGkrKykgICAgICAgICAgIFwKKyAgICAgICAgY2hpcC0+ZGV2W3RibCMjVGFibGUjI2RldiMj
XzE2QlBQW2ldWzBdXSA9IHRibCMjVGFibGUjI2RldiMjXzE2QlBQW2ldWzFdCisjZGVmaW5lIExP
QURfRklYRURfU1RBVEVfMzJCUFAodGJsLGRldikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZih0YmwjI1RhYmxlIyNkZXYjI18zMkJQ
UCkvODsgaSsrKSAgICAgICAgICAgXAorICAgICAgICBjaGlwLT5kZXZbdGJsIyNUYWJsZSMjZGV2
IyNfMzJCUFBbaV1bMF1dID0gdGJsIyNUYWJsZSMjZGV2IyNfMzJCUFBbaV1bMV0KK3N0YXRpYyB2
b2lkIFVwZGF0ZUZpZm9TdGF0ZQorKAorICAgIFJJVkFfSFdfSU5TVCAgKmNoaXAKKykKK3sKKyAg
ICBpbnQgaTsKKworICAgIHN3aXRjaCAoY2hpcC0+QXJjaGl0ZWN0dXJlKQorICAgIHsKKyAgICAg
ICAgY2FzZSBOVl9BUkNIXzA0OgorICAgICAgICAgICAgTE9BRF9GSVhFRF9TVEFURShudjQsRklG
Tyk7CisgICAgICAgICAgICBjaGlwLT5UcmkwMyA9IDBMOworICAgICAgICAgICAgY2hpcC0+VHJp
MDUgPSAoUml2YVRleHR1cmVkVHJpYW5nbGUwNSAqKSYoY2hpcC0+RklGT1sweDAwMDBFMDAwLzRd
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5WX0FSQ0hfMTA6CisgICAgICAg
IGNhc2UgTlZfQVJDSF8yMDoKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBJbml0aWFs
aXplIHN0YXRlIGZvciB0aGUgUml2YVRyaWFuZ2xlM0QwNSByb3V0aW5lcy4KKyAgICAgICAgICAg
ICAqLworICAgICAgICAgICAgTE9BRF9GSVhFRF9TVEFURShudjEwdHJpMDUsUEdSQVBIKTsKKyAg
ICAgICAgICAgIExPQURfRklYRURfU1RBVEUobnYxMCxGSUZPKTsKKyAgICAgICAgICAgIGNoaXAt
PlRyaTAzID0gMEw7CisgICAgICAgICAgICBjaGlwLT5UcmkwNSA9IChSaXZhVGV4dHVyZWRUcmlh
bmdsZTA1ICopJihjaGlwLT5GSUZPWzB4MDAwMEUwMDAvNF0pOworICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorfQorc3RhdGljIHZvaWQgTG9hZFN0YXRlRXh0CisoCisgICAgUklWQV9IV19JTlNU
ICAqY2hpcCwKKyAgICBSSVZBX0hXX1NUQVRFICpzdGF0ZQorKQoreworICAgIGludCBpOworCisg
ICAgLyoKKyAgICAgKiBMb2FkIEhXIGZpeGVkIGZ1bmN0aW9uIHN0YXRlLgorICAgICAqLworICAg
IExPQURfRklYRURfU1RBVEUoUml2YSxQTUMpOworICAgIExPQURfRklYRURfU1RBVEUoUml2YSxQ
VElNRVIpOworICAgIHN3aXRjaCAoY2hpcC0+QXJjaGl0ZWN0dXJlKQorICAgIHsKKyAgICAgICAg
Y2FzZSBOVl9BUkNIXzAzOgorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIE1ha2Ugc3Vy
ZSBmcmFtZSBidWZmZXIgY29uZmlnIGdldHMgc2V0IGJlZm9yZSBsb2FkaW5nIFBSQU1JTi4KKyAg
ICAgICAgICAgICAqLworICAgICAgICAgICAgY2hpcC0+UEZCWzB4MDAwMDAyMDAvNF0gPSBzdGF0
ZS0+Y29uZmlnOworICAgICAgICAgICAgTE9BRF9GSVhFRF9TVEFURShudjMsUEZJRk8pOworICAg
ICAgICAgICAgTE9BRF9GSVhFRF9TVEFURShudjMsUFJBTUlOKTsKKyAgICAgICAgICAgIExPQURf
RklYRURfU1RBVEUobnYzLFBHUkFQSCk7CisgICAgICAgICAgICBzd2l0Y2ggKHN0YXRlLT5icHAp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAxNToKKyAgICAgICAgICAgICAg
ICBjYXNlIDE2OgorICAgICAgICAgICAgICAgICAgICBMT0FEX0ZJWEVEX1NUQVRFXzE1QlBQKG52
MyxQUkFNSU4pOworICAgICAgICAgICAgICAgICAgICBMT0FEX0ZJWEVEX1NUQVRFXzE1QlBQKG52
MyxQR1JBUEgpOworICAgICAgICAgICAgICAgICAgICBjaGlwLT5UcmkwMyA9IChSaXZhVGV4dHVy
ZWRUcmlhbmdsZTAzICAqKSYoY2hpcC0+RklGT1sweDAwMDBFMDAwLzRdKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyNDoKKyAgICAgICAgICAgICAg
ICBjYXNlIDMyOgorICAgICAgICAgICAgICAgICAgICBMT0FEX0ZJWEVEX1NUQVRFXzMyQlBQKG52
MyxQUkFNSU4pOworICAgICAgICAgICAgICAgICAgICBMT0FEX0ZJWEVEX1NUQVRFXzMyQlBQKG52
MyxQR1JBUEgpOworICAgICAgICAgICAgICAgICAgICBjaGlwLT5UcmkwMyA9IDBMOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDg6CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgTE9BRF9GSVhFRF9TVEFURV84QlBQ
KG52MyxQUkFNSU4pOworICAgICAgICAgICAgICAgICAgICBMT0FEX0ZJWEVEX1NUQVRFXzhCUFAo
bnYzLFBHUkFQSCk7CisgICAgICAgICAgICAgICAgICAgIGNoaXAtPlRyaTAzID0gMEw7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChp
ID0gMHgwMDAwMDsgaSA8IDB4MDA4MDA7IGkrKykKKyAgICAgICAgICAgICAgICBjaGlwLT5QUkFN
SU5bMHgwMDAwMDUwMiArIGldID0gKGkgPDwgMTIpIHwgMHgwMzsKKyAgICAgICAgICAgIGNoaXAt
PlBHUkFQSFsweDAwMDAwNjMwLzRdID0gc3RhdGUtPm9mZnNldDA7CisgICAgICAgICAgICBjaGlw
LT5QR1JBUEhbMHgwMDAwMDYzNC80XSA9IHN0YXRlLT5vZmZzZXQxOworICAgICAgICAgICAgY2hp
cC0+UEdSQVBIWzB4MDAwMDA2MzgvNF0gPSBzdGF0ZS0+b2Zmc2V0MjsKKyAgICAgICAgICAgIGNo
aXAtPlBHUkFQSFsweDAwMDAwNjNDLzRdID0gc3RhdGUtPm9mZnNldDM7CisgICAgICAgICAgICBj
aGlwLT5QR1JBUEhbMHgwMDAwMDY1MC80XSA9IHN0YXRlLT5waXRjaDA7CisgICAgICAgICAgICBj
aGlwLT5QR1JBUEhbMHgwMDAwMDY1NC80XSA9IHN0YXRlLT5waXRjaDE7CisgICAgICAgICAgICBj
aGlwLT5QR1JBUEhbMHgwMDAwMDY1OC80XSA9IHN0YXRlLT5waXRjaDI7CisgICAgICAgICAgICBj
aGlwLT5QR1JBUEhbMHgwMDAwMDY1Qy80XSA9IHN0YXRlLT5waXRjaDM7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBOVl9BUkNIXzA0OgorICAgICAgICAgICAgLyoKKyAgICAgICAg
ICAgICAqIE1ha2Ugc3VyZSBmcmFtZSBidWZmZXIgY29uZmlnIGdldHMgc2V0IGJlZm9yZSBsb2Fk
aW5nIFBSQU1JTi4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgY2hpcC0+UEZCWzB4MDAw
MDAyMDAvNF0gPSBzdGF0ZS0+Y29uZmlnOworICAgICAgICAgICAgTE9BRF9GSVhFRF9TVEFURShu
djQsUEZJRk8pOworICAgICAgICAgICAgTE9BRF9GSVhFRF9TVEFURShudjQsUFJBTUlOKTsKKyAg
ICAgICAgICAgIExPQURfRklYRURfU1RBVEUobnY0LFBHUkFQSCk7CisgICAgICAgICAgICBzd2l0
Y2ggKHN0YXRlLT5icHApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAxNToK
KyAgICAgICAgICAgICAgICAgICAgTE9BRF9GSVhFRF9TVEFURV8xNUJQUChudjQsUFJBTUlOKTsK
KyAgICAgICAgICAgICAgICAgICAgTE9BRF9GSVhFRF9TVEFURV8xNUJQUChudjQsUEdSQVBIKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hpcC0+VHJpMDMgPSAoUml2YVRleHR1cmVkVHJpYW5nbGUw
MyAgKikmKGNoaXAtPkZJRk9bMHgwMDAwRTAwMC80XSk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTY6CisgICAgICAgICAgICAgICAgICAgIExPQURf
RklYRURfU1RBVEVfMTZCUFAobnY0LFBSQU1JTik7CisgICAgICAgICAgICAgICAgICAgIExPQURf
RklYRURfU1RBVEVfMTZCUFAobnY0LFBHUkFQSCk7CisgICAgICAgICAgICAgICAgICAgIGNoaXAt
PlRyaTAzID0gKFJpdmFUZXh0dXJlZFRyaWFuZ2xlMDMgICopJihjaGlwLT5GSUZPWzB4MDAwMEUw
MDAvNF0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IDI0OgorICAgICAgICAgICAgICAgIGNhc2UgMzI6CisgICAgICAgICAgICAgICAgICAgIExPQURf
RklYRURfU1RBVEVfMzJCUFAobnY0LFBSQU1JTik7CisgICAgICAgICAgICAgICAgICAgIExPQURf
RklYRURfU1RBVEVfMzJCUFAobnY0LFBHUkFQSCk7CisgICAgICAgICAgICAgICAgICAgIGNoaXAt
PlRyaTAzID0gMEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgODoKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBM
T0FEX0ZJWEVEX1NUQVRFXzhCUFAobnY0LFBSQU1JTik7CisgICAgICAgICAgICAgICAgICAgIExP
QURfRklYRURfU1RBVEVfOEJQUChudjQsUEdSQVBIKTsKKyAgICAgICAgICAgICAgICAgICAgY2hp
cC0+VHJpMDMgPSAwTDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMDY0MC80XSA9IHN0YXRlLT5vZmZzZXQw
OworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDA2NDQvNF0gPSBzdGF0ZS0+b2Zmc2V0
MTsKKyAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwNjQ4LzRdID0gc3RhdGUtPm9mZnNl
dDI7CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMDY0Qy80XSA9IHN0YXRlLT5vZmZz
ZXQzOworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDA2NzAvNF0gPSBzdGF0ZS0+cGl0
Y2gwOworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDA2NzQvNF0gPSBzdGF0ZS0+cGl0
Y2gxOworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDA2NzgvNF0gPSBzdGF0ZS0+cGl0
Y2gyOworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDA2N0MvNF0gPSBzdGF0ZS0+cGl0
Y2gzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlZfQVJDSF8xMDoKKyAgICAg
ICAgY2FzZSBOVl9BUkNIXzIwOgorICAgICAgICAgICAgaWYoY2hpcC0+dHdvSGVhZHMpIHsKKyAg
ICAgICAgICAgICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNENCwgMHg0NCk7CisgICAgICAg
ICAgICAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDAzRDUsIHN0YXRlLT5jcnRjT3duZXIpOwor
ICAgICAgICAgICAgICAgY2hpcC0+TG9ja1VubG9jayhjaGlwLCAwKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgTE9BRF9GSVhFRF9TVEFURShudjEwLFBGSUZPKTsKKyAgICAgICAgICAg
IExPQURfRklYRURfU1RBVEUobnYxMCxQUkFNSU4pOworICAgICAgICAgICAgTE9BRF9GSVhFRF9T
VEFURShudjEwLFBHUkFQSCk7CisgICAgICAgICAgICBzd2l0Y2ggKHN0YXRlLT5icHApCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAxNToKKyAgICAgICAgICAgICAgICAgICAg
TE9BRF9GSVhFRF9TVEFURV8xNUJQUChudjEwLFBSQU1JTik7CisgICAgICAgICAgICAgICAgICAg
IExPQURfRklYRURfU1RBVEVfMTVCUFAobnYxMCxQR1JBUEgpOworICAgICAgICAgICAgICAgICAg
ICBjaGlwLT5UcmkwMyA9IChSaXZhVGV4dHVyZWRUcmlhbmdsZTAzICAqKSYoY2hpcC0+RklGT1sw
eDAwMDBFMDAwLzRdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSAxNjoKKyAgICAgICAgICAgICAgICAgICAgTE9BRF9GSVhFRF9TVEFURV8xNkJQUChu
djEwLFBSQU1JTik7CisgICAgICAgICAgICAgICAgICAgIExPQURfRklYRURfU1RBVEVfMTZCUFAo
bnYxMCxQR1JBUEgpOworICAgICAgICAgICAgICAgICAgICBjaGlwLT5UcmkwMyA9IChSaXZhVGV4
dHVyZWRUcmlhbmdsZTAzICAqKSYoY2hpcC0+RklGT1sweDAwMDBFMDAwLzRdKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyNDoKKyAgICAgICAgICAg
ICAgICBjYXNlIDMyOgorICAgICAgICAgICAgICAgICAgICBMT0FEX0ZJWEVEX1NUQVRFXzMyQlBQ
KG52MTAsUFJBTUlOKTsKKyAgICAgICAgICAgICAgICAgICAgTE9BRF9GSVhFRF9TVEFURV8zMkJQ
UChudjEwLFBHUkFQSCk7CisgICAgICAgICAgICAgICAgICAgIGNoaXAtPlRyaTAzID0gMEw7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgODoKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBMT0FEX0ZJWEVEX1NUQVRF
XzhCUFAobnYxMCxQUkFNSU4pOworICAgICAgICAgICAgICAgICAgICBMT0FEX0ZJWEVEX1NUQVRF
XzhCUFAobnYxMCxQR1JBUEgpOworICAgICAgICAgICAgICAgICAgICBjaGlwLT5UcmkwMyA9IDBM
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYoY2hpcC0+QXJjaGl0ZWN0dXJlID09IE5WX0FSQ0hfMTApIHsKKyAgICAgICAgICAgICAg
ICBjaGlwLT5QR1JBUEhbMHgwMDAwMDY0MC80XSA9IHN0YXRlLT5vZmZzZXQwOworICAgICAgICAg
ICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwNjQ0LzRdID0gc3RhdGUtPm9mZnNldDE7CisgICAg
ICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDA2NDgvNF0gPSBzdGF0ZS0+b2Zmc2V0MjsK
KyAgICAgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMDY0Qy80XSA9IHN0YXRlLT5vZmZz
ZXQzOworICAgICAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwNjcwLzRdID0gc3RhdGUt
PnBpdGNoMDsKKyAgICAgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMDY3NC80XSA9IHN0
YXRlLT5waXRjaDE7CisgICAgICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDA2NzgvNF0g
PSBzdGF0ZS0+cGl0Y2gyOworICAgICAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwNjdD
LzRdID0gc3RhdGUtPnBpdGNoMzsKKyAgICAgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAw
MDY4MC80XSA9IHN0YXRlLT5waXRjaDM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgIGNoaXAt
PlBHUkFQSFsweDAwMDAwODIwLzRdID0gc3RhdGUtPm9mZnNldDA7CisgICAgICAgIGNoaXAtPlBH
UkFQSFsweDAwMDAwODI0LzRdID0gc3RhdGUtPm9mZnNldDE7CisgICAgICAgIGNoaXAtPlBHUkFQ
SFsweDAwMDAwODI4LzRdID0gc3RhdGUtPm9mZnNldDI7CisgICAgICAgIGNoaXAtPlBHUkFQSFsw
eDAwMDAwODJDLzRdID0gc3RhdGUtPm9mZnNldDM7CisgICAgICAgIGNoaXAtPlBHUkFQSFsweDAw
MDAwODUwLzRdID0gc3RhdGUtPnBpdGNoMDsKKyAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDA4
NTQvNF0gPSBzdGF0ZS0+cGl0Y2gxOworICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMDg1OC80
XSA9IHN0YXRlLT5waXRjaDI7CisgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwODVDLzRdID0g
c3RhdGUtPnBpdGNoMzsKKyAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDA4NjAvNF0gPSBzdGF0
ZS0+cGl0Y2gzOworICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMDg2NC80XSA9IHN0YXRlLT5w
aXRjaDM7CisgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwOUE0LzRdID0gY2hpcC0+UEZCWzB4
MDAwMDAyMDAvNF07CisgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwOUE4LzRdID0gY2hpcC0+
UEZCWzB4MDAwMDAyMDQvNF07CisgICAgICAgIH0KKyAgICAgICAgICAgIGlmKGNoaXAtPnR3b0hl
YWRzKSB7CisgICAgICAgICAgICAgICBjaGlwLT5QQ1JUQzBbMHgwMDAwMDg2MC80XSA9IHN0YXRl
LT5oZWFkOworICAgICAgICAgICAgICAgY2hpcC0+UENSVEMwWzB4MDAwMDI4NjAvNF0gPSBzdGF0
ZS0+aGVhZDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGlwLT5QUkFNREFDWzB4MDAw
MDA0MDQvNF0gfD0gKDEgPDwgMjUpOworCisgICAgICAgICAgICBjaGlwLT5QTUNbMHgwMDAwODcw
NC80XSA9IDE7CisgICAgICAgICAgICBjaGlwLT5QTUNbMHgwMDAwODE0MC80XSA9IDA7CisgICAg
ICAgICAgICBjaGlwLT5QTUNbMHgwMDAwODkyMC80XSA9IDA7CisgICAgICAgICAgICBjaGlwLT5Q
TUNbMHgwMDAwODkyNC80XSA9IDA7CisgICAgICAgICAgICBjaGlwLT5QTUNbMHgwMDAwODkwOC80
XSA9IDB4MDFmZmZmZmY7CisgICAgICAgICAgICBjaGlwLT5QTUNbMHgwMDAwODkwQy80XSA9IDB4
MDFmZmZmZmY7CisgICAgICAgICAgICBjaGlwLT5QTUNbMHgwMDAwMTU4OC80XSA9IDA7CisKKyAg
ICAgICAgICAgIGNoaXAtPlBGQlsweDAwMDAwMjQwLzRdID0gMDsKKyAgICAgICAgICAgIGNoaXAt
PlBGQlsweDAwMDAwMjQ0LzRdID0gMDsKKyAgICAgICAgICAgIGNoaXAtPlBGQlsweDAwMDAwMjQ4
LzRdID0gMDsKKyAgICAgICAgICAgIGNoaXAtPlBGQlsweDAwMDAwMjRDLzRdID0gMDsKKyAgICAg
ICAgICAgIGNoaXAtPlBGQlsweDAwMDAwMjUwLzRdID0gMDsKKyAgICAgICAgICAgIGNoaXAtPlBG
QlsweDAwMDAwMjU0LzRdID0gMDsKKyAgICAgICAgICAgIGNoaXAtPlBGQlsweDAwMDAwMjU4LzRd
ID0gMDsKKyAgICAgICAgICAgIGNoaXAtPlBGQlsweDAwMDAwMjVDLzRdID0gMDsKKworICAgICAg
ICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBCMDAvNF0gPSBjaGlwLT5QRkJbMHgwMDAwMDI0MC80
XTsKKyAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwQjA0LzRdID0gY2hpcC0+UEZCWzB4
MDAwMDAyNDQvNF07CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEIwOC80XSA9IGNo
aXAtPlBGQlsweDAwMDAwMjQ4LzRdOworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBC
MEMvNF0gPSBjaGlwLT5QRkJbMHgwMDAwMDI0Qy80XTsKKyAgICAgICAgICAgIGNoaXAtPlBHUkFQ
SFsweDAwMDAwQjEwLzRdID0gY2hpcC0+UEZCWzB4MDAwMDAyNTAvNF07CisgICAgICAgICAgICBj
aGlwLT5QR1JBUEhbMHgwMDAwMEIxNC80XSA9IGNoaXAtPlBGQlsweDAwMDAwMjU0LzRdOworICAg
ICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBCMTgvNF0gPSBjaGlwLT5QRkJbMHgwMDAwMDI1
OC80XTsKKyAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwQjFDLzRdID0gY2hpcC0+UEZC
WzB4MDAwMDAyNUMvNF07CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEIyMC80XSA9
IGNoaXAtPlBGQlsweDAwMDAwMjYwLzRdOworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAw
MDBCMjQvNF0gPSBjaGlwLT5QRkJbMHgwMDAwMDI2NC80XTsKKyAgICAgICAgICAgIGNoaXAtPlBH
UkFQSFsweDAwMDAwQjI4LzRdID0gY2hpcC0+UEZCWzB4MDAwMDAyNjgvNF07CisgICAgICAgICAg
ICBjaGlwLT5QR1JBUEhbMHgwMDAwMEIyQy80XSA9IGNoaXAtPlBGQlsweDAwMDAwMjZDLzRdOwor
ICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBCMzAvNF0gPSBjaGlwLT5QRkJbMHgwMDAw
MDI3MC80XTsKKyAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwQjM0LzRdID0gY2hpcC0+
UEZCWzB4MDAwMDAyNzQvNF07CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEIzOC80
XSA9IGNoaXAtPlBGQlsweDAwMDAwMjc4LzRdOworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4
MDAwMDBCM0MvNF0gPSBjaGlwLT5QRkJbMHgwMDAwMDI3Qy80XTsKKyAgICAgICAgICAgIGNoaXAt
PlBHUkFQSFsweDAwMDAwQjQwLzRdID0gY2hpcC0+UEZCWzB4MDAwMDAyODAvNF07CisgICAgICAg
ICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEI0NC80XSA9IGNoaXAtPlBGQlsweDAwMDAwMjg0LzRd
OworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBCNDgvNF0gPSBjaGlwLT5QRkJbMHgw
MDAwMDI4OC80XTsKKyAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwQjRDLzRdID0gY2hp
cC0+UEZCWzB4MDAwMDAyOEMvNF07CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEI1
MC80XSA9IGNoaXAtPlBGQlsweDAwMDAwMjkwLzRdOworICAgICAgICAgICAgY2hpcC0+UEdSQVBI
WzB4MDAwMDBCNTQvNF0gPSBjaGlwLT5QRkJbMHgwMDAwMDI5NC80XTsKKyAgICAgICAgICAgIGNo
aXAtPlBHUkFQSFsweDAwMDAwQjU4LzRdID0gY2hpcC0+UEZCWzB4MDAwMDAyOTgvNF07CisgICAg
ICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEI1Qy80XSA9IGNoaXAtPlBGQlsweDAwMDAwMjlD
LzRdOworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBCNjAvNF0gPSBjaGlwLT5QRkJb
MHgwMDAwMDJBMC80XTsKKyAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwQjY0LzRdID0g
Y2hpcC0+UEZCWzB4MDAwMDAyQTQvNF07CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAw
MEI2OC80XSA9IGNoaXAtPlBGQlsweDAwMDAwMkE4LzRdOworICAgICAgICAgICAgY2hpcC0+UEdS
QVBIWzB4MDAwMDBCNkMvNF0gPSBjaGlwLT5QRkJbMHgwMDAwMDJBQy80XTsKKyAgICAgICAgICAg
IGNoaXAtPlBHUkFQSFsweDAwMDAwQjcwLzRdID0gY2hpcC0+UEZCWzB4MDAwMDAyQjAvNF07Cisg
ICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEI3NC80XSA9IGNoaXAtPlBGQlsweDAwMDAw
MkI0LzRdOworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBCNzgvNF0gPSBjaGlwLT5Q
RkJbMHgwMDAwMDJCOC80XTsKKyAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwQjdDLzRd
ID0gY2hpcC0+UEZCWzB4MDAwMDAyQkMvNF07CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgw
MDAwMEY0MC80XSA9IDB4MTAwMDAwMDA7CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAw
MEY0NC80XSA9IDB4MDAwMDAwMDA7CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEY1
MC80XSA9IDB4MDAwMDAwNDA7CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEY1NC80
XSA9IDB4MDAwMDAwMDg7CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEY1MC80XSA9
IDB4MDAwMDAyMDA7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKDMqMTYpOyBpKyspCisg
ICAgICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBGNTQvNF0gPSAweDAwMDAwMDAwOwor
ICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBGNTAvNF0gPSAweDAwMDAwMDQwOworICAg
ICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBGNTQvNF0gPSAweDAwMDAwMDAwOworICAgICAg
ICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBGNTAvNF0gPSAweDAwMDAwODAwOworICAgICAgICAg
ICAgZm9yIChpID0gMDsgaSA8ICgxNioxNik7IGkrKykKKyAgICAgICAgICAgICAgICBjaGlwLT5Q
R1JBUEhbMHgwMDAwMEY1NC80XSA9IDB4MDAwMDAwMDA7CisgICAgICAgICAgICBjaGlwLT5QR1JB
UEhbMHgwMDAwMEY0MC80XSA9IDB4MzAwMDAwMDA7CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhb
MHgwMDAwMEY0NC80XSA9IDB4MDAwMDAwMDQ7CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgw
MDAwMEY1MC80XSA9IDB4MDAwMDY0MDA7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKDU5
KjQpOyBpKyspCisgICAgICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBGNTQvNF0gPSAw
eDAwMDAwMDAwOworICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBGNTAvNF0gPSAweDAw
MDA2ODAwOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8ICg0Nyo0KTsgaSsrKQorICAgICAg
ICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwRjU0LzRdID0gMHgwMDAwMDAwMDsKKyAgICAg
ICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwRjUwLzRdID0gMHgwMDAwNkMwMDsKKyAgICAgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCAoMyo0KTsgaSsrKQorICAgICAgICAgICAgICAgIGNoaXAtPlBH
UkFQSFsweDAwMDAwRjU0LzRdID0gMHgwMDAwMDAwMDsKKyAgICAgICAgICAgIGNoaXAtPlBHUkFQ
SFsweDAwMDAwRjUwLzRdID0gMHgwMDAwNzAwMDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg
PCAoMTkqNCk7IGkrKykKKyAgICAgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEY1NC80
XSA9IDB4MDAwMDAwMDA7CisgICAgICAgICAgICBjaGlwLT5QR1JBUEhbMHgwMDAwMEY1MC80XSA9
IDB4MDAwMDc0MDA7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKDEyKjQpOyBpKyspCisg
ICAgICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBGNTQvNF0gPSAweDAwMDAwMDAwOwor
ICAgICAgICAgICAgY2hpcC0+UEdSQVBIWzB4MDAwMDBGNTAvNF0gPSAweDAwMDA3ODAwOworICAg
ICAgICAgICAgZm9yIChpID0gMDsgaSA8ICgxMio0KTsgaSsrKQorICAgICAgICAgICAgICAgIGNo
aXAtPlBHUkFQSFsweDAwMDAwRjU0LzRdID0gMHgwMDAwMDAwMDsKKyAgICAgICAgICAgIGNoaXAt
PlBHUkFQSFsweDAwMDAwRjUwLzRdID0gMHgwMDAwNDQwMDsKKyAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCAoOCo0KTsgaSsrKQorICAgICAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAw
RjU0LzRdID0gMHgwMDAwMDAwMDsKKyAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwRjUw
LzRdID0gMHgwMDAwMDAwMDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQor
ICAgICAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwRjU0LzRdID0gMHgwMDAwMDAwMDsK
KyAgICAgICAgICAgIGNoaXAtPlBHUkFQSFsweDAwMDAwRjUwLzRdID0gMHgwMDAwMDA0MDsKKyAg
ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgICAgICAgICAgY2hpcC0+
UEdSQVBIWzB4MDAwMDBGNTQvNF0gPSAweDAwMDAwMDAwOworCisgICAgICAgICAgICBjaGlwLT5Q
Q1JUQ1sweDAwMDAwODBjLzRdID0gc3RhdGUtPmN1cnNvcjA7CisgICAgICAgICAgICBjaGlwLT5Q
Q1JUQ1sweDAwMDAwODEwLzRdID0gc3RhdGUtPmN1cnNvckNvbmZpZzsKKworICAgICAgICAgICAg
aWYoY2hpcC0+ZmxhdFBhbmVsKSB7CisgICAgICAgICAgICAgICBpZigoY2hpcC0+Q2hpcHNldCAm
IDB4MGZmMCkgPT0gMHgwMTEwKSB7CisgICAgICAgICAgICAgICAgICAgY2hpcC0+UFJBTURBQ1sw
eDA1MjgvNF0gPSBzdGF0ZS0+ZGl0aGVyOworICAgICAgICAgICAgICAgfSBlbHNlIAorICAgICAg
ICAgICAgICAgaWYoKGNoaXAtPkNoaXBzZXQgJiAweDBmZjApID49IDB4MDE3MCkgeworICAgICAg
ICAgICAgICAgICAgIGNoaXAtPlBSQU1EQUNbMHgwODNDLzRdID0gc3RhdGUtPmRpdGhlcjsKKyAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgVkdBX1dSMDgoY2hp
cC0+UENJTywgMHgwM0Q0LCAweDUzKTsKKyAgICAgICAgICAgICAgIFZHQV9XUjA4KGNoaXAtPlBD
SU8sIDB4MDNENSwgMCk7CisgICAgICAgICAgICAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDAz
RDQsIDB4NTQpOworICAgICAgICAgICAgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgwM0Q1LCAw
KTsKKyAgICAgICAgICAgICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNENCwgMHgyMSk7Cisg
ICAgICAgICAgICAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDAzRDUsIDB4ZmEpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDAzRDQsIDB4NDEp
OworICAgICAgICAgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgwM0Q1LCBzdGF0ZS0+ZXh0cmEp
OworICAgIH0KKyAgICBMT0FEX0ZJWEVEX1NUQVRFKFJpdmEsRklGTyk7CisgICAgVXBkYXRlRmlm
b1N0YXRlKGNoaXApOworICAgIC8qCisgICAgICogTG9hZCBIVyBtb2RlIHN0YXRlLgorICAgICAq
LworICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNENCwgMHgxOSk7CisgICAgVkdBX1dSMDgo
Y2hpcC0+UENJTywgMHgwM0Q1LCBzdGF0ZS0+cmVwYWludDApOworICAgIFZHQV9XUjA4KGNoaXAt
PlBDSU8sIDB4MDNENCwgMHgxQSk7CisgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgwM0Q1LCBz
dGF0ZS0+cmVwYWludDEpOworICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNENCwgMHgyNSk7
CisgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgwM0Q1LCBzdGF0ZS0+c2NyZWVuKTsKKyAgICBW
R0FfV1IwOChjaGlwLT5QQ0lPLCAweDAzRDQsIDB4MjgpOworICAgIFZHQV9XUjA4KGNoaXAtPlBD
SU8sIDB4MDNENSwgc3RhdGUtPnBpeGVsKTsKKyAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDAz
RDQsIDB4MkQpOworICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNENSwgc3RhdGUtPmhvcml6
KTsKKyAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDAzRDQsIDB4MUIpOworICAgIFZHQV9XUjA4
KGNoaXAtPlBDSU8sIDB4MDNENSwgc3RhdGUtPmFyYml0cmF0aW9uMCk7CisgICAgVkdBX1dSMDgo
Y2hpcC0+UENJTywgMHgwM0Q0LCAweDIwKTsKKyAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDAz
RDUsIHN0YXRlLT5hcmJpdHJhdGlvbjEpOworICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNE
NCwgMHgzMCk7CisgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgwM0Q0LCAweDM5KTsKKyAgICBW
R0FfV1IwOChjaGlwLT5QQ0lPLCAweDAzRDUsIHN0YXRlLT5pbnRlcmxhY2UpOworCisgICAgaWYo
IWNoaXAtPmZsYXRQYW5lbCkgeworICAgICAgIGNoaXAtPlBSQU1EQUMwWzB4MDAwMDA1MDgvNF0g
PSBzdGF0ZS0+dnBsbDsKKyAgICAgICBjaGlwLT5QUkFNREFDMFsweDAwMDAwNTBDLzRdID0gc3Rh
dGUtPnBsbHNlbDsKKyAgICAgICBpZihjaGlwLT50d29IZWFkcykKKyAgICAgICAgICBjaGlwLT5Q
UkFNREFDMFsweDAwMDAwNTIwLzRdID0gc3RhdGUtPnZwbGwyOworICAgIH0gIGVsc2UgeworICAg
ICAgIGNoaXAtPlBSQU1EQUNbMHgwMDAwMDg0OC80XSAgPSBzdGF0ZS0+c2NhbGU7CisgICAgfSAg
CisgICAgY2hpcC0+UFJBTURBQ1sweDAwMDAwNjAwLzRdICA9IHN0YXRlLT5nZW5lcmFsOworICAg
IGNoaXAtPlBDUlRDWzB4MDAwMDA4MDAvNF0gPSBzdGF0ZS0+ZmJfc3RhcnQ7CisgICAgY2hpcC0+
UFJBTURBQ1sweDAwMDAwODAwLzRdID0gc3RhdGUtPnZlbmQ7CisgICAgY2hpcC0+UFJBTURBQ1sw
eDAwMDAwODA0LzRdID0gc3RhdGUtPnZ0b3RhbDsKKyAgICBjaGlwLT5QUkFNREFDWzB4MDAwMDA4
MDgvNF0gPSBzdGF0ZS0+dmNydGM7CisgICAgY2hpcC0+UFJBTURBQ1sweDAwMDAwODBjLzRdID0g
c3RhdGUtPnZzeW5jc3RhcnQ7CisgICAgY2hpcC0+UFJBTURBQ1sweDAwMDAwODEwLzRdID0gc3Rh
dGUtPnZzeW5jZW5kOworICAgIGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgxNC80XSA9IHN0YXRlLT52
dmFsaWRzdGFydDsKKyAgICBjaGlwLT5QUkFNREFDWzB4MDAwMDA4MTgvNF0gPSBzdGF0ZS0+dnZh
bGlkZW5kOworICAgIGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgyMC80XSA9IHN0YXRlLT5oZW5kOwor
ICAgIGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgyNC80XSA9IHN0YXRlLT5odG90YWw7CisgICAgY2hp
cC0+UFJBTURBQ1sweDAwMDAwODI4LzRdID0gc3RhdGUtPmhjcnRjOworICAgIGNoaXAtPlBSQU1E
QUNbMHgwMDAwMDgyYy80XSA9IHN0YXRlLT5oc3luY3N0YXJ0OworICAgIGNoaXAtPlBSQU1EQUNb
MHgwMDAwMDgzMC80XSA9IHN0YXRlLT5oc3luY2VuZDsKKyAgICBjaGlwLT5QUkFNREFDWzB4MDAw
MDA4MzQvNF0gPSBzdGF0ZS0+aHZhbGlkc3RhcnQ7CisgICAgY2hpcC0+UFJBTURBQ1sweDAwMDAw
ODM4LzRdID0gc3RhdGUtPmh2YWxpZGVuZDsKKyAgICBjaGlwLT5QUkFNREFDWzB4MDAwMDA4NDAv
NF0gPSBzdGF0ZS0+Y2hlY2tzdW0gOworCisgICAgLyoKKyAgICAgKiBUdXJuIG9mZiBWQmxhbmsg
ZW5hYmxlIGFuZCByZXNldC4KKyAgICAgKi8KKyAgICBjaGlwLT5QQ1JUQ1sweDAwMDAwMTQwLzRd
ID0gMDsKKyAgICBjaGlwLT5QQ1JUQ1sweDAwMDAwMTAwLzRdID0gY2hpcC0+VkJsYW5rQml0Owor
ICAgIC8qCisgICAgICogU2V0IGludGVycnVwdCBlbmFibGUuCisgICAgICovICAgIAorICAgIGNo
aXAtPlBNQ1sweDAwMDAwMTQwLzRdICA9IGNoaXAtPkVuYWJsZUlSUSAmIDB4MDE7CisgICAgLyoK
KyAgICAgKiBTZXQgY3VycmVudCBzdGF0ZSBwb2ludGVyLgorICAgICAqLworICAgIGNoaXAtPkN1
cnJlbnRTdGF0ZSA9IHN0YXRlOworICAgIC8qCisgICAgICogUmVzZXQgRklGTyBmcmVlIGFuZCBl
bXB0eSBjb3VudHMuCisgICAgICovCisgICAgY2hpcC0+Rmlmb0ZyZWVDb3VudCAgPSAwOworICAg
IC8qIEZyZWUgY291bnQgZnJvbSBmaXJzdCBzdWJjaGFubmVsICovCisgICAgY2hpcC0+Rmlmb0Vt
cHR5Q291bnQgPSBjaGlwLT5Sb3AtPkZpZm9GcmVlOyAKK30KK3N0YXRpYyB2b2lkIFVubG9hZFN0
YXRlRXh0CisoCisgICAgUklWQV9IV19JTlNUICAqY2hpcCwKKyAgICBSSVZBX0hXX1NUQVRFICpz
dGF0ZQorKQoreworICAgIC8qCisgICAgICogU2F2ZSBjdXJyZW50IEhXIHN0YXRlLgorICAgICAq
LworICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNENCwgMHgxOSk7CisgICAgc3RhdGUtPnJl
cGFpbnQwICAgICA9IFZHQV9SRDA4KGNoaXAtPlBDSU8sIDB4MDNENSk7CisgICAgVkdBX1dSMDgo
Y2hpcC0+UENJTywgMHgwM0Q0LCAweDFBKTsKKyAgICBzdGF0ZS0+cmVwYWludDEgICAgID0gVkdB
X1JEMDgoY2hpcC0+UENJTywgMHgwM0Q1KTsKKyAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDAz
RDQsIDB4MjUpOworICAgIHN0YXRlLT5zY3JlZW4gICAgICAgPSBWR0FfUkQwOChjaGlwLT5QQ0lP
LCAweDAzRDUpOworICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNENCwgMHgyOCk7CisgICAg
c3RhdGUtPnBpeGVsICAgICAgICA9IFZHQV9SRDA4KGNoaXAtPlBDSU8sIDB4MDNENSk7CisgICAg
VkdBX1dSMDgoY2hpcC0+UENJTywgMHgwM0Q0LCAweDJEKTsKKyAgICBzdGF0ZS0+aG9yaXogICAg
ICAgID0gVkdBX1JEMDgoY2hpcC0+UENJTywgMHgwM0Q1KTsKKyAgICBWR0FfV1IwOChjaGlwLT5Q
Q0lPLCAweDAzRDQsIDB4MUIpOworICAgIHN0YXRlLT5hcmJpdHJhdGlvbjAgPSBWR0FfUkQwOChj
aGlwLT5QQ0lPLCAweDAzRDUpOworICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNENCwgMHgy
MCk7CisgICAgc3RhdGUtPmFyYml0cmF0aW9uMSA9IFZHQV9SRDA4KGNoaXAtPlBDSU8sIDB4MDNE
NSk7CisgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgwM0Q0LCAweDM5KTsKKyAgICBzdGF0ZS0+
aW50ZXJsYWNlICAgID0gVkdBX1JEMDgoY2hpcC0+UENJTywgMHgwM0Q1KTsKKyAgICBzdGF0ZS0+
dnBsbCAgICAgICAgID0gY2hpcC0+UFJBTURBQzBbMHgwMDAwMDUwOC80XTsKKyAgICBzdGF0ZS0+
dnBsbDIgICAgICAgID0gY2hpcC0+UFJBTURBQzBbMHgwMDAwMDUyMC80XTsKKyAgICBzdGF0ZS0+
cGxsc2VsICAgICAgID0gY2hpcC0+UFJBTURBQzBbMHgwMDAwMDUwQy80XTsKKyAgICBzdGF0ZS0+
Z2VuZXJhbCAgICAgID0gY2hpcC0+UFJBTURBQ1sweDAwMDAwNjAwLzRdOworICAgIHN0YXRlLT5z
Y2FsZSAgICAgICAgPSBjaGlwLT5QUkFNREFDWzB4MDAwMDA4NDgvNF07CisgICAgc3RhdGUtPmNv
bmZpZyAgICAgICA9IGNoaXAtPlBGQlsweDAwMDAwMjAwLzRdOworICAgIHN3aXRjaCAoY2hpcC0+
QXJjaGl0ZWN0dXJlKQorICAgIHsKKyAgICAgICAgY2FzZSBOVl9BUkNIXzAzOgorICAgICAgICAg
ICAgc3RhdGUtPm9mZnNldDAgID0gY2hpcC0+UEdSQVBIWzB4MDAwMDA2MzAvNF07CisgICAgICAg
ICAgICBzdGF0ZS0+b2Zmc2V0MSAgPSBjaGlwLT5QR1JBUEhbMHgwMDAwMDYzNC80XTsKKyAgICAg
ICAgICAgIHN0YXRlLT5vZmZzZXQyICA9IGNoaXAtPlBHUkFQSFsweDAwMDAwNjM4LzRdOworICAg
ICAgICAgICAgc3RhdGUtPm9mZnNldDMgID0gY2hpcC0+UEdSQVBIWzB4MDAwMDA2M0MvNF07Cisg
ICAgICAgICAgICBzdGF0ZS0+cGl0Y2gwICAgPSBjaGlwLT5QR1JBUEhbMHgwMDAwMDY1MC80XTsK
KyAgICAgICAgICAgIHN0YXRlLT5waXRjaDEgICA9IGNoaXAtPlBHUkFQSFsweDAwMDAwNjU0LzRd
OworICAgICAgICAgICAgc3RhdGUtPnBpdGNoMiAgID0gY2hpcC0+UEdSQVBIWzB4MDAwMDA2NTgv
NF07CisgICAgICAgICAgICBzdGF0ZS0+cGl0Y2gzICAgPSBjaGlwLT5QR1JBUEhbMHgwMDAwMDY1
Qy80XTsKKyAgICAgICAgICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNENCwgMHgzMCk7Cisg
ICAgICAgICAgICBzdGF0ZS0+Y3Vyc29yMCAgICAgID0gVkdBX1JEMDgoY2hpcC0+UENJTywgMHgw
M0Q1KTsKKyAgICAgICAgICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNENCwgMHgzMSk7Cisg
ICAgICAgICAgICBzdGF0ZS0+Y3Vyc29yMSAgICAgID0gVkdBX1JEMDgoY2hpcC0+UENJTywgMHgw
M0Q1KTsKKyAgICAgICAgICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4MDNENCwgMHgyRik7Cisg
ICAgICAgICAgICBzdGF0ZS0+Y3Vyc29yMiAgICAgID0gVkdBX1JEMDgoY2hpcC0+UENJTywgMHgw
M0Q1KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5WX0FSQ0hfMDQ6CisgICAg
ICAgICAgICBzdGF0ZS0+b2Zmc2V0MCAgPSBjaGlwLT5QR1JBUEhbMHgwMDAwMDY0MC80XTsKKyAg
ICAgICAgICAgIHN0YXRlLT5vZmZzZXQxICA9IGNoaXAtPlBHUkFQSFsweDAwMDAwNjQ0LzRdOwor
ICAgICAgICAgICAgc3RhdGUtPm9mZnNldDIgID0gY2hpcC0+UEdSQVBIWzB4MDAwMDA2NDgvNF07
CisgICAgICAgICAgICBzdGF0ZS0+b2Zmc2V0MyAgPSBjaGlwLT5QR1JBUEhbMHgwMDAwMDY0Qy80
XTsKKyAgICAgICAgICAgIHN0YXRlLT5waXRjaDAgICA9IGNoaXAtPlBHUkFQSFsweDAwMDAwNjcw
LzRdOworICAgICAgICAgICAgc3RhdGUtPnBpdGNoMSAgID0gY2hpcC0+UEdSQVBIWzB4MDAwMDA2
NzQvNF07CisgICAgICAgICAgICBzdGF0ZS0+cGl0Y2gyICAgPSBjaGlwLT5QR1JBUEhbMHgwMDAw
MDY3OC80XTsKKyAgICAgICAgICAgIHN0YXRlLT5waXRjaDMgICA9IGNoaXAtPlBHUkFQSFsweDAw
MDAwNjdDLzRdOworICAgICAgICAgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgwM0Q0LCAweDMw
KTsKKyAgICAgICAgICAgIHN0YXRlLT5jdXJzb3IwICAgICAgPSBWR0FfUkQwOChjaGlwLT5QQ0lP
LCAweDAzRDUpOworICAgICAgICAgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgwM0Q0LCAweDMx
KTsKKyAgICAgICAgICAgIHN0YXRlLT5jdXJzb3IxICAgICAgPSBWR0FfUkQwOChjaGlwLT5QQ0lP
LCAweDAzRDUpOworICAgICAgICAgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgwM0Q0LCAweDJG
KTsKKyAgICAgICAgICAgIHN0YXRlLT5jdXJzb3IyICAgICAgPSBWR0FfUkQwOChjaGlwLT5QQ0lP
LCAweDAzRDUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlZfQVJDSF8xMDoK
KyAgICAgICAgY2FzZSBOVl9BUkNIXzIwOgorICAgICAgICAgICAgc3RhdGUtPm9mZnNldDAgID0g
Y2hpcC0+UEdSQVBIWzB4MDAwMDA2NDAvNF07CisgICAgICAgICAgICBzdGF0ZS0+b2Zmc2V0MSAg
PSBjaGlwLT5QR1JBUEhbMHgwMDAwMDY0NC80XTsKKyAgICAgICAgICAgIHN0YXRlLT5vZmZzZXQy
ICA9IGNoaXAtPlBHUkFQSFsweDAwMDAwNjQ4LzRdOworICAgICAgICAgICAgc3RhdGUtPm9mZnNl
dDMgID0gY2hpcC0+UEdSQVBIWzB4MDAwMDA2NEMvNF07CisgICAgICAgICAgICBzdGF0ZS0+cGl0
Y2gwICAgPSBjaGlwLT5QR1JBUEhbMHgwMDAwMDY3MC80XTsKKyAgICAgICAgICAgIHN0YXRlLT5w
aXRjaDEgICA9IGNoaXAtPlBHUkFQSFsweDAwMDAwNjc0LzRdOworICAgICAgICAgICAgc3RhdGUt
PnBpdGNoMiAgID0gY2hpcC0+UEdSQVBIWzB4MDAwMDA2NzgvNF07CisgICAgICAgICAgICBzdGF0
ZS0+cGl0Y2gzICAgPSBjaGlwLT5QR1JBUEhbMHgwMDAwMDY3Qy80XTsKKyAgICAgICAgICAgIGlm
KGNoaXAtPnR3b0hlYWRzKSB7CisgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZCAgICAgPSBjaGlw
LT5QQ1JUQzBbMHgwMDAwMDg2MC80XTsKKyAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkMiAgICA9
IGNoaXAtPlBDUlRDMFsweDAwMDAyODYwLzRdOworICAgICAgICAgICAgICAgVkdBX1dSMDgoY2hp
cC0+UENJTywgMHgwM0Q0LCAweDQ0KTsKKyAgICAgICAgICAgICAgIHN0YXRlLT5jcnRjT3duZXIg
PSBWR0FfUkQwOChjaGlwLT5QQ0lPLCAweDAzRDUpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgwM0Q0LCAweDQxKTsKKyAgICAgICAgICAgIHN0YXRl
LT5leHRyYSA9IFZHQV9SRDA4KGNoaXAtPlBDSU8sIDB4MDNENSk7CisgICAgICAgICAgICBzdGF0
ZS0+Y3Vyc29yQ29uZmlnID0gY2hpcC0+UENSVENbMHgwMDAwMDgxMC80XTsKKworICAgICAgICAg
ICAgaWYoKGNoaXAtPkNoaXBzZXQgJiAweDBmZjApID09IDB4MDExMCkgeworICAgICAgICAgICAg
ICAgIHN0YXRlLT5kaXRoZXIgPSBjaGlwLT5QUkFNREFDWzB4MDUyOC80XTsKKyAgICAgICAgICAg
IH0gZWxzZSAKKyAgICAgICAgICAgIGlmKChjaGlwLT5DaGlwc2V0ICYgMHgwZmYwKSA+PSAweDAx
NzApIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS0+ZGl0aGVyID0gY2hpcC0+UFJBTURBQ1sweDA4
M0MvNF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS0+ZmJfc3RhcnQgICAgPSBj
aGlwLT5QQ1JUQ1sweDAwMDAwODAwLzRdOworICAgICAgICAgICAgc3RhdGUtPmN1cnNvcjAgICAg
ID0gY2hpcC0+UENSVENbMHgwMDAwMDgwYy80XTsKKyAgICAgICAgICAgIHN0YXRlLT52ZW5kICAg
ICAgICA9IGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgwMC80XTsKKyAgICAgICAgICAgIHN0YXRlLT52
dG90YWwgICAgICA9IGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgwNC80XTsKKyAgICAgICAgICAgIHN0
YXRlLT52Y3J0YyAgICAgICA9IGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgwOC80XTsKKyAgICAgICAg
ICAgIHN0YXRlLT52c3luY3N0YXJ0ICA9IGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgwYy80XTsKKyAg
ICAgICAgICAgIHN0YXRlLT52c3luY2VuZCAgICA9IGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgxMC80
XTsKKyAgICAgICAgICAgIHN0YXRlLT52dmFsaWRzdGFydCA9IGNoaXAtPlBSQU1EQUNbMHgwMDAw
MDgxNC80XTsKKyAgICAgICAgICAgIHN0YXRlLT52dmFsaWRlbmQgICA9IGNoaXAtPlBSQU1EQUNb
MHgwMDAwMDgxOC80XTsKKyAgICAgICAgICAgIHN0YXRlLT5oZW5kICAgICAgICA9IGNoaXAtPlBS
QU1EQUNbMHgwMDAwMDgyMC80XTsKKyAgICAgICAgICAgIHN0YXRlLT5odG90YWwgICAgICA9IGNo
aXAtPlBSQU1EQUNbMHgwMDAwMDgyNC80XTsKKyAgICAgICAgICAgIHN0YXRlLT5oY3J0YyAgICAg
ICA9IGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgyOC80XTsKKyAgICAgICAgICAgIHN0YXRlLT5oc3lu
Y3N0YXJ0ICA9IGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgyYy80XTsKKyAgICAgICAgICAgIHN0YXRl
LT5oc3luY2VuZCAgICA9IGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgzMC80XTsKKyAgICAgICAgICAg
IHN0YXRlLT5odmFsaWRzdGFydCA9IGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgzNC80XTsKKyAgICAg
ICAgICAgIHN0YXRlLT5odmFsaWRlbmQgICA9IGNoaXAtPlBSQU1EQUNbMHgwMDAwMDgzOC80XTsK
KyAgICAgICAgICAgIHN0YXRlLT5jaGVja3N1bSAgICA9IGNoaXAtPlBSQU1EQUNbMHgwMDAwMDg0
MC80XTsJICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorc3RhdGljIHZvaWQgU2V0
U3RhcnRBZGRyZXNzCisoCisgICAgUklWQV9IV19JTlNUICpjaGlwLAorICAgIHVuc2lnbmVkICAg
ICAgc3RhcnQKKykKK3sKKyAgICBjaGlwLT5QQ1JUQ1sweDgwMC80XSA9IHN0YXJ0OworfQorCitz
dGF0aWMgdm9pZCBTZXRTdGFydEFkZHJlc3MzCisoCisgICAgUklWQV9IV19JTlNUICpjaGlwLAor
ICAgIHVuc2lnbmVkICAgICAgc3RhcnQKKykKK3sKKyAgICBpbnQgb2Zmc2V0ID0gc3RhcnQgPj4g
MjsKKyAgICBpbnQgcGFuICAgID0gKHN0YXJ0ICYgMykgPDwgMTsKKyAgICB1bnNpZ25lZCBjaGFy
IHRtcDsKKworICAgIC8qCisgICAgICogVW5sb2NrIGV4dGVuZGVkIHJlZ2lzdGVycy4KKyAgICAg
Ki8KKyAgICBjaGlwLT5Mb2NrVW5sb2NrKGNoaXAsIDApOworICAgIC8qCisgICAgICogU2V0IHN0
YXJ0IGFkZHJlc3MuCisgICAgICovCisgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgzRDQsIDB4
MEQpOyBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDNENSwgb2Zmc2V0KTsKKyAgICBvZmZzZXQgPj49
IDg7CisgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgzRDQsIDB4MEMpOyBWR0FfV1IwOChjaGlw
LT5QQ0lPLCAweDNENSwgb2Zmc2V0KTsKKyAgICBvZmZzZXQgPj49IDg7CisgICAgVkdBX1dSMDgo
Y2hpcC0+UENJTywgMHgzRDQsIDB4MTkpOyB0bXAgPSBWR0FfUkQwOChjaGlwLT5QQ0lPLCAweDNE
NSk7CisgICAgVkdBX1dSMDgoY2hpcC0+UENJTywgMHgzRDUsIChvZmZzZXQgJiAweDAxRikgfCAo
dG1wICYgfjB4MUYpKTsKKyAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDNENCwgMHgyRCk7IHRt
cCA9IFZHQV9SRDA4KGNoaXAtPlBDSU8sIDB4M0Q1KTsKKyAgICBWR0FfV1IwOChjaGlwLT5QQ0lP
LCAweDNENSwgKG9mZnNldCAmIDB4NjApIHwgKHRtcCAmIH4weDYwKSk7CisgICAgLyoKKyAgICAg
KiA0IHBpeGVsIHBhbiByZWdpc3Rlci4KKyAgICAgKi8KKyAgICBvZmZzZXQgPSBWR0FfUkQwOChj
aGlwLT5QQ0lPLCBjaGlwLT5JTyArIDB4MEEpOworICAgIFZHQV9XUjA4KGNoaXAtPlBDSU8sIDB4
M0MwLCAweDEzKTsKKyAgICBWR0FfV1IwOChjaGlwLT5QQ0lPLCAweDNDMCwgcGFuKTsKK30KK3N0
YXRpYyB2b2lkIG52M1NldFN1cmZhY2VzMkQKKygKKyAgICBSSVZBX0hXX0lOU1QgKmNoaXAsCisg
ICAgdW5zaWduZWQgICAgIHN1cmYwLAorICAgIHVuc2lnbmVkICAgICBzdXJmMQorKQoreworICAg
IFJpdmFTdXJmYWNlICpTdXJmYWNlID0gKFJpdmFTdXJmYWNlICopJihjaGlwLT5GSUZPWzB4MDAw
MEUwMDAvNF0pOworCisgICAgUklWQV9GSUZPX0ZSRUUoKmNoaXAsVHJpMDMsNSk7CisgICAgY2hp
cC0+RklGT1sweDAwMDAzODAwXSA9IDB4ODAwMDAwMDM7CisgICAgU3VyZmFjZS0+T2Zmc2V0ICAg
ICAgICA9IHN1cmYwOworICAgIGNoaXAtPkZJRk9bMHgwMDAwMzgwMF0gPSAweDgwMDAwMDA0Owor
ICAgIFN1cmZhY2UtPk9mZnNldCAgICAgICAgPSBzdXJmMTsKKyAgICBjaGlwLT5GSUZPWzB4MDAw
MDM4MDBdID0gMHg4MDAwMDAxMzsKK30KK3N0YXRpYyB2b2lkIG52NFNldFN1cmZhY2VzMkQKKygK
KyAgICBSSVZBX0hXX0lOU1QgKmNoaXAsCisgICAgdW5zaWduZWQgICAgIHN1cmYwLAorICAgIHVu
c2lnbmVkICAgICBzdXJmMQorKQoreworICAgIFJpdmFTdXJmYWNlICpTdXJmYWNlID0gKFJpdmFT
dXJmYWNlICopJihjaGlwLT5GSUZPWzB4MDAwMEUwMDAvNF0pOworCisgICAgY2hpcC0+RklGT1sw
eDAwMDAzODAwXSA9IDB4ODAwMDAwMDM7CisgICAgU3VyZmFjZS0+T2Zmc2V0ICAgICAgICA9IHN1
cmYwOworICAgIGNoaXAtPkZJRk9bMHgwMDAwMzgwMF0gPSAweDgwMDAwMDA0OworICAgIFN1cmZh
Y2UtPk9mZnNldCAgICAgICAgPSBzdXJmMTsKKyAgICBjaGlwLT5GSUZPWzB4MDAwMDM4MDBdID0g
MHg4MDAwMDAxNDsKK30KK3N0YXRpYyB2b2lkIG52MTBTZXRTdXJmYWNlczJECisoCisgICAgUklW
QV9IV19JTlNUICpjaGlwLAorICAgIHVuc2lnbmVkICAgICBzdXJmMCwKKyAgICB1bnNpZ25lZCAg
ICAgc3VyZjEKKykKK3sKKyAgICBSaXZhU3VyZmFjZSAqU3VyZmFjZSA9IChSaXZhU3VyZmFjZSAq
KSYoY2hpcC0+RklGT1sweDAwMDBFMDAwLzRdKTsKKworICAgIGNoaXAtPkZJRk9bMHgwMDAwMzgw
MF0gPSAweDgwMDAwMDAzOworICAgIFN1cmZhY2UtPk9mZnNldCAgICAgICAgPSBzdXJmMDsKKyAg
ICBjaGlwLT5GSUZPWzB4MDAwMDM4MDBdID0gMHg4MDAwMDAwNDsKKyAgICBTdXJmYWNlLT5PZmZz
ZXQgICAgICAgID0gc3VyZjE7CisgICAgY2hpcC0+RklGT1sweDAwMDAzODAwXSA9IDB4ODAwMDAw
MTQ7Cit9CitzdGF0aWMgdm9pZCBudjNTZXRTdXJmYWNlczNECisoCisgICAgUklWQV9IV19JTlNU
ICpjaGlwLAorICAgIHVuc2lnbmVkICAgICBzdXJmMCwKKyAgICB1bnNpZ25lZCAgICAgc3VyZjEK
KykKK3sKKyAgICBSaXZhU3VyZmFjZSAqU3VyZmFjZSA9IChSaXZhU3VyZmFjZSAqKSYoY2hpcC0+
RklGT1sweDAwMDBFMDAwLzRdKTsKKworICAgIFJJVkFfRklGT19GUkVFKCpjaGlwLFRyaTAzLDUp
OworICAgIGNoaXAtPkZJRk9bMHgwMDAwMzgwMF0gPSAweDgwMDAwMDA1OworICAgIFN1cmZhY2Ut
Pk9mZnNldCAgICAgICAgPSBzdXJmMDsKKyAgICBjaGlwLT5GSUZPWzB4MDAwMDM4MDBdID0gMHg4
MDAwMDAwNjsKKyAgICBTdXJmYWNlLT5PZmZzZXQgICAgICAgID0gc3VyZjE7CisgICAgY2hpcC0+
RklGT1sweDAwMDAzODAwXSA9IDB4ODAwMDAwMTM7Cit9CitzdGF0aWMgdm9pZCBudjRTZXRTdXJm
YWNlczNECisoCisgICAgUklWQV9IV19JTlNUICpjaGlwLAorICAgIHVuc2lnbmVkICAgICBzdXJm
MCwKKyAgICB1bnNpZ25lZCAgICAgc3VyZjEKKykKK3sKKyAgICBSaXZhU3VyZmFjZSAqU3VyZmFj
ZSA9IChSaXZhU3VyZmFjZSAqKSYoY2hpcC0+RklGT1sweDAwMDBFMDAwLzRdKTsKKworICAgIGNo
aXAtPkZJRk9bMHgwMDAwMzgwMF0gPSAweDgwMDAwMDA1OworICAgIFN1cmZhY2UtPk9mZnNldCAg
ICAgICAgPSBzdXJmMDsKKyAgICBjaGlwLT5GSUZPWzB4MDAwMDM4MDBdID0gMHg4MDAwMDAwNjsK
KyAgICBTdXJmYWNlLT5PZmZzZXQgICAgICAgID0gc3VyZjE7CisgICAgY2hpcC0+RklGT1sweDAw
MDAzODAwXSA9IDB4ODAwMDAwMTQ7Cit9CitzdGF0aWMgdm9pZCBudjEwU2V0U3VyZmFjZXMzRAor
KAorICAgIFJJVkFfSFdfSU5TVCAqY2hpcCwKKyAgICB1bnNpZ25lZCAgICAgc3VyZjAsCisgICAg
dW5zaWduZWQgICAgIHN1cmYxCispCit7CisgICAgUml2YVN1cmZhY2UzRCAqU3VyZmFjZXMzRCA9
IChSaXZhU3VyZmFjZTNEICopJihjaGlwLT5GSUZPWzB4MDAwMEUwMDAvNF0pOworCisgICAgUklW
QV9GSUZPX0ZSRUUoKmNoaXAsVHJpMDMsNCk7CisgICAgY2hpcC0+RklGT1sweDAwMDAzODAwXSAg
ICAgICAgID0gMHg4MDAwMDAwNzsKKyAgICBTdXJmYWNlczNELT5SZW5kZXJCdWZmZXJPZmZzZXQg
PSBzdXJmMDsKKyAgICBTdXJmYWNlczNELT5aQnVmZmVyT2Zmc2V0ICAgICAgPSBzdXJmMTsKKyAg
ICBjaGlwLT5GSUZPWzB4MDAwMDM4MDBdICAgICAgICAgPSAweDgwMDAwMDE0OworfQorCisvKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKlwKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKiAgICAgICAgICAgICAg
ICAgICAgICBQcm9iZSBSSVZBIENoaXAgQ29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAg
ICAgICAqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK1wqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitz
dGF0aWMgdm9pZCBudjNHZXRDb25maWcKKygKKyAgICBSSVZBX0hXX0lOU1QgKmNoaXAKKykKK3sK
KyAgICAvKgorICAgICAqIEZpbGwgaW4gY2hpcCBjb25maWd1cmF0aW9uLgorICAgICAqLworICAg
IGlmIChjaGlwLT5QRkJbMHgwMDAwMDAwMC80XSAmIDB4MDAwMDAwMjApCisgICAgeworICAgICAg
ICBpZiAoKChjaGlwLT5QTUNbMHgwMDAwMDAwMC80XSAmIDB4RjApID09IDB4MjApCisgICAgICAg
ICAmJiAoKGNoaXAtPlBNQ1sweDAwMDAwMDAwLzRdICYgMHgwRikgPj0gMHgwMikpCisgICAgICAg
IHsgICAgICAgIAorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFNEUkFNIDEyOCBaWC4K
KyAgICAgICAgICAgICAqLworICAgICAgICAgICAgY2hpcC0+UmFtQmFuZHdpZHRoS0J5dGVzUGVy
U2VjID0gODAwMDAwOworICAgICAgICAgICAgc3dpdGNoIChjaGlwLT5QRkJbMHgwMDAwMDAwMC80
XSAmIDB4MDMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAg
ICAgICAgICAgICAgICBjaGlwLT5SYW1BbW91bnRLQnl0ZXMgPSAxMDI0ICogNDsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAg
ICAgICAgICBjaGlwLT5SYW1BbW91bnRLQnl0ZXMgPSAxMDI0ICogMjsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgY2hpcC0+UmFtQW1vdW50S0J5dGVzID0gMTAyNCAqIDg7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9ICAgICAgICAgICAgCisgICAgICAgIGVs
c2UgICAgICAgICAgICAKKyAgICAgICAgeworICAgICAgICAgICAgY2hpcC0+UmFtQmFuZHdpZHRo
S0J5dGVzUGVyU2VjID0gMTAwMDAwMDsKKyAgICAgICAgICAgIGNoaXAtPlJhbUFtb3VudEtCeXRl
cyAgICAgICAgICA9IDEwMjQgKiA4OworICAgICAgICB9ICAgICAgICAgICAgCisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIFNHUkFNIDEyOC4KKyAgICAgICAg
ICovCisgICAgICAgIGNoaXAtPlJhbUJhbmR3aWR0aEtCeXRlc1BlclNlYyA9IDEwMDAwMDA7Cisg
ICAgICAgIHN3aXRjaCAoY2hpcC0+UEZCWzB4MDAwMDAwMDAvNF0gJiAweDAwMDAwMDAzKQorICAg
ICAgICB7CisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgY2hpcC0+UmFtQW1v
dW50S0J5dGVzID0gMTAyNCAqIDg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDI6CisgICAgICAgICAgICAgICAgY2hpcC0+UmFtQW1vdW50S0J5dGVzID0gMTAyNCAq
IDQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIGNoaXAtPlJhbUFtb3VudEtCeXRlcyA9IDEwMjQgKiAyOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSAgICAgICAgCisgICAgY2hpcC0+Q3J5c3RhbEZy
ZXFLSHogICA9IChjaGlwLT5QRVhUREVWWzB4MDAwMDAwMDAvNF0gJiAweDAwMDAwMDQwKSA/IDE0
MzE4IDogMTM1MDA7CisgICAgY2hpcC0+Q1VSU09SICAgICAgICAgICA9ICYoY2hpcC0+UFJBTUlO
WzB4MDAwMDgwMDAvNCAtIDB4MDgwMC80XSk7CisgICAgY2hpcC0+VkJsYW5rQml0ICAgICAgICA9
IDB4MDAwMDAxMDA7CisgICAgY2hpcC0+TWF4VkNsb2NrRnJlcUtIeiA9IDI1NjAwMDsKKyAgICAv
KgorICAgICAqIFNldCBjaGlwIGZ1bmN0aW9ucy4KKyAgICAgKi8KKyAgICBjaGlwLT5CdXN5ICAg
ICAgICAgICAgPSBudjNCdXN5OworICAgIGNoaXAtPlNob3dIaWRlQ3Vyc29yICA9IFNob3dIaWRl
Q3Vyc29yOworICAgIGNoaXAtPkNhbGNTdGF0ZUV4dCAgICA9IENhbGNTdGF0ZUV4dDsKKyAgICBj
aGlwLT5Mb2FkU3RhdGVFeHQgICAgPSBMb2FkU3RhdGVFeHQ7CisgICAgY2hpcC0+VW5sb2FkU3Rh
dGVFeHQgID0gVW5sb2FkU3RhdGVFeHQ7CisgICAgY2hpcC0+U2V0U3RhcnRBZGRyZXNzID0gU2V0
U3RhcnRBZGRyZXNzMzsKKyAgICBjaGlwLT5TZXRTdXJmYWNlczJEICAgPSBudjNTZXRTdXJmYWNl
czJEOworICAgIGNoaXAtPlNldFN1cmZhY2VzM0QgICA9IG52M1NldFN1cmZhY2VzM0Q7CisgICAg
Y2hpcC0+TG9ja1VubG9jayAgICAgID0gbnYzTG9ja1VubG9jazsKK30KK3N0YXRpYyB2b2lkIG52
NEdldENvbmZpZworKAorICAgIFJJVkFfSFdfSU5TVCAqY2hpcAorKQoreworICAgIC8qCisgICAg
ICogRmlsbCBpbiBjaGlwIGNvbmZpZ3VyYXRpb24uCisgICAgICovCisgICAgaWYgKGNoaXAtPlBG
QlsweDAwMDAwMDAwLzRdICYgMHgwMDAwMDEwMCkKKyAgICB7CisgICAgICAgIGNoaXAtPlJhbUFt
b3VudEtCeXRlcyA9ICgoY2hpcC0+UEZCWzB4MDAwMDAwMDAvNF0gPj4gMTIpICYgMHgwRikgKiAx
MDI0ICogMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxMDI0ICogMjsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjaGlwLT5QRkJbMHgwMDAwMDAwMC80
XSAmIDB4MDAwMDAwMDMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAg
ICAgICAgICBjaGlwLT5SYW1BbW91bnRLQnl0ZXMgPSAxMDI0ICogMzI7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgY2hpcC0+UmFt
QW1vdW50S0J5dGVzID0gMTAyNCAqIDQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgY2hpcC0+UmFtQW1vdW50S0J5dGVzID0gMTAy
NCAqIDg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNoaXAtPlJhbUFtb3VudEtCeXRlcyA9
IDEwMjQgKiAxNjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBzd2l0Y2ggKChjaGlwLT5QRkJbMHgwMDAwMDAwMC80XSA+PiAzKSAmIDB4MDAwMDAwMDMpCisg
ICAgeworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBjaGlwLT5SYW1CYW5kd2lkdGhLQnl0
ZXNQZXJTZWMgPSA4MDAwMDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGNoaXAtPlJhbUJhbmR3aWR0aEtCeXRlc1BlclNlYyA9IDEwMDAwMDA7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2hpcC0+Q3J5c3RhbEZyZXFLSHogICA9IChj
aGlwLT5QRVhUREVWWzB4MDAwMDAwMDAvNF0gJiAweDAwMDAwMDQwKSA/IDE0MzE4IDogMTM1MDA7
CisgICAgY2hpcC0+Q1VSU09SICAgICAgICAgICA9ICYoY2hpcC0+UFJBTUlOWzB4MDAwMTAwMDAv
NCAtIDB4MDgwMC80XSk7CisgICAgY2hpcC0+VkJsYW5rQml0ICAgICAgICA9IDB4MDAwMDAwMDE7
CisgICAgY2hpcC0+TWF4VkNsb2NrRnJlcUtIeiA9IDM1MDAwMDsKKyAgICAvKgorICAgICAqIFNl
dCBjaGlwIGZ1bmN0aW9ucy4KKyAgICAgKi8KKyAgICBjaGlwLT5CdXN5ICAgICAgICAgICAgPSBu
djRCdXN5OworICAgIGNoaXAtPlNob3dIaWRlQ3Vyc29yICA9IFNob3dIaWRlQ3Vyc29yOworICAg
IGNoaXAtPkNhbGNTdGF0ZUV4dCAgICA9IENhbGNTdGF0ZUV4dDsKKyAgICBjaGlwLT5Mb2FkU3Rh
dGVFeHQgICAgPSBMb2FkU3RhdGVFeHQ7CisgICAgY2hpcC0+VW5sb2FkU3RhdGVFeHQgID0gVW5s
b2FkU3RhdGVFeHQ7CisgICAgY2hpcC0+U2V0U3RhcnRBZGRyZXNzID0gU2V0U3RhcnRBZGRyZXNz
OworICAgIGNoaXAtPlNldFN1cmZhY2VzMkQgICA9IG52NFNldFN1cmZhY2VzMkQ7CisgICAgY2hp
cC0+U2V0U3VyZmFjZXMzRCAgID0gbnY0U2V0U3VyZmFjZXMzRDsKKyAgICBjaGlwLT5Mb2NrVW5s
b2NrICAgICAgPSBudjRMb2NrVW5sb2NrOworfQorc3RhdGljIHZvaWQgbnYxMEdldENvbmZpZwor
KAorICAgIFJJVkFfSFdfSU5TVCAqY2hpcCwKKyAgICB1bnNpZ25lZCBpbnQgY2hpcHNldAorKQor
eworICAgIHN0cnVjdCBwY2lfZGV2KiBkZXY7CisgICAgaW50IGFtdDsKKworI2lmZGVmIF9fQklH
X0VORElBTgorICAgIC8qIHR1cm4gb24gYmlnIGVuZGlhbiByZWdpc3RlciBhY2Nlc3MgKi8KKyAg
ICBjaGlwLT5QTUNbMHgwMDAwMDAwNC80XSA9IDB4MDEwMDAwMDE7CisjZW5kaWYKKworICAgIC8q
CisgICAgICogRmlsbCBpbiBjaGlwIGNvbmZpZ3VyYXRpb24uCisgICAgICovCisgICAgaWYoY2hp
cHNldCA9PSBOVl9DSElQX0lHRUZPUkNFMikgeworICAgICAgICBkZXYgPSBwY2lfZmluZF9zbG90
KDAsIDEpOworICAgICAgICBwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2LCAweDdDLCAmYW10KTsK
KyAgICAgICAgY2hpcC0+UmFtQW1vdW50S0J5dGVzID0gKCgoYW10ID4+IDYpICYgMzEpICsgMSkg
KiAxMDI0OworICAgIH0gZWxzZSBpZihjaGlwc2V0ID09IE5WX0NISVBfMHgwMUYwKSB7CisgICAg
ICAgIGRldiA9IHBjaV9maW5kX3Nsb3QoMCwgMSk7CisgICAgICAgIHBjaV9yZWFkX2NvbmZpZ19k
d29yZChkZXYsIDB4ODQsICZhbXQpOworICAgICAgICBjaGlwLT5SYW1BbW91bnRLQnl0ZXMgPSAo
KChhbXQgPj4gNCkgJiAxMjcpICsgMSkgKiAxMDI0OworICAgIH0gZWxzZSB7CisgICAgICAgIHN3
aXRjaCAoKGNoaXAtPlBGQlsweDAwMDAwMjBDLzRdID4+IDIwKSAmIDB4MDAwMDAwRkYpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNhc2UgMHgwMjoKKyAgICAgICAgICAgICAgICBjaGlwLT5SYW1B
bW91bnRLQnl0ZXMgPSAxMDI0ICogMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgMHgwNDoKKyAgICAgICAgICAgICAgICBjaGlwLT5SYW1BbW91bnRLQnl0ZXMgPSAx
MDI0ICogNDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMHgwODoK
KyAgICAgICAgICAgICAgICBjaGlwLT5SYW1BbW91bnRLQnl0ZXMgPSAxMDI0ICogODsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMHgxMDoKKyAgICAgICAgICAgICAg
ICBjaGlwLT5SYW1BbW91bnRLQnl0ZXMgPSAxMDI0ICogMTY7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDB4MjA6CisgICAgICAgICAgICAgICAgY2hpcC0+UmFtQW1v
dW50S0J5dGVzID0gMTAyNCAqIDMyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAweDQwOgorICAgICAgICAgICAgICAgIGNoaXAtPlJhbUFtb3VudEtCeXRlcyA9IDEw
MjQgKiA2NDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMHg4MDoK
KyAgICAgICAgICAgICAgICBjaGlwLT5SYW1BbW91bnRLQnl0ZXMgPSAxMDI0ICogMTI4OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBjaGlwLT5SYW1BbW91bnRLQnl0ZXMgPSAxMDI0ICogMTY7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgc3dpdGNoICgoY2hpcC0+UEZCWzB4MDAwMDAwMDAv
NF0gPj4gMykgJiAweDAwMDAwMDAzKQorICAgIHsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAg
ICAgY2hpcC0+UmFtQmFuZHdpZHRoS0J5dGVzUGVyU2VjID0gODAwMDAwOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjaGlwLT5SYW1CYW5kd2lkdGhL
Qnl0ZXNQZXJTZWMgPSAxMDAwMDAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNo
aXAtPkNyeXN0YWxGcmVxS0h6ID0gKGNoaXAtPlBFWFRERVZbMHgwMDAwLzRdICYgKDEgPDwgNikp
ID8gMTQzMTggOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTM1MDA7CisKKyAgICBzd2l0Y2ggKGNoaXBzZXQgJiAweDBm
ZjApIHsKKyAgICBjYXNlIDB4MDE3MDoKKyAgICBjYXNlIDB4MDE4MDoKKyAgICBjYXNlIDB4MDFG
MDoKKyAgICBjYXNlIDB4MDI1MDoKKyAgICBjYXNlIDB4MDI4MDoKKyAgICAgICBpZihjaGlwLT5Q
RVhUREVWWzB4MDAwMC80XSAmICgxIDw8IDIyKSkKKyAgICAgICAgICAgY2hpcC0+Q3J5c3RhbEZy
ZXFLSHogPSAyNzAwMDsKKyAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGNoaXAtPkN1cnNvclN0YXJ0ICAgICAgPSAoY2hpcC0+UmFtQW1vdW50
S0J5dGVzIC0gMikgKiAxMDI0OworICAgIGNoaXAtPkNVUlNPUiAgICAgICAgICAgPSBOVUxMOyAg
LyogY2FuJ3Qgc2V0IHRoaXMgaGVyZSAqLworICAgIGNoaXAtPlZCbGFua0JpdCAgICAgICAgPSAw
eDAwMDAwMDAxOworICAgIGNoaXAtPk1heFZDbG9ja0ZyZXFLSHogPSAzNTAwMDA7CisgICAgLyoK
KyAgICAgKiBTZXQgY2hpcCBmdW5jdGlvbnMuCisgICAgICovCisgICAgY2hpcC0+QnVzeSAgICAg
ICAgICAgID0gbnYxMEJ1c3k7CisgICAgY2hpcC0+U2hvd0hpZGVDdXJzb3IgID0gbnYxMFNob3dI
aWRlQ3Vyc29yOworICAgIGNoaXAtPkNhbGNTdGF0ZUV4dCAgICA9IENhbGNTdGF0ZUV4dDsKKyAg
ICBjaGlwLT5Mb2FkU3RhdGVFeHQgICAgPSBMb2FkU3RhdGVFeHQ7CisgICAgY2hpcC0+VW5sb2Fk
U3RhdGVFeHQgID0gVW5sb2FkU3RhdGVFeHQ7CisgICAgY2hpcC0+U2V0U3RhcnRBZGRyZXNzID0g
U2V0U3RhcnRBZGRyZXNzOworICAgIGNoaXAtPlNldFN1cmZhY2VzMkQgICA9IG52MTBTZXRTdXJm
YWNlczJEOworICAgIGNoaXAtPlNldFN1cmZhY2VzM0QgICA9IG52MTBTZXRTdXJmYWNlczNEOwor
ICAgIGNoaXAtPkxvY2tVbmxvY2sgICAgICA9IG52NExvY2tVbmxvY2s7CisKKyAgICBzd2l0Y2go
Y2hpcHNldCAmIDB4MGZmMCkgeworICAgIGNhc2UgMHgwMTEwOgorICAgIGNhc2UgMHgwMTcwOgor
ICAgIGNhc2UgMHgwMTgwOgorICAgIGNhc2UgMHgwMUYwOgorICAgIGNhc2UgMHgwMjUwOgorICAg
IGNhc2UgMHgwMjgwOgorICAgICAgICBjaGlwLT50d29IZWFkcyA9IFRSVUU7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGNoaXAtPnR3b0hlYWRzID0gRkFMU0U7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KK2ludCBSaXZhR2V0Q29uZmlnCisoCisgICAgUklWQV9IV19J
TlNUICpjaGlwLAorICAgIHVuc2lnbmVkIGludCBjaGlwc2V0CispCit7CisgICAgLyoKKyAgICAg
KiBTYXZlIHRoaXMgc28gZnV0dXJlIFNXIGtub3cgd2hhdHMgaXQncyBkZWFsaW5nIHdpdGguCisg
ICAgICovCisgICAgY2hpcC0+VmVyc2lvbiA9IFJJVkFfU1dfVkVSU0lPTjsKKyAgICAvKgorICAg
ICAqIENoaXAgc3BlY2lmaWMgY29uZmlndXJhdGlvbi4KKyAgICAgKi8KKyAgICBzd2l0Y2ggKGNo
aXAtPkFyY2hpdGVjdHVyZSkKKyAgICB7CisgICAgICAgIGNhc2UgTlZfQVJDSF8wMzoKKyAgICAg
ICAgICAgIG52M0dldENvbmZpZyhjaGlwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIE5WX0FSQ0hfMDQ6CisgICAgICAgICAgICBudjRHZXRDb25maWcoY2hpcCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVl9BUkNIXzEwOgorICAgICAgICBjYXNlIE5WX0FS
Q0hfMjA6CisgICAgICAgICAgICBudjEwR2V0Q29uZmlnKGNoaXAsIGNoaXBzZXQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gKC0xKTsK
KyAgICB9CisgICAgY2hpcC0+Q2hpcHNldCA9IGNoaXBzZXQ7CisgICAgLyoKKyAgICAgKiBGaWxs
IGluIEZJRk8gcG9pbnRlcnMuCisgICAgICovCisgICAgY2hpcC0+Um9wICAgID0gKFJpdmFSb3Ag
ICAgICAgICAgICAgICAgICopJihjaGlwLT5GSUZPWzB4MDAwMDAwMDAvNF0pOworICAgIGNoaXAt
PkNsaXAgICA9IChSaXZhQ2xpcCAgICAgICAgICAgICAgICAqKSYoY2hpcC0+RklGT1sweDAwMDAy
MDAwLzRdKTsKKyAgICBjaGlwLT5QYXR0ICAgPSAoUml2YVBhdHRlcm4gICAgICAgICAgICAgKikm
KGNoaXAtPkZJRk9bMHgwMDAwNDAwMC80XSk7CisgICAgY2hpcC0+UGl4bWFwID0gKFJpdmFQaXht
YXAgICAgICAgICAgICAgICopJihjaGlwLT5GSUZPWzB4MDAwMDYwMDAvNF0pOworICAgIGNoaXAt
PkJsdCAgICA9IChSaXZhU2NyZWVuQmx0ICAgICAgICAgICAqKSYoY2hpcC0+RklGT1sweDAwMDA4
MDAwLzRdKTsKKyAgICBjaGlwLT5CaXRtYXAgPSAoUml2YUJpdG1hcCAgICAgICAgICAgICAgKikm
KGNoaXAtPkZJRk9bMHgwMDAwQTAwMC80XSk7CisgICAgY2hpcC0+TGluZSAgID0gKFJpdmFMaW5l
ICAgICAgICAgICAgICAgICopJihjaGlwLT5GSUZPWzB4MDAwMEMwMDAvNF0pOworICAgIGNoaXAt
PlRyaTAzICA9IChSaXZhVGV4dHVyZWRUcmlhbmdsZTAzICAqKSYoY2hpcC0+RklGT1sweDAwMDBF
MDAwLzRdKTsKKyAgICByZXR1cm4gKDApOworfQorCmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmln
L2RyaXZlcnMvdmlkZW8veGJveC9yaXZhX2h3LmggbGludXgtMi42LjUvZHJpdmVycy92aWRlby94
Ym94L3JpdmFfaHcuaAotLS0gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvcml2
YV9ody5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYu
NS9kcml2ZXJzL3ZpZGVvL3hib3gvcml2YV9ody5oCTIwMDQtMDUtMDEgMTU6MjA6NDMuMDAwMDAw
MDAwICswMTAwCkBAIC0wLDAgKzEsNTY2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXAorfCogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqfAorfCogICAgICAgQ29weXJpZ2h0IDE5OTMtMTk5OSBOVklESUEsIENv
cnBvcmF0aW9uLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gICAgICAqfAorfCogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqfAorfCogICAgIE5PVElDRSBUTyBVU0VSOiAgIFRoZSBzb3VyY2UgY29kZSAgaXMgY29w
eXJpZ2h0ZWQgdW5kZXIgIFUuUy4gYW5kICAgICAqfAorfCogICAgIGludGVybmF0aW9uYWwgbGF3
cy4gIFVzZXJzIGFuZCBwb3NzZXNzb3JzIG9mIHRoaXMgc291cmNlIGNvZGUgYXJlICAgICAqfAor
fCogICAgIGhlcmVieSBncmFudGVkIGEgbm9uZXhjbHVzaXZlLCAgcm95YWx0eS1mcmVlIGNvcHly
aWdodCBsaWNlbnNlIHRvICAgICAqfAorfCogICAgIHVzZSB0aGlzIGNvZGUgaW4gaW5kaXZpZHVh
bCBhbmQgY29tbWVyY2lhbCBzb2Z0d2FyZS4gICAgICAgICAgICAgICAgICAqfAorfCogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqfAorfCogICAgIEFueSB1c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBtdXN0IGlu
Y2x1ZGUsICBpbiB0aGUgdXNlciBkb2N1bWVudGEtICAgICAqfAorfCogICAgIHRpb24gYW5kICBp
bnRlcm5hbCBjb21tZW50cyB0byB0aGUgY29kZSwgIG5vdGljZXMgdG8gdGhlIGVuZCB1c2VyICAg
ICAqfAorfCogICAgIGFzIGZvbGxvd3M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCog
ICAgICAgQ29weXJpZ2h0IDE5OTMtMTk5OSBOVklESUEsIENvcnBvcmF0aW9uLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4gICAgICAqfAorfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogICAgIE5WSURJ
QSwgQ09SUE9SQVRJT04gTUFLRVMgTk8gUkVQUkVTRU5UQVRJT04gQUJPVVQgVEhFIFNVSVRBQklM
SVRZICAgICAqfAorfCogICAgIE9GICBUSElTIFNPVVJDRSAgQ09ERSAgRk9SIEFOWSBQVVJQT1NF
LiAgSVQgSVMgIFBST1ZJREVEICAiQVMgSVMiICAgICAqfAorfCogICAgIFdJVEhPVVQgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRZIE9GIEFOWSBLSU5ELiAgTlZJRElBLCBDT1JQT1ItICAgICAq
fAorfCogICAgIEFUSU9OIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyAgV0lUSCBSRUdBUkQgIFRP
IFRISVMgU09VUkNFIENPREUsICAgICAqfAorfCogICAgIElOQ0xVRElORyBBTEwgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgTk9OSU5GUklOR0UtICAgICAqfAorfCogICAg
IE1FTlQsICBBTkQgRklUTkVTUyAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgIElOIE5PIEVW
RU5UIFNIQUxMICAgICAqfAorfCogICAgIE5WSURJQSwgQ09SUE9SQVRJT04gIEJFIExJQUJMRSBG
T1IgQU5ZIFNQRUNJQUwsICBJTkRJUkVDVCwgIElOQ0ktICAgICAqfAorfCogICAgIERFTlRBTCwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTLCAgT1IgQU5ZIERBTUFHRVMgIFdIQVRTT0VWRVIgUkUt
ICAgICAqfAorfCogICAgIFNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgIERBVEEgT1IgUFJPRklU
UywgIFdIRVRIRVIgSU4gQU4gQUNUSU9OICAgICAqfAorfCogICAgIE9GIENPTlRSQUNULCBORUdM
SUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgIEFSSVNJTkcgT1VUIE9GICAgICAqfAor
fCogICAgIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRI
SVMgU09VUkNFIENPREUuICAgICAqfAorfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogICAgIFUu
Uy4gR292ZXJubWVudCAgRW5kICBVc2Vycy4gICBUaGlzIHNvdXJjZSBjb2RlICBpcyBhICJjb21t
ZXJjaWFsICAgICAqfAorfCogICAgIGl0ZW0sIiAgYXMgdGhhdCAgdGVybSBpcyAgZGVmaW5lZCBh
dCAgNDggQy5GLlIuIDIuMTAxIChPQ1QgMTk5NSksICAgICAqfAorfCogICAgIGNvbnNpc3Rpbmcg
IG9mICJjb21tZXJjaWFsICBjb21wdXRlciAgc29mdHdhcmUiICBhbmQgICJjb21tZXJjaWFsICAg
ICAqfAorfCogICAgIGNvbXB1dGVyICBzb2Z0d2FyZSAgZG9jdW1lbnRhdGlvbiwiICBhcyBzdWNo
ICB0ZXJtcyAgYXJlICB1c2VkIGluICAgICAqfAorfCogICAgIDQ4IEMuRi5SLiAxMi4yMTIgKFNF
UFQgMTk5NSkgIGFuZCBpcyBwcm92aWRlZCB0byB0aGUgVS5TLiBHb3Zlcm4tICAgICAqfAorfCog
ICAgIG1lbnQgb25seSBhcyAgYSBjb21tZXJjaWFsIGVuZCBpdGVtLiAgIENvbnNpc3RlbnQgd2l0
aCAgNDggQy5GLlIuICAgICAqfAorfCogICAgIDEyLjIxMiBhbmQgIDQ4IEMuRi5SLiAyMjcuNzIw
Mi0xIHRocm91Z2ggIDIyNy43MjAyLTQgKEpVTkUgMTk5NSksICAgICAqfAorfCogICAgIGFsbCBV
LlMuIEdvdmVybm1lbnQgRW5kIFVzZXJzICBhY3F1aXJlIHRoZSBzb3VyY2UgY29kZSAgd2l0aCBv
bmx5ICAgICAqfAorfCogICAgIHRob3NlIHJpZ2h0cyBzZXQgZm9ydGggaGVyZWluLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
fAorXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEdQTCBsaWNlbnNpbmcgbm90ZSAtLSBu
VmlkaWEgaXMgYWxsb3dpbmcgYSBsaWJlcmFsIGludGVycHJldGF0aW9uIG9mCisgKiB0aGUgZG9j
dW1lbnRhdGlvbiByZXN0cmljdGlvbiBhYm92ZSwgdG8gbWVyZWx5IHNheSB0aGF0IHRoaXMgblZp
ZGlhJ3MKKyAqIGNvcHlyaWdodCBhbmQgZGlzY2xhaW1lciBzaG91bGQgYmUgaW5jbHVkZWQgd2l0
aCBhbGwgY29kZSBkZXJpdmVkCisgKiBmcm9tIHRoaXMgc291cmNlLiAgLS0gSmVmZiBHYXJ6aWsg
PGpnYXJ6aWtAcG9ib3guY29tPiwgMDEvTm92Lzk5IAorICovCisKKy8qICRYRnJlZTg2OiB4Yy9w
cm9ncmFtcy9Yc2VydmVyL2h3L3hmcmVlODYvZHJpdmVycy9udi9yaXZhX2h3LmgsdiAxLjIxIDIw
MDIvMTAvMTQgMTg6MjI6NDYgbXZvamtvdmkgRXhwICQgKi8KKyNpZm5kZWYgX19SSVZBX0hXX0hf
XworI2RlZmluZSBfX1JJVkFfSFdfSF9fCisjZGVmaW5lIFJJVkFfU1dfVkVSU0lPTiAweDAwMDEw
MDAzCisKKyNpZm5kZWYgQm9vbAordHlwZWRlZiBpbnQgQm9vbDsKKyNlbmRpZgorCisjaWZuZGVm
IFRSVUUKKyNkZWZpbmUgVFJVRSAxCisjZW5kaWYKKyNpZm5kZWYgRkFMU0UKKyNkZWZpbmUgRkFM
U0UgMAorI2VuZGlmCisjaWZuZGVmIE5VTEwKKyNkZWZpbmUgTlVMTCAwCisjZW5kaWYKKworLyoK
KyAqIFR5cGVkZWZzIHRvIGZvcmNlIGNlcnRhaW4gc2l6ZWQgdmFsdWVzLgorICovCit0eXBlZGVm
IHVuc2lnbmVkIGNoYXIgIFUwMDg7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFUwMTY7Cit0eXBl
ZGVmIHVuc2lnbmVkIGludCAgIFUwMzI7CisKKy8qCisgKiBIVyBhY2Nlc3MgbWFjcm9zLgorICov
CisjaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNkZWZpbmUg
TlZfV1IwOChwLGksZCkJb3V0XzgocCtpLCBkKQorI2RlZmluZSBOVl9SRDA4KHAsaSkJaW5fOChw
K2kpCisjZWxzZQorI2RlZmluZSBOVl9XUjA4KHAsaSxkKSAgKCgoVTAwOCAqKShwKSlbaV09KGQp
KQorI2RlZmluZSBOVl9SRDA4KHAsaSkgICAgKCgoVTAwOCAqKShwKSlbaV0pCisjZW5kaWYKKyNk
ZWZpbmUgTlZfV1IxNihwLGksZCkgICgoKFUwMTYgKikocCkpWyhpKS8yXT0oZCkpCisjZGVmaW5l
IE5WX1JEMTYocCxpKSAgICAoKChVMDE2ICopKHApKVsoaSkvMl0pCisjZGVmaW5lIE5WX1dSMzIo
cCxpLGQpICAoKChVMDMyICopKHApKVsoaSkvNF09KGQpKQorI2RlZmluZSBOVl9SRDMyKHAsaSkg
ICAgKCgoVTAzMiAqKShwKSlbKGkpLzRdKQorI2RlZmluZSBWR0FfV1IwOChwLGksZCkgTlZfV1Iw
OChwLGksZCkKKyNkZWZpbmUgVkdBX1JEMDgocCxpKSAgIE5WX1JEMDgocCxpKQorCisvKgorICog
RGVmaW5lIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLgorICovCisjZGVmaW5lIE5WX0FSQ0hfMDMg
IDB4MDMKKyNkZWZpbmUgTlZfQVJDSF8wNCAgMHgwNAorI2RlZmluZSBOVl9BUkNIXzEwICAweDEw
CisjZGVmaW5lIE5WX0FSQ0hfMjAgIDB4MjAKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwKKyogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUZPIHJlZ2lz
dGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICoKK1wqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBSYXN0ZXIgT1BlcmF0aW9uLiBXaW5k
b3dzIHN0eWxlIFJPUDMuCisgKi8KK3R5cGVkZWYgdm9sYXRpbGUgc3RydWN0Cit7CisgICAgVTAz
MiByZXNlcnZlZDAwWzRdOworI2lmZGVmIF9fQklHX0VORElBTgorICAgIFUwMzIgRmlmb0ZyZWU7
CisjZWxzZQorICAgIFUwMTYgRmlmb0ZyZWU7CisgICAgVTAxNiBOb3A7CisjZW5kaWYKKyAgICBV
MDMyIHJlc2VydmVkMDFbMHgwQkJdOworICAgIFUwMzIgUm9wMzsKK30gUml2YVJvcDsKKy8qCisg
KiA4WDggTW9ub2Nocm9tZSBwYXR0ZXJuLgorICovCit0eXBlZGVmIHZvbGF0aWxlIHN0cnVjdAor
eworICAgIFUwMzIgcmVzZXJ2ZWQwMFs0XTsKKyNpZmRlZiBfX0JJR19FTkRJQU4KKyAgICBVMDMy
IEZpZm9GcmVlOworI2Vsc2UKKyAgICBVMDE2IEZpZm9GcmVlOworICAgIFUwMTYgTm9wOworI2Vu
ZGlmCisgICAgVTAzMiByZXNlcnZlZDAxWzB4MEJEXTsKKyAgICBVMDMyIFNoYXBlOworICAgIFUw
MzIgcmVzZXJ2ZWQwM1sweDAwMV07CisgICAgVTAzMiBDb2xvcjA7CisgICAgVTAzMiBDb2xvcjE7
CisgICAgVTAzMiBNb25vY2hyb21lWzJdOworfSBSaXZhUGF0dGVybjsKKy8qCisgKiBTY2lzc29y
IGNsaXAgcmVjdGFuZ2xlLgorICovCit0eXBlZGVmIHZvbGF0aWxlIHN0cnVjdAoreworICAgIFUw
MzIgcmVzZXJ2ZWQwMFs0XTsKKyNpZmRlZiBfX0JJR19FTkRJQU4KKyAgICBVMDMyIEZpZm9GcmVl
OworI2Vsc2UKKyAgICBVMDE2IEZpZm9GcmVlOworICAgIFUwMTYgTm9wOworI2VuZGlmCisgICAg
VTAzMiByZXNlcnZlZDAxWzB4MEJCXTsKKyAgICBVMDMyIFRvcExlZnQ7CisgICAgVTAzMiBXaWR0
aEhlaWdodDsKK30gUml2YUNsaXA7CisvKgorICogMkQgZmlsbGVkIHJlY3RhbmdsZS4KKyAqLwor
dHlwZWRlZiB2b2xhdGlsZSBzdHJ1Y3QKK3sKKyAgICBVMDMyIHJlc2VydmVkMDBbNF07CisjaWZk
ZWYgX19CSUdfRU5ESUFOCisgICAgVTAzMiBGaWZvRnJlZTsKKyNlbHNlCisgICAgVTAxNiBGaWZv
RnJlZTsKKyAgICBVMDE2IE5vcFsxXTsKKyNlbmRpZgorICAgIFUwMzIgcmVzZXJ2ZWQwMVsweDBC
Q107CisgICAgVTAzMiBDb2xvcjsKKyAgICBVMDMyIHJlc2VydmVkMDNbMHgwM0VdOworICAgIFUw
MzIgVG9wTGVmdDsKKyAgICBVMDMyIFdpZHRoSGVpZ2h0OworfSBSaXZhUmVjdGFuZ2xlOworLyoK
KyAqIDJEIHNjcmVlbi1zY3JlZW4gQkxULgorICovCit0eXBlZGVmIHZvbGF0aWxlIHN0cnVjdAor
eworICAgIFUwMzIgcmVzZXJ2ZWQwMFs0XTsKKyNpZmRlZiBfX0JJR19FTkRJQU4KKyAgICBVMDMy
IEZpZm9GcmVlOworI2Vsc2UKKyAgICBVMDE2IEZpZm9GcmVlOworICAgIFUwMTYgTm9wOworI2Vu
ZGlmCisgICAgVTAzMiByZXNlcnZlZDAxWzB4MEJCXTsKKyAgICBVMDMyIFRvcExlZnRTcmM7Cisg
ICAgVTAzMiBUb3BMZWZ0RHN0OworICAgIFUwMzIgV2lkdGhIZWlnaHQ7Cit9IFJpdmFTY3JlZW5C
bHQ7CisvKgorICogMkQgcGl4ZWwgQkxULgorICovCit0eXBlZGVmIHZvbGF0aWxlIHN0cnVjdAor
eworICAgIFUwMzIgcmVzZXJ2ZWQwMFs0XTsKKyNpZmRlZiBfX0JJR19FTkRJQU4KKyAgICBVMDMy
IEZpZm9GcmVlOworI2Vsc2UKKyAgICBVMDE2IEZpZm9GcmVlOworICAgIFUwMTYgTm9wWzFdOwor
I2VuZGlmCisgICAgVTAzMiByZXNlcnZlZDAxWzB4MEJDXTsKKyAgICBVMDMyIFRvcExlZnQ7Cisg
ICAgVTAzMiBXaWR0aEhlaWdodDsKKyAgICBVMDMyIFdpZHRoSGVpZ2h0SW47CisgICAgVTAzMiBy
ZXNlcnZlZDAyWzB4MDNDXTsKKyAgICBVMDMyIFBpeGVsczsKK30gUml2YVBpeG1hcDsKKy8qCisg
KiBGaWxsZWQgcmVjdGFuZ2xlIGNvbWJpbmVkIHdpdGggbW9ub2Nocm9tZSBleHBhbmQuICBVc2Vm
dWwgZm9yIGdseXBocy4KKyAqLwordHlwZWRlZiB2b2xhdGlsZSBzdHJ1Y3QKK3sKKyAgICBVMDMy
IHJlc2VydmVkMDBbNF07CisjaWZkZWYgX19CSUdfRU5ESUFOCisgICAgVTAzMiBGaWZvRnJlZTsK
KyNlbHNlCisgICAgVTAxNiBGaWZvRnJlZTsKKyAgICBVMDE2IE5vcDsKKyNlbmRpZgorICAgIFUw
MzIgcmVzZXJ2ZWQwMVsweDBCQl07CisgICAgVTAzMiByZXNlcnZlZDAzWygweDA0MCktMV07Cisg
ICAgVTAzMiBDb2xvcjFBOworICAgIHN0cnVjdAorICAgIHsKKyAgICAgICAgVTAzMiBUb3BMZWZ0
OworICAgICAgICBVMDMyIFdpZHRoSGVpZ2h0OworICAgIH0gVW5jbGlwcGVkUmVjdGFuZ2xlWzY0
XTsKKyAgICBVMDMyIHJlc2VydmVkMDRbKDB4MDgwKS0zXTsKKyAgICBzdHJ1Y3QKKyAgICB7Cisg
ICAgICAgIFUwMzIgVG9wTGVmdDsKKyAgICAgICAgVTAzMiBCb3R0b21SaWdodDsKKyAgICB9IENs
aXBCOworICAgIFUwMzIgQ29sb3IxQjsKKyAgICBzdHJ1Y3QKKyAgICB7CisgICAgICAgIFUwMzIg
VG9wTGVmdDsKKyAgICAgICAgVTAzMiBCb3R0b21SaWdodDsKKyAgICB9IENsaXBwZWRSZWN0YW5n
bGVbNjRdOworICAgIFUwMzIgcmVzZXJ2ZWQwNVsoMHgwODApLTVdOworICAgIHN0cnVjdAorICAg
IHsKKyAgICAgICAgVTAzMiBUb3BMZWZ0OworICAgICAgICBVMDMyIEJvdHRvbVJpZ2h0OworICAg
IH0gQ2xpcEM7CisgICAgVTAzMiBDb2xvcjFDOworICAgIFUwMzIgV2lkdGhIZWlnaHRDOworICAg
IFUwMzIgUG9pbnRDOworICAgIFUwMzIgTW9ub2Nocm9tZURhdGExQzsKKyAgICBVMDMyIHJlc2Vy
dmVkMDZbKDB4MDgwKSsxMjFdOworICAgIHN0cnVjdAorICAgIHsKKyAgICAgICAgVTAzMiBUb3BM
ZWZ0OworICAgICAgICBVMDMyIEJvdHRvbVJpZ2h0OworICAgIH0gQ2xpcEQ7CisgICAgVTAzMiBD
b2xvcjFEOworICAgIFUwMzIgV2lkdGhIZWlnaHRJbkQ7CisgICAgVTAzMiBXaWR0aEhlaWdodE91
dEQ7CisgICAgVTAzMiBQb2ludEQ7CisgICAgVTAzMiBNb25vY2hyb21lRGF0YTFEOworICAgIFUw
MzIgcmVzZXJ2ZWQwN1soMHgwODApKzEyMF07CisgICAgc3RydWN0CisgICAgeworICAgICAgICBV
MDMyIFRvcExlZnQ7CisgICAgICAgIFUwMzIgQm90dG9tUmlnaHQ7CisgICAgfSBDbGlwRTsKKyAg
ICBVMDMyIENvbG9yMEU7CisgICAgVTAzMiBDb2xvcjFFOworICAgIFUwMzIgV2lkdGhIZWlnaHRJ
bkU7CisgICAgVTAzMiBXaWR0aEhlaWdodE91dEU7CisgICAgVTAzMiBQb2ludEU7CisgICAgVTAz
MiBNb25vY2hyb21lRGF0YTAxRTsKK30gUml2YUJpdG1hcDsKKy8qCisgKiAzRCB0ZXh0dXJlZCwg
WiBidWZmZXJlZCB0cmlhbmdsZS4KKyAqLwordHlwZWRlZiB2b2xhdGlsZSBzdHJ1Y3QKK3sKKyAg
ICBVMDMyIHJlc2VydmVkMDBbNF07CisjaWZkZWYgX19CSUdfRU5ESUFOCisgICAgVTAzMiBGaWZv
RnJlZTsKKyNlbHNlCisgICAgVTAxNiBGaWZvRnJlZTsKKyAgICBVMDE2IE5vcDsKKyNlbmRpZgor
ICAgIFUwMzIgcmVzZXJ2ZWQwMVsweDBCQ107CisgICAgVTAzMiBUZXh0dXJlT2Zmc2V0OworICAg
IFUwMzIgVGV4dHVyZUZvcm1hdDsKKyAgICBVMDMyIFRleHR1cmVGaWx0ZXI7CisgICAgVTAzMiBG
b2dDb2xvcjsKKy8qIFRoaXMgaXMgYSBwcm9ibGVtIG9uIEx5bnhPUyAqLworI2lmZGVmIENvbnRy
b2wKKyN1bmRlZiBDb250cm9sCisjZW5kaWYKKyAgICBVMDMyIENvbnRyb2w7CisgICAgVTAzMiBB
bHBoYVRlc3Q7CisgICAgVTAzMiByZXNlcnZlZDAyWzB4MzM5XTsKKyAgICBVMDMyIEZvZ0FuZElu
ZGV4OworICAgIFUwMzIgQ29sb3I7CisgICAgZmxvYXQgU2NyZWVuWDsKKyAgICBmbG9hdCBTY3Jl
ZW5ZOworICAgIGZsb2F0IFNjcmVlblo7CisgICAgZmxvYXQgRXllTTsKKyAgICBmbG9hdCBUZXh0
dXJlUzsKKyAgICBmbG9hdCBUZXh0dXJlVDsKK30gUml2YVRleHR1cmVkVHJpYW5nbGUwMzsKK3R5
cGVkZWYgdm9sYXRpbGUgc3RydWN0Cit7CisgICAgVTAzMiByZXNlcnZlZDAwWzRdOworI2lmZGVm
IF9fQklHX0VORElBTgorICAgIFUwMzIgRmlmb0ZyZWU7CisjZWxzZQorICAgIFUwMTYgRmlmb0Zy
ZWU7CisgICAgVTAxNiBOb3A7CisjZW5kaWYKKyAgICBVMDMyIHJlc2VydmVkMDFbMHgwQkJdOwor
ICAgIFUwMzIgQ29sb3JLZXk7CisgICAgVTAzMiBUZXh0dXJlT2Zmc2V0OworICAgIFUwMzIgVGV4
dHVyZUZvcm1hdDsKKyAgICBVMDMyIFRleHR1cmVGaWx0ZXI7CisgICAgVTAzMiBCbGVuZDsKKy8q
IFRoaXMgaXMgYSBwcm9ibGVtIG9uIEx5bnhPUyAqLworI2lmZGVmIENvbnRyb2wKKyN1bmRlZiBD
b250cm9sCisjZW5kaWYKKyAgICBVMDMyIENvbnRyb2w7CisgICAgVTAzMiBGb2dDb2xvcjsKKyAg
ICBVMDMyIHJlc2VydmVkMDJbMHgzOV07CisgICAgc3RydWN0CisgICAgeworICAgICAgICBmbG9h
dCBTY3JlZW5YOworICAgICAgICBmbG9hdCBTY3JlZW5ZOworICAgICAgICBmbG9hdCBTY3JlZW5a
OworICAgICAgICBmbG9hdCBFeWVNOworICAgICAgICBVMDMyIENvbG9yOworICAgICAgICBVMDMy
IFNwZWN1bGFyOworICAgICAgICBmbG9hdCBUZXh0dXJlUzsKKyAgICAgICAgZmxvYXQgVGV4dHVy
ZVQ7CisgICAgfSBWZXJ0ZXhbMTZdOworICAgIFUwMzIgRHJhd1RyaWFuZ2xlM0Q7Cit9IFJpdmFU
ZXh0dXJlZFRyaWFuZ2xlMDU7CisvKgorICogMkQgbGluZS4KKyAqLwordHlwZWRlZiB2b2xhdGls
ZSBzdHJ1Y3QKK3sKKyAgICBVMDMyIHJlc2VydmVkMDBbNF07CisjaWZkZWYgX19CSUdfRU5ESUFO
CisgICAgVTAzMiBGaWZvRnJlZTsKKyNlbHNlCisgICAgVTAxNiBGaWZvRnJlZTsKKyAgICBVMDE2
IE5vcFsxXTsKKyNlbmRpZgorICAgIFUwMzIgcmVzZXJ2ZWQwMVsweDBCQ107CisgICAgVTAzMiBD
b2xvcjsgICAgICAgICAgICAgLyogc291cmNlIGNvbG9yICAgICAgICAgICAgICAgMDMwNC0wMzA3
Ki8KKyAgICBVMDMyIFJlc2VydmVkMDJbMHgwM2VdOworICAgIHN0cnVjdCB7ICAgICAgICAgICAg
ICAgIC8qIHN0YXJ0IGFsaWFzZWQgbWV0aG9kcyBpbiBhcnJheSAgIDA0MDAtICAgICovCisgICAg
ICAgIFUwMzIgcG9pbnQwOyAgICAgICAgLyogeV94IFMxNl9TMTYgaW4gcGl4ZWxzICAgICAgICAg
ICAgMC0gICAzKi8KKyAgICAgICAgVTAzMiBwb2ludDE7ICAgICAgICAvKiB5X3ggUzE2X1MxNiBp
biBwaXhlbHMgICAgICAgICAgICA0LSAgIDcqLworICAgIH0gTGluWzE2XTsgICAgICAgICAgICAg
IC8qIGVuZCBvZiBhbGlhc2VkIG1ldGhvZHMgaW4gYXJyYXkgICAgICAtMDQ3ZiovCisgICAgc3Ry
dWN0IHsgICAgICAgICAgICAgICAgLyogc3RhcnQgYWxpYXNlZCBtZXRob2RzIGluIGFycmF5ICAg
MDQ4MC0gICAgKi8KKyAgICAgICAgVTAzMiBwb2ludDBYOyAgICAgICAvKiBpbiBwaXhlbHMsIDAg
YXQgbGVmdCAgICAgICAgICAgICAgICAwLSAgIDMqLworICAgICAgICBVMDMyIHBvaW50MFk7ICAg
ICAgIC8qIGluIHBpeGVscywgMCBhdCB0b3AgICAgICAgICAgICAgICAgIDQtICAgNyovCisgICAg
ICAgIFUwMzIgcG9pbnQxWDsgICAgICAgLyogaW4gcGl4ZWxzLCAwIGF0IGxlZnQgICAgICAgICAg
ICAgICAgOC0gICBiKi8KKyAgICAgICAgVTAzMiBwb2ludDFZOyAgICAgICAvKiBpbiBwaXhlbHMs
IDAgYXQgdG9wICAgICAgICAgICAgICAgICBjLSAgIGYqLworICAgIH0gTGluMzJbOF07ICAgICAg
ICAgICAgIC8qIGVuZCBvZiBhbGlhc2VkIG1ldGhvZHMgaW4gYXJyYXkgICAgICAtMDRmZiovCisg
ICAgVTAzMiBQb2x5TGluWzMyXTsgICAgICAgLyogeV94IFMxNl9TMTYgaW4gcGl4ZWxzICAgICAg
ICAgMDUwMC0wNTdmKi8KKyAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAvKiBzdGFydCBhbGlh
c2VkIG1ldGhvZHMgaW4gYXJyYXkgICAwNTgwLSAgICAqLworICAgICAgICBVMDMyIHg7ICAgICAg
ICAgICAgIC8qIGluIHBpeGVscywgMCBhdCBsZWZ0ICAgICAgICAgICAgICAgIDAtICAgMyovCisg
ICAgICAgIFUwMzIgeTsgICAgICAgICAgICAgLyogaW4gcGl4ZWxzLCAwIGF0IHRvcCAgICAgICAg
ICAgICAgICAgNC0gICA3Ki8KKyAgICB9IFBvbHlMaW4zMlsxNl07ICAgICAgICAvKiBlbmQgb2Yg
YWxpYXNlZCBtZXRob2RzIGluIGFycmF5ICAgICAgLTA1ZmYqLworICAgIHN0cnVjdCB7ICAgICAg
ICAgICAgICAgIC8qIHN0YXJ0IGFsaWFzZWQgbWV0aG9kcyBpbiBhcnJheSAgIDA2MDAtICAgICov
CisgICAgICAgIFUwMzIgY29sb3I7ICAgICAgICAgLyogc291cmNlIGNvbG9yICAgICAgICAgICAg
ICAgICAgICAgMC0gICAzKi8KKyAgICAgICAgVTAzMiBwb2ludDsgICAgICAgICAvKiB5X3ggUzE2
X1MxNiBpbiBwaXhlbHMgICAgICAgICAgICA0LSAgIDcqLworICAgIH0gQ29sb3JQb2x5TGluWzE2
XTsgICAgIC8qIGVuZCBvZiBhbGlhc2VkIG1ldGhvZHMgaW4gYXJyYXkgICAgICAtMDY3ZiovCit9
IFJpdmFMaW5lOworLyoKKyAqIDJELzNEIHN1cmZhY2VzCisgKi8KK3R5cGVkZWYgdm9sYXRpbGUg
c3RydWN0Cit7CisgICAgVTAzMiByZXNlcnZlZDAwWzRdOworI2lmZGVmIF9fQklHX0VORElBTgor
ICAgIFUwMzIgRmlmb0ZyZWU7CisjZWxzZQorICAgIFUwMTYgRmlmb0ZyZWU7CisgICAgVTAxNiBO
b3A7CisjZW5kaWYKKyAgICBVMDMyIHJlc2VydmVkMDFbMHgwQkVdOworICAgIFUwMzIgT2Zmc2V0
OworfSBSaXZhU3VyZmFjZTsKK3R5cGVkZWYgdm9sYXRpbGUgc3RydWN0Cit7CisgICAgVTAzMiBy
ZXNlcnZlZDAwWzRdOworI2lmZGVmIF9fQklHX0VORElBTgorICAgIFUwMzIgRmlmb0ZyZWU7Cisj
ZWxzZQorICAgIFUwMTYgRmlmb0ZyZWU7CisgICAgVTAxNiBOb3A7CisjZW5kaWYKKyAgICBVMDMy
IHJlc2VydmVkMDFbMHgwQkRdOworICAgIFUwMzIgUGl0Y2g7CisgICAgVTAzMiBSZW5kZXJCdWZm
ZXJPZmZzZXQ7CisgICAgVTAzMiBaQnVmZmVyT2Zmc2V0OworfSBSaXZhU3VyZmFjZTNEOworICAg
IAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKlwKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqICAgICAgICAg
ICAgICAgICAgICAgICAgVmlydHVhbGl6ZWQgUklWQSBIL1cgaW50ZXJmYWNlLiAgICAgICAgICAg
ICAgICAgICAgKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK1wqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisK
KyNkZWZpbmUgRlBfRU5BQkxFICAxCisjZGVmaW5lIEZQX0RJVEhFUiAgMgorCitzdHJ1Y3QgX3Jp
dmFfaHdfaW5zdDsKK3N0cnVjdCBfcml2YV9od19zdGF0ZTsKKy8qCisgKiBWaXJ0aWFsaXplZCBj
aGlwIGludGVyZmFjZS4gTWFrZXMgUklWQSAxMjggYW5kIFROVCBsb29rIGFsaWtlLgorICovCit0
eXBlZGVmIHN0cnVjdCBfcml2YV9od19pbnN0Cit7CisgICAgLyoKKyAgICAgKiBDaGlwIHNwZWNp
ZmljIHNldHRpbmdzLgorICAgICAqLworICAgIFUwMzIgQXJjaGl0ZWN0dXJlOworICAgIFUwMzIg
VmVyc2lvbjsKKyAgICBVMDMyIENoaXBzZXQ7CisgICAgVTAzMiBDcnlzdGFsRnJlcUtIejsKKyAg
ICBVMDMyIFJhbUFtb3VudEtCeXRlczsKKyAgICBVMDMyIE1heFZDbG9ja0ZyZXFLSHo7CisgICAg
VTAzMiBSYW1CYW5kd2lkdGhLQnl0ZXNQZXJTZWM7CisgICAgVTAzMiBFbmFibGVJUlE7CisgICAg
VTAzMiBJTzsKKyAgICBVMDMyIFZCbGFua0JpdDsKKyAgICBVMDMyIEZpZm9GcmVlQ291bnQ7Cisg
ICAgVTAzMiBGaWZvRW1wdHlDb3VudDsKKyAgICBVMDMyIEN1cnNvclN0YXJ0OworICAgIFUwMzIg
ZmxhdFBhbmVsOworICAgIEJvb2wgdHdvSGVhZHM7CisgICAgLyoKKyAgICAgKiBOb24tRklGTyBy
ZWdpc3RlcnMuCisgICAgICovCisgICAgdm9sYXRpbGUgVTAzMiAqUENSVEMwOworICAgIHZvbGF0
aWxlIFUwMzIgKlBDUlRDOworICAgIHZvbGF0aWxlIFUwMzIgKlBSQU1EQUMwOworICAgIHZvbGF0
aWxlIFUwMzIgKlBGQjsKKyAgICB2b2xhdGlsZSBVMDMyICpQRklGTzsKKyAgICB2b2xhdGlsZSBV
MDMyICpQR1JBUEg7CisgICAgdm9sYXRpbGUgVTAzMiAqUEVYVERFVjsKKyAgICB2b2xhdGlsZSBV
MDMyICpQVElNRVI7CisgICAgdm9sYXRpbGUgVTAzMiAqUE1DOworICAgIHZvbGF0aWxlIFUwMzIg
KlBSQU1JTjsKKyAgICB2b2xhdGlsZSBVMDMyICpGSUZPOworICAgIHZvbGF0aWxlIFUwMzIgKkNV
UlNPUjsKKyAgICB2b2xhdGlsZSBVMDA4ICpQQ0lPMDsKKyAgICB2b2xhdGlsZSBVMDA4ICpQQ0lP
OworICAgIHZvbGF0aWxlIFUwMDggKlBWSU87CisgICAgdm9sYXRpbGUgVTAwOCAqUERJTzA7Cisg
ICAgdm9sYXRpbGUgVTAwOCAqUERJTzsKKyAgICB2b2xhdGlsZSBVMDMyICpQUkFNREFDOworICAg
IC8qCisgICAgICogQ29tbW9uIGNoaXAgZnVuY3Rpb25zLgorICAgICAqLworICAgIGludCAgKCpC
dXN5KShzdHJ1Y3QgX3JpdmFfaHdfaW5zdCAqKTsKKyAgICB2b2lkICgqQ2FsY1N0YXRlRXh0KShz
dHJ1Y3QgX3JpdmFfaHdfaW5zdCAqLHN0cnVjdCBfcml2YV9od19zdGF0ZSAqLGludCxpbnQsaW50
LGludCxpbnQpOworICAgIHZvaWQgKCpMb2FkU3RhdGVFeHQpKHN0cnVjdCBfcml2YV9od19pbnN0
ICosc3RydWN0IF9yaXZhX2h3X3N0YXRlICopOworICAgIHZvaWQgKCpVbmxvYWRTdGF0ZUV4dCko
c3RydWN0IF9yaXZhX2h3X2luc3QgKixzdHJ1Y3QgX3JpdmFfaHdfc3RhdGUgKik7CisgICAgdm9p
ZCAoKlNldFN0YXJ0QWRkcmVzcykoc3RydWN0IF9yaXZhX2h3X2luc3QgKixVMDMyKTsKKyAgICB2
b2lkICgqU2V0U3VyZmFjZXMyRCkoc3RydWN0IF9yaXZhX2h3X2luc3QgKixVMDMyLFUwMzIpOwor
ICAgIHZvaWQgKCpTZXRTdXJmYWNlczNEKShzdHJ1Y3QgX3JpdmFfaHdfaW5zdCAqLFUwMzIsVTAz
Mik7CisgICAgaW50ICAoKlNob3dIaWRlQ3Vyc29yKShzdHJ1Y3QgX3JpdmFfaHdfaW5zdCAqLGlu
dCk7CisgICAgdm9pZCAoKkxvY2tVbmxvY2spKHN0cnVjdCBfcml2YV9od19pbnN0ICosIGludCk7
CisgICAgLyoKKyAgICAgKiBDdXJyZW50IGV4dGVuZGVkIG1vZGUgc2V0dGluZ3MuCisgICAgICov
CisgICAgc3RydWN0IF9yaXZhX2h3X3N0YXRlICpDdXJyZW50U3RhdGU7CisgICAgLyoKKyAgICAg
KiBGSUZPIHJlZ2lzdGVycy4KKyAgICAgKi8KKyAgICBSaXZhUm9wICAgICAgICAgICAgICAgICAq
Um9wOworICAgIFJpdmFQYXR0ZXJuICAgICAgICAgICAgICpQYXR0OworICAgIFJpdmFDbGlwICAg
ICAgICAgICAgICAgICpDbGlwOworICAgIFJpdmFQaXhtYXAgICAgICAgICAgICAgICpQaXhtYXA7
CisgICAgUml2YVNjcmVlbkJsdCAgICAgICAgICAgKkJsdDsKKyAgICBSaXZhQml0bWFwICAgICAg
ICAgICAgICAqQml0bWFwOworICAgIFJpdmFMaW5lICAgICAgICAgICAgICAgICpMaW5lOworICAg
IFJpdmFUZXh0dXJlZFRyaWFuZ2xlMDMgICpUcmkwMzsKKyAgICBSaXZhVGV4dHVyZWRUcmlhbmds
ZTA1ICAqVHJpMDU7Cit9IFJJVkFfSFdfSU5TVDsKKy8qCisgKiBFeHRlbmRlZCBtb2RlIHN0YXRl
IGluZm9ybWF0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBfcml2YV9od19zdGF0ZQoreworICAg
IFUwMzIgYnBwOworICAgIFUwMzIgd2lkdGg7CisgICAgVTAzMiBoZWlnaHQ7CisgICAgVTAzMiBp
bnRlcmxhY2U7CisgICAgVTAzMiByZXBhaW50MDsKKyAgICBVMDMyIHJlcGFpbnQxOworICAgIFUw
MzIgc2NyZWVuOworICAgIFUwMzIgc2NhbGU7CisgICAgVTAzMiBkaXRoZXI7CisgICAgVTAzMiBl
eHRyYTsKKyAgICBVMDMyIHBpeGVsOworICAgIFUwMzIgaG9yaXo7CisgICAgVTAzMiBhcmJpdHJh
dGlvbjA7CisgICAgVTAzMiBhcmJpdHJhdGlvbjE7CisgICAgVTAzMiB2cGxsOworICAgIFUwMzIg
dnBsbDI7CisgICAgVTAzMiBwbGxzZWw7CisgICAgVTAzMiBnZW5lcmFsOworICAgIFUwMzIgY3J0
Y093bmVyOworICAgIFUwMzIgaGVhZDsgCisgICAgVTAzMiBoZWFkMjsgCisgICAgVTAzMiBjb25m
aWc7CisgICAgVTAzMiBjdXJzb3JDb25maWc7CQorICAgIFUwMzIgY3Vyc29yMDsKKyAgICBVMDMy
IGN1cnNvcjE7CisgICAgVTAzMiBjdXJzb3IyOworICAgIFUwMzIgb2Zmc2V0MDsKKyAgICBVMDMy
IG9mZnNldDE7CisgICAgVTAzMiBvZmZzZXQyOworICAgIFUwMzIgb2Zmc2V0MzsKKyAgICBVMDMy
IHBpdGNoMDsKKyAgICBVMDMyIHBpdGNoMTsKKyAgICBVMDMyIHBpdGNoMjsKKyAgICBVMDMyIHBp
dGNoMzsKKyAgICBVMDMyIGZiX3N0YXJ0OworICAgIFUwMzIgdmVuZDsKKyAgICBVMDMyIHZ0b3Rh
bDsKKyAgICBVMDMyIHZjcnRjOworICAgIFUwMzIgdnN5bmNzdGFydDsKKyAgICBVMDMyIHZzeW5j
ZW5kOworICAgIFUwMzIgdnZhbGlkc3RhcnQ7CisgICAgVTAzMiB2dmFsaWRlbmQ7CisgICAgVTAz
MiBoZW5kOworICAgIFUwMzIgaHRvdGFsOworICAgIFUwMzIgaGNydGM7CisgICAgVTAzMiBoc3lu
Y3N0YXJ0OworICAgIFUwMzIgaHN5bmNlbmQ7CisgICAgVTAzMiBodmFsaWRzdGFydDsKKyAgICBV
MDMyIGh2YWxpZGVuZDsKKyAgICBVMDMyIGNydGNoZGlzcGVuZDsKKyAgICBVMDMyIGNydGN2c3Rh
cnQ7CisgICAgVTAzMiBjcnRjdnRvdGFsOworICAgIFUwMzIgY2hlY2tzdW07ICAgCit9IFJJVkFf
SFdfU1RBVEU7CisvKgorICogRXh0ZXJuYWwgcm91dGluZXMuCisgKi8KK2ludCBSaXZhR2V0Q29u
ZmlnKFJJVkFfSFdfSU5TVCAqLCB1bnNpZ25lZCBpbnQpOworLyoKKyAqIEZJRk8gRnJlZSBDb3Vu
dC4gU2hvdWxkIGF0dGVtcHQgdG8geWllbGQgcHJvY2Vzc29yIGlmIFJJVkEgaXMgYnVzeS4KKyAq
LworCisjZGVmaW5lIFJJVkFfRklGT19GUkVFKGh3aW5zdCxod3B0cixjbnQpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHdoaWxlICgoaHdpbnN0KS5GaWZv
RnJlZUNvdW50IDwgKGNudCkpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICho
d2luc3QpLkZpZm9GcmVlQ291bnQgPSAoaHdpbnN0KS5od3B0ci0+Rmlmb0ZyZWUgPj4gMjsgICAg
IFwKKyAgICAoaHdpbnN0KS5GaWZvRnJlZUNvdW50IC09IChjbnQpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorfQorI2VuZGlmIC8qIF9fUklWQV9IV19IX18gKi8KKwpkaWZmIC11
ck4gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL3ZpZGVvL3hib3gvcml2YV90YmwuaCBsaW51eC0y
LjYuNS9kcml2ZXJzL3ZpZGVvL3hib3gvcml2YV90YmwuaAotLS0gbGludXgtMi42LjUub3JpZy9k
cml2ZXJzL3ZpZGVvL3hib3gvcml2YV90YmwuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAw
MCArMDEwMAorKysgbGludXgtMi42LjUvZHJpdmVycy92aWRlby94Ym94L3JpdmFfdGJsLmgJMjAw
NC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSwxMDA4IEBACisgLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKlwKK3wqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqICAgICAgIENvcHly
aWdodCAxOTkzLTE5OTkgTlZJRElBLCBDb3Jwb3JhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
ICAgICAgKnwKK3wqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqICAgICBOT1RJQ0UgVE8gVVNFUjog
ICBUaGUgc291cmNlIGNvZGUgIGlzIGNvcHlyaWdodGVkIHVuZGVyICBVLlMuIGFuZCAgICAgKnwK
K3wqICAgICBpbnRlcm5hdGlvbmFsIGxhd3MuICBVc2VycyBhbmQgcG9zc2Vzc29ycyBvZiB0aGlz
IHNvdXJjZSBjb2RlIGFyZSAgICAgKnwKK3wqICAgICBoZXJlYnkgZ3JhbnRlZCBhIG5vbmV4Y2x1
c2l2ZSwgIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgbGljZW5zZSB0byAgICAgKnwKK3wqICAgICB1
c2UgdGhpcyBjb2RlIGluIGluZGl2aWR1YWwgYW5kIGNvbW1lcmNpYWwgc29mdHdhcmUuICAgICAg
ICAgICAgICAgICAgKnwKK3wqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqICAgICBBbnkgdXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgbXVzdCBpbmNsdWRlLCAgaW4gdGhlIHVzZXIgZG9jdW1lbnRhLSAg
ICAgKnwKK3wqICAgICB0aW9uIGFuZCAgaW50ZXJuYWwgY29tbWVudHMgdG8gdGhlIGNvZGUsICBu
b3RpY2VzIHRvIHRoZSBlbmQgdXNlciAgICAgKnwKK3wqICAgICBhcyBmb2xsb3dzOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnwKK3wqICAgICAgIENvcHlyaWdodCAxOTkzLTE5OTkgTlZJRElB
LCBDb3Jwb3JhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgICAgKnwKK3wqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnwKK3wqICAgICBOVklESUEsIENPUlBPUkFUSU9OIE1BS0VTIE5PIFJFUFJFU0VO
VEFUSU9OIEFCT1VUIFRIRSBTVUlUQUJJTElUWSAgICAgKnwKK3wqICAgICBPRiAgVEhJUyBTT1VS
Q0UgIENPREUgIEZPUiBBTlkgUFVSUE9TRS4gIElUIElTICBQUk9WSURFRCAgIkFTIElTIiAgICAg
KnwKK3wqICAgICBXSVRIT1VUIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5UWSBPRiBBTlkgS0lO
RC4gIE5WSURJQSwgQ09SUE9SLSAgICAgKnwKK3wqICAgICBBVElPTiBESVNDTEFJTVMgQUxMIFdB
UlJBTlRJRVMgIFdJVEggUkVHQVJEICBUTyBUSElTIFNPVVJDRSBDT0RFLCAgICAgKnwKK3wqICAg
ICBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIE5P
TklORlJJTkdFLSAgICAgKnwKK3wqICAgICBNRU5ULCAgQU5EIEZJVE5FU1MgIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gICBJTiBOTyBFVkVOVCBTSEFMTCAgICAgKnwKK3wqICAgICBOVklESUEs
IENPUlBPUkFUSU9OICBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCAgSU5ESVJFQ1QsICBJTkNJ
LSAgICAgKnwKK3wqICAgICBERU5UQUwsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUywgIE9SIEFO
WSBEQU1BR0VTICBXSEFUU09FVkVSIFJFLSAgICAgKnwKK3wqICAgICBTVUxUSU5HIEZST00gTE9T
UyBPRiBVU0UsICBEQVRBIE9SIFBST0ZJVFMsICBXSEVUSEVSIElOIEFOIEFDVElPTiAgICAgKnwK
K3wqICAgICBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04s
ICBBUklTSU5HIE9VVCBPRiAgICAgKnwKK3wqICAgICBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF
IFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPVVJDRSBDT0RFLiAgICAgKnwKK3wqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKnwKK3wqICAgICBVLlMuIEdvdmVybm1lbnQgIEVuZCAgVXNlcnMuICAgVGhp
cyBzb3VyY2UgY29kZSAgaXMgYSAiY29tbWVyY2lhbCAgICAgKnwKK3wqICAgICBpdGVtLCIgIGFz
IHRoYXQgIHRlcm0gaXMgIGRlZmluZWQgYXQgIDQ4IEMuRi5SLiAyLjEwMSAoT0NUIDE5OTUpLCAg
ICAgKnwKK3wqICAgICBjb25zaXN0aW5nICBvZiAiY29tbWVyY2lhbCAgY29tcHV0ZXIgIHNvZnR3
YXJlIiAgYW5kICAiY29tbWVyY2lhbCAgICAgKnwKK3wqICAgICBjb21wdXRlciAgc29mdHdhcmUg
IGRvY3VtZW50YXRpb24sIiAgYXMgc3VjaCAgdGVybXMgIGFyZSAgdXNlZCBpbiAgICAgKnwKK3wq
ICAgICA0OCBDLkYuUi4gMTIuMjEyIChTRVBUIDE5OTUpICBhbmQgaXMgcHJvdmlkZWQgdG8gdGhl
IFUuUy4gR292ZXJuLSAgICAgKnwKK3wqICAgICBtZW50IG9ubHkgYXMgIGEgY29tbWVyY2lhbCBl
bmQgaXRlbS4gICBDb25zaXN0ZW50IHdpdGggIDQ4IEMuRi5SLiAgICAgKnwKK3wqICAgICAxMi4y
MTIgYW5kICA0OCBDLkYuUi4gMjI3LjcyMDItMSB0aHJvdWdoICAyMjcuNzIwMi00IChKVU5FIDE5
OTUpLCAgICAgKnwKK3wqICAgICBhbGwgVS5TLiBHb3Zlcm5tZW50IEVuZCBVc2VycyAgYWNxdWly
ZSB0aGUgc291cmNlIGNvZGUgIHdpdGggb25seSAgICAgKnwKK3wqICAgICB0aG9zZSByaWdodHMg
c2V0IGZvcnRoIGhlcmVpbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KnwKK3wqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnwKKyBcKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgor
ICogR1BMIGxpY2Vuc2luZyBub3RlIC0tIG5WaWRpYSBpcyBhbGxvd2luZyBhIGxpYmVyYWwgaW50
ZXJwcmV0YXRpb24gb2YKKyAqIHRoZSBkb2N1bWVudGF0aW9uIHJlc3RyaWN0aW9uIGFib3ZlLCB0
byBtZXJlbHkgc2F5IHRoYXQgdGhpcyBuVmlkaWEncworICogY29weXJpZ2h0IGFuZCBkaXNjbGFp
bWVyIHNob3VsZCBiZSBpbmNsdWRlZCB3aXRoIGFsbCBjb2RlIGRlcml2ZWQKKyAqIGZyb20gdGhp
cyBzb3VyY2UuICAtLSBKZWZmIEdhcnppayA8amdhcnppa0Bwb2JveC5jb20+LCAwMS9Ob3YvOTkg
CisgKi8KKworLyogJFhGcmVlODY6IHhjL3Byb2dyYW1zL1hzZXJ2ZXIvaHcveGZyZWU4Ni9kcml2
ZXJzL252L3JpdmFfdGJsLmgsdiAxLjkgMjAwMi8wMS8zMCAwMTozNTowMyBtdm9qa292aSBFeHAg
JCAqLworCisKKy8qCisgKiBSSVZBIEZpeGVkIEZ1bmN0aW9uYWxpdHkgSW5pdCBUYWJsZXMuCisg
Ki8KK3N0YXRpYyB1bnNpZ25lZCBSaXZhVGFibGVQTUNbXVsyXSA9Cit7CisgICAgezB4MDAwMDAw
NTAsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDgwLCAweEZGRkYwMEZGfSwKKyAgICB7MHgw
MDAwMDA4MCwgMHhGRkZGRkZGRn0KK307CitzdGF0aWMgdW5zaWduZWQgUml2YVRhYmxlUFRJTUVS
W11bMl0gPQoreworICAgIHsweDAwMDAwMDgwLCAweDAwMDAwMDA4fSwKKyAgICB7MHgwMDAwMDA4
NCwgMHgwMDAwMDAwM30sCisgICAgezB4MDAwMDAwNTAsIDB4MDAwMDAwMDB9LAorICAgIHsweDAw
MDAwMDQwLCAweEZGRkZGRkZGfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBSaXZhVGFibGVGSUZPW11b
Ml0gPQoreworICAgIHsweDAwMDAwMDAwLCAweDgwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDgwMCwg
MHg4MDAwMDAwMX0sCisgICAgezB4MDAwMDEwMDAsIDB4ODAwMDAwMDJ9LAorICAgIHsweDAwMDAx
ODAwLCAweDgwMDAwMDEwfSwKKyAgICB7MHgwMDAwMjAwMCwgMHg4MDAwMDAxMX0sCisgICAgezB4
MDAwMDI4MDAsIDB4ODAwMDAwMTJ9LAorICAgIHsweDAwMDAzMDAwLCAweDgwMDAwMDE2fSwKKyAg
ICB7MHgwMDAwMzgwMCwgMHg4MDAwMDAxM30KK307CitzdGF0aWMgdW5zaWduZWQgbnYzVGFibGVQ
RklGT1tdWzJdID0KK3sKKyAgICB7MHgwMDAwMDE0MCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAw
MDA0ODAsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNDkwLCAweDAwMDAwMDAwfSwKKyAgICB7
MHgwMDAwMDQ5NCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDA0ODEsIDB4MDAwMDAwMDB9LAor
ICAgIHsweDAwMDAwMDg0LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA4NiwgMHgwMDAwMjAw
MH0sCisgICAgezB4MDAwMDAwODUsIDB4MDAwMDIyMDB9LAorICAgIHsweDAwMDAwNDg0LCAweDAw
MDAwMDAwfSwKKyAgICB7MHgwMDAwMDQ5QywgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAxMDQs
IDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMTA4LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAw
MDEwMCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDA0QTAsIDB4MDAwMDAwMDB9LAorICAgIHsw
eDAwMDAwNEE0LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDRBOCwgMHgwMDAwMDAwMH0sCisg
ICAgezB4MDAwMDA0QUMsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNEIwLCAweDAwMDAwMDAw
fSwKKyAgICB7MHgwMDAwMDRCNCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDA0QjgsIDB4MDAw
MDAwMDB9LAorICAgIHsweDAwMDAwNEJDLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA1MCwg
MHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNDAsIDB4RkZGRkZGRkZ9LAorICAgIHsweDAwMDAw
NDgwLCAweDAwMDAwMDAxfSwKKyAgICB7MHgwMDAwMDQ5MCwgMHgwMDAwMDAwMX0sCisgICAgezB4
MDAwMDAxNDAsIDB4MDAwMDAwMDF9Cit9Oworc3RhdGljIHVuc2lnbmVkIG52M1RhYmxlUEdSQVBI
W11bMl0gPQoreworICAgIHsweDAwMDAwMDIwLCAweDEyMzAwMDFGfSwKKyAgICB7MHgwMDAwMDAy
MSwgMHgxMDExMzAwMH0sCisgICAgezB4MDAwMDAwMjIsIDB4MTEzMUYxMDF9LAorICAgIHsweDAw
MDAwMDIzLCAweDAxMDBGNTMxfSwKKyAgICB7MHgwMDAwMDA2MCwgMHgwMDAwMDAwMH0sCisgICAg
ezB4MDAwMDAwNjUsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDY4LCAweDAwMDAwMDAwfSwK
KyAgICB7MHgwMDAwMDA2OSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNkEsIDB4MDAwMDAw
MDB9LAorICAgIHsweDAwMDAwMDZCLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA2QywgMHgw
MDAwMDAwMH0sCisgICAgezB4MDAwMDAwNkQsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDZF
LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA2RiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAw
MDAxQTgsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNDQwLCAweEZGRkZGRkZGfSwKKyAgICB7
MHgwMDAwMDQ4MCwgMHgwMDAwMDAwMX0sCisgICAgezB4MDAwMDAxQTAsIDB4MDAwMDAwMDB9LAor
ICAgIHsweDAwMDAwMUEyLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDE4QSwgMHhGRkZGRkZG
Rn0sCisgICAgezB4MDAwMDAxOTAsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMTQyLCAweDAw
MDAwMDAwfSwKKyAgICB7MHgwMDAwMDE1NCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAxNTUs
IDB4RkZGRkZGRkZ9LAorICAgIHsweDAwMDAwMTU2LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAw
MDE1NywgMHhGRkZGRkZGRn0sCisgICAgezB4MDAwMDAwNjQsIDB4MTAwMTAwMDJ9LAorICAgIHsw
eDAwMDAwMDUwLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA1MSwgMHgwMDAwMDAwMH0sCisg
ICAgezB4MDAwMDAwNDAsIDB4RkZGRkZGRkZ9LAorICAgIHsweDAwMDAwMDQxLCAweEZGRkZGRkZG
fSwKKyAgICB7MHgwMDAwMDQ0MCwgMHhGRkZGRkZGRn0sCisgICAgezB4MDAwMDAxQTksIDB4MDAw
MDAwMDF9Cit9Oworc3RhdGljIHVuc2lnbmVkIG52M1RhYmxlUEdSQVBIXzhCUFBbXVsyXSA9Cit7
CisgICAgezB4MDAwMDAxQUEsIDB4MDAwMDExMTF9Cit9Oworc3RhdGljIHVuc2lnbmVkIG52M1Rh
YmxlUEdSQVBIXzE1QlBQW11bMl0gPQoreworICAgIHsweDAwMDAwMUFBLCAweDAwMDAyMjIyfQor
fTsKK3N0YXRpYyB1bnNpZ25lZCBudjNUYWJsZVBHUkFQSF8zMkJQUFtdWzJdID0KK3sKKyAgICB7
MHgwMDAwMDFBQSwgMHgwMDAwMzMzM30KK307CitzdGF0aWMgdW5zaWduZWQgbnYzVGFibGVQUkFN
SU5bXVsyXSA9Cit7CisgICAgezB4MDAwMDA1MDAsIDB4MDAwMTAwMDB9LAorICAgIHsweDAwMDAw
NTAxLCAweDAwN0ZGRkZGfSwKKyAgICB7MHgwMDAwMDIwMCwgMHg4MDAwMDAwMH0sCisgICAgezB4
MDAwMDAyMDEsIDB4MDBDMjAzNDF9LAorICAgIHsweDAwMDAwMjA0LCAweDgwMDAwMDAxfSwKKyAg
ICB7MHgwMDAwMDIwNSwgMHgwMEM1MDM0Mn0sCisgICAgezB4MDAwMDAyMDgsIDB4ODAwMDAwMDJ9
LAorICAgIHsweDAwMDAwMjA5LCAweDAwQzYwMzQzfSwKKyAgICB7MHgwMDAwMDIwQywgMHg4MDAw
MDAwM30sCisgICAgezB4MDAwMDAyMEQsIDB4MDBEQzAzNDh9LAorICAgIHsweDAwMDAwMjEwLCAw
eDgwMDAwMDA0fSwKKyAgICB7MHgwMDAwMDIxMSwgMHgwMERDMDM0OX0sCisgICAgezB4MDAwMDAy
MTQsIDB4ODAwMDAwMDV9LAorICAgIHsweDAwMDAwMjE1LCAweDAwREMwMzRBfSwKKyAgICB7MHgw
MDAwMDIxOCwgMHg4MDAwMDAwNn0sCisgICAgezB4MDAwMDAyMTksIDB4MDBEQzAzNEJ9LAorICAg
IHsweDAwMDAwMjQwLCAweDgwMDAwMDEwfSwKKyAgICB7MHgwMDAwMDI0MSwgMHgwMEQxMDM0NH0s
CisgICAgezB4MDAwMDAyNDQsIDB4ODAwMDAwMTF9LAorICAgIHsweDAwMDAwMjQ1LCAweDAwRDAw
MzQ1fSwKKyAgICB7MHgwMDAwMDI0OCwgMHg4MDAwMDAxMn0sCisgICAgezB4MDAwMDAyNDksIDB4
MDBDQzAzNDZ9LAorICAgIHsweDAwMDAwMjRDLCAweDgwMDAwMDEzfSwKKyAgICB7MHgwMDAwMDI0
RCwgMHgwMEQ3MDM0N30sCisgICAgezB4MDAwMDAyNTgsIDB4ODAwMDAwMTZ9LAorICAgIHsweDAw
MDAwMjU5LCAweDAwQ0EwMzRDfSwKKyAgICB7MHgwMDAwMEQwNSwgMHgwMDAwMDAwMH0sCisgICAg
ezB4MDAwMDBEMDYsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwRDA3LCAweDAwMDAwMDAwfSwK
KyAgICB7MHgwMDAwMEQwOSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDBEMEEsIDB4MDAwMDAw
MDB9LAorICAgIHsweDAwMDAwRDBCLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMEQwRCwgMHgw
MDAwMDAwMH0sCisgICAgezB4MDAwMDBEMEUsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwRDBG
LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMEQxMSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAw
MDBEMTIsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwRDEzLCAweDAwMDAwMDAwfSwKKyAgICB7
MHgwMDAwMEQxNSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDBEMTYsIDB4MDAwMDAwMDB9LAor
ICAgIHsweDAwMDAwRDE3LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMEQxOSwgMHgwMDAwMDAw
MH0sCisgICAgezB4MDAwMDBEMUEsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwRDFCLCAweDAw
MDAwMDAwfSwKKyAgICB7MHgwMDAwMEQxRCwgMHgwMDAwMDE0MH0sCisgICAgezB4MDAwMDBEMUUs
IDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwRDFGLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAw
MEQyMCwgMHgxMDEwMDIwMH0sCisgICAgezB4MDAwMDBEMjEsIDB4MDAwMDAwMDB9LAorICAgIHsw
eDAwMDAwRDIyLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMEQyMywgMHgwMDAwMDAwMH0sCisg
ICAgezB4MDAwMDBEMjQsIDB4MTAyMTAyMDB9LAorICAgIHsweDAwMDAwRDI1LCAweDAwMDAwMDAw
fSwKKyAgICB7MHgwMDAwMEQyNiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDBEMjcsIDB4MDAw
MDAwMDB9LAorICAgIHsweDAwMDAwRDI4LCAweDEwNDIwMjAwfSwKKyAgICB7MHgwMDAwMEQyOSwg
MHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDBEMkEsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAw
RDJCLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMEQyQywgMHgxMDgzMDIwMH0sCisgICAgezB4
MDAwMDBEMkQsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwRDJFLCAweDAwMDAwMDAwfSwKKyAg
ICB7MHgwMDAwMEQyRiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDBEMzEsIDB4MDAwMDAwMDB9
LAorICAgIHsweDAwMDAwRDMyLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMEQzMywgMHgwMDAw
MDAwMH0KK307CitzdGF0aWMgdW5zaWduZWQgbnYzVGFibGVQUkFNSU5fOEJQUFtdWzJdID0KK3sK
KyAgICAvKiAgICAgICAgICAgMHhYWFhYWDNYWCBGb3IgIE1TQiBtb25vIGZvcm1hdCAqLworICAg
IC8qICAgICAgICAgICAweFhYWFhYMlhYIEZvciAgTFNCIG1vbm8gZm9ybWF0ICovCisgICAgezB4
MDAwMDBEMDQsIDB4MTAxMTAyMDN9LAorICAgIHsweDAwMDAwRDA4LCAweDEwMTEwMjAzfSwKKyAg
ICB7MHgwMDAwMEQwQywgMHgxMDExMDIwQn0sCisgICAgezB4MDAwMDBEMTAsIDB4MTAxMTgyMDN9
LAorICAgIHsweDAwMDAwRDE0LCAweDEwMTEwMjAzfSwKKyAgICB7MHgwMDAwMEQxOCwgMHgxMDEx
MDIwM30sCisgICAgezB4MDAwMDBEMUMsIDB4MTA0MTkyMDh9LAorICAgIHsweDAwMDAwRDMwLCAw
eDEwMTE4MjAzfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjNUYWJsZVBSQU1JTl8xNUJQUFtdWzJd
ID0KK3sKKyAgICAvKiAgICAgICAgICAgMHhYWFhYWDJYWCBGb3IgIE1TQiBtb25vIGZvcm1hdCAq
LworICAgIC8qICAgICAgICAgICAweFhYWFhYM1hYIEZvciAgTFNCIG1vbm8gZm9ybWF0ICovCisg
ICAgezB4MDAwMDBEMDQsIDB4MTAxMTAyMDB9LAorICAgIHsweDAwMDAwRDA4LCAweDEwMTEwMjAw
fSwKKyAgICB7MHgwMDAwMEQwQywgMHgxMDExMDIwOH0sCisgICAgezB4MDAwMDBEMTAsIDB4MTAx
MTgyMDB9LAorICAgIHsweDAwMDAwRDE0LCAweDEwMTEwMjAwfSwKKyAgICB7MHgwMDAwMEQxOCwg
MHgxMDExMDIwMH0sCisgICAgezB4MDAwMDBEMUMsIDB4MTA0MTkyMDh9LAorICAgIHsweDAwMDAw
RDMwLCAweDEwMTE4MjAwfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjNUYWJsZVBSQU1JTl8zMkJQ
UFtdWzJdID0KK3sKKyAgICAvKiAgICAgICAgICAgMHhYWFhYWDNYWCBGb3IgIE1TQiBtb25vIGZv
cm1hdCAqLworICAgIC8qICAgICAgICAgICAweFhYWFhYMlhYIEZvciAgTFNCIG1vbm8gZm9ybWF0
ICovCisgICAgezB4MDAwMDBEMDQsIDB4MTAxMTAyMDF9LAorICAgIHsweDAwMDAwRDA4LCAweDEw
MTEwMjAxfSwKKyAgICB7MHgwMDAwMEQwQywgMHgxMDExMDIwOX0sCisgICAgezB4MDAwMDBEMTAs
IDB4MTAxMTgyMDF9LAorICAgIHsweDAwMDAwRDE0LCAweDEwMTEwMjAxfSwKKyAgICB7MHgwMDAw
MEQxOCwgMHgxMDExMDIwMX0sCisgICAgezB4MDAwMDBEMUMsIDB4MTA0MTkyMDh9LAorICAgIHsw
eDAwMDAwRDMwLCAweDEwMTE4MjAxfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjRUYWJsZUZJRk9b
XVsyXSA9Cit7CisgICAgezB4MDAwMDM4MDAsIDB4ODAwMDAwMTR9Cit9Oworc3RhdGljIHVuc2ln
bmVkIG52NFRhYmxlUEZJRk9bXVsyXSA9Cit7CisgICAgezB4MDAwMDAxNDAsIDB4MDAwMDAwMDB9
LAorICAgIHsweDAwMDAwNDgwLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDQ5NCwgMHgwMDAw
MDAwMH0sCisgICAgezB4MDAwMDA0ODEsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNDhCLCAw
eDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDQwMCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDA0
MTQsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDg0LCAweDAzMDAwMTAwfSwgIAorICAgIHsw
eDAwMDAwMDg1LCAweDAwMDAwMTEwfSwKKyAgICB7MHgwMDAwMDA4NiwgMHgwMDAwMDExMn0sICAK
KyAgICB7MHgwMDAwMDE0MywgMHgwMDAwRkZGRn0sCisgICAgezB4MDAwMDA0OTYsIDB4MDAwMEZG
RkZ9LAorICAgIHsweDAwMDAwMDUwLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA0MCwgMHhG
RkZGRkZGRn0sCisgICAgezB4MDAwMDA0MTUsIDB4MDAwMDAwMDF9LAorICAgIHsweDAwMDAwNDgw
LCAweDAwMDAwMDAxfSwKKyAgICB7MHgwMDAwMDQ5NCwgMHgwMDAwMDAwMX0sCisgICAgezB4MDAw
MDA0OTUsIDB4MDAwMDAwMDF9LAorICAgIHsweDAwMDAwMTQwLCAweDAwMDAwMDAxfQorfTsKK3N0
YXRpYyB1bnNpZ25lZCBudjRUYWJsZVBHUkFQSFtdWzJdID0KK3sKKyAgICB7MHgwMDAwMDAyMCwg
MHgxMjMxQzAwMX0sCisgICAgezB4MDAwMDAwMjEsIDB4NzIxMTExMDF9LAorICAgIHsweDAwMDAw
MDIyLCAweDExRDVGMDcxfSwKKyAgICB7MHgwMDAwMDAyMywgMHgxMEQ0RkYzMX0sCisgICAgezB4
MDAwMDAwNjAsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDY4LCAweDAwMDAwMDAwfSwKKyAg
ICB7MHgwMDAwMDA3MCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNzgsIDB4MDAwMDAwMDB9
LAorICAgIHsweDAwMDAwMDYxLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA2OSwgMHgwMDAw
MDAwMH0sCisgICAgezB4MDAwMDAwNzEsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDc5LCAw
eDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA2MiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAw
NkEsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDcyLCAweDAwMDAwMDAwfSwKKyAgICB7MHgw
MDAwMDA3QSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNjMsIDB4MDAwMDAwMDB9LAorICAg
IHsweDAwMDAwMDZCLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA3MywgMHgwMDAwMDAwMH0s
CisgICAgezB4MDAwMDAwN0IsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDY0LCAweDAwMDAw
MDAwfSwKKyAgICB7MHgwMDAwMDA2QywgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNzQsIDB4
MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDdDLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA2
NSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNkQsIDB4MDAwMDAwMDB9LAorICAgIHsweDAw
MDAwMDc1LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA3RCwgMHgwMDAwMDAwMH0sCisgICAg
ezB4MDAwMDAwNjYsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDZFLCAweDAwMDAwMDAwfSwK
KyAgICB7MHgwMDAwMDA3NiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwN0UsIDB4MDAwMDAw
MDB9LAorICAgIHsweDAwMDAwMDY3LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA2RiwgMHgw
MDAwMDAwMH0sCisgICAgezB4MDAwMDAwNzcsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDdG
LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA1OCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAw
MDAwNTksIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDVBLCAweDAwMDAwMDAwfSwKKyAgICB7
MHgwMDAwMDA1QiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAxOTYsIDB4MDAwMDAwMDB9LAor
ICAgIHsweDAwMDAwMUExLCAweDAxRkZGRkZGfSwKKyAgICB7MHgwMDAwMDE5NywgMHgwMDAwMDAw
MH0sCisgICAgezB4MDAwMDAxQTIsIDB4MDFGRkZGRkZ9LAorICAgIHsweDAwMDAwMTk4LCAweDAw
MDAwMDAwfSwKKyAgICB7MHgwMDAwMDFBMywgMHgwMUZGRkZGRn0sCisgICAgezB4MDAwMDAxOTks
IDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMUE0LCAweDAxRkZGRkZGfSwKKyAgICB7MHgwMDAw
MDA1MCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNDAsIDB4RkZGRkZGRkZ9LAorICAgIHsw
eDAwMDAwMDVDLCAweDEwMDEwMTAwfSwKKyAgICB7MHgwMDAwMDFDNCwgMHhGRkZGRkZGRn0sCisg
ICAgezB4MDAwMDAxQzgsIDB4MDAwMDAwMDF9LAorICAgIHsweDAwMDAwMjA0LCAweDAwMDAwMDAw
fSwKKyAgICB7MHgwMDAwMDFDMywgMHgwMDAwMDAwMX0KK307CitzdGF0aWMgdW5zaWduZWQgbnY0
VGFibGVQR1JBUEhfOEJQUFtdWzJdID0KK3sKKyAgICB7MHgwMDAwMDFDOSwgMHgwMDExMTExMX0s
CisgICAgezB4MDAwMDAxODYsIDB4MDAwMDEwMTB9LAorICAgIHsweDAwMDAwMjBDLCAweDAzMDIw
MjAyfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjRUYWJsZVBHUkFQSF8xNUJQUFtdWzJdID0KK3sK
KyAgICB7MHgwMDAwMDFDOSwgMHgwMDIyNjIyMn0sCisgICAgezB4MDAwMDAxODYsIDB4MDAwMDIw
NzF9LAorICAgIHsweDAwMDAwMjBDLCAweDA5MDgwODA4fQorfTsKK3N0YXRpYyB1bnNpZ25lZCBu
djRUYWJsZVBHUkFQSF8xNkJQUFtdWzJdID0KK3sKKyAgICB7MHgwMDAwMDFDOSwgMHgwMDU1NjU1
NX0sCisgICAgezB4MDAwMDAxODYsIDB4MDAwMDUwQzJ9LAorICAgIHsweDAwMDAwMjBDLCAweDBD
MEIwQjBCfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjRUYWJsZVBHUkFQSF8zMkJQUFtdWzJdID0K
K3sKKyAgICB7MHgwMDAwMDFDOSwgMHgwMDc3RDc3N30sCisgICAgezB4MDAwMDAxODYsIDB4MDAw
MDcwRTV9LAorICAgIHsweDAwMDAwMjBDLCAweDBFMEQwRDBEfQorfTsKK3N0YXRpYyB1bnNpZ25l
ZCBudjRUYWJsZVBSQU1JTltdWzJdID0KK3sKKyAgICB7MHgwMDAwMDAwMCwgMHg4MDAwMDAxMH0s
CisgICAgezB4MDAwMDAwMDEsIDB4ODAwMTExNDV9LAorICAgIHsweDAwMDAwMDAyLCAweDgwMDAw
MDExfSwKKyAgICB7MHgwMDAwMDAwMywgMHg4MDAxMTE0Nn0sCisgICAgezB4MDAwMDAwMDQsIDB4
ODAwMDAwMTJ9LAorICAgIHsweDAwMDAwMDA1LCAweDgwMDExMTQ3fSwKKyAgICB7MHgwMDAwMDAw
NiwgMHg4MDAwMDAxM30sCisgICAgezB4MDAwMDAwMDcsIDB4ODAwMTExNDh9LAorICAgIHsweDAw
MDAwMDA4LCAweDgwMDAwMDE0fSwKKyAgICB7MHgwMDAwMDAwOSwgMHg4MDAxMTE0OX0sCisgICAg
ezB4MDAwMDAwMEEsIDB4ODAwMDAwMTV9LAorICAgIHsweDAwMDAwMDBCLCAweDgwMDExMTRBfSwK
KyAgICB7MHgwMDAwMDAwQywgMHg4MDAwMDAxNn0sCisgICAgezB4MDAwMDAwMEQsIDB4ODAwMTEx
NEZ9LAorICAgIHsweDAwMDAwMDIwLCAweDgwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDAyMSwgMHg4
MDAxMTE0Mn0sCisgICAgezB4MDAwMDAwMjIsIDB4ODAwMDAwMDF9LAorICAgIHsweDAwMDAwMDIz
LCAweDgwMDExMTQzfSwKKyAgICB7MHgwMDAwMDAyNCwgMHg4MDAwMDAwMn0sCisgICAgezB4MDAw
MDAwMjUsIDB4ODAwMTExNDR9LCAKKyAgICB7MHgwMDAwMDAyNiwgMHg4MDAwMDAwM30sCisgICAg
ezB4MDAwMDAwMjcsIDB4ODAwMTExNEJ9LAorICAgIHsweDAwMDAwMDI4LCAweDgwMDAwMDA0fSwK
KyAgICB7MHgwMDAwMDAyOSwgMHg4MDAxMTE0Q30sCisgICAgezB4MDAwMDAwMkEsIDB4ODAwMDAw
MDV9LAorICAgIHsweDAwMDAwMDJCLCAweDgwMDExMTREfSwKKyAgICB7MHgwMDAwMDAyQywgMHg4
MDAwMDAwNn0sCisgICAgezB4MDAwMDAwMkQsIDB4ODAwMTExNEV9LAorICAgIHsweDAwMDAwNTAw
LCAweDAwMDAzMDAwfSwKKyAgICB7MHgwMDAwMDUwMSwgMHgwMUZGRkZGRn0sCisgICAgezB4MDAw
MDA1MDIsIDB4MDAwMDAwMDJ9LAorICAgIHsweDAwMDAwNTAzLCAweDAwMDAwMDAyfSwKKyAgICB7
MHgwMDAwMDUwOCwgMHgwMTAwODA0M30sCisgICAgezB4MDAwMDA1MEEsIDB4MDAwMDAwMDB9LAor
ICAgIHsweDAwMDAwNTBCLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDUwQywgMHgwMTAwODAx
OX0sCisgICAgezB4MDAwMDA1MEUsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNTBGLCAweDAw
MDAwMDAwfSwKKyNpZiAxCisgICAgezB4MDAwMDA1MTAsIDB4MDEwMDgwMTh9LAorI2Vsc2UKKyAg
ICB7MHgwMDAwMDUxMCwgMHgwMTAwODA0NH0sCisjZW5kaWYKKyAgICB7MHgwMDAwMDUxMiwgMHgw
MDAwMDAwMH0sCisgICAgezB4MDAwMDA1MTMsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNTE0
LCAweDAxMDA4MDIxfSwKKyAgICB7MHgwMDAwMDUxNiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAw
MDA1MTcsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNTE4LCAweDAxMDA4MDVGfSwKKyAgICB7
MHgwMDAwMDUxQSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDA1MUIsIDB4MDAwMDAwMDB9LAor
I2lmIDEKKyAgICB7MHgwMDAwMDUxQywgMHgwMTAwODA0Qn0sCisjZWxzZQorICAgIHsweDAwMDAw
NTFDLCAweDAxMDA4MDRBfSwKKyNlbmRpZgorICAgIHsweDAwMDAwNTFFLCAweDAwMDAwMDAwfSwK
KyAgICB7MHgwMDAwMDUxRiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDA1MjAsIDB4MDEwMEEw
NDh9LAorICAgIHsweDAwMDAwNTIxLCAweDAwMDAwRDAxfSwKKyAgICB7MHgwMDAwMDUyMiwgMHgx
MTQwMTE0MH0sCisgICAgezB4MDAwMDA1MjMsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNTI0
LCAweDAzMDBBMDU0fSwKKyAgICB7MHgwMDAwMDUyNSwgMHgwMDAwMEQwMX0sCisgICAgezB4MDAw
MDA1MjYsIDB4MTE0MDExNDB9LAorICAgIHsweDAwMDAwNTI3LCAweDAwMDAwMDAwfSwKKyAgICB7
MHgwMDAwMDUyOCwgMHgwMzAwQTA1NX0sCisgICAgezB4MDAwMDA1MjksIDB4MDAwMDBEMDF9LAor
ICAgIHsweDAwMDAwNTJBLCAweDExNDAxMTQwfSwKKyAgICB7MHgwMDAwMDUyQiwgMHgwMDAwMDAw
MH0sCisgICAgezB4MDAwMDA1MkMsIDB4MDAwMDAwNTh9LAorICAgIHsweDAwMDAwNTJFLCAweDEx
NDAxMTQwfSwKKyAgICB7MHgwMDAwMDUyRiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDA1MzAs
IDB4MDAwMDAwNTl9LAorICAgIHsweDAwMDAwNTMyLCAweDExNDAxMTQwfSwKKyAgICB7MHgwMDAw
MDUzMywgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDA1MzQsIDB4MDAwMDAwNUF9LAorICAgIHsw
eDAwMDAwNTM2LCAweDExNDAxMTQwfSwKKyAgICB7MHgwMDAwMDUzNywgMHgwMDAwMDAwMH0sCisg
ICAgezB4MDAwMDA1MzgsIDB4MDAwMDAwNUJ9LAorICAgIHsweDAwMDAwNTNBLCAweDExNDAxMTQw
fSwKKyAgICB7MHgwMDAwMDUzQiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDA1M0MsIDB4MDMw
MEEwMUN9LAorICAgIHsweDAwMDAwNTNFLCAweDExNDAxMTQwfSwKKyAgICB7MHgwMDAwMDUzRiwg
MHgwMDAwMDAwMH0KK307CitzdGF0aWMgdW5zaWduZWQgbnY0VGFibGVQUkFNSU5fOEJQUFtdWzJd
ID0KK3sKKyAgICAvKiAgICAgICAgICAgMHhYWFhYWFgwMSBGb3IgIE1TQiBtb25vIGZvcm1hdCAq
LworICAgIC8qICAgICAgICAgICAweFhYWFhYWDAyIEZvciAgTFNCIG1vbm8gZm9ybWF0ICovCisg
ICAgezB4MDAwMDA1MDksIDB4MDAwMDAzMDJ9LAorICAgIHsweDAwMDAwNTBELCAweDAwMDAwMzAy
fSwKKyAgICB7MHgwMDAwMDUxMSwgMHgwMDAwMDIwMn0sCisgICAgezB4MDAwMDA1MTUsIDB4MDAw
MDAzMDJ9LAorICAgIHsweDAwMDAwNTE5LCAweDAwMDAwMzAyfSwKKyAgICB7MHgwMDAwMDUxRCwg
MHgwMDAwMDMwMn0sCisgICAgezB4MDAwMDA1MkQsIDB4MDAwMDAzMDJ9LAorICAgIHsweDAwMDAw
NTJFLCAweDAwMDAwMzAyfSwKKyAgICB7MHgwMDAwMDUzNSwgMHgwMDAwMDAwMH0sCisgICAgezB4
MDAwMDA1MzksIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNTNELCAweDAwMDAwMzAyfQorfTsK
K3N0YXRpYyB1bnNpZ25lZCBudjRUYWJsZVBSQU1JTl8xNUJQUFtdWzJdID0KK3sKKyAgICAvKiAg
ICAgICAgICAgMHhYWFhYWFgwMSBGb3IgIE1TQiBtb25vIGZvcm1hdCAqLworICAgIC8qICAgICAg
ICAgICAweFhYWFhYWDAyIEZvciAgTFNCIG1vbm8gZm9ybWF0ICovCisgICAgezB4MDAwMDA1MDks
IDB4MDAwMDA5MDJ9LAorICAgIHsweDAwMDAwNTBELCAweDAwMDAwOTAyfSwKKyAgICB7MHgwMDAw
MDUxMSwgMHgwMDAwMDgwMn0sCisgICAgezB4MDAwMDA1MTUsIDB4MDAwMDA5MDJ9LAorICAgIHsw
eDAwMDAwNTE5LCAweDAwMDAwOTAyfSwKKyAgICB7MHgwMDAwMDUxRCwgMHgwMDAwMDkwMn0sCisg
ICAgezB4MDAwMDA1MkQsIDB4MDAwMDA5MDJ9LAorICAgIHsweDAwMDAwNTJFLCAweDAwMDAwOTAy
fSwKKyAgICB7MHgwMDAwMDUzNSwgMHgwMDAwMDcwMn0sCisgICAgezB4MDAwMDA1MzksIDB4MDAw
MDA3MDJ9LAorICAgIHsweDAwMDAwNTNELCAweDAwMDAwOTAyfQorfTsKK3N0YXRpYyB1bnNpZ25l
ZCBudjRUYWJsZVBSQU1JTl8xNkJQUFtdWzJdID0KK3sKKyAgICAvKiAgICAgICAgICAgMHhYWFhY
WFgwMSBGb3IgIE1TQiBtb25vIGZvcm1hdCAqLworICAgIC8qICAgICAgICAgICAweFhYWFhYWDAy
IEZvciAgTFNCIG1vbm8gZm9ybWF0ICovCisgICAgezB4MDAwMDA1MDksIDB4MDAwMDBDMDJ9LAor
ICAgIHsweDAwMDAwNTBELCAweDAwMDAwQzAyfSwKKyAgICB7MHgwMDAwMDUxMSwgMHgwMDAwMEIw
Mn0sCisgICAgezB4MDAwMDA1MTUsIDB4MDAwMDBDMDJ9LAorICAgIHsweDAwMDAwNTE5LCAweDAw
MDAwQzAyfSwKKyAgICB7MHgwMDAwMDUxRCwgMHgwMDAwMEMwMn0sCisgICAgezB4MDAwMDA1MkQs
IDB4MDAwMDBDMDJ9LAorICAgIHsweDAwMDAwNTJFLCAweDAwMDAwQzAyfSwKKyAgICB7MHgwMDAw
MDUzNSwgMHgwMDAwMDcwMn0sCisgICAgezB4MDAwMDA1MzksIDB4MDAwMDA3MDJ9LAorICAgIHsw
eDAwMDAwNTNELCAweDAwMDAwQzAyfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjRUYWJsZVBSQU1J
Tl8zMkJQUFtdWzJdID0KK3sKKyAgICAvKiAgICAgICAgICAgMHhYWFhYWFgwMSBGb3IgIE1TQiBt
b25vIGZvcm1hdCAqLworICAgIC8qICAgICAgICAgICAweFhYWFhYWDAyIEZvciAgTFNCIG1vbm8g
Zm9ybWF0ICovCisgICAgezB4MDAwMDA1MDksIDB4MDAwMDBFMDJ9LAorICAgIHsweDAwMDAwNTBE
LCAweDAwMDAwRTAyfSwKKyAgICB7MHgwMDAwMDUxMSwgMHgwMDAwMEQwMn0sCisgICAgezB4MDAw
MDA1MTUsIDB4MDAwMDBFMDJ9LAorICAgIHsweDAwMDAwNTE5LCAweDAwMDAwRTAyfSwKKyAgICB7
MHgwMDAwMDUxRCwgMHgwMDAwMEUwMn0sCisgICAgezB4MDAwMDA1MkQsIDB4MDAwMDBFMDJ9LAor
ICAgIHsweDAwMDAwNTJFLCAweDAwMDAwRTAyfSwKKyAgICB7MHgwMDAwMDUzNSwgMHgwMDAwMEUw
Mn0sCisgICAgezB4MDAwMDA1MzksIDB4MDAwMDBFMDJ9LAorICAgIHsweDAwMDAwNTNELCAweDAw
MDAwRTAyfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjEwVGFibGVGSUZPW11bMl0gPQoreworICAg
IHsweDAwMDAzODAwLCAweDgwMDAwMDE0fQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjEwVGFibGVQ
RklGT1tdWzJdID0KK3sKKyAgICB7MHgwMDAwMDE0MCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAw
MDA0ODAsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNDk0LCAweDAwMDAwMDAwfSwKKyAgICB7
MHgwMDAwMDQ4MSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDA0OEIsIDB4MDAwMDAwMDB9LAor
ICAgIHsweDAwMDAwNDAwLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDQxNCwgMHgwMDAwMDAw
MH0sCisgICAgezB4MDAwMDAwODQsIDB4MDMwMDAxMDB9LAorICAgIHsweDAwMDAwMDg1LCAweDAw
MDAwMTEwfSwKKyAgICB7MHgwMDAwMDA4NiwgMHgwMDAwMDExMn0sCisgICAgezB4MDAwMDAxNDMs
IDB4MDAwMEZGRkZ9LAorICAgIHsweDAwMDAwNDk2LCAweDAwMDBGRkZGfSwKKyAgICB7MHgwMDAw
MDA1MCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNDAsIDB4RkZGRkZGRkZ9LAorICAgIHsw
eDAwMDAwNDE1LCAweDAwMDAwMDAxfSwKKyAgICB7MHgwMDAwMDQ4MCwgMHgwMDAwMDAwMX0sCisg
ICAgezB4MDAwMDA0OTQsIDB4MDAwMDAwMDF9LAorICAgIHsweDAwMDAwNDk1LCAweDAwMDAwMDAx
fSwKKyAgICB7MHgwMDAwMDE0MCwgMHgwMDAwMDAwMX0KK307CitzdGF0aWMgdW5zaWduZWQgbnYx
MFRhYmxlUEdSQVBIW11bMl0gPQoreworICAgIHsweDAwMDAwMDIwLCAweDAwMDNGRkZGfSwKKyAg
ICB7MHgwMDAwMDAyMSwgMHgwMDExODcwMX0sCisgICAgezB4MDAwMDAwMjIsIDB4MjRGODJBRDl9
LAorICAgIHsweDAwMDAwMDIzLCAweDU1REUwMDMwfSwKKyAgICB7MHgwMDAwMDAyMCwgMHgwMDAw
MDAwMH0sCisgICAgezB4MDAwMDAwMjQsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDU4LCAw
eDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA2MCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAw
NjgsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDcwLCAweDAwMDAwMDAwfSwKKyAgICB7MHgw
MDAwMDA3OCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNTksIDB4MDAwMDAwMDB9LAorICAg
IHsweDAwMDAwMDYxLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA2OSwgMHgwMDAwMDAwMH0s
CisgICAgezB4MDAwMDAwNzEsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDc5LCAweDAwMDAw
MDAwfSwKKyAgICB7MHgwMDAwMDA1QSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNjIsIDB4
MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDZBLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA3
MiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwN0EsIDB4MDAwMDAwMDB9LAorICAgIHsweDAw
MDAwMDVCLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA2MywgMHgwMDAwMDAwMH0sCisgICAg
ezB4MDAwMDAwNkIsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDczLCAweDAwMDAwMDAwfSwK
KyAgICB7MHgwMDAwMDA3QiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNUMsIDB4MDAwMDAw
MDB9LAorICAgIHsweDAwMDAwMDY0LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA2QywgMHgw
MDAwMDAwMH0sCisgICAgezB4MDAwMDAwNzQsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDdD
LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA1RCwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAw
MDAwNjUsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDZELCAweDAwMDAwMDAwfSwKKyAgICB7
MHgwMDAwMDA3NSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwN0QsIDB4MDAwMDAwMDB9LAor
ICAgIHsweDAwMDAwMDVFLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA2NiwgMHgwMDAwMDAw
MH0sCisgICAgezB4MDAwMDAwNkUsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDc2LCAweDAw
MDAwMDAwfSwKKyAgICB7MHgwMDAwMDA3RSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNUYs
IDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDY3LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAw
MDA2RiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNzcsIDB4MDAwMDAwMDB9LAorICAgIHsw
eDAwMDAwMDdGLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDA1MywgMHgwMDAwMDAwMH0sCisg
ICAgezB4MDAwMDAwNTQsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwMDU1LCAweDAwMDAwMDAw
fSwKKyAgICB7MHgwMDAwMDA1NiwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDAwNTcsIDB4MDAw
MDAwMDB9LAorICAgIHsweDAwMDAwMTk2LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDFBMSwg
MHgwMUZGRkZGRn0sCisgICAgezB4MDAwMDAxOTcsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAw
MUEyLCAweDAxRkZGRkZGfSwKKyAgICB7MHgwMDAwMDE5OCwgMHgwMDAwMDAwMH0sCisgICAgezB4
MDAwMDAxQTMsIDB4MDFGRkZGRkZ9LAorICAgIHsweDAwMDAwMTk5LCAweDAwMDAwMDAwfSwKKyAg
ICB7MHgwMDAwMDFBNCwgMHgwMUZGRkZGRn0sCisgICAgezB4MDAwMDAxOUEsIDB4MDAwMDAwMDB9
LAorICAgIHsweDAwMDAwMUE1LCAweDAxRkZGRkZGfSwKKyAgICB7MHgwMDAwMDE5QiwgMHgwMDAw
MDAwMH0sCisgICAgezB4MDAwMDAxQTYsIDB4MDFGRkZGRkZ9LAorICAgIHsweDAwMDAwMDUwLCAw
eDAxMTExMTExfSwKKyAgICB7MHgwMDAwMDA0MCwgMHhGRkZGRkZGRn0sCisgICAgezB4MDAwMDAw
NTEsIDB4MTAwMTAxMDB9LAorICAgIHsweDAwMDAwMUM1LCAweEZGRkZGRkZGfSwKKyAgICB7MHgw
MDAwMDFDOCwgMHgwMDAwMDAwMX0sCisgICAgezB4MDAwMDAyMDQsIDB4MDAwMDAwMDB9LAorICAg
IHsweDAwMDAwMUM0LCAweDAwMDAwMDAxfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjEwVGFibGVQ
R1JBUEhfOEJQUFtdWzJdID0KK3sKKyAgICB7MHgwMDAwMDFDOSwgMHgwMDExMTExMX0sCisgICAg
ezB4MDAwMDAxODYsIDB4MDAwMDEwMTB9LAorICAgIHsweDAwMDAwMjBDLCAweDAzMDIwMjAyfQor
fTsKK3N0YXRpYyB1bnNpZ25lZCBudjEwVGFibGVQR1JBUEhfMTVCUFBbXVsyXSA9Cit7CisgICAg
ezB4MDAwMDAxQzksIDB4MDAyMjYyMjJ9LAorICAgIHsweDAwMDAwMTg2LCAweDAwMDAyMDcxfSwK
KyAgICB7MHgwMDAwMDIwQywgMHgwOTA4MDgwOH0KK307CitzdGF0aWMgdW5zaWduZWQgbnYxMFRh
YmxlUEdSQVBIXzE2QlBQW11bMl0gPQoreworICAgIHsweDAwMDAwMUM5LCAweDAwNTU2NTU1fSwK
KyAgICB7MHgwMDAwMDE4NiwgMHgwMDAwNTBDMn0sCisgICAgezB4MDAwMDAyMEMsIDB4MDAwQjBC
MEN9Cit9Oworc3RhdGljIHVuc2lnbmVkIG52MTBUYWJsZVBHUkFQSF8zMkJQUFtdWzJdID0KK3sK
KyAgICB7MHgwMDAwMDFDOSwgMHgwMDc3RDc3N30sCisgICAgezB4MDAwMDAxODYsIDB4MDAwMDcw
RTV9LAorICAgIHsweDAwMDAwMjBDLCAweDBFMEQwRDBEfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBu
djEwdHJpMDVUYWJsZVBHUkFQSFtdWzJdID0KK3sKKyAgICB7KDB4MDAwMDBFMDAvNCksIDB4MDAw
MDAwMDB9LAorICAgIHsoMHgwMDAwMEUwNC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAw
RTA4LzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBFMEMvNCksIDB4MDAwMDAwMDB9LAor
ICAgIHsoMHgwMDAwMEUxMC80KSwgMHgwMDAwMTAwMH0sCisgICAgeygweDAwMDAwRTE0LzQpLCAw
eDAwMDAxMDAwfSwKKyAgICB7KDB4MDAwMDBFMTgvNCksIDB4NDAwM2ZmODB9LAorICAgIHsoMHgw
MDAwMEUxQy80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRTIwLzQpLCAweDAwMDAwMDAw
fSwKKyAgICB7KDB4MDAwMDBFMjQvNCksIDB4MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEUyOC80
KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRTJDLzQpLCAweDAwMDAwMDAwfSwKKyAgICB7
KDB4MDAwMDBFMzAvNCksIDB4MDAwODAwMDh9LAorICAgIHsoMHgwMDAwMEUzNC80KSwgMHgwMDA4
MDAwOH0sCisgICAgeygweDAwMDAwRTM4LzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBF
M0MvNCksIDB4MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEU0MC80KSwgMHgwMDAwMDAwMH0sCisg
ICAgeygweDAwMDAwRTQ0LzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBFNDgvNCksIDB4
MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEU0Qy80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAw
MDAwRTUwLzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBFNTQvNCksIDB4MDAwMDAwMDB9
LAorICAgIHsoMHgwMDAwMEU1OC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRTVDLzQp
LCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBFNjAvNCksIDB4MDAwMDAwMDB9LAorICAgIHso
MHgwMDAwMEU2NC80KSwgMHgxMDAwMDAwMH0sCisgICAgeygweDAwMDAwRTY4LzQpLCAweDAwMDAw
MDAwfSwKKyAgICB7KDB4MDAwMDBFNkMvNCksIDB4MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEU3
MC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRTc0LzQpLCAweDAwMDAwMDAwfSwKKyAg
ICB7KDB4MDAwMDBFNzgvNCksIDB4MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEU3Qy80KSwgMHgw
MDAwMDAwMH0sCisgICAgeygweDAwMDAwRTgwLzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAw
MDBFODQvNCksIDB4MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEU4OC80KSwgMHgwODAwMDAwMH0s
CisgICAgeygweDAwMDAwRThDLzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBFOTAvNCks
IDB4MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEU5NC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygw
eDAwMDAwRTk4LzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBFOUMvNCksIDB4NEI3RkZG
RkZ9LAorICAgIHsoMHgwMDAwMEVBMC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRUE0
LzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBFQTgvNCksIDB4MDAwMDAwMDB9LAorICAg
IHsoMHgwMDAwMEYwMC80KSwgMHgwN0ZGMDgwMH0sCisgICAgeygweDAwMDAwRjA0LzQpLCAweDA3
RkYwODAwfSwKKyAgICB7KDB4MDAwMDBGMDgvNCksIDB4MDdGRjA4MDB9LAorICAgIHsoMHgwMDAw
MEYwQy80KSwgMHgwN0ZGMDgwMH0sCisgICAgeygweDAwMDAwRjEwLzQpLCAweDA3RkYwODAwfSwK
KyAgICB7KDB4MDAwMDBGMTQvNCksIDB4MDdGRjA4MDB9LAorICAgIHsoMHgwMDAwMEYxOC80KSwg
MHgwN0ZGMDgwMH0sCisgICAgeygweDAwMDAwRjFDLzQpLCAweDA3RkYwODAwfSwKKyAgICB7KDB4
MDAwMDBGMjAvNCksIDB4MDdGRjA4MDB9LAorICAgIHsoMHgwMDAwMEYyNC80KSwgMHgwN0ZGMDgw
MH0sCisgICAgeygweDAwMDAwRjI4LzQpLCAweDA3RkYwODAwfSwKKyAgICB7KDB4MDAwMDBGMkMv
NCksIDB4MDdGRjA4MDB9LAorICAgIHsoMHgwMDAwMEYzMC80KSwgMHgwN0ZGMDgwMH0sCisgICAg
eygweDAwMDAwRjM0LzQpLCAweDA3RkYwODAwfSwKKyAgICB7KDB4MDAwMDBGMzgvNCksIDB4MDdG
RjA4MDB9LAorICAgIHsoMHgwMDAwMEYzQy80KSwgMHgwN0ZGMDgwMH0sCisgICAgeygweDAwMDAw
RjQwLzQpLCAweDEwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNDQvNCksIDB4MDAwMDAwMDB9LAor
ICAgIHsoMHgwMDAwMEY1MC80KSwgMHgwMDAwNjc0MH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAw
eDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4MDAwMDAwMDB9LAorICAgIHsoMHgw
MDAwMEY1NC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDNGODAwMDAw
fSwKKyAgICB7KDB4MDAwMDBGNTAvNCksIDB4MDAwMDY3NTB9LAorICAgIHsoMHgwMDAwMEY1NC80
KSwgMHg0MDAwMDAwMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDQwMDAwMDAwfSwKKyAgICB7
KDB4MDAwMDBGNTQvNCksIDB4NDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHg0MDAw
MDAwMH0sCisgICAgeygweDAwMDAwRjUwLzQpLCAweDAwMDA2NzYwfSwKKyAgICB7KDB4MDAwMDBG
NTQvNCksIDB4MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHgwMDAwMDAwMH0sCisg
ICAgeygweDAwMDAwRjU0LzQpLCAweDNGODAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4
MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEY1MC80KSwgMHgwMDAwNjc3MH0sCisgICAgeygweDAw
MDAwRjU0LzQpLCAweEM1MDAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4QzUwMDAwMDB9
LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRjU0LzQp
LCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNTAvNCksIDB4MDAwMDY3ODB9LAorICAgIHso
MHgwMDAwMEY1NC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDAwMDAw
MDAwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4M0Y4MDAwMDB9LAorICAgIHsoMHgwMDAwMEY1
NC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRjUwLzQpLCAweDAwMDA2N0EwfSwKKyAg
ICB7KDB4MDAwMDBGNTQvNCksIDB4M0Y4MDAwMDB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHgz
RjgwMDAwMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDNGODAwMDAwfSwKKyAgICB7KDB4MDAw
MDBGNTQvNCksIDB4M0Y4MDAwMDB9LAorICAgIHsoMHgwMDAwMEY1MC80KSwgMHgwMDAwNkFCMH0s
CisgICAgeygweDAwMDAwRjU0LzQpLCAweDNGODAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCks
IDB4M0Y4MDAwMDB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHgzRjgwMDAwMH0sCisgICAgeygw
eDAwMDAwRjUwLzQpLCAweDAwMDA2QUMwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4MDAwMDAw
MDB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRjU0
LzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNTAvNCksIDB4MDAwMDZDMTB9LAorICAg
IHsoMHgwMDAwMEY1NC80KSwgMHhCRjgwMDAwMH0sCisgICAgeygweDAwMDAwRjUwLzQpLCAweDAw
MDA3MDMwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4NzE0OUYyQ0F9LAorICAgIHsoMHgwMDAw
MEY1MC80KSwgMHgwMDAwNzA0MH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDcxNDlGMkNBfSwK
KyAgICB7KDB4MDAwMDBGNTAvNCksIDB4MDAwMDcwNTB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwg
MHg3MTQ5RjJDQX0sCisgICAgeygweDAwMDAwRjUwLzQpLCAweDAwMDA3MDYwfSwKKyAgICB7KDB4
MDAwMDBGNTQvNCksIDB4NzE0OUYyQ0F9LAorICAgIHsoMHgwMDAwMEY1MC80KSwgMHgwMDAwNzA3
MH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDcxNDlGMkNBfSwKKyAgICB7KDB4MDAwMDBGNTAv
NCksIDB4MDAwMDcwODB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHg3MTQ5RjJDQX0sCisgICAg
eygweDAwMDAwRjUwLzQpLCAweDAwMDA3MDkwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4NzE0
OUYyQ0F9LAorICAgIHsoMHgwMDAwMEY1MC80KSwgMHgwMDAwNzBBMH0sCisgICAgeygweDAwMDAw
RjU0LzQpLCAweDcxNDlGMkNBfSwKKyAgICB7KDB4MDAwMDBGNTAvNCksIDB4MDAwMDZBODB9LAor
ICAgIHsoMHgwMDAwMEY1NC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAw
eDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4M0Y4MDAwMDB9LAorICAgIHsoMHgw
MDAwMEY1MC80KSwgMHgwMDAwNkFBMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDAwMDAwMDAw
fSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEY1NC80
KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRjUwLzQpLCAweDAwMDAwMDQwfSwKKyAgICB7
KDB4MDAwMDBGNTQvNCksIDB4MDAwMDAwMDV9LAorICAgIHsoMHgwMDAwMEY1MC80KSwgMHgwMDAw
NjQwMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDNGODAwMDAwfSwKKyAgICB7KDB4MDAwMDBG
NTQvNCksIDB4M0Y4MDAwMDB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHg0QjdGRkZGRn0sCisg
ICAgeygweDAwMDAwRjU0LzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNTAvNCksIDB4
MDAwMDY0MTB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHhDNTAwMDAwMH0sCisgICAgeygweDAw
MDAwRjU0LzQpLCAweEM1MDAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4MDAwMDAwMDB9
LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRjUwLzQp
LCAweDAwMDA2NDIwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4MDAwMDAwMDB9LAorICAgIHso
MHgwMDAwMEY1NC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDAwMDAw
MDAwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEY1
MC80KSwgMHgwMDAwNjQzMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDAwMDAwMDAwfSwKKyAg
ICB7KDB4MDAwMDBGNTQvNCksIDB4MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHgw
MDAwMDAwMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAw
MDBGNTAvNCksIDB4MDAwMDY0QzB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHgzRjgwMDAwMH0s
CisgICAgeygweDAwMDAwRjU0LzQpLCAweDNGODAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCks
IDB4NDc3RkZGRkZ9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHgzRjgwMDAwMH0sCisgICAgeygw
eDAwMDAwRjUwLzQpLCAweDAwMDA2NEQwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4QzUwMDAw
MDB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHhDNTAwMDAwMH0sCisgICAgeygweDAwMDAwRjU0
LzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4MDAwMDAwMDB9LAorICAg
IHsoMHgwMDAwMEY1MC80KSwgMHgwMDAwNjRFMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweEM0
RkZGMDAwfSwKKyAgICB7KDB4MDAwMDBGNTQvNCksIDB4QzRGRkYwMDB9LAorICAgIHsoMHgwMDAw
MEY1NC80KSwgMHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDAwMDAwMDAwfSwK
KyAgICB7KDB4MDAwMDBGNTAvNCksIDB4MDAwMDY0RjB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwg
MHgwMDAwMDAwMH0sCisgICAgeygweDAwMDAwRjU0LzQpLCAweDAwMDAwMDAwfSwKKyAgICB7KDB4
MDAwMDBGNTQvNCksIDB4MDAwMDAwMDB9LAorICAgIHsoMHgwMDAwMEY1NC80KSwgMHgwMDAwMDAw
MH0sCisgICAgeygweDAwMDAwRjQwLzQpLCAweDMwMDAwMDAwfSwKKyAgICB7KDB4MDAwMDBGNDQv
NCksIDB4MDAwMDAwMDR9LAorICAgIHsoMHgwMDAwMEY0OC80KSwgMHgxMDAwMDAwMH0sCisgICAg
eygweDAwMDAwRjRDLzQpLCAweDAwMDAwMDAwfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjEwVGFi
bGVQUkFNSU5bXVsyXSA9Cit7CisgICAgezB4MDAwMDAwMDAsIDB4ODAwMDAwMTB9LAorICAgIHsw
eDAwMDAwMDAxLCAweDgwMDExMTQ1fSwKKyAgICB7MHgwMDAwMDAwMiwgMHg4MDAwMDAxMX0sCisg
ICAgezB4MDAwMDAwMDMsIDB4ODAwMTExNDZ9LAorICAgIHsweDAwMDAwMDA0LCAweDgwMDAwMDEy
fSwKKyAgICB7MHgwMDAwMDAwNSwgMHg4MDAxMTE0N30sCisgICAgezB4MDAwMDAwMDYsIDB4ODAw
MDAwMTN9LAorICAgIHsweDAwMDAwMDA3LCAweDgwMDExMTQ4fSwKKyAgICB7MHgwMDAwMDAwOCwg
MHg4MDAwMDAxNH0sCisgICAgezB4MDAwMDAwMDksIDB4ODAwMTExNDl9LAorICAgIHsweDAwMDAw
MDBBLCAweDgwMDAwMDE1fSwKKyAgICB7MHgwMDAwMDAwQiwgMHg4MDAxMTE0QX0sCisgICAgezB4
MDAwMDAwMEMsIDB4ODAwMDAwMTZ9LAorICAgIHsweDAwMDAwMDBELCAweDgwMDExMTUwfSwKKyAg
ICB7MHgwMDAwMDAyMCwgMHg4MDAwMDAwMH0sCisgICAgezB4MDAwMDAwMjEsIDB4ODAwMTExNDJ9
LAorICAgIHsweDAwMDAwMDIyLCAweDgwMDAwMDAxfSwKKyAgICB7MHgwMDAwMDAyMywgMHg4MDAx
MTE0M30sCisgICAgezB4MDAwMDAwMjQsIDB4ODAwMDAwMDJ9LAorICAgIHsweDAwMDAwMDI1LCAw
eDgwMDExMTQ0fSwKKyAgICB7MHgwMDAwMDAyNiwgMHg4MDAwMDAwM30sCisgICAgezB4MDAwMDAw
MjcsIDB4ODAwMTExNEJ9LAorICAgIHsweDAwMDAwMDI4LCAweDgwMDAwMDA0fSwKKyAgICB7MHgw
MDAwMDAyOSwgMHg4MDAxMTE0Q30sCisgICAgezB4MDAwMDAwMkEsIDB4ODAwMDAwMDV9LAorICAg
IHsweDAwMDAwMDJCLCAweDgwMDExMTREfSwKKyAgICB7MHgwMDAwMDAyQywgMHg4MDAwMDAwNn0s
CisgICAgezB4MDAwMDAwMkQsIDB4ODAwMTExNEV9LAorICAgIHsweDAwMDAwMDJFLCAweDgwMDAw
MDA3fSwKKyAgICB7MHgwMDAwMDAyRiwgMHg4MDAxMTE0Rn0sCisgICAgezB4MDAwMDA1MDAsIDB4
MDAwMDMwMDB9LAorICAgIHsweDAwMDAwNTAxLCAweDAxRkZGRkZGfSwKKyAgICB7MHgwMDAwMDUw
MiwgMHgwMDAwMDAwMn0sCisgICAgezB4MDAwMDA1MDMsIDB4MDAwMDAwMDJ9LAorI2lmZGVmIF9f
QklHX0VORElBTgorICAgIHsweDAwMDAwNTA4LCAweDAxMDg4MDQzfSwgCisjZWxzZQorICAgIHsw
eDAwMDAwNTA4LCAweDAxMDA4MDQzfSwKKyNlbmRpZgorICAgIHsweDAwMDAwNTBBLCAweDAwMDAw
MDAwfSwKKyAgICB7MHgwMDAwMDUwQiwgMHgwMDAwMDAwMH0sCisjaWZkZWYgX19CSUdfRU5ESUFO
CisgICAgezB4MDAwMDA1MEMsIDB4MDEwODgwMTl9LAorI2Vsc2UKKyAgICB7MHgwMDAwMDUwQywg
MHgwMTAwODAxOX0sCisjZW5kaWYKKyAgICB7MHgwMDAwMDUwRSwgMHgwMDAwMDAwMH0sCisgICAg
ezB4MDAwMDA1MEYsIDB4MDAwMDAwMDB9LAorI2lmZGVmIF9fQklHX0VORElBTgorICAgIHsweDAw
MDAwNTEwLCAweDAxMDg4MDE4fSwKKyNlbHNlCisgICAgezB4MDAwMDA1MTAsIDB4MDEwMDgwMTh9
LAorI2VuZGlmCisgICAgezB4MDAwMDA1MTIsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNTEz
LCAweDAwMDAwMDAwfSwKKyNpZmRlZiBfX0JJR19FTkRJQU4KKyAgICB7MHgwMDAwMDUxNCwgMHgw
MTA4ODAyMX0sCisjZWxzZQorICAgIHsweDAwMDAwNTE0LCAweDAxMDA4MDIxfSwKKyNlbmRpZgor
ICAgIHsweDAwMDAwNTE2LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDUxNywgMHgwMDAwMDAw
MH0sCisjaWZkZWYgX19CSUdfRU5ESUFOCisgICAgezB4MDAwMDA1MTgsIDB4MDEwODgwNUZ9LAor
I2Vsc2UKKyAgICB7MHgwMDAwMDUxOCwgMHgwMTAwODA1Rn0sCisjZW5kaWYKKyAgICB7MHgwMDAw
MDUxQSwgMHgwMDAwMDAwMH0sCisgICAgezB4MDAwMDA1MUIsIDB4MDAwMDAwMDB9LAorI2lmZGVm
IF9fQklHX0VORElBTgorICAgIHsweDAwMDAwNTFDLCAweDAxMDg4MDRCfSwKKyNlbHNlCisgICAg
ezB4MDAwMDA1MUMsIDB4MDEwMDgwNEJ9LAorI2VuZGlmCisgICAgezB4MDAwMDA1MUUsIDB4MDAw
MDAwMDB9LAorICAgIHsweDAwMDAwNTFGLCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDUyMCwg
MHgwMTAwQTA0OH0sCisgICAgezB4MDAwMDA1MjEsIDB4MDAwMDBEMDF9LAorICAgIHsweDAwMDAw
NTIyLCAweDExNDAxMTQwfSwKKyAgICB7MHgwMDAwMDUyMywgMHgwMDAwMDAwMH0sCisgICAgezB4
MDAwMDA1MjQsIDB4MDMwMEEwOTR9LAorICAgIHsweDAwMDAwNTI1LCAweDAwMDAwRDAxfSwKKyAg
ICB7MHgwMDAwMDUyNiwgMHgxMTQwMTE0MH0sCisgICAgezB4MDAwMDA1MjcsIDB4MDAwMDAwMDB9
LAorICAgIHsweDAwMDAwNTI4LCAweDAzMDBBMDk1fSwKKyAgICB7MHgwMDAwMDUyOSwgMHgwMDAw
MEQwMX0sCisgICAgezB4MDAwMDA1MkEsIDB4MTE0MDExNDB9LAorICAgIHsweDAwMDAwNTJCLCAw
eDAwMDAwMDAwfSwKKyNpZmRlZiBfX0JJR19FTkRJQU4KKyAgICB7MHgwMDAwMDUyQywgMHgwMDA4
MDA1OH0sCisjZWxzZQorICAgIHsweDAwMDAwNTJDLCAweDAwMDAwMDU4fSwKKyNlbmRpZgorICAg
IHsweDAwMDAwNTJFLCAweDExNDAxMTQwfSwKKyAgICB7MHgwMDAwMDUyRiwgMHgwMDAwMDAwMH0s
CisjaWZkZWYgX19CSUdfRU5ESUFOCisgICAgezB4MDAwMDA1MzAsIDB4MDAwODAwNTl9LAorI2Vs
c2UKKyAgICB7MHgwMDAwMDUzMCwgMHgwMDAwMDA1OX0sCisjZW5kaWYKKyAgICB7MHgwMDAwMDUz
MiwgMHgxMTQwMTE0MH0sCisgICAgezB4MDAwMDA1MzMsIDB4MDAwMDAwMDB9LAorICAgIHsweDAw
MDAwNTM0LCAweDAwMDAwMDVBfSwKKyAgICB7MHgwMDAwMDUzNiwgMHgxMTQwMTE0MH0sCisgICAg
ezB4MDAwMDA1MzcsIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNTM4LCAweDAwMDAwMDVCfSwK
KyAgICB7MHgwMDAwMDUzQSwgMHgxMTQwMTE0MH0sCisgICAgezB4MDAwMDA1M0IsIDB4MDAwMDAw
MDB9LAorICAgIHsweDAwMDAwNTNDLCAweDAwMDAwMDkzfSwKKyAgICB7MHgwMDAwMDUzRSwgMHgx
MTQwMTE0MH0sCisgICAgezB4MDAwMDA1M0YsIDB4MDAwMDAwMDB9LAorI2lmZGVmIF9fQklHX0VO
RElBTgorICAgIHsweDAwMDAwNTQwLCAweDAzMDhBMDFDfSwKKyNlbHNlCisgICAgezB4MDAwMDA1
NDAsIDB4MDMwMEEwMUN9LAorI2VuZGlmCisgICAgezB4MDAwMDA1NDIsIDB4MTE0MDExNDB9LAor
ICAgIHsweDAwMDAwNTQzLCAweDAwMDAwMDAwfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjEwVGFi
bGVQUkFNSU5fOEJQUFtdWzJdID0KK3sKKyAgICAvKiAgICAgICAgICAgMHhYWFhYWFgwMSBGb3Ig
IE1TQiBtb25vIGZvcm1hdCAqLworICAgIC8qICAgICAgICAgICAweFhYWFhYWDAyIEZvciAgTFNC
IG1vbm8gZm9ybWF0ICovCisgICAgezB4MDAwMDA1MDksIDB4MDAwMDAzMDJ9LAorICAgIHsweDAw
MDAwNTBELCAweDAwMDAwMzAyfSwKKyAgICB7MHgwMDAwMDUxMSwgMHgwMDAwMDIwMn0sCisgICAg
ezB4MDAwMDA1MTUsIDB4MDAwMDAzMDJ9LAorICAgIHsweDAwMDAwNTE5LCAweDAwMDAwMzAyfSwK
KyAgICB7MHgwMDAwMDUxRCwgMHgwMDAwMDMwMn0sCisgICAgezB4MDAwMDA1MkQsIDB4MDAwMDAz
MDJ9LAorICAgIHsweDAwMDAwNTJFLCAweDAwMDAwMzAyfSwKKyAgICB7MHgwMDAwMDUzNSwgMHgw
MDAwMDAwMH0sCisgICAgezB4MDAwMDA1MzksIDB4MDAwMDAwMDB9LAorICAgIHsweDAwMDAwNTNE
LCAweDAwMDAwMDAwfSwKKyAgICB7MHgwMDAwMDU0MSwgMHgwMDAwMDMwMn0KK307CitzdGF0aWMg
dW5zaWduZWQgbnYxMFRhYmxlUFJBTUlOXzE1QlBQW11bMl0gPQoreworICAgIC8qICAgICAgICAg
ICAweFhYWFhYWDAxIEZvciAgTVNCIG1vbm8gZm9ybWF0ICovCisgICAgLyogICAgICAgICAgIDB4
WFhYWFhYMDIgRm9yICBMU0IgbW9ubyBmb3JtYXQgKi8KKyAgICB7MHgwMDAwMDUwOSwgMHgwMDAw
MDkwMn0sCisgICAgezB4MDAwMDA1MEQsIDB4MDAwMDA5MDJ9LAorICAgIHsweDAwMDAwNTExLCAw
eDAwMDAwODAyfSwKKyAgICB7MHgwMDAwMDUxNSwgMHgwMDAwMDkwMn0sCisgICAgezB4MDAwMDA1
MTksIDB4MDAwMDA5MDJ9LAorICAgIHsweDAwMDAwNTFELCAweDAwMDAwOTAyfSwKKyAgICB7MHgw
MDAwMDUyRCwgMHgwMDAwMDkwMn0sCisgICAgezB4MDAwMDA1MkUsIDB4MDAwMDA5MDJ9LAorICAg
IHsweDAwMDAwNTM1LCAweDAwMDAwOTAyfSwKKyAgICB7MHgwMDAwMDUzOSwgMHgwMDAwMDkwMn0s
IAorICAgIHsweDAwMDAwNTNELCAweDAwMDAwOTAyfSwKKyAgICB7MHgwMDAwMDU0MSwgMHgwMDAw
MDkwMn0KK307CitzdGF0aWMgdW5zaWduZWQgbnYxMFRhYmxlUFJBTUlOXzE2QlBQW11bMl0gPQor
eworICAgIC8qICAgICAgICAgICAweFhYWFhYWDAxIEZvciAgTVNCIG1vbm8gZm9ybWF0ICovCisg
ICAgLyogICAgICAgICAgIDB4WFhYWFhYMDIgRm9yICBMU0IgbW9ubyBmb3JtYXQgKi8KKyAgICB7
MHgwMDAwMDUwOSwgMHgwMDAwMEMwMn0sCisgICAgezB4MDAwMDA1MEQsIDB4MDAwMDBDMDJ9LAor
ICAgIHsweDAwMDAwNTExLCAweDAwMDAwQjAyfSwKKyAgICB7MHgwMDAwMDUxNSwgMHgwMDAwMEMw
Mn0sCisgICAgezB4MDAwMDA1MTksIDB4MDAwMDBDMDJ9LAorICAgIHsweDAwMDAwNTFELCAweDAw
MDAwQzAyfSwKKyAgICB7MHgwMDAwMDUyRCwgMHgwMDAwMEMwMn0sCisgICAgezB4MDAwMDA1MkUs
IDB4MDAwMDBDMDJ9LAorICAgIHsweDAwMDAwNTM1LCAweDAwMDAwQzAyfSwKKyAgICB7MHgwMDAw
MDUzOSwgMHgwMDAwMEMwMn0sCisgICAgezB4MDAwMDA1M0QsIDB4MDAwMDBDMDJ9LAorICAgIHsw
eDAwMDAwNTQxLCAweDAwMDAwQzAyfQorfTsKK3N0YXRpYyB1bnNpZ25lZCBudjEwVGFibGVQUkFN
SU5fMzJCUFBbXVsyXSA9Cit7CisgICAgLyogICAgICAgICAgIDB4WFhYWFhYMDEgRm9yICBNU0Ig
bW9ubyBmb3JtYXQgKi8KKyAgICAvKiAgICAgICAgICAgMHhYWFhYWFgwMiBGb3IgIExTQiBtb25v
IGZvcm1hdCAqLworICAgIHsweDAwMDAwNTA5LCAweDAwMDAwRTAyfSwKKyAgICB7MHgwMDAwMDUw
RCwgMHgwMDAwMEUwMn0sCisgICAgezB4MDAwMDA1MTEsIDB4MDAwMDBEMDJ9LAorICAgIHsweDAw
MDAwNTE1LCAweDAwMDAwRTAyfSwKKyAgICB7MHgwMDAwMDUxOSwgMHgwMDAwMEUwMn0sCisgICAg
ezB4MDAwMDA1MUQsIDB4MDAwMDBFMDJ9LAorICAgIHsweDAwMDAwNTJELCAweDAwMDAwRTAyfSwK
KyAgICB7MHgwMDAwMDUyRSwgMHgwMDAwMEUwMn0sCisgICAgezB4MDAwMDA1MzUsIDB4MDAwMDBF
MDJ9LAorICAgIHsweDAwMDAwNTM5LCAweDAwMDAwRTAyfSwKKyAgICB7MHgwMDAwMDUzRCwgMHgw
MDAwMEUwMn0sCisgICAgezB4MDAwMDA1NDEsIDB4MDAwMDBFMDJ9Cit9OworCmRpZmYgLXVyTiBs
aW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvdmlkZW8veGJveC94Ym94ZmIuaCBsaW51eC0yLjYuNS9k
cml2ZXJzL3ZpZGVvL3hib3gveGJveGZiLmgKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy92
aWRlby94Ym94L3hib3hmYi5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisr
KyBsaW51eC0yLjYuNS9kcml2ZXJzL3ZpZGVvL3hib3gveGJveGZiLmgJMjAwNC0wNS0wMSAxNToy
MDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSw3MyBAQAorI2lmbmRlZiBfX1hCT1hGQl9I
CisjZGVmaW5lIF9fWEJPWEZCX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1
ZGUgPGxpbnV4L2ZiLmg+CisjaW5jbHVkZSA8dmlkZW8vdmdhLmg+CisjaW5jbHVkZSAicml2YV9o
dy5oIgorI2luY2x1ZGUgPGxpbnV4L3hib3hmYmN0bC5oPgorCisvKiBHR0kgY29tcGF0aWJpbGl0
eSBtYWNyb3MgKi8KKyNkZWZpbmUgTlVNX1NFUV9SRUdTCQkweDA1CisjZGVmaW5lIE5VTV9DUlRf
UkVHUwkJMHg0MQorI2RlZmluZSBOVU1fR1JDX1JFR1MJCTB4MDkKKyNkZWZpbmUgTlVNX0FUQ19S
RUdTCQkweDE1CisKKyNkZWZpbmUgTlVNX0NPTkVYQU5UX1JFR1MJMHg2OQorI2RlZmluZSBOVU1f
Rk9DVVNfUkVHUyAJICAgIDB4ZmYKKyNkZWZpbmUgTUFYX0VOQ09ERVJfUkVHUyAgICAweGZmCisK
Ky8qIGhvbGRzIHRoZSBzdGF0ZSBvZiB0aGUgVkdBIGNvcmUgYW5kIGV4dGVuZGVkIFJpdmEgaHcg
c3RhdGUgZnJvbSByaXZhX2h3LmMuCisgKiBGcm9tIEtHSSBvcmlnaW5hbGx5LiAqLworc3RydWN0
IHJpdmFfcmVncyB7CisJdTggYXR0cltOVU1fQVRDX1JFR1NdOworCXU4IGNydGNbTlVNX0NSVF9S
RUdTXTsKKwl1OCBncmFbTlVNX0dSQ19SRUdTXTsKKwl1OCBzZXFbTlVNX1NFUV9SRUdTXTsKKwl1
OCBtaXNjX291dHB1dDsKKwlSSVZBX0hXX1NUQVRFIGV4dDsKKwl1OCBlbmNvZGVyX21vZGVbTUFY
X0VOQ09ERVJfUkVHU107Cit9OworCitzdHJ1Y3Qgcml2YV9wYXIgeworCVJJVkFfSFdfSU5TVCBy
aXZhOwkvKiBpbnRlcmZhY2UgdG8gcml2YV9ody5jICovCisKKwljYWRkcl90IGN0cmxfYmFzZTsJ
LyogdmlydHVhbCBjb250cm9sIHJlZ2lzdGVyIGJhc2UgYWRkciAqLworCXVuc2lnbmVkIGRjbGtf
bWF4OwkvKiBtYXggRENMSyAqLworCisJc3RydWN0IHJpdmFfcmVncyBpbml0aWFsX3N0YXRlOwkv
KiBpbml0aWFsIHN0YXJ0dXAgdmlkZW8gbW9kZSAqLworCXN0cnVjdCByaXZhX3JlZ3MgY3VycmVu
dF9zdGF0ZTsKKwlzdHJ1Y3Qgdmdhc3RhdGUgc3RhdGU7CisJYXRvbWljX3QgcmVmX2NvdW50Owor
CXUzMiBjdXJzb3JfZGF0YVszMiAqIDMyLzRdOworCWludCBjdXJzb3JfcmVzZXQ7CisJdW5zaWdu
ZWQgY2hhciAqRURJRDsKKworCWludCBwYW5lbF94cmVzLCBwYW5lbF95cmVzOworCWludCBoT3Zl
cl9wbHVzLCBoU3luY193aWR0aCwgaGJsYW5rOworCWludCB2T3Zlcl9wbHVzLCB2U3luY193aWR0
aCwgdmJsYW5rOworCWludCBoQWN0X2hpZ2gsIHZBY3RfaGlnaCwgaW50ZXJsYWNlZDsKKwlpbnQg
c3luY3QsIG1pc2MsIGNsb2NrOworCisJaW50IHVzZV9kZWZhdWx0X3ZhcjsKKwlpbnQgZ290X2Rm
cGluZm87CisJdW5zaWduZWQgaW50IENoaXBzZXQ7CisJaW50IGZvcmNlQ1JUQzsKKwlCb29sIFNl
Y29uZENSVEM7CisJaW50IEZsYXRQYW5lbDsKKyNpZmRlZiBDT05GSUdfTVRSUgorCXN0cnVjdCB7
IGludCB2cmFtOyBpbnQgdnJhbV92YWxpZDsgfSBtdHJyOworI2VuZGlmCisJdW5zaWduZWQgcml2
YV9mYl9zdGFydDsgLyogc3RhcnQgYWRkcmVzcyBvZiBmYiBpbiByaXZhIGFkZHJlc3Mgc3BhY2Ug
Ki8KKwl4Ym94X3R2X2VuY29kaW5nIHR2X2VuY29kaW5nOworCXhib3hfYXZfdHlwZSBhdl90eXBl
OworCXhib3hfZW5jb2Rlcl90eXBlIHZpZGVvX2VuY29kZXI7CisJZG91YmxlIGhvYzsKKwlkb3Vi
bGUgdm9jOworfTsKKwordm9pZCByaXZhX2NvbW1vbl9zZXR1cChzdHJ1Y3Qgcml2YV9wYXIgKik7
Cit1bnNpZ25lZCBsb25nIHJpdmFfZ2V0X21lbWxlbihzdHJ1Y3Qgcml2YV9wYXIgKik7Cit1bnNp
Z25lZCBsb25nIHJpdmFfZ2V0X21heGRjbGsoc3RydWN0IHJpdmFfcGFyICopOworCisjZW5kaWYg
LyogX19YQk9YRkJfSCAqLwpkaWZmIC11ck4gbGludXgtMi42LjUub3JpZy9mcy9LY29uZmlnIGxp
bnV4LTIuNi41L2ZzL0tjb25maWcKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZnMvS2NvbmZpZwkyMDA0
LTA0LTA0IDA0OjM3OjIzLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUvZnMvS2NvbmZp
ZwkyMDA0LTA1LTAxIDE1OjIwOjQzLjAwMDAwMDAwMCArMDEwMApAQCAtNjY0LDYgKzY2NCwyNiBA
QAogCSAgKHRoZSBvbmUgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5IC8pIGNhbm5vdCBiZSBhIG1v
ZHVsZSwgc28gc2F5aW5nIE0KIAkgIGNvdWxkIGJlIGRhbmdlcm91cy4gIElmIHVuc3VyZSwgc2F5
IE4uCiAKK2NvbmZpZyBGQVRYX0ZTCisJdHJpc3RhdGUgIkZBVFggZmlsZXN5c3RlbSBzdXBwb3J0
IChFWFBFUklNRU5UQUwpIgorCWRlcGVuZHMgb24gRVhQRVJJTUVOVEFMICYmICFMQkQKKwloZWxw
CisJICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEZBVFggZmlsZXN5c3RlbSBhcyBmb3VuZCBp
biBNaWNyb3NvZnQncyBYYm94LgorCSAgCisJICBUaGUgRkFUWCBmaWxlc3lzdGVtIGlzIGEgZGVy
aXZhdGl2ZSBvZiB0aGUgRkFUIGZpbGVzeXN0ZW0gbWludXMgc29tZQorCSAgbGVnYWN5IGZpZWxk
cyBhbmQgcmVkdW5kYW50IGluZm9ybWF0aW9uLiBGb3IgbGVuZ3RoaWVyIGRpc2N1c3Npb25zIG9u
CisJICB0aGUgZmlsZXN5c3RlbSwgc2VlOgorCSAgCisJICBodHRwOi8veGJveC1saW51eC5zb3Vy
Y2Vmb3JnZS5uZXQvZG9jcy9mYXR4ZmF0Lmh0bWwKKwkgIGh0dHA6Ly94Ym94LWxpbnV4LnNvdXJj
ZWZvcmdlLm5ldC9kb2NzL2hkcGFydGZzLmh0bWwKKwkgIGh0dHA6Ly94Ym94LWxpbnV4LnNvdXJj
ZWZvcmdlLm5ldC9kb2NzL2hhY2tpbmdmYXR4Lmh0bWwKKwkgIAorCSAgSWYgeW91IGFyZSBydW5u
aW5nIExpbnV4IG9uIHRoZSBYYm94LCBjaG9vc2UgWSB1bmxlc3MgeW91IGtub3cKKwkgIHdoYXQg
eW91J3JlIGRvaW5nLiBPdGhlcndpc2UsIGNob29zZSBOLgorCSAgCisJICBUbyBjb21waWxlIHRo
aXMgZmlsZXN5c3RlbSBzdXBwb3J0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkg
IG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBmYXR4LgorCiBjb25maWcgTlRGU19GUwogCXRyaXN0YXRl
ICJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnQiCiAJc2VsZWN0IE5MUwpkaWZmIC11ck4gbGludXgt
Mi42LjUub3JpZy9mcy9NYWtlZmlsZSBsaW51eC0yLjYuNS9mcy9NYWtlZmlsZQotLS0gbGludXgt
Mi42LjUub3JpZy9mcy9NYWtlZmlsZQkyMDA0LTA0LTA0IDA0OjM3OjIzLjAwMDAwMDAwMCArMDEw
MAorKysgbGludXgtMi42LjUvZnMvTWFrZWZpbGUJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAw
MDAgKzAxMDAKQEAgLTU5LDYgKzU5LDcgQEAKIG9iai0kKENPTkZJR19VTVNET1NfRlMpCQkrPSB1
bXNkb3MvCiBvYmotJChDT05GSUdfTVNET1NfRlMpCQkrPSBtc2Rvcy8KIG9iai0kKENPTkZJR19W
RkFUX0ZTKQkJKz0gdmZhdC8KK29iai0kKENPTkZJR19GQVRYX0ZTKQkJKz0gZmF0eC8KIG9iai0k
KENPTkZJR19CRlNfRlMpCQkrPSBiZnMvCiBvYmotJChDT05GSUdfSVNPOTY2MF9GUykJKz0gaXNv
ZnMvCiBvYmotJChDT05GSUdfREVWRlNfRlMpCQkrPSBkZXZmcy8KZGlmZiAtdXJOIGxpbnV4LTIu
Ni41Lm9yaWcvZnMvZmF0eC9NYWtlZmlsZSBsaW51eC0yLjYuNS9mcy9mYXR4L01ha2VmaWxlCi0t
LSBsaW51eC0yLjYuNS5vcmlnL2ZzL2ZhdHgvTWFrZWZpbGUJMTk3MC0wMS0wMSAwMTowMDowMC4w
MDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2ZzL2ZhdHgvTWFrZWZpbGUJMjAwNC0wNS0w
MSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSw3IEBACisjCisjIE1ha2VmaWxl
IGZvciB0aGUgTGludXggZmF0eCBmaWxlc3lzdGVtIHJvdXRpbmVzLgorIworCitvYmotJChDT05G
SUdfRkFUWF9GUykgKz0gZmF0eC5vCisKK2ZhdHgtb2JqcyA6PSBuYW1laS5vIGNhY2hlLm8gZGly
Lm8gZmlsZS5vIGlub2RlLm8gbWlzYy5vIGZhdHhmc19zeW1zLm8KZGlmZiAtdXJOIGxpbnV4LTIu
Ni41Lm9yaWcvZnMvZmF0eC9jYWNoZS5jIGxpbnV4LTIuNi41L2ZzL2ZhdHgvY2FjaGUuYwotLS0g
bGludXgtMi42LjUub3JpZy9mcy9mYXR4L2NhY2hlLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAw
MDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2ZzL2ZhdHgvY2FjaGUuYwkyMDA0LTA1LTAxIDE1
OjIwOjQzLjAwMDAwMDAwMCArMDEwMApAQCAtMCwwICsxLDMxOSBAQAorLyoKKyAqICBsaW51eC9m
cy9mYXR4L2NhY2hlLmMKKyAqCisgKiAgV3JpdHRlbiAyMDAzIGJ5IEVkZ2FyIEh1Y2VrIGFuZCBM
ZWhuZXIgRnJhbnoKKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2ZhdHhfZnMuaD4KKyNpbmNs
dWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUg
PGxpbnV4L3N0cmluZy5oPgorI2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4KKyNpbmNsdWRlIDxsaW51
eC9idWZmZXJfaGVhZC5oPgorCisjZGVmaW5lIFBSSU5USyhmb3JtYXQsIGFyZ3MuLi4pIGRvIHsg
aWYgKGZhdHhfZGVidWcpIHByaW50ayggZm9ybWF0LCAjI2FyZ3MgKTsgfSB3aGlsZSgwKQorCitz
dGF0aWMgc3RydWN0IGZhdHhfY2FjaGUgKmZhdHhfY2FjaGUsY2FjaGVbRkFUWF9DQUNIRV07Citz
dGF0aWMgc3BpbmxvY2tfdCBmYXR4X2NhY2hlX2xvY2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7CisK
K2ludCBmYXR4X2FjY2VzcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLGludCBucixpbnQgbmV3X3Zh
bHVlKQoreworCXN0cnVjdCBidWZmZXJfaGVhZCAqYmgsICpiaDIsICpjX2JoLCAqY19iaDI7CisJ
dW5zaWduZWQgY2hhciAqcF9maXJzdCwgKnBfbGFzdDsKKwlpbnQgY29weSwgZmlyc3QgPSAwLCBs
YXN0ID0gMCwgbmV4dCwgYjsKKworCW5leHQgPSAwOworCisJaWYgKCh1bnNpZ25lZCkgKG5yLTIp
ID49IEZBVFhfU0Ioc2IpLT5jbHVzdGVycykKKwkJcmV0dXJuIDA7CisJaWYgKEZBVFhfU0Ioc2Ip
LT5mYXRfYml0cyA9PSAzMikgeworCQlmaXJzdCA9IGxhc3QgPSBucio0OworCX0gZWxzZSBpZiAo
RkFUWF9TQihzYiktPmZhdF9iaXRzID09IDE2KSB7CisJCWZpcnN0ID0gbGFzdCA9IG5yKjI7CisJ
fQorCisJYiA9IEZBVFhfU0Ioc2IpLT5mYXRfc3RhcnQgKyAoZmlyc3QgPj4gc2ItPnNfYmxvY2tz
aXplX2JpdHMpOworCWlmICghKGJoID0gc2JfYnJlYWQoc2IsIGIpKSkgeworCQlQUklOVEsoIkZB
VFg6IGJyZWFkIGluIGZhdHhfYWNjZXNzIGZhaWxlZFxuIik7CisJCXJldHVybiAwOworCX0KKwlp
ZiAoKGZpcnN0ID4+IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzKSA9PSAobGFzdCA+PiBzYi0+c19ibG9j
a3NpemVfYml0cykpIHsKKwkJYmgyID0gYmg7CisJfSBlbHNlIHsKKwkJaWYgKCEoYmgyID0gc2Jf
YnJlYWQoc2IsIGIrMSkpKSB7CisJCQlpZihiaCkgYnJlbHNlKGJoKTsKKwkJCVBSSU5USygiRkFU
WDogMm5kIGJyZWFkIGluIGZhdHhfYWNjZXNzIGZhaWxlZFxuIik7CisJCQlyZXR1cm4gMDsKKwkJ
fQorCX0KKwlpZiAoRkFUWF9TQihzYiktPmZhdF9iaXRzID09IDMyKSB7CisJCXBfZmlyc3QgPSBw
X2xhc3QgPSBOVUxMOyAvKiBHQ0MgbmVlZHMgdGhhdCBzdHVmZiAqLworCQluZXh0ID0gQ0ZfTEVf
TCgoKF9fdTMyICopIGJoLT5iX2RhdGEpWyhmaXJzdCAmIChzYi0+c19ibG9ja3NpemUgLSAxKSkg
Pj4gMl0pOworCQluZXh0ICY9IDB4ZmZmZmZmZmY7CisJCWlmIChuZXh0ID49IEVPQ19GQVQzMikg
bmV4dCA9IC0xOworCX0gZWxzZSBpZiAoRkFUWF9TQihzYiktPmZhdF9iaXRzID09IDE2KSB7CisJ
CXBfZmlyc3QgPSBwX2xhc3QgPSBOVUxMOyAvKiBHQ0MgbmVlZHMgdGhhdCBzdHVmZiAqLworCQlu
ZXh0ID0gQ0ZfTEVfVygoKF9fdTE2ICopIGJoLT5iX2RhdGEpWyhmaXJzdCAmIChzYi0+c19ibG9j
a3NpemUgLSAxKSkgPj4gMV0pOworCQlpZiAobmV4dCA+PSBFT0NfRkFUMTYpIG5leHQgPSAtMTsK
Kwl9CisJUFJJTlRLKCJGQVRYOiBmYXR4X2FjY2VzczogMHgleCwgbnI9MHgleCwgZmlyc3Q9MHgl
eCwgbmV4dD0weCV4XG4iLCBiLCBuciwgZmlyc3QsIG5leHQpOworCWlmIChuZXdfdmFsdWUgIT0g
LTEpIHsKKwkJaWYgKEZBVFhfU0Ioc2IpLT5mYXRfYml0cyA9PSAzMikgeworCQkJKChfX3UzMiAq
KWJoLT5iX2RhdGEpWyhmaXJzdCAmIChzYi0+c19ibG9ja3NpemUgLSAxKSkgPj4gMl0KKwkJCQk9
IENUX0xFX0wobmV3X3ZhbHVlKTsKKwkJfSBlbHNlIGlmIChGQVRYX1NCKHNiKS0+ZmF0X2JpdHMg
PT0gMTYpIHsKKwkJCSgoX191MTYgKiliaC0+Yl9kYXRhKVsoZmlyc3QgJiAoc2ItPnNfYmxvY2tz
aXplIC0gMSkpID4+IDFdCisJCQkJPSBDVF9MRV9XKG5ld192YWx1ZSk7CisJCX0KKwkJbWFya19i
dWZmZXJfZGlydHkoYmgpOworCQlmb3IgKGNvcHkgPSAxOyBjb3B5IDwgRkFUWF9TQihzYiktPmZh
dHM7IGNvcHkrKykgeworCQkJYiA9IEZBVFhfU0Ioc2IpLT5mYXRfc3RhcnQgKyAoZmlyc3QgPj4g
c2ItPnNfYmxvY2tzaXplX2JpdHMpCisJCQkJKyBGQVRYX1NCKHNiKS0+ZmF0X2xlbmd0aCAqIGNv
cHk7CisJCQlpZiAoIShjX2JoID0gc2JfYnJlYWQoc2IsIGIpKSkKKwkJCQlicmVhazsKKwkJCWlm
IChiaCAhPSBiaDIpIHsKKwkJCQlpZiAoIShjX2JoMiA9IHNiX2JyZWFkKHNiLCBiKzEpKSkgewor
CQkJCQlpZihjX2JoKSBicmVsc2UoY19iaCk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCQltZW1j
cHkoY19iaDItPmJfZGF0YSwgYmgyLT5iX2RhdGEsIHNiLT5zX2Jsb2Nrc2l6ZSk7CisJCQkJbWFy
a19idWZmZXJfZGlydHkoY19iaDIpOworCQkJCWlmKGNfYmgyKSBicmVsc2UoY19iaDIpOworCQkJ
fQorCQkJbWVtY3B5KGNfYmgtPmJfZGF0YSwgYmgtPmJfZGF0YSwgc2ItPnNfYmxvY2tzaXplKTsK
KwkJCW1hcmtfYnVmZmVyX2RpcnR5KGNfYmgpOworCQkJaWYoY19iaCkgYnJlbHNlKGNfYmgpOwor
CQl9CisJfQorCWlmKGJoKSBicmVsc2UoYmgpOworCWlmIChiaCAhPSBiaDIpCisJCWlmKGJoMikg
YnJlbHNlKGJoMik7CisJcmV0dXJuIG5leHQ7Cit9CisKK3ZvaWQgZmF0eF9jYWNoZV9pbml0KHZv
aWQpCit7CisJc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7CisJaW50IGNvdW50OworCisJc3Bp
bl9sb2NrKCZmYXR4X2NhY2hlX2xvY2spOworCWlmIChpbml0aWFsaXplZCkgeworCQlzcGluX3Vu
bG9jaygmZmF0eF9jYWNoZV9sb2NrKTsKKwkJcmV0dXJuOworCX0KKwlmYXR4X2NhY2hlID0gJmNh
Y2hlWzBdOworCWZvciAoY291bnQgPSAwOyBjb3VudCA8IEZBVFhfQ0FDSEU7IGNvdW50KyspIHsK
KwkJY2FjaGVbY291bnRdLmRldmljZSA9IDA7CisJCWNhY2hlW2NvdW50XS5uZXh0ID0gY291bnQg
PT0gRkFUWF9DQUNIRS0xID8gTlVMTCA6CisJCSAgICAmY2FjaGVbY291bnQrMV07CisJfQorCWlu
aXRpYWxpemVkID0gMTsKKwlzcGluX3VubG9jaygmZmF0eF9jYWNoZV9sb2NrKTsKK30KKworCit2
b2lkIGZhdHhfY2FjaGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqaW5vZGUsaW50IGNsdXN0ZXIsaW50
ICpmX2NsdSxpbnQgKmRfY2x1KQoreworCXN0cnVjdCBmYXR4X2NhY2hlICp3YWxrOworCWludCBm
aXJzdCA9IEZBVFhfSShpbm9kZSktPmlfc3RhcnQ7CisKKwlpZiAoIWZpcnN0KQorCQlyZXR1cm47
CisJc3Bpbl9sb2NrKCZmYXR4X2NhY2hlX2xvY2spOworCWZvciAod2FsayA9IGZhdHhfY2FjaGU7
IHdhbGs7IHdhbGsgPSB3YWxrLT5uZXh0KQorCQlpZiAoaW5vZGUtPmlfcmRldiA9PSB3YWxrLT5k
ZXZpY2UKKwkJICAgICYmIHdhbGstPnN0YXJ0X2NsdXN0ZXIgPT0gZmlyc3QKKwkJICAgICYmIHdh
bGstPmZpbGVfY2x1c3RlciA8PSBjbHVzdGVyCisJCSAgICAmJiB3YWxrLT5maWxlX2NsdXN0ZXIg
PiAqZl9jbHUpIHsKKwkJCSpkX2NsdSA9IHdhbGstPmRpc2tfY2x1c3RlcjsKKyNpZmRlZiBERUJV
RworcHJpbnRrKCJjYWNoZSBoaXQ6ICVkICglZClcbiIsd2Fsay0+ZmlsZV9jbHVzdGVyLCpkX2Ns
dSk7CisjZW5kaWYKKwkJCWlmICgoKmZfY2x1ID0gd2Fsay0+ZmlsZV9jbHVzdGVyKSA9PSBjbHVz
dGVyKSB7IAorCQkJCXNwaW5fdW5sb2NrKCZmYXR4X2NhY2hlX2xvY2spOworCQkJCXJldHVybjsK
KwkJCX0KKwkJfQorCXNwaW5fdW5sb2NrKCZmYXR4X2NhY2hlX2xvY2spOworI2lmZGVmIERFQlVH
CitwcmludGsoImNhY2hlIG1pc3NcbiIpOworI2VuZGlmCit9CisKKworI2lmZGVmIERFQlVHCitz
dGF0aWMgdm9pZCBsaXN0X2NhY2hlKHZvaWQpCit7CisJc3RydWN0IGZhdHhfY2FjaGUgKndhbGs7
CisKKwlmb3IgKHdhbGsgPSBmYXR4X2NhY2hlOyB3YWxrOyB3YWxrID0gd2Fsay0+bmV4dCkgewor
CQlpZiAod2Fsay0+ZGV2aWNlKQorCQkJcHJpbnRrKCI8JXMsJWQ+KCVkLCVkKSAiLCBrZGV2bmFt
ZSh3YWxrLT5kZXZpY2UpLAorCQkJICAgICAgIHdhbGstPnN0YXJ0X2NsdXN0ZXIsIHdhbGstPmZp
bGVfY2x1c3RlciwKKwkJCSAgICAgICB3YWxrLT5kaXNrX2NsdXN0ZXIpOworCQllbHNlIHByaW50
aygiLS0gIik7CisJfQorCXByaW50aygiXG4iKTsKK30KKyNlbmRpZgorCisKK3ZvaWQgZmF0eF9j
YWNoZV9hZGQoc3RydWN0IGlub2RlICppbm9kZSxpbnQgZl9jbHUsaW50IGRfY2x1KQoreworCXN0
cnVjdCBmYXR4X2NhY2hlICp3YWxrLCpsYXN0OworCWludCBmaXJzdCA9IEZBVFhfSShpbm9kZSkt
Pmlfc3RhcnQ7CisKKwlsYXN0ID0gTlVMTDsKKwlzcGluX2xvY2soJmZhdHhfY2FjaGVfbG9jayk7
CisJZm9yICh3YWxrID0gZmF0eF9jYWNoZTsgd2Fsay0+bmV4dDsgd2FsayA9IChsYXN0ID0gd2Fs
ayktPm5leHQpCisJCWlmICh3YWxrLT5kZXZpY2UgPT0gaW5vZGUtPmlfcmRldgorCQkgICAgJiYg
d2Fsay0+c3RhcnRfY2x1c3RlciA9PSBmaXJzdAorCQkgICAgJiYgd2Fsay0+ZmlsZV9jbHVzdGVy
ID09IGZfY2x1KSB7CisJCQlpZiAod2Fsay0+ZGlza19jbHVzdGVyICE9IGRfY2x1KSB7CisJCQkJ
cHJpbnRrKCJGQVQgY2FjaGUgY29ycnVwdGlvbiBpbm9kZT0lbGRcbiIsCisJCQkJCWlub2RlLT5p
X2lubyk7CisJCQkJc3Bpbl91bmxvY2soJmZhdHhfY2FjaGVfbG9jayk7CisJCQkJZmF0eF9jYWNo
ZV9pbnZhbF9pbm9kZShpbm9kZSk7CisJCQkJcmV0dXJuOworCQkJfQorCQkJLyogdXBkYXRlIExS
VSAqLworCQkJaWYgKGxhc3QgPT0gTlVMTCkgeworCQkJCXNwaW5fdW5sb2NrKCZmYXR4X2NhY2hl
X2xvY2spOworCQkJCXJldHVybjsKKwkJCX0KKwkJCWxhc3QtPm5leHQgPSB3YWxrLT5uZXh0Owor
CQkJd2Fsay0+bmV4dCA9IGZhdHhfY2FjaGU7CisJCQlmYXR4X2NhY2hlID0gd2FsazsKKyNpZmRl
ZiBERUJVRworbGlzdF9jYWNoZSgpOworI2VuZGlmCisJCQlzcGluX3VubG9jaygmZmF0eF9jYWNo
ZV9sb2NrKTsKKwkJCXJldHVybjsKKwkJfQorCXdhbGstPmRldmljZSA9IGlub2RlLT5pX3JkZXY7
CisJd2Fsay0+c3RhcnRfY2x1c3RlciA9IGZpcnN0OworCXdhbGstPmZpbGVfY2x1c3RlciA9IGZf
Y2x1OworCXdhbGstPmRpc2tfY2x1c3RlciA9IGRfY2x1OworCWxhc3QtPm5leHQgPSBOVUxMOwor
CXdhbGstPm5leHQgPSBmYXR4X2NhY2hlOworCWZhdHhfY2FjaGUgPSB3YWxrOworCXNwaW5fdW5s
b2NrKCZmYXR4X2NhY2hlX2xvY2spOworI2lmZGVmIERFQlVHCitsaXN0X2NhY2hlKCk7CisjZW5k
aWYKK30KKworCisvKiBDYWNoZSBpbnZhbGlkYXRpb24gb2NjdXJzIHJhcmVseSwgdGh1cyB0aGUg
TFJVIGNoYWluIGlzIG5vdCB1cGRhdGVkLiBJdAorICAgZml4ZXMgaXRzZWxmIGFmdGVyIGEgd2hp
bGUuICovCisKK3ZvaWQgZmF0eF9jYWNoZV9pbnZhbF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2Rl
KQoreworCXN0cnVjdCBmYXR4X2NhY2hlICp3YWxrOworCWludCBmaXJzdCA9IEZBVFhfSShpbm9k
ZSktPmlfc3RhcnQ7CisKKwlzcGluX2xvY2soJmZhdHhfY2FjaGVfbG9jayk7CisJZm9yICh3YWxr
ID0gZmF0eF9jYWNoZTsgd2Fsazsgd2FsayA9IHdhbGstPm5leHQpCisJCWlmICh3YWxrLT5kZXZp
Y2UgPT0gaW5vZGUtPmlfcmRldgorCQkgICAgJiYgd2Fsay0+c3RhcnRfY2x1c3RlciA9PSBmaXJz
dCkKKwkJCXdhbGstPmRldmljZSA9IDA7CisJc3Bpbl91bmxvY2soJmZhdHhfY2FjaGVfbG9jayk7
Cit9CisKKwordm9pZCBmYXR4X2NhY2hlX2ludmFsX2RldihkZXZfdCBkZXZpY2UpCit7CisJc3Ry
dWN0IGZhdHhfY2FjaGUgKndhbGs7CisKKwlzcGluX2xvY2soJmZhdHhfY2FjaGVfbG9jayk7CisJ
Zm9yICh3YWxrID0gZmF0eF9jYWNoZTsgd2Fsazsgd2FsayA9IHdhbGstPm5leHQpCisJCWlmICh3
YWxrLT5kZXZpY2UgPT0gZGV2aWNlKQorCQkJd2Fsay0+ZGV2aWNlID0gMDsKKwlzcGluX3VubG9j
aygmZmF0eF9jYWNoZV9sb2NrKTsKK30KKworCitpbnQgZmF0eF9nZXRfY2x1c3RlcihzdHJ1Y3Qg
aW5vZGUgKmlub2RlLGludCBjbHVzdGVyKQoreworCWludCBucixjb3VudDsKKworCWlmICghKG5y
ID0gRkFUWF9JKGlub2RlKS0+aV9zdGFydCkpIHJldHVybiAwOworCWlmICghY2x1c3RlcikgcmV0
dXJuIG5yOworCWNvdW50ID0gMDsKKwlmb3IgKGZhdHhfY2FjaGVfbG9va3VwKGlub2RlLGNsdXN0
ZXIsJmNvdW50LCZucik7IGNvdW50IDwgY2x1c3RlcjsKKwkgICAgY291bnQrKykgeworCQlpZiAo
KG5yID0gZmF0eF9hY2Nlc3MoaW5vZGUtPmlfc2IsbnIsLTEpKSA9PSAtMSkgcmV0dXJuIDA7CisJ
CWlmICghbnIpIHJldHVybiAwOworCX0KKwlmYXR4X2NhY2hlX2FkZChpbm9kZSxjbHVzdGVyLG5y
KTsKKwlyZXR1cm4gbnI7Cit9CisKK3Vuc2lnbmVkIGxvbmcgZmF0eF9ibWFwKHN0cnVjdCBpbm9k
ZSAqaW5vZGUsdW5zaWduZWQgbG9uZyBzZWN0b3IpCit7CisJc3RydWN0IHN1cGVyX2Jsb2NrICpz
YiA9IGlub2RlLT5pX3NiOworCXN0cnVjdCBmYXR4X3NiX2luZm8gKnNiaSA9IEZBVFhfU0Ioc2Ip
OworCXVuc2lnbmVkIGxvbmcgY2x1c3Rlciwgb2Zmc2V0LCBsYXN0X2Jsb2NrOworCisJaWYgKChp
bm9kZS0+aV9pbm8gPT0gRkFUWF9ST09UX0lOTyB8fCAoU19JU0RJUihpbm9kZS0+aV9tb2RlKSAm
JgorCSAgICAgIUZBVFhfSShpbm9kZSktPmlfc3RhcnQpKSkgeworCQlpZiAoc2VjdG9yID49IHNi
aS0+ZGlyX2VudHJpZXMgPj4gc2JpLT5kaXJfcGVyX2Jsb2NrX2JpdHMpCisJCQlyZXR1cm4gMDsK
KwkJcmV0dXJuIHNlY3RvciArIHNiaS0+ZGlyX3N0YXJ0OworCX0KKwkKKwlsYXN0X2Jsb2NrID0g
KEZBVFhfSShpbm9kZSktPm1tdV9wcml2YXRlICsgKHNiLT5zX2Jsb2Nrc2l6ZSAtIDEpKQorCQk+
PiBzYi0+c19ibG9ja3NpemVfYml0czsKKwlpZiAoc2VjdG9yID49IGxhc3RfYmxvY2spCisJCXJl
dHVybiAwOworCisJY2x1c3RlciA9IHNlY3RvciAvIHNiaS0+Y2x1c3Rlcl9zaXplOworCW9mZnNl
dCAgPSBzZWN0b3IgJSBzYmktPmNsdXN0ZXJfc2l6ZTsKKwlpZiAoIShjbHVzdGVyID0gZmF0eF9n
ZXRfY2x1c3Rlcihpbm9kZSwgY2x1c3RlcikpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiAoY2x1
c3RlciAtIDIpICogc2JpLT5jbHVzdGVyX3NpemUgKyBzYmktPmRhdGFfc3RhcnQgKyBvZmZzZXQ7
Cit9CisKKworLyogRnJlZSBhbGwgY2x1c3RlcnMgYWZ0ZXIgdGhlIHNraXAndGggY2x1c3Rlci4g
RG9lc24ndCB1c2UgdGhlIGNhY2hlLAorICAgYmVjYXVzZSB0aGlzIHdheSB3ZSBnZXQgYW4gYWRk
aXRpb25hbCBzYW5pdHkgY2hlY2suICovCisKK2ludCBmYXR4X2ZyZWUoc3RydWN0IGlub2RlICpp
bm9kZSxpbnQgc2tpcCkKK3sKKwlpbnQgbnIsbGFzdDsKKworCWlmICghKG5yID0gRkFUWF9JKGlu
b2RlKS0+aV9zdGFydCkpIHJldHVybiAwOworCWxhc3QgPSAwOworCXdoaWxlIChza2lwLS0pIHsK
KwkJbGFzdCA9IG5yOworCQlpZiAoKG5yID0gZmF0eF9hY2Nlc3MoaW5vZGUtPmlfc2IsbnIsLTEp
KSA9PSAtMSkgcmV0dXJuIDA7CisJCWlmICghbnIpIHsKKwkJCXByaW50aygiZmF0eF9mcmVlOiBz
a2lwcGVkIEVPRlxuIik7CisJCQlyZXR1cm4gLUVJTzsKKwkJfQorCX0KKwlpZiAobGFzdCkgewor
CQlmYXR4X2FjY2Vzcyhpbm9kZS0+aV9zYixsYXN0LEVPRl9GQVQoaW5vZGUtPmlfc2IpKTsKKwkJ
ZmF0eF9jYWNoZV9pbnZhbF9pbm9kZShpbm9kZSk7CisJfSBlbHNlIHsKKwkJZmF0eF9jYWNoZV9p
bnZhbF9pbm9kZShpbm9kZSk7CisJCUZBVFhfSShpbm9kZSktPmlfc3RhcnQgPSAwOworCQlGQVRY
X0koaW5vZGUpLT5pX2xvZ3N0YXJ0ID0gMDsKKwkJbWFya19pbm9kZV9kaXJ0eShpbm9kZSk7CisJ
fQorCWxvY2tfZmF0eChpbm9kZS0+aV9zYik7CisJd2hpbGUgKG5yICE9IC0xKSB7CisJCWlmICgh
KG5yID0gZmF0eF9hY2Nlc3MoaW5vZGUtPmlfc2IsbnIsMCkpKSB7CisJCQlmYXR4X2ZzX3Bhbmlj
KGlub2RlLT5pX3NiLCJmYXR4X2ZyZWU6IGRlbGV0aW5nIGJleW9uZCBFT0YiKTsKKwkJCWJyZWFr
OworCQl9CisJCWlmIChGQVRYX1NCKGlub2RlLT5pX3NiKS0+ZnJlZV9jbHVzdGVycyAhPSAtMSkg
eworCQkJRkFUWF9TQihpbm9kZS0+aV9zYiktPmZyZWVfY2x1c3RlcnMrKzsKKwkJfQorCQlpbm9k
ZS0+aV9ibG9ja3MgLT0gKDEgPDwgRkFUWF9TQihpbm9kZS0+aV9zYiktPmNsdXN0ZXJfYml0cykg
LyA1MTI7CisJfQorCXVubG9ja19mYXR4KGlub2RlLT5pX3NiKTsKKwlyZXR1cm4gMDsKK30KZGlm
ZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvZnMvZmF0eC9kaXIuYyBsaW51eC0yLjYuNS9mcy9mYXR4
L2Rpci5jCi0tLSBsaW51eC0yLjYuNS5vcmlnL2ZzL2ZhdHgvZGlyLmMJMTk3MC0wMS0wMSAwMTow
MDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2ZzL2ZhdHgvZGlyLmMJMjAwNC0w
NS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSw0MzYgQEAKKy8qCisgKiAg
bGludXgvZnMvZmF0eC9kaXIuYworICoKKyAqICBXcml0dGVuIDIwMDMgYnkgRWRnYXIgSHVjZWsg
YW5kIExlaG5lciBGcmFuegorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvZnMuaD4KKyNpbmNs
dWRlIDxsaW51eC9mYXR4X2ZzLmg+CisjaW5jbHVkZSA8bGludXgvbmxzLmg+CisjaW5jbHVkZSA8
bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51
eC9zdGF0Lmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvaW9j
dGwuaD4KKyNpbmNsdWRlIDxsaW51eC9kaXJlbnQuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgor
I2luY2x1ZGUgPGxpbnV4L2N0eXBlLmg+CisKKyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgorCisj
ZGVmaW5lIERFQlVHCisjZGVmaW5lIFBSSU5USyhmb3JtYXQsIGFyZ3MuLi4pIGRvIHsgaWYgKGZh
dHhfZGVidWcpIHByaW50ayggZm9ybWF0LCAjI2FyZ3MgKTsgfSB3aGlsZSgwKQorCitzdGF0aWMg
aW5saW5lIHZvaWQgZmF0eF9wcmludG5hbWUoY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbmd0aCkK
K3sKKwlpbnQgaTsKKwlmb3IoaT0wO2k8bGVuZ3RoO2krKykgeworCQlQUklOVEsoIiVjIixuYW1l
W2ldKTsKKwl9Cit9CisKKy8qCisgKiBOb3cgYW4gdWdseSBwYXJ0OiB0aGlzIHNldCBvZiBkaXJl
Y3Rvcnkgc2NhbiByb3V0aW5lcyB3b3JrcyBvbiBjbHVzdGVycworICogcmF0aGVyIHRoYW4gb24g
aW5vZGVzIGFuZCBzZWN0b3JzLiBUaGV5IGFyZSBuZWNlc3NhcnkgdG8gbG9jYXRlIHRoZSAnLi4n
CisgKiBkaXJlY3RvcnkgImlub2RlIi4gcmF3X3NjYW5fc2VjdG9yIG9wZXJhdGVzIGluIGZvdXIg
bW9kZXM6CisgKgorICogbmFtZSAgICAgbnVtYmVyICAgaW5vICAgICAgYWN0aW9uCisgKiAtLS0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisgKiBub24tTlVMTCAtICAgICAgICBYICAgICAgICBGaW5kIGFuIGVu
dHJ5IHdpdGggdGhhdCBuYW1lCisgKiBOVUxMICAgICBub24tTlVMTCBub24tTlVMTCBGaW5kIGFu
IGVudHJ5IHdob3NlIGRhdGEgc3RhcnRzIGF0ICpudW1iZXIKKyAqIE5VTEwgICAgIG5vbi1OVUxM
IE5VTEwgICAgIENvdW50IHN1YmRpcmVjdG9yaWVzIGluICpudW1iZXIuICgqKQorICogTlVMTCAg
ICAgTlVMTCAgICAgbm9uLU5VTEwgRmluZCBhbiBlbXB0eSBlbnRyeQorICoKKyAqICgqKSBUaGUg
cmV0dXJuIGNvZGUgc2hvdWxkIGJlIGlnbm9yZWQuIEl0IERPRVMgTk9UIGluZGljYXRlIHN1Y2Nl
c3Mgb3IKKyAqICAgICBmYWlsdXJlLiAqbnVtYmVyIGhhcyB0byBiZSBpbml0aWFsaXplZCB0byB6
ZXJvLgorICoKKyAqIC0gPSBub3QgdXNlZCwgWCA9IGEgdmFsdWUgaXMgcmV0dXJuZWQgdW5sZXNz
IE5VTEwKKyAqCisgKiBJZiByZXNfYmggaXMgbm9uLU5VTEwsIHRoZSBidWZmZXIgaXMgbm90IGRl
YWxsb2NhdGVkIGJ1dCByZXR1cm5lZCB0byB0aGUKKyAqIGNhbGxlciBvbiBzdWNjZXNzLiByZXNf
ZGUgaXMgc2V0IGFjY29yZGluZ2x5LgorICoKKyAqIElmIGNvbnQgaXMgbm9uLXplcm8sIHJhd19m
b3VuZCBjb250aW51ZXMgd2l0aCB0aGUgZW50cnkgYWZ0ZXIgdGhlIG9uZQorICogcmVzX2JoL3Jl
c19kZSBwb2ludCB0by4KKyAqLworc3RhdGljIGludCBmYXR4X3Jhd19zY2FuX3NlY3RvcihzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiLAlpbnQgc2VjdG9yLAorCQljb25zdCBjaGFyICpuYW1lLCBpbnQg
bmFtZV9sZW5ndGgsIGludCAqbnVtYmVyLAorCQlsb2ZmX3QgKmlfcG9zLCBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKipyZXNfYmgsCisJCXN0cnVjdCBmYXR4X2Rpcl9lbnRyeSAqKnJlc19kZSApCit7CisJ
c3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKKwlzdHJ1Y3QgZmF0eF9kaXJfZW50cnkgKmRhdGE7CisJ
aW50IGVudHJ5LHN0YXJ0LGRvbmUgPSAwOworCisJUFJJTlRLKCJGQVRYOiBmYXR4X3Jhd19zY2Fu
X3NlY3Rvcjogc2VjdG9yPSUwOGxYXG4iLChsb25nKXNlY3Rvcik7CisJCisJaWYgKCEoYmggPSBz
Yl9icmVhZChzYixzZWN0b3IpKSkgeworCQlwcmludGsoIkZBVFg6IGZhdHhfcmF3X3NjYW5fc2Vj
dG9yOiBzYl9icmVhZCBmYWlsZWRcbiIpOworCQlyZXR1cm4gLUVJTzsKKwl9CisJZGF0YSA9IChz
dHJ1Y3QgZmF0eF9kaXJfZW50cnkgKikgYmgtPmJfZGF0YTsKKwlmb3IgKGVudHJ5ID0gMDsgZW50
cnkgPCBGQVRYX1NCKHNiKS0+ZGlyX3Blcl9ibG9jazsgZW50cnkrKykgeworCQlpZiAoRkFUWF9F
TkRfT0ZfRElSKCZkYXRhW2VudHJ5XSkpIHsKKwkJCS8vbm8gbW9yZSBlbnRyaWVzIHRvIGxvb2sg
dGhyb3VnaC4uLgorCQkJaWYoYmgpIGJyZWxzZShiaCk7CisJCQlQUklOVEsoIkZBVFg6IGZhdHhf
cmF3X3NjYW5fc2VjdG9yOiBFTkQgT0YgRElSXG4iKTsKKwkJCXJldHVybiAtRU5PRU5UOworCQl9
IGVsc2UgaWYgKG5hbWUpIHsgLy9zZWFyY2ggZm9yIG5hbWUKKwkJCWRvbmUgPSAJKGRhdGFbZW50
cnldLm5hbWVfbGVuZ3RoID09IG5hbWVfbGVuZ3RoKSAmJgorCQkJCSFzdHJuY21wKGRhdGFbZW50
cnldLm5hbWUsbmFtZSxuYW1lX2xlbmd0aCk7CisJCX0gZWxzZSBpZiAoIWlfcG9zKSB7IC8qIGNv
dW50IHN1YmRpcmVjdG9yaWVzICovCisJCQlkb25lID0gMDsKKwkJCWlmICghRkFUWF9JU19GUkVF
KCZkYXRhW2VudHJ5XSkgJiYgKGRhdGFbZW50cnldLmF0dHIgJiBBVFRSX0RJUikpCisJCQkJKCpu
dW1iZXIpKys7CisJCX0gZWxzZSBpZiAobnVtYmVyKSB7IC8qIHNlYXJjaCBmb3Igc3RhcnQgY2x1
c3RlciAqLworCQkJZG9uZSA9ICFGQVRYX0lTX0ZSRUUoJmRhdGFbZW50cnldKSAmJiAKKwkJCQko
Q0ZfTEVfTChkYXRhW2VudHJ5XS5zdGFydCkgPT0gKm51bWJlcik7CisJCX0gZWxzZSB7IC8qIHNl
YXJjaCBmb3IgZnJlZSBlbnRyeSAqLworCQkJZG9uZSA9IEZBVFhfSVNfRlJFRSgmZGF0YVtlbnRy
eV0pOworCQl9CisJCWlmIChkb25lKSB7CisJCQlpZiAoaV9wb3MpCisJCQkJKmlfcG9zID0gc2Vj
dG9yICogRkFUWF9TQihzYiktPmRpcl9wZXJfYmxvY2sgKyBlbnRyeTsKKwkJCXN0YXJ0ID0gQ0Zf
TEVfTChkYXRhW2VudHJ5XS5zdGFydCk7CisJCQlpZiAoIXJlc19iaCkgeworCQkJCWlmKGJoKSBi
cmVsc2UoYmgpOworCQkJfSBlbHNlIHsKKwkJCQkqcmVzX2JoID0gYmg7CisJCQkJKnJlc19kZSA9
ICZkYXRhW2VudHJ5XTsKKwkJCX0KKwkJCVBSSU5USygiRkFUWDogZmF0eF9yYXdfc2Nhbl9zZWN0
b3I6IGZvdW5kOiBzdGFydD0lMDhsWFxuIiwobG9uZylzdGFydCk7CisJCQlyZXR1cm4gc3RhcnQ7
CisJCX0KKwl9CisJaWYoYmgpIGJyZWxzZShiaCk7CisJUFJJTlRLKCJGQVRYOiBmYXR4X3Jhd19z
Y2FuX3NlY3RvcjogZW50cnkgbm90IGluIHNlY3RvciAlMDhsWFxuIiwobG9uZylzZWN0b3IpOwor
CXJldHVybiAtRUFHQUlOOworfQorCisvKgorICogcmF3X3NjYW5fcm9vdCBwZXJmb3JtcyByYXdf
c2Nhbl9zZWN0b3Igb24gdGhlIHJvb3QgZGlyZWN0b3J5IHVudGlsIHRoZQorICogcmVxdWVzdGVk
IGVudHJ5IGlzIGZvdW5kIG9yIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeSBpcyByZWFjaGVkLgor
ICovCitzdGF0aWMgaW50IGZhdHhfcmF3X3NjYW5fcm9vdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi
LCBjb25zdCBjaGFyICpuYW1lLAorCQlpbnQgbmFtZV9sZW5ndGgsIGludCAqbnVtYmVyLCBsb2Zm
X3QgKmlfcG9zLAorCQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKipyZXNfYmgsIHN0cnVjdCBmYXR4X2Rp
cl9lbnRyeSAqKnJlc19kZSApCit7CisJaW50IGNvdW50LGNsdXN0ZXI7CisKKwlmb3IgKGNvdW50
ID0gMDsgY291bnQgPCBGQVRYX1NCKHNiKS0+Y2x1c3Rlcl9zaXplOyBjb3VudCsrKSB7CisJCWlm
ICgoY2x1c3RlciA9IGZhdHhfcmF3X3NjYW5fc2VjdG9yKHNiLEZBVFhfU0Ioc2IpLT5kaXJfc3Rh
cnQgKyBjb3VudCwKKwkJCQkgICAgICAgbmFtZSxuYW1lX2xlbmd0aCxudW1iZXIsaV9wb3MscmVz
X2JoLHJlc19kZSkpID49IDApCisJCQlyZXR1cm4gY2x1c3RlcjsKKwkJaWYgKGNsdXN0ZXIgPT0g
LUVOT0VOVCkgeworCQkJLy9lbmQgb2YgZGlyLi4uYWN0IGxpa2UgYWxsIHNlY3RvcnMgc2Nhbm5l
ZCBhbmQgIWZvdW5kCisJCQlQUklOVEsoIkZBVFg6IGZhdHhfcmF3X3NjYW5fcm9vdCBjbHVzdGVy
ICVkXG4iLGNsdXN0ZXIpOworCQkJcmV0dXJuIGNsdXN0ZXI7CisJCX0KKwl9CisJCisJUFJJTlRL
KCJGQVRYOiBmYXR4X3Jhd19zY2FuX3Jvb3QgbGVhdmVcbiIpOworCisJcmV0dXJuIC1FTk9FTlQ7
Cit9CisKKy8qCisgKiByYXdfc2Nhbl9ub25yb290IHBlcmZvcm1zIHJhd19zY2FuX3NlY3RvciBv
biBhIG5vbi1yb290IGRpcmVjdG9yeSB1bnRpbCB0aGUKKyAqIHJlcXVlc3RlZCBlbnRyeSBpcyBm
b3VuZCBvciB0aGUgZW5kIG9mIHRoZSBkaXJlY3RvcnkgaXMgcmVhY2hlZC4KKyAqLworc3RhdGlj
IGludCBmYXR4X3Jhd19zY2FuX25vbnJvb3Qoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHN0
YXJ0LAorCQljb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZV9sZW5ndGgsIGludCAqbnVtYmVyLAor
CQlsb2ZmX3QgKmlfcG9zLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipyZXNfYmgsCisJCXN0cnVjdCBm
YXR4X2Rpcl9lbnRyeSAqKnJlc19kZSApCit7CisJaW50IGNvdW50LGNsdXN0ZXI7CisJCisJUFJJ
TlRLKCJGQVRYOiBmYXR4X3Jhd19zY2FuX25vbnJvb3Q6IGVudGVyZWQgKHN0YXJ0PSUwOGxYKVxu
IiwobG9uZylzdGFydCk7CisKKwlkbyB7CisJCWZvciAoY291bnQgPSAwOyBjb3VudCA8IEZBVFhf
U0Ioc2IpLT5jbHVzdGVyX3NpemU7IGNvdW50KyspIHsKKwkJCWlmICgoY2x1c3RlciA9IGZhdHhf
cmF3X3NjYW5fc2VjdG9yKHNiLEZBVFhfU0Ioc2IpLT5kYXRhX3N0YXJ0ICsgCisJCQkJCShGQVRY
X1NCKHNiKS0+Y2x1c3Rlcl9zaXplICogKHN0YXJ0IC0gMikgKSArIGNvdW50LAorCQkJICAgIG5h
bWUsbmFtZV9sZW5ndGgsbnVtYmVyLGlfcG9zLHJlc19iaCxyZXNfZGUpKSA+PSAwKQorCQkJCXJl
dHVybiBjbHVzdGVyOworCQkJaWYgKGNsdXN0ZXIgPT0gLUVOT0VOVCkgeworCQkJCS8vRU9EOiBh
Y3QgbGlrZSBhbGwgc2VjdG9ycyBzY2FubmVkIGFuZCAhZm91bmQKKwkJCQlyZXR1cm4gY2x1c3Rl
cjsKKwkJCX0KKwkJfQorCQlpZiAoIShzdGFydCA9IGZhdHhfYWNjZXNzKHNiLHN0YXJ0LC0xKSkp
IHsKKwkJCXByaW50aygiRkFUWDogZmF0eF9yYXdfc2Nhbl9ub25yb290OiBzdGFydCBzZWN0b3Ig
JWxYIG5vdCBpbiB1c2VcbiIsKGxvbmcpc3RhcnQpOworCQkJZmF0eF9mc19wYW5pYyhzYiwiRkFU
WCBlcnJvciIpOworCQkJYnJlYWs7CisJCX0KKwl9CisJd2hpbGUgKHN0YXJ0ICE9IC0xKTsKKwly
ZXR1cm4gLUVOT0VOVDsKK30KKworLyoKKyAqIFNjYW5zIGEgZGlyZWN0b3J5IGZvciBhIGdpdmVu
IGZpbGUgKG5hbWUgcG9pbnRzIHRvIGl0cyBmb3JtYXR0ZWQgbmFtZSkgb3IKKyAqIGZvciBhbiBl
bXB0eSBkaXJlY3Rvcnkgc2xvdCAobmFtZSBpcyBOVUxMKS4gUmV0dXJucyBhbiBlcnJvciBjb2Rl
IG9yIHplcm8uCisgKi8KK2ludCBmYXR4X3NjYW4oc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IGNo
YXIgKm5hbWUsIGludCBuYW1lX2xlbmd0aCwKKwkJc3RydWN0IGJ1ZmZlcl9oZWFkICoqcmVzX2Jo
LCBzdHJ1Y3QgZmF0eF9kaXJfZW50cnkgKipyZXNfZGUsCisJCWxvZmZfdCAqaV9wb3MgKQorewor
CWludCByZXM7CisKKwlpZiAoRkFUWF9JKGRpciktPmlfc3RhcnQpCisJCXJlcyA9IGZhdHhfcmF3
X3NjYW5fbm9ucm9vdChkaXItPmlfc2IsRkFUWF9JKGRpciktPmlfc3RhcnQsbmFtZSxuYW1lX2xl
bmd0aCxOVUxMLGlfcG9zLHJlc19iaCxyZXNfZGUpOworCWVsc2UKKwkJcmVzID0gZmF0eF9yYXdf
c2Nhbl9yb290KGRpci0+aV9zYixuYW1lLG5hbWVfbGVuZ3RoLE5VTEwsaV9wb3MscmVzX2JoLHJl
c19kZSk7CisKKwlyZXR1cm4gcmVzPDAgPyByZXMgOiAwOworfQorCisvKgorICogU2VlIGlmIGRp
cmVjdG9yeSBpcyBlbXB0eQorICovCitpbnQgZmF0eF9kaXJfZW1wdHkoc3RydWN0IGlub2RlICpk
aXIpCit7CisJbG9mZl90IHBvczsKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoOworCXN0cnVjdCBm
YXR4X2Rpcl9lbnRyeSAqZGU7CisJbG9mZl90IGlfcG9zOworCWludCByZXN1bHQgPSAwOworCisJ
cG9zID0gMDsKKwliaCA9IE5VTEw7CisJd2hpbGUgKGZhdHhfZ2V0X2VudHJ5KGRpciwmcG9zLCZi
aCwmZGUsJmlfcG9zKSA+IC0xKSB7CisJCWlmIChGQVRYX0VORF9PRl9ESVIoZGUpKSB7CisJCQli
cmVhazsKKwkJfQorCQlpZiAoIUZBVFhfSVNfRlJFRShkZSkpIHsKKwkJCXJlc3VsdCA9IC1FTk9U
RU1QVFk7CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoYmgpCisJCWJyZWxzZShiaCk7CisKKwly
ZXR1cm4gcmVzdWx0OworfQorCisvKgorICogZmF0eF9zdWJkaXJzIGNvdW50cyB0aGUgbnVtYmVy
IG9mIHN1Yi1kaXJlY3RvcmllcyBvZiBkaXIuIEl0IGNhbiBiZSBydW4KKyAqIG9uIGRpcmVjdG9y
aWVzIGJlaW5nIGNyZWF0ZWQuCisgKi8KK2ludCBmYXR4X3N1YmRpcnMoc3RydWN0IGlub2RlICpk
aXIpCit7CisJaW50IGNvdW50OworCisJY291bnQgPSAwOworCWlmIChkaXItPmlfaW5vID09IEZB
VFhfUk9PVF9JTk8pIHsKKwkJZmF0eF9yYXdfc2Nhbl9yb290KGRpci0+aV9zYixOVUxMLDAsJmNv
dW50LE5VTEwsTlVMTCxOVUxMKTsKKwl9IGVsc2UgeworCQlpZiAoKGRpci0+aV9pbm8gIT0gRkFU
WF9ST09UX0lOTykgJiYgIUZBVFhfSShkaXIpLT5pX3N0YXJ0KSB7CisJCQlyZXR1cm4gMDsgLyog
aW4gbWtkaXIgKi8KKwkJfSBlbHNlIHsKKwkJCWZhdHhfcmF3X3NjYW5fbm9ucm9vdChkaXItPmlf
c2IsRkFUWF9JKGRpciktPmlfc3RhcnQsCisJCQkgICAgICAgICAgICAgICAgICAgICAgTlVMTCww
LCZjb3VudCxOVUxMLE5VTEwsTlVMTCk7CisJCX0KKwl9CisJcmV0dXJuIGNvdW50OworfQorCitp
bnQgZmF0eF9kb19hZGRfZW50cnkoCisJCXN0cnVjdCBpbm9kZSAqZGlyLAorCQlzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKipiaCwKKwkJc3RydWN0IGZhdHhfZGlyX2VudHJ5ICoqZGUsCisJCWxvZmZfdCAq
aV9wb3MpCit7CisJbG9mZl90IG9mZnNldCwgY3VycjsKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgKm5l
d19iaDsKKworCW9mZnNldCA9IGN1cnIgPSAwOworCSpiaCA9IE5VTEw7CisJd2hpbGUgKGZhdHhf
Z2V0X2VudHJ5KGRpciwmY3VycixiaCxkZSxpX3BvcykgPiAtMSkgeworCQlpZiAoRkFUWF9JU19G
UkVFKCpkZSkpIHsKKwkJCVBSSU5USygiRkFUWDogZmF0eF9kb19hZGRfZW50cnk6IGZvdW5kIGZy
ZWUgZW50cnlcbiIpOworCQkJcmV0dXJuIG9mZnNldDsKKwkJfQorCQlpZiAoRkFUWF9FTkRfT0Zf
RElSKCpkZSkpIHsKKwkJCXN0cnVjdCBidWZmZXJfaGVhZCAqZW9kX2JoID0gTlVMTDsKKwkJCXN0
cnVjdCBmYXR4X2Rpcl9lbnRyeSAqZW9kX2RlID0gTlVMTDsKKwkJCWxvZmZfdCBlb2RfaV9wb3M7
CisJCQkKKwkJCVBSSU5USygiRkFUWDogZmF0eF9kb19hZGRfZW50cnk6IGZvdW5kIEVPRCBhdCAl
bFhcbiIsKGxvbmcpKCpkZSkpOworCQkJLy9tYWtlIHN1cmUgdGhlIG5leHQgb25lIGlzbid0IGZp
cnN0IGluIG5ldyBjbHVzdGVyCisJCQlpZiAoZmF0eF9nZXRfZW50cnkoZGlyLCZjdXJyLCZlb2Rf
YmgsJmVvZF9kZSwmZW9kX2lfcG9zKSA+IC0xKSB7CisJCQkJLy9FT0QgaW4gc2FtZSBjbHVzdGVy
Li4uZmluZCBwcm9wZXIgZGUgYW5kIG1hcmsgbmV3IEVPRAorCQkJCWVvZF9kZS0+bmFtZV9sZW5n
dGggPSAweEZGOworCQkJCW1hcmtfYnVmZmVyX2RpcnR5KGVvZF9iaCk7CisJCQkJUFJJTlRLKCJG
QVRYOiBmYXR4X2RvX2FkZF9lbnRyeTogbWFya2VkIG5ldyBFT0QgYXQgJWxYXG4iLChsb25nKWVv
ZF9kZSk7CisJCQkJaWYoZW9kX2JoKSBicmVsc2UoZW9kX2JoKTsKKwkJCX0gZWxzZSB7CisJCQkJ
Ly93ZSB3aWxsIHRha2UgdGhlIGVhc3kgb3V0Li4uZG8gbm90aGluZy4uLgorCQkJCS8vYXNzdW1l
IGZhdCB0YWJsZSB1c2VkIHRvIGluZGljYXRlIEVPRAorCQkJCS8vaWYgdGhpcyBpcyB3cm9uZywg
bmVlZCB0byBmYXR4X2V4dGVuZF9kaXIKKwkJCQkvL21ha2luZyBmaXJzdCBlbnRyeSBpbiBuZXh0
IGNsdXN0ZXIgRU9ECisJCQkJcHJpbnRrKCJGQVRYOiBmYXR4X2RvX2FkZF9lbnRyeTogRU9EIG1h
cmtlZCBieSBGQVRcbiIpOworCQkJCXByaW50aygiRkFUWDogLi4uOm9mZnNldD0lMDhsWCwgY3Vy
cj0lMDhsWFxuIiwKKwkJCQkJCSh1bnNpZ25lZCBsb25nKW9mZnNldCwodW5zaWduZWQgbG9uZylj
dXJyKTsKKwkJCX0KKwkJCVBSSU5USygiRkFUWDogZmF0eF9kb19hZGRfZW50cnk6IHVzaW5nIGVu
dHJ5IGF0ICVsWFxuIiwobG9uZykoKmRlKSk7CisJCQlyZXR1cm4gb2Zmc2V0OworCQl9CisJCW9m
ZnNldCA9IGN1cnI7CisJfQorCVBSSU5USygiRkFUWDogZmF0eF9kb19hZGRfZW50cnk6IG5lZWQg
dG8gZXh0ZW5kIGRpclxuIik7CisJaWYgKGRpci0+aV9pbm8gPT0gRkFUWF9ST09UX0lOTykgewor
CQlwcmludGsoIkZBVFg6IGZhdHhfZG9fYWRkX2VudHJ5OiBidXQgaXQncyByb290IGRpci4uLmNh
bid0IGV4dGVuZFxuIik7CisJCXJldHVybiAtRU5PU1BDOworCX0KKwluZXdfYmggPSBmYXR4X2V4
dGVuZF9kaXIoZGlyKTsKKwlpZiAoIW5ld19iaCkgeworCQlQUklOVEsoIkZBVFg6IGZhdHhfZG9f
YWRkX2VudHJ5OiBmYXR4X2V4dGVuZF9kaXIgZmFpbGVkLi4ubm8gc3BhY2U/XG4iKTsKKwkJcmV0
dXJuIC1FTk9TUEM7CisJfQorCWlmKG5ld19iaCkgYnJlbHNlKG5ld19iaCk7CisJZmF0eF9nZXRf
ZW50cnkoZGlyLCZjdXJyLGJoLGRlLGlfcG9zKTsKKwkoKmRlKVsxXS5uYW1lX2xlbmd0aCA9IDB4
RkY7CisJUFJJTlRLKCJGQVRYOiBmYXR4X2RvX2FkZF9lbnRyeTogdXNpbmcgZW50cnkgYXQgJWxk
XG4iLChsb25nKW9mZnNldCk7CisJcmV0dXJuIG9mZnNldDsKK30KKworaW50IGZhdHhfbmV3X2Rp
cihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGlub2RlICpwYXJlbnQpCit7CisJc3RydWN0IGJ1
ZmZlcl9oZWFkICpiaDsKKwlzdHJ1Y3QgZmF0eF9kaXJfZW50cnkgKmRlOworCisJaWYgKChiaCA9
IGZhdHhfZXh0ZW5kX2RpcihkaXIpKSA9PSBOVUxMKSB7CisJCXByaW50aygiRkFUWDogZmF0eF9u
ZXdfZGlyOiBmYWlsZWQgdG8gZ2V0IG5ldyBjbHVzdGVyLi4ubm8gc3BhY2U/XG4iKTsKKwkJcmV0
dXJuIC1FTk9TUEM7CisJfQorCS8qIHplcm9lZCBvdXQsIHNvLi4uICovCisJZGUgPSAoc3RydWN0
IGZhdHhfZGlyX2VudHJ5KikmYmgtPmJfZGF0YVswXTsKKwlkZVswXS5hdHRyID0gZGVbMV0uYXR0
ciA9IEFUVFJfRElSOworCWRlWzBdLm5hbWVfbGVuZ3RoID0gMHhGRjsgLy9lbmQgb2YgZGlyIG1h
cmtlcgorICAgICAgICBkZVswXS5zdGFydCA9IENUX0xFX1coRkFUWF9JKGRpciktPmlfbG9nc3Rh
cnQpOworCWRlWzFdLnN0YXJ0ID0gQ1RfTEVfVyhGQVRYX0kocGFyZW50KS0+aV9sb2dzdGFydCk7
CQorCW1hcmtfYnVmZmVyX2RpcnR5KGJoKTsKKwlpZihiaCkgYnJlbHNlKGJoKTsKKwlkaXItPmlf
YXRpbWUgPSBkaXItPmlfY3RpbWUgPSBkaXItPmlfbXRpbWUgPSBDVVJSRU5UX1RJTUU7CisJbWFy
a19pbm9kZV9kaXJ0eShkaXIpOworCisJcmV0dXJuIDA7Cit9CisKKy8vIHN1cmUgdG8gaG9wZSB0
aGlzIGlzIGNvcnJlY3QuLi4KK2ludCBmYXR4X3JlYWRkaXIoc3RydWN0IGZpbGUgKmZpbHAsIHZv
aWQgKmRpcmVudCwgZmlsbGRpcl90IGZpbGxkaXIpCit7CisJc3RydWN0IGlub2RlICppbm9kZSA9
IGZpbHAtPmZfZGVudHJ5LT5kX2lub2RlOworCXN0cnVjdCBpbm9kZSAqdG1waTsKKwlzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlfc2I7CisJc3RydWN0IGZhdHhfZGlyX2VudHJ5ICpk
ZTsKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoOworCWxvZmZfdCBpX3BvczsKKwlpbnQgaW51bTsK
Kwlsb2ZmX3QgY3BvcyA9IDA7CS8vZmlsZSBwb3NpdGlvbiAoZGlyIHBvc2l0aW9uKQorCWludCBv
ZmZzZXQgPSAwOwkJLy9jcG9zIG9mZnNldCBmb3Igcm9vdCBkaXIgaGFuZGxpbmcKKwlpbnQgZW50
cnkgPSAwOwkJLy9uZXh0IGZpbGxkaXIgZW50cnkgbG9jYXRpb24KKworCVBSSU5USygiRkFUWDog
ZmF0eF9yZWFkZGlyIGVudGVyZWRcbiIpOworCQorCWNwb3MgPSBmaWxwLT5mX3BvczsKKwkKKwlp
ZiAoY3BvcyA9PSAwKSB7CisJCWlmIChmaWxsZGlyKGRpcmVudCwiLiIsMSxlbnRyeSsrLGlub2Rl
LT5pX2lubyxEVF9ESVIpPDApIHsKKwkJCXByaW50aygiXG5GQVRYOiBmYXR4X3JlYWRkaXIgZXhp
dGluZyBpbiByb290IGRlZmF1bHRzXG4iKTsKKwkJCXJldHVybiAwOworCQl9CisJCWNwb3MgKz0g
MSA8PCBGQVRYX0RJUl9CSVRTOworCX0KKwkKKwlpZiAoY3BvcyA9PSAxIDw8IEZBVFhfRElSX0JJ
VFMpIHsKKwkJaWYgKGZpbGxkaXIoZGlyZW50LCIuLiIsMixlbnRyeSsrLAorCQkgICAgICAgICAg
ICBmaWxwLT5mX2RlbnRyeS0+ZF9wYXJlbnQtPmRfaW5vZGUtPmlfaW5vLERUX0RJUik8MCkgewor
CQkJcHJpbnRrKCJcbkZBVFg6IGZhdHhfcmVhZGRpciBleGl0aW5nIGluIHJvb3QgZGVmYXVsdHNc
biIpOworCQkJZmlscC0+Zl9wb3MgPSAxIDw8IEZBVFhfRElSX0JJVFM7CisJCQlyZXR1cm4gMDsK
KwkJfQorCQljcG9zICs9IDEgPDwgRkFUWF9ESVJfQklUUzsKKwl9CisJCisJb2Zmc2V0ID0gMiA8
PCBGQVRYX0RJUl9CSVRTOworCWNwb3MgLT0gb2Zmc2V0OworCisgCWJoID0gTlVMTDsKKworCXdo
aWxlKGZhdHhfZ2V0X2VudHJ5KGlub2RlLCZjcG9zLCZiaCwmZGUsJmlfcG9zKSAhPSAtMSkgewor
CQlpZiAoRkFUWF9FTkRfT0ZfRElSKGRlKSkgeworCQkJUFJJTlRLKCJGQVRYOiBlbnRyeSAlbGQg
bWFya2VkIGFzIEVORCBPRiBESVJcbiIsKGxvbmcpKGNwb3MgPj4gRkFUWF9ESVJfQklUUykpOwor
CQkJY3BvcyAtPSAxIDw8IEZBVFhfRElSX0JJVFM7IC8vIG1ha2Ugc3VyZSBpdCBjb21lcyBiYWNr
IHRvIGhlcmUgaWYgcmUtZW50ZXJlZAorCQkJYnJlYWs7CQkvL2RvbmUuLi5lbmQgb2YgZGlyLgor
CQl9CisJCQorCQlpZiAoRkFUWF9JU19GUkVFKGRlKSkgeworCQkJUFJJTlRLKCJGQVRYOiBlbnRy
eSAlbGQgbWFya2VkIGFzIEZSRUVcbiIsKGxvbmcpKGNwb3MgPj4gRkFUWF9ESVJfQklUUykpOwor
CQkJY29udGludWU7CisJCX0KKworCQl0bXBpID0gZmF0eF9pZ2V0KHNiLCBpX3Bvcyk7CisJCWlm
ICh0bXBpKSB7CisJCQlpbnVtID0gdG1waS0+aV9pbm87CisJCQlpcHV0KHRtcGkpOworCQl9IGVs
c2UgeworCQkJaW51bSA9IGl1bmlxdWUoc2IsIEZBVFhfUk9PVF9JTk8pOworCQl9CisKKwkJaWYg
KGZpbGxkaXIoZGlyZW50LGRlLT5uYW1lLGRlLT5uYW1lX2xlbmd0aCxlbnRyeSsrLGludW0sCisJ
CSAgICAgICAgICAgIChkZS0+YXR0ciAmIEFUVFJfRElSKSA/IERUX0RJUiA6IERUX1JFRyApIDwg
MCApIHsKKwkJCWJyZWFrOworCQl9CisJCVBSSU5USygiXG5GQVRYOiBmYXR4X3JlYWRkaXI6IGRp
ciBlbnRyeSAlM2Q6ICIsKGludCllbnRyeSk7CisJCWZhdHhfcHJpbnRuYW1lKGRlLT5uYW1lLGRl
LT5uYW1lX2xlbmd0aCk7CisJCVBSSU5USygiXG4iKTsKKwl9CisKKwlmaWxwLT5mX3BvcyA9IGNw
b3MgKyBvZmZzZXQ7CQkKKwlpZiAoYmgpCisJCWJyZWxzZShiaCk7CisJCisJUFJJTlRLKCJcbkZB
VFg6IGZhdHhfcmVhZGRpciBsZWF2aW5nXG4iKTsKKwkKKwlyZXR1cm4gMDsKK30KKworc3RydWN0
IGZpbGVfb3BlcmF0aW9ucyBmYXR4X2Rpcl9vcGVyYXRpb25zID0geworCS5yZWFkCQk9IGdlbmVy
aWNfcmVhZF9kaXIsCisJLnJlYWRkaXIJPSBmYXR4X3JlYWRkaXIsCisJLmlvY3RsCQk9IE5VTEws
CisJLmZzeW5jCQk9IGZpbGVfZnN5bmMsCit9OworCisvKiBUaGlzIGFzc3VtZXMgdGhhdCBzaXpl
IG9mIGNsdXN0ZXIgaXMgYWJvdmUgdGhlIDMyKnNsb3RzICovCisKK2ludCBmYXR4X2FkZF9lbnRy
aWVzKHN0cnVjdCBpbm9kZSAqZGlyLGludCBzbG90cywgc3RydWN0IGJ1ZmZlcl9oZWFkICoqYmgs
CisJCSAgc3RydWN0IGZhdHhfZGlyX2VudHJ5ICoqZGUsIGxvZmZfdCAqaV9wb3MpCit7CisJbG9m
Zl90IG9mZnNldCwgY3VycjsKKwlpbnQgcm93OworCXN0cnVjdCBidWZmZXJfaGVhZCAqbmV3X2Jo
OworCisJb2Zmc2V0ID0gY3VyciA9IDA7CisJKmJoID0gTlVMTDsKKwlyb3cgPSAwOworCXdoaWxl
IChmYXR4X2dldF9lbnRyeShkaXIsJmN1cnIsYmgsZGUsaV9wb3MpID4gLTEpIHsKKwkJaWYgKElT
X0ZSRUUoKCpkZSktPm5hbWUpKSB7CisJCQlpZiAoKytyb3cgPT0gc2xvdHMpCisJCQkJcmV0dXJu
IG9mZnNldDsKKwkJfSBlbHNlIHsKKwkJCXJvdyA9IDA7CisJCQlvZmZzZXQgPSBjdXJyOworCQl9
CisJfQorCWlmIChkaXItPmlfaW5vID09IEZBVFhfUk9PVF9JTk8pIAorCQlyZXR1cm4gLUVOT1NQ
QzsKKwluZXdfYmggPSBmYXR4X2V4dGVuZF9kaXIoZGlyKTsKKwlpZiAoIW5ld19iaCkKKwkJcmV0
dXJuIC1FTk9TUEM7CisJaWYobmV3X2JoKSBicmVsc2UobmV3X2JoKTsKKwlkbyBmYXR4X2dldF9l
bnRyeShkaXIsJmN1cnIsYmgsZGUsaV9wb3MpOyB3aGlsZSAoKytyb3c8c2xvdHMpOworCXJldHVy
biBvZmZzZXQ7Cit9CmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL2ZzL2ZhdHgvZmF0eGZzX3N5
bXMuYyBsaW51eC0yLjYuNS9mcy9mYXR4L2ZhdHhmc19zeW1zLmMKLS0tIGxpbnV4LTIuNi41Lm9y
aWcvZnMvZmF0eC9mYXR4ZnNfc3ltcy5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICsw
MTAwCisrKyBsaW51eC0yLjYuNS9mcy9mYXR4L2ZhdHhmc19zeW1zLmMJMjAwNC0wNS0wMSAxNToy
MDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqICBsaW51eC9mcy9m
YXR4L2ZhdHhmc19zeW1zLmMKKyAqCisgKiAgRXhwb3J0ZWQga2VybmVsIHN5bWJvbHMgZm9yIHRo
ZSBGQVRYIGZpbGVzeXN0ZW0uCisgKgorICogIFdyaXR0ZW4gMjAwMyBieSBFZGdhciBIdWNlayBh
bmQgTGVobmVyIEZyYW56CisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNp
bmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGxpbnV4L2ZhdHhfZnMuaD4KKyNpbmNsdWRl
IDxsaW51eC9pbml0Lmg+CisKK3Vuc2lnbmVkIGludCBmYXR4X2RlYnVnID0gMDsKKworTU9EVUxF
X1BBUk0oZmF0eF9kZWJ1ZywiaSIpOworTU9EVUxFX1BBUk1fREVTQyhmYXR4X2RlYnVnLCJ0dXJu
IG9uIGZhdHggZGVidWdnaW5nIG91dHB1dCIpOworCitFWFBPUlRfU1lNQk9MKGZhdHhfbG9va3Vw
KTsKK0VYUE9SVF9TWU1CT0woZmF0eF9jcmVhdGUpOworRVhQT1JUX1NZTUJPTChmYXR4X3JtZGly
KTsKK0VYUE9SVF9TWU1CT0woZmF0eF9ta2Rpcik7CitFWFBPUlRfU1lNQk9MKGZhdHhfcmVuYW1l
KTsKK0VYUE9SVF9TWU1CT0woZmF0eF91bmxpbmspOworCitFWFBPUlRfU1lNQk9MKGZhdHhfbmV3
X2Rpcik7CitFWFBPUlRfU1lNQk9MKGZhdHhfZ2V0X2Jsb2NrKTsKK0VYUE9SVF9TWU1CT0woZmF0
eF9jbGVhcl9pbm9kZSk7CitFWFBPUlRfU1lNQk9MKGZhdHhfZGF0ZV91bml4MmRvcyk7CitFWFBP
UlRfU1lNQk9MKGZhdHhfZGVsZXRlX2lub2RlKTsKK0VYUE9SVF9TWU1CT0woZmF0eF9nZXRfZW50
cnkpOworRVhQT1JUX1NZTUJPTChmYXR4X25vdGlmeV9jaGFuZ2UpOworRVhQT1JUX1NZTUJPTChm
YXR4X3B1dF9zdXBlcik7CitFWFBPUlRfU1lNQk9MKGZhdHhfYXR0YWNoKTsKK0VYUE9SVF9TWU1C
T0woZmF0eF9kZXRhY2gpOworRVhQT1JUX1NZTUJPTChmYXR4X2J1aWxkX2lub2RlKTsKK0VYUE9S
VF9TWU1CT0woZmF0eF9maWxsX3N1cGVyKTsKK0VYUE9SVF9TWU1CT0woZmF0eF9yZWFkZGlyKTsK
K0VYUE9SVF9TWU1CT0woZmF0eF9zY2FuKTsKK0VYUE9SVF9TWU1CT0woZmF0eF9zdGF0ZnMpOwor
RVhQT1JUX1NZTUJPTChmYXR4X3dyaXRlX2lub2RlKTsKK0VYUE9SVF9TWU1CT0woZmF0eF9nZXRf
Y2x1c3Rlcik7CitFWFBPUlRfU1lNQk9MKGZhdHhfYWRkX2VudHJpZXMpOworRVhQT1JUX1NZTUJP
TChmYXR4X2Rpcl9lbXB0eSk7CitFWFBPUlRfU1lNQk9MKGZhdHhfdHJ1bmNhdGUpOworCitzdGF0
aWMgc3RydWN0IHN1cGVyX2Jsb2NrICpmYXR4X2dldF9zYihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlw
ZSAqZnNfdHlwZSwKKwkJICAgICAgICBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLCB2
b2lkICpkYXRhKQoreworCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25h
bWUsIGRhdGEsIGZhdHhfZmlsbF9zdXBlcik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0
ZW1fdHlwZSBmYXR4X2ZzX3R5cGUgPSB7CisJLm93bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUs
CisJLm5hbWUgICAgICAgICAgID0gImZhdHgiLAorCS5nZXRfc2IgICAgICAgICA9IGZhdHhfZ2V0
X3NiLAorCS5raWxsX3NiICAgICAgICA9IGtpbGxfYmxvY2tfc3VwZXIsCisJLmZzX2ZsYWdzICAg
ICAgID0gRlNfUkVRVUlSRVNfREVWLAorfTsKKworc3RhdGljIGludCBfX2luaXQgaW5pdF9mYXR4
X2ZzKHZvaWQpCit7CisJcHJpbnRrKCJGQVRYIGRyaXZlciBWZXJzaW9uIDAuMS4wXG4iKTsKKwlm
YXR4X2hhc2hfaW5pdCgpOworCXJldHVybiByZWdpc3Rlcl9maWxlc3lzdGVtKCZmYXR4X2ZzX3R5
cGUpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZXhpdF9mYXR4X2ZzKHZvaWQpCit7CisJdW5y
ZWdpc3Rlcl9maWxlc3lzdGVtKCZmYXR4X2ZzX3R5cGUpOworfQorCittb2R1bGVfaW5pdChpbml0
X2ZhdHhfZnMpCittb2R1bGVfZXhpdChleGl0X2ZhdHhfZnMpCitNT0RVTEVfTElDRU5TRSgiR1BM
Iik7CisKZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvZnMvZmF0eC9maWxlLmMgbGludXgtMi42
LjUvZnMvZmF0eC9maWxlLmMKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZnMvZmF0eC9maWxlLmMJMTk3
MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2ZzL2ZhdHgv
ZmlsZS5jCTIwMDQtMDUtMDEgMTU6MjA6NDMuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsMTAz
IEBACisvKgorICogIGxpbnV4L2ZzL2ZhdHgvZmlsZS5jCisgKgorICogIFdyaXR0ZW4gMjAwMyBi
eSBFZGdhciBIdWNlayBhbmQgTGVobmVyIEZyYW56CisgKgorICovCisKKyNpbmNsdWRlIDxsaW51
eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvZmF0eF9m
cy5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvZmNudGwuaD4K
KyNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5j
bHVkZSA8bGludXgvcGFnZW1hcC5oPgorCisjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KKyNpbmNs
dWRlIDxhc20vc3lzdGVtLmg+CisKKyNkZWZpbmUgUFJJTlRLKGZvcm1hdCwgYXJncy4uLikgZG8g
eyBpZiAoZmF0eF9kZWJ1ZykgcHJpbnRrKCBmb3JtYXQsICMjYXJncyApOyB9IHdoaWxlKDApCisK
K3N0cnVjdCBmaWxlX29wZXJhdGlvbnMgZmF0eF9maWxlX29wZXJhdGlvbnMgPSB7CisJLmxsc2Vl
awkJPSBnZW5lcmljX2ZpbGVfbGxzZWVrLAorCS5yZWFkCQk9IGdlbmVyaWNfZmlsZV9yZWFkLAor
CS53cml0ZQkJPSBmYXR4X2ZpbGVfd3JpdGUsCisJLm1tYXAJCT0gZ2VuZXJpY19maWxlX21tYXAs
CisJLmZzeW5jCQk9IGZpbGVfZnN5bmMsCisJLnJlYWR2ICAgICAgICAgID0gZ2VuZXJpY19maWxl
X3JlYWR2LAorCS53cml0ZXYgICAgICAgICA9IGdlbmVyaWNfZmlsZV93cml0ZXYsCisJLnNlbmRm
aWxlICAgICAgID0gZ2VuZXJpY19maWxlX3NlbmRmaWxlLAkJCQorfTsKKworc3RydWN0IGlub2Rl
X29wZXJhdGlvbnMgZmF0eF9maWxlX2lub2RlX29wZXJhdGlvbnMgPSB7CisJLnRydW5jYXRlCT0g
ZmF0eF90cnVuY2F0ZSwKKwkuc2V0YXR0cgk9IGZhdHhfbm90aWZ5X2NoYW5nZSwKK307CisKK2lu
dCBmYXR4X2dldF9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzZWN0b3JfdCBpYmxvY2ssIHN0
cnVjdCBidWZmZXJfaGVhZCAqYmhfcmVzdWx0LCBpbnQgY3JlYXRlKQoreworCXN0cnVjdCBzdXBl
cl9ibG9jayAqc2IgPSBpbm9kZS0+aV9zYjsKKwl1bnNpZ25lZCBsb25nIHBoeXM7CisKKwlwaHlz
ID0gZmF0eF9ibWFwKGlub2RlLCBpYmxvY2spOworCWlmIChwaHlzKSB7CisJCW1hcF9iaChiaF9y
ZXN1bHQsIHNiLCBwaHlzKTsKKwkJcmV0dXJuIDA7CisJfQorCWlmICghY3JlYXRlKQorCQlyZXR1
cm4gMDsKKwlpZiAoaWJsb2NrIDw8IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzICE9IEZBVFhfSShpbm9k
ZSktPm1tdV9wcml2YXRlKSB7CisJCUJVRygpOworCQlyZXR1cm4gLUVJTzsKKwl9CisJaWYgKCEo
aWJsb2NrICUgRkFUWF9TQihpbm9kZS0+aV9zYiktPmNsdXN0ZXJfc2l6ZSkpIHsKKwkJaWYgKGZh
dHhfYWRkX2NsdXN0ZXIoaW5vZGUpIDwgMCkKKwkJCXJldHVybiAtRU5PU1BDOworCX0KKwlGQVRY
X0koaW5vZGUpLT5tbXVfcHJpdmF0ZSArPSBzYi0+c19ibG9ja3NpemU7CisJcGh5cyA9IGZhdHhf
Ym1hcChpbm9kZSwgaWJsb2NrKTsKKwlpZiAoIXBoeXMpCisJCUJVRygpOworCXNldF9idWZmZXJf
bmV3KGJoX3Jlc3VsdCk7CisJbWFwX2JoKGJoX3Jlc3VsdCwgc2IsIHBoeXMpOworCXJldHVybiAw
OworfQorCitzc2l6ZV90IGZhdHhfZmlsZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlscCwgY29uc3Qg
Y2hhciAqYnVmLCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKK3sKKwlzdHJ1Y3QgaW5vZGUg
Kmlub2RlID0gZmlscC0+Zl9kZW50cnktPmRfaW5vZGU7CisJaW50IHJldHZhbDsKKworCXJldHZh
bCA9IGdlbmVyaWNfZmlsZV93cml0ZShmaWxwLCBidWYsIGNvdW50LCBwcG9zKTsKKwlpZiAocmV0
dmFsID4gMCkgeworCQlpbm9kZS0+aV9tdGltZSA9IGlub2RlLT5pX2N0aW1lID0gaW5vZGUtPmlf
YXRpbWUgPSBDVVJSRU5UX1RJTUU7CisJCUZBVFhfSShpbm9kZSktPmlfYXR0cnMgfD0gQVRUUl9B
UkNIOworCQltYXJrX2lub2RlX2RpcnR5KGlub2RlKTsKKwl9CisJcmV0dXJuIHJldHZhbDsKK30K
Kwordm9pZCBmYXR4X3RydW5jYXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUpCit7CisJc3RydWN0IGZh
dHhfc2JfaW5mbyAqc2JpID0gRkFUWF9TQihpbm9kZS0+aV9zYik7CisJaW50IGNsdXN0ZXI7CisK
KwkvKiBXaHkgbm8gcmV0dXJuIHZhbHVlPyAgU3VyZWx5IHRoZSBkaXNrIGNvdWxkIGZhaWwuLi4g
Ki8KKwlpZiAoSVNfUkRPTkxZIChpbm9kZSkpCisJCXJldHVybiAvKiAtRVBFUk0gKi87CisJaWYg
KElTX0lNTVVUQUJMRShpbm9kZSkpCisJCXJldHVybiAvKiAtRVBFUk0gKi87CisJY2x1c3RlciA9
IDEgPDwgc2JpLT5jbHVzdGVyX2JpdHM7CisJLyogCisJICogVGhpcyBwcm90ZWN0cyBhZ2FpbnN0
IHRydW5jYXRpbmcgYSBmaWxlIGJpZ2dlciB0aGFuIGl0IHdhcyB0aGVuCisJICogdHJ5aW5nIHRv
IHdyaXRlIGludG8gdGhlIGhvbGUuCisJICovCisJaWYgKEZBVFhfSShpbm9kZSktPm1tdV9wcml2
YXRlID4gaW5vZGUtPmlfc2l6ZSkKKwkJRkFUWF9JKGlub2RlKS0+bW11X3ByaXZhdGUgPSBpbm9k
ZS0+aV9zaXplOworCisJZmF0eF9mcmVlKGlub2RlLCAoaW5vZGUtPmlfc2l6ZSArIChjbHVzdGVy
IC0gMSkpID4+IHNiaS0+Y2x1c3Rlcl9iaXRzKTsKKwlGQVRYX0koaW5vZGUpLT5pX2F0dHJzIHw9
IEFUVFJfQVJDSDsKKwlpbm9kZS0+aV9jdGltZSA9IGlub2RlLT5pX210aW1lID0gaW5vZGUtPmlf
YXRpbWUgPSBDVVJSRU5UX1RJTUU7CisJbWFya19pbm9kZV9kaXJ0eShpbm9kZSk7Cit9CmRpZmYg
LXVyTiBsaW51eC0yLjYuNS5vcmlnL2ZzL2ZhdHgvaW5vZGUuYyBsaW51eC0yLjYuNS9mcy9mYXR4
L2lub2RlLmMKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZnMvZmF0eC9pbm9kZS5jCTE5NzAtMDEtMDEg
MDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9mcy9mYXR4L2lub2RlLmMJ
MjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSw2NzEgQEAKKy8q
CisgKiAgbGludXgvZnMvZmF0eC9pbm9kZS5jCisgKgorICogIFdyaXR0ZW4gMjAwMyBieSBFZGdh
ciBIdWNlayBhbmQgTGVobmVyIEZyYW56CisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9tb2R1
bGUuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgor
I2luY2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+CisjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4K
KworI2luY2x1ZGUgPGxpbnV4L2ZhdHhfZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9mYXR4X2ZzX3Ni
Lmg+CisKKyNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+CisjaW5jbHVkZSA8bGludXgvYnVmZmVy
X2hlYWQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb3VudC5oPgorI2luY2x1ZGUgPGxpbnV4L3Zmcy5o
PgorI2luY2x1ZGUgPGxpbnV4L3BhcnNlci5oPgorI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD4K
KworCisjaWZuZGVmIENPTkZJR19OTFNfREVGQVVMVAorI2RlZmluZSBDT05GSUdfTkxTX0RFRkFV
TFQgImlzbzg4NTktMTUiCisjZW5kaWYKKworI2RlZmluZSBGQVRfSEFTSF9CSVRTICAgOAorI2Rl
ZmluZSBGQVRfSEFTSF9TSVpFICAgICgxVUwgPDwgRkFUX0hBU0hfQklUUykKKyNkZWZpbmUgRkFU
X0hBU0hfTUFTSyAgICAoRkFUX0hBU0hfU0laRS0xKQorCisjZGVmaW5lIFBSSU5USyhmb3JtYXQs
IGFyZ3MuLi4pIGRvIHsgaWYgKGZhdHhfZGVidWcpIHByaW50ayggZm9ybWF0LCAjI2FyZ3MgKTsg
fSB3aGlsZSgwKQorCitzdGF0aWMgaW50IGZhdHhfd3JpdGVwYWdlKHN0cnVjdCBwYWdlICpwYWdl
LCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYykKK3sKKwlyZXR1cm4gYmxvY2tfd3JpdGVf
ZnVsbF9wYWdlKHBhZ2UsZmF0eF9nZXRfYmxvY2ssIHdiYyk7Cit9CisKK3N0YXRpYyBpbnQgZmF0
eF9yZWFkcGFnZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBhZ2UgKnBhZ2UpCit7CisJcmV0
dXJuIGJsb2NrX3JlYWRfZnVsbF9wYWdlKHBhZ2UsZmF0eF9nZXRfYmxvY2spOworfQorCitzdGF0
aWMgaW50IGZhdHhfcHJlcGFyZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBhZ2Ug
KnBhZ2UsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKQoreworCXJldHVybiBjb250X3ByZXBh
cmVfd3JpdGUocGFnZSxmcm9tLHRvLGZhdHhfZ2V0X2Jsb2NrLAorCQkmRkFUWF9JKHBhZ2UtPm1h
cHBpbmctPmhvc3QpLT5tbXVfcHJpdmF0ZSk7Cit9CisKK3N0YXRpYyBzZWN0b3JfdCBfZmF0eF9i
bWFwKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBzZWN0b3JfdCBibG9jaykKK3sKKwly
ZXR1cm4gZ2VuZXJpY19ibG9ja19ibWFwKG1hcHBpbmcsYmxvY2ssZmF0eF9nZXRfYmxvY2spOwor
fQorCitzdGF0aWMgaW50IGZhdHhfY29tbWl0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1
Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pCit7CisJa3VubWFwKHBh
Z2UpOworCXJldHVybiBnZW5lcmljX2NvbW1pdF93cml0ZShmaWxlLCBwYWdlLCBmcm9tLCB0byk7
Cit9CisKK3N0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgZmF0eF9hb3BzID0geworCS5y
ZWFkcGFnZQk9IGZhdHhfcmVhZHBhZ2UsCisJLndyaXRlcGFnZQk9IGZhdHhfd3JpdGVwYWdlLAor
CS5zeW5jX3BhZ2UJPSBibG9ja19zeW5jX3BhZ2UsCisJLnByZXBhcmVfd3JpdGUJPSBmYXR4X3By
ZXBhcmVfd3JpdGUsCisJLmNvbW1pdF93cml0ZQk9IGZhdHhfY29tbWl0X3dyaXRlLAorCS5ibWFw
CQk9IF9mYXR4X2JtYXAKK307CisKK3ZvaWQgZmF0eF9wdXRfc3VwZXIoc3RydWN0IHN1cGVyX2Js
b2NrICpzYikKK3sKKwlmYXR4X2NhY2hlX2ludmFsX2RldihzYi0+c19kZXYpOworCXNldF9ibG9j
a3NpemUoc2ItPnNfYmRldixCTE9DS19TSVpFKTsKKyAgICAgICAgaWYgKEZBVFhfU0Ioc2IpLT5u
bHNfaW8pIHsKKwkJdW5sb2FkX25scyhGQVRYX1NCKHNiKS0+bmxzX2lvKTsKKwkJRkFUWF9TQihz
YiktPm5sc19pbyA9IE5VTEw7CisJfQorfQorCitzdGF0aWMgc3RydWN0IGxpc3RfaGVhZCBmYXR4
X2lub2RlX2hhc2h0YWJsZVtGQVRfSEFTSF9TSVpFXTsKK3NwaW5sb2NrX3QgZmF0eF9pbm9kZV9s
b2NrID0gU1BJTl9MT0NLX1VOTE9DS0VEOworCit2b2lkIGZhdHhfaGFzaF9pbml0KHZvaWQpCit7
CisJaW50IGk7CisJZm9yKGkgPSAwOyBpIDwgRkFUX0hBU0hfU0laRTsgaSsrKSB7CisJCUlOSVRf
TElTVF9IRUFEKCZmYXR4X2lub2RlX2hhc2h0YWJsZVtpXSk7CisJfQorfQorCitzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIGxvbmcgZmF0eF9oYXNoKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCBp
X3BvcykKK3sKKwl1bnNpZ25lZCBsb25nIHRtcCA9ICh1bnNpZ25lZCBsb25nKWlfcG9zIHwgKHVu
c2lnbmVkIGxvbmcpIHNiOworCXRtcCA9IHRtcCArICh0bXAgPj4gRkFUX0hBU0hfQklUUykgKyAo
dG1wID4+IEZBVF9IQVNIX0JJVFMgKiAyKTsKKwlyZXR1cm4gdG1wICYgRkFUX0hBU0hfTUFTSzsK
K30KKwordm9pZCBmYXR4X2F0dGFjaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgaV9wb3Mp
Cit7CisJc3Bpbl9sb2NrKCZmYXR4X2lub2RlX2xvY2spOworCUZBVFhfSShpbm9kZSktPmlfcG9z
ID0gaV9wb3M7CisJbGlzdF9hZGQoJkZBVFhfSShpbm9kZSktPmlfZmF0X2hhc2gsCisJCWZhdHhf
aW5vZGVfaGFzaHRhYmxlICsgZmF0eF9oYXNoKGlub2RlLT5pX3NiLCBpX3BvcykpOworCXNwaW5f
dW5sb2NrKCZmYXR4X2lub2RlX2xvY2spOworfQorCit2b2lkIGZhdHhfZGV0YWNoKHN0cnVjdCBp
bm9kZSAqaW5vZGUpCit7CisJc3Bpbl9sb2NrKCZmYXR4X2lub2RlX2xvY2spOworCUZBVFhfSShp
bm9kZSktPmlfcG9zID0gMDsKKwlsaXN0X2RlbCgmRkFUWF9JKGlub2RlKS0+aV9mYXRfaGFzaCk7
CisJSU5JVF9MSVNUX0hFQUQoJkZBVFhfSShpbm9kZSktPmlfZmF0X2hhc2gpOworCXNwaW5fdW5s
b2NrKCZmYXR4X2lub2RlX2xvY2spOworfQorCitzdHJ1Y3QgaW5vZGUgKmZhdHhfaWdldChzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiLCBsb2ZmX3QgaV9wb3MpCit7CisJc3RydWN0IGxpc3RfaGVhZCAq
cCA9IGZhdHhfaW5vZGVfaGFzaHRhYmxlICsgZmF0eF9oYXNoKHNiLCBpX3Bvcyk7CisJc3RydWN0
IGxpc3RfaGVhZCAqd2FsazsKKwlzdHJ1Y3QgZmF0eF9pbm9kZV9pbmZvICppOworCXN0cnVjdCBp
bm9kZSAqaW5vZGUgPSBOVUxMOworCisJc3Bpbl9sb2NrKCZmYXR4X2lub2RlX2xvY2spOworCWxp
c3RfZm9yX2VhY2god2FsaywgcCkgeworCQlpID0gbGlzdF9lbnRyeSh3YWxrLCBzdHJ1Y3QgZmF0
eF9pbm9kZV9pbmZvLCBpX2ZhdF9oYXNoKTsKKwkJaWYgKGktPmlfZmF0X2lub2RlLT5pX3NiICE9
IHNiKQorCQkJY29udGludWU7CisJCWlmIChpLT5pX3BvcyAhPSBpX3BvcykKKwkJCWNvbnRpbnVl
OworCQlpbm9kZSA9IGlncmFiKGktPmlfZmF0X2lub2RlKTsKKwkJaWYgKGlub2RlKQorCQkJYnJl
YWs7CisJfQorCXNwaW5fdW5sb2NrKCZmYXR4X2lub2RlX2xvY2spOworCXJldHVybiBpbm9kZTsK
K30KKworLyogZG9lc24ndCBkZWFsIHdpdGggcm9vdCBpbm9kZSAqLworc3RhdGljIHZvaWQgZmF0
eF9maWxsX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmYXR4X2Rpcl9lbnRyeSAq
ZGUpCit7CisJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGlub2RlLT5pX3NiOworCXN0cnVjdCBm
YXR4X3NiX2luZm8gKnNiaSA9IEZBVFhfU0Ioc2IpOworCWludCBucjsKKworCUlOSVRfTElTVF9I
RUFEKCZGQVRYX0koaW5vZGUpLT5pX2ZhdF9oYXNoKTsKKwlGQVRYX0koaW5vZGUpLT5pX3BvcyA9
IDA7CisJRkFUWF9JKGlub2RlKS0+aV9mYXRfaW5vZGUgPSBpbm9kZTsKKwlpbm9kZS0+aV91aWQg
PSBzYmktPm9wdGlvbnMuZnNfdWlkOworCWlub2RlLT5pX2dpZCA9IHNiaS0+b3B0aW9ucy5mc19n
aWQ7CisJaW5vZGUtPmlfdmVyc2lvbisrOworCWlub2RlLT5pX2dlbmVyYXRpb24gPSBnZXRfc2Vj
b25kcygpOworCQorCWlmICgoZGUtPmF0dHIgJiBBVFRSX0RJUikgJiYgIUZBVFhfSVNfRlJFRShk
ZSkpIHsKKwkJaW5vZGUtPmlfZ2VuZXJhdGlvbiAmPSB+MTsKKwkJaW5vZGUtPmlfbW9kZSA9IEZB
VFhfTUtNT0RFKGRlLT5hdHRyLFNfSVJXWFVHTyAmIAorCQkJfnNiaS0+b3B0aW9ucy5mc191bWFz
aykgfCBTX0lGRElSOworCQlpbm9kZS0+aV9vcCA9IHNiaS0+ZGlyX29wczsKKwkJaW5vZGUtPmlf
Zm9wID0gJmZhdHhfZGlyX29wZXJhdGlvbnM7CisKKwkJRkFUWF9JKGlub2RlKS0+aV9zdGFydCA9
IENGX0xFX0woZGUtPnN0YXJ0KTsKKwkJRkFUWF9JKGlub2RlKS0+aV9sb2dzdGFydCA9IEZBVFhf
SShpbm9kZSktPmlfc3RhcnQ7CisJCWlub2RlLT5pX25saW5rID0gZmF0eF9zdWJkaXJzKGlub2Rl
KSArIDI7CisJCSAgICAvKiBpbmNsdWRlcyAuLiwgY29tcGVuc2F0aW5nIGZvciAic2VsZiIgKi8K
KyNpZmRlZiBERUJVRworCQlpZiAoIWlub2RlLT5pX25saW5rKSB7CisJCQlwcmludGsoImRpcmVj
dG9yeSAlZDogaV9ubGluayA9PSAwXG4iLGlub2RlLT5pX2lubyk7CisJCQlpbm9kZS0+aV9ubGlu
ayA9IDE7CisJCX0KKyNlbmRpZgorCQlpZiAoKG5yID0gRkFUWF9JKGlub2RlKS0+aV9zdGFydCkg
IT0gMCkKKwkJCXdoaWxlIChuciAhPSAtMSkgeworCQkJCWlub2RlLT5pX3NpemUgKz0gMSA8PCBz
YmktPmNsdXN0ZXJfYml0czsKKwkJCQlpZiAoIShuciA9IGZhdHhfYWNjZXNzKHNiLCBuciwgLTEp
KSkgeworCQkJCQlwcmludGsoIkRpcmVjdG9yeSAlbGQ6IGJhZCBGQVRcbiIsCisJCQkJCSAgICBp
bm9kZS0+aV9pbm8pOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCUZBVFhfSShpbm9kZSkt
Pm1tdV9wcml2YXRlID0gaW5vZGUtPmlfc2l6ZTsKKwl9IGVsc2UgeyAvKiBub3QgYSBkaXJlY3Rv
cnkgKi8KKwkJaW5vZGUtPmlfZ2VuZXJhdGlvbiB8PSAxOworCQlpbm9kZS0+aV9tb2RlID0gRkFU
WF9NS01PREUoZGUtPmF0dHIsU19JUldYVUdPICYgfnNiaS0+b3B0aW9ucy5mc191bWFzaykgfCBT
X0lGUkVHOworCQlGQVRYX0koaW5vZGUpLT5pX3N0YXJ0ID0gQ0ZfTEVfTChkZS0+c3RhcnQpOwor
CQlGQVRYX0koaW5vZGUpLT5pX2xvZ3N0YXJ0ID0gRkFUWF9JKGlub2RlKS0+aV9zdGFydDsKKwkJ
aW5vZGUtPmlfc2l6ZSA9IENGX0xFX0woZGUtPnNpemUpOworCSAgICAgICAgaW5vZGUtPmlfb3Ag
PSAmZmF0eF9maWxlX2lub2RlX29wZXJhdGlvbnM7CisJICAgICAgICBpbm9kZS0+aV9mb3AgPSAm
ZmF0eF9maWxlX29wZXJhdGlvbnM7CisJCWlub2RlLT5pX21hcHBpbmctPmFfb3BzID0gJmZhdHhf
YW9wczsKKwkJRkFUWF9JKGlub2RlKS0+bW11X3ByaXZhdGUgPSBpbm9kZS0+aV9zaXplOworCX0K
KwlGQVRYX0koaW5vZGUpLT5pX2F0dHJzID0gZGUtPmF0dHIgJiBBVFRSX1VOVVNFRDsKKwkvKiB0
aGlzIGlzIGFzIGNsb3NlIHRvIHRoZSB0cnV0aCBhcyB3ZSBjYW4gZ2V0IC4uLiAqLworCWlub2Rl
LT5pX2Jsa3NpemUgPSAxIDw8IHNiaS0+Y2x1c3Rlcl9iaXRzOworCWlub2RlLT5pX2Jsb2NrcyA9
ICgoaW5vZGUtPmlfc2l6ZSArIGlub2RlLT5pX2Jsa3NpemUgLSAxKQorCQkJICAgJiB+KGlub2Rl
LT5pX2Jsa3NpemUgLSAxKSkgPj4gOTsKKwlpbm9kZS0+aV9tdGltZS50dl9uc2VjID0gaW5vZGUt
PmlfYXRpbWUudHZfbnNlYyA9CisJCWZhdHhfZGF0ZV9kb3MydW5peChDRl9MRV9XKGRlLT50aW1l
KSxDRl9MRV9XKGRlLT5kYXRlKSk7CisJaW5vZGUtPmlfY3RpbWUudHZfbnNlYyA9IGZhdHhfZGF0
ZV9kb3MydW5peChDRl9MRV9XKGRlLT5jdGltZSksQ0ZfTEVfVyhkZS0+Y2RhdGUpKTsKK30KKwor
c3RydWN0IGlub2RlICpmYXR4X2J1aWxkX2lub2RlKAlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAlz
dHJ1Y3QgZmF0eF9kaXJfZW50cnkgKmRlLCBsb2ZmX3QgaV9wb3MsIGludCAqcmVzICkKK3sKKwlz
dHJ1Y3QgaW5vZGUgKmlub2RlOworCSpyZXMgPSAwOworCWlub2RlID0gZmF0eF9pZ2V0KHNiLCBp
X3Bvcyk7CisJaWYgKGlub2RlKQorCQlnb3RvIG91dDsKKwlpbm9kZSA9IG5ld19pbm9kZShzYik7
CisJKnJlcyA9IC1FTk9NRU07CisJaWYgKCFpbm9kZSkKKwkJZ290byBvdXQ7CisJKnJlcyA9IDA7
CisJaW5vZGUtPmlfaW5vID0gaXVuaXF1ZShzYiwgRkFUWF9ST09UX0lOTyk7CisJaW5vZGUtPmlf
dmVyc2lvbiA9IDE7CisJZmF0eF9maWxsX2lub2RlKGlub2RlLCBkZSk7CisJZmF0eF9hdHRhY2go
aW5vZGUsIGlfcG9zKTsKKwlpbnNlcnRfaW5vZGVfaGFzaChpbm9kZSk7CitvdXQ6CisJcmV0dXJu
IGlub2RlOworfQorCisvKgorICogcGFyc2Ugc3VwZXIgYmxvY2sgdmFsdWVzIG91dCBvZiBGQVRY
ICJib290IGJsb2NrIgorICogdW5saWtlIHRoZSBvdGhlciBGQVQgdmFyaWFudHMsIG11Y2ggb2Yg
dGhlIGRhdGEgaXMgY2FsY3VsYXRlZCBmcm9tIHRoZQorICogdGhlIHBhcnRpdGlvbiBpbmZvcm1h
dGlvbi4KKyAqLworaW50IGZhdHhfcGFyc2VfYm9vdF9ibG9jayAoIHN0cnVjdCBzdXBlcl9ibG9j
ayAqc2IsIHN0cnVjdCBidWZmZXJfaGVhZCAqYmggKQoreworCXN0cnVjdCBmYXR4X2Jvb3Rfc2Vj
dG9yICpiID0gKHN0cnVjdCBmYXR4X2Jvb3Rfc2VjdG9yICopYmgtPmJfZGF0YTsKKwlzdHJ1Y3Qg
ZmF0eF9zYl9pbmZvICpzYmkgPSBGQVRYX1NCKHNiKTsKKwlpbnQgbG9naWNhbF9zZWN0b3Jfc2l6
ZSwgaGFyZF9ibGtzaXplOworCXVuc2lnbmVkIGludCB0b3RhbF9zZWN0b3JzOworCXVuc2lnbmVk
IGxvbmcgY2xfY291bnQ7CisJdW5zaWduZWQgbG9uZyBmYXRfbGVuZ3RoOworCisJUFJJTlRLKCJG
QVRYOiBlbnRlcmVkIGZhdHhfcGFyc2VfYm9vdF9ibG9ja1xuIik7CisJCisJaWYgKGItPm1hZ2lj
ICE9IEZBVFhfQk9PVEJMT0NLX01BR0lDKSB7CisJCXByaW50aygiRkFUWDogYm9vdCBibG9jayBz
aWduYXR1cmUgbm90IGZvdW5kLiAgTm90IEZBVFg/XG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwkJ
CisJUFJJTlRLKCJGQVRYOiBmYXR4X21hZ2ljOiAlMDhsWFxuIiwodW5zaWduZWQgbG9uZyliLT5t
YWdpYyk7CisJCQkKKwlsb2dpY2FsX3NlY3Rvcl9zaXplID0gNTEyOworCQorCXNiaS0+Y2x1c3Rl
cl9zaXplID0gQ0xVU1RFUl9TSVpFOworCQorCVBSSU5USygiRkFUWDogY2x1c3Rlcl9zaXplOiAl
ZFxuIiwoaW50KXNiaS0+Y2x1c3Rlcl9zaXplKTsKKwkKKwkvL3NiLT5zX2Jsb2NrX3NpemUgZW50
ZXJzIGFzIGhhcmR3YXJlIGJsb2NrIChzZWN0b3IpIHNpemUKKwloYXJkX2Jsa3NpemUgPSBzYi0+
c19ibG9ja3NpemU7CisJc2ItPnNfYmxvY2tzaXplID0gbG9naWNhbF9zZWN0b3Jfc2l6ZTsKKwlz
Yi0+c19ibG9ja3NpemVfYml0cyA9IGZmcyhsb2dpY2FsX3NlY3Rvcl9zaXplKSAtIDE7CisKKwkv
L2ZpZ3VyZSB0b3RhbCBzZWN0b3IgY291bnQKKwkvL3RvdGFsX3NlY3RvcnMgPSBmYXR4X2dldF90
b3RhbF9zaXplKHNiKTsKKwl0b3RhbF9zZWN0b3JzID0gc2ItPnNfYmRldi0+YmRfaW5vZGUtPmlf
c2l6ZSA+PiA5OworCQorCVBSSU5USygiRkFUWDogdG90YWxfc2VjdG9ycyBmb3IgZ2l2ZW4gZGV2
aWNlOiAlbGRcbiIsKHVuc2lnbmVkIGxvbmcpdG90YWxfc2VjdG9ycyk7CisJCisJc2JpLT5jbHVz
dGVyX2JpdHMgPSAxNDsKKwlzYmktPmZhdHMgPSAxOworCQorCS8vaG1tLi4uZmF0IHNob3VsZCBz
dGFydCByaWdodCBhZnRlciBib290IGJsb2NrIHNlY3RvcnMgKGZpcnN0IDgpCisJc2JpLT5mYXRf
c3RhcnQgPSA4OwkvL3RoaXMgbWlnaHQgYmU6ICsgQ0ZfTEVfVyhiLT5mYXR4X3Vua25vd24pCisJ
c2JpLT5yb290X2NsdXN0ZXIgPSAwOworCXNiaS0+ZGlyX3Blcl9ibG9jayA9IGxvZ2ljYWxfc2Vj
dG9yX3NpemUvc2l6ZW9mKHN0cnVjdCBmYXR4X2Rpcl9lbnRyeSk7CisJc2JpLT5kaXJfcGVyX2Js
b2NrX2JpdHMgPSBmZnMoc2JpLT5kaXJfcGVyX2Jsb2NrKSAtIDE7CisJc2JpLT5kaXJfZW50cmll
cyA9IDI1NjsKKwkKKwkvL2NoZWNrIGNsdXN0ZXIgY291bnQKKwkKKwljbF9jb3VudCA9IHRvdGFs
X3NlY3RvcnMgLyBzYmktPmNsdXN0ZXJfc2l6ZTsKKworCWlmKCBjbF9jb3VudCA+PSAweGZmZjQg
KSB7CisJCS8vRkFUWC0zMgorCQlzYi0+c19tYXhieXRlcyA9IEZBVFgzMl9NQVhfTk9OX0xGUzsK
KwkJc2JpLT5mYXRfYml0cyA9IDMyOworCX0gZWxzZSB7CisJCS8vRkFUWC0xNgorCQlzYi0+c19t
YXhieXRlcyA9IEZBVFgxNl9NQVhfTk9OX0xGUzsKKwkJc2JpLT5mYXRfYml0cyA9IDE2OworCX0K
KworCWZhdF9sZW5ndGggPSBjbF9jb3VudCAqIChzYmktPmZhdF9iaXRzPj4zKTsJCQorCWlmKGZh
dF9sZW5ndGggJSA0MDk2KSB7CisJCWZhdF9sZW5ndGggPSAoKGZhdF9sZW5ndGggLyA0MDk2KSAr
IDEpICogNDA5NjsKKwl9CisJc2JpLT5mYXRfbGVuZ3RoID0gZmF0X2xlbmd0aCAvIGxvZ2ljYWxf
c2VjdG9yX3NpemU7CisKKwlzYmktPmRpcl9zdGFydCA9IHNiaS0+ZmF0X3N0YXJ0ICsgc2JpLT5m
YXRfbGVuZ3RoOworCXNiaS0+ZGF0YV9zdGFydCA9IHNiaS0+ZGlyX3N0YXJ0ICsgQ0xVU1RFUl9T
SVpFOworCXNiaS0+Y2x1c3RlcnMgPSAoKHRvdGFsX3NlY3RvcnMtc2JpLT5kYXRhX3N0YXJ0KSAv
IHNiaS0+Y2x1c3Rlcl9zaXplKTsKKwlzYmktPmZyZWVfY2x1c3RlcnMgPSAtMTsgLyogRG9uJ3Qg
a25vdyB5ZXQgKi8KKwkKKwlQUklOVEsoIkZBVFg6IGxvZ2ljYWxfc2VjdG9yX3NpemU6CSVkXG4i
LChpbnQpbG9naWNhbF9zZWN0b3Jfc2l6ZSk7CisJUFJJTlRLKCJGQVRYOiBmYXRfbGVuZ3RoOgkJ
JWRcbiIsKGludClzYmktPmZhdF9sZW5ndGgpOworCVBSSU5USygiRkFUWDogc3BjX2JpdHM6CQkJ
JWRcbiIsc2JpLT5mYXRfYml0cz4+Myk7CisJUFJJTlRLKCJGQVRYOiBmYXRfc3RhcnQ6CQklZFxu
IiwoaW50KXNiaS0+ZmF0X3N0YXJ0KTsKKwlQUklOVEsoIkZBVFg6IGRpcl9zdGFydDoJCSVkXG4i
LChpbnQpc2JpLT5kaXJfc3RhcnQpOworCVBSSU5USygiRkFUWDogZGF0YV9zdGFydDoJCSVkXG4i
LChpbnQpc2JpLT5kYXRhX3N0YXJ0KTsKKwlQUklOVEsoIkZBVFg6IGNsdXN0ZXJzOgkJCSVsZFxu
IiwodW5zaWduZWQgbG9uZylzYmktPmNsdXN0ZXJzKTsKKwlQUklOVEsoIkZBVFg6IGZhdF9iaXRz
OgkJCSVkXG4iLChpbnQpc2JpLT5mYXRfYml0cyk7CisJUFJJTlRLKCJGQVRYOiBmYXRfbGVuZ3Ro
OgkJJWRcbiIsKGludClzYmktPmZhdF9sZW5ndGgpOworCVBSSU5USygiRkFUWDogcm9vdF9kaXJf
c2VjdG9yczoJCSVkXG4iLChpbnQpQ0xVU1RFUl9TSVpFKTsKKwlQUklOVEsoIkZBVFg6IGRpcl9w
ZXJfYmxvY2s6CQklZFxuIiwoaW50KXNiaS0+ZGlyX3Blcl9ibG9jayk7CisJUFJJTlRLKCJGQVRY
OiBkaXJfcGVyX2Jsb2NrX2JpdHM6CSVkXG4iLChpbnQpc2JpLT5kaXJfcGVyX2Jsb2NrX2JpdHMp
OworCVBSSU5USygiRkFUWDogZGlyX2VudHJpZXMgOgkJJWRcbiIsKGludClzYmktPmRpcl9lbnRy
aWVzKTsKKwlQUklOVEsoIkZBVFg6IGNsdXN0ZXJfYml0czoJCSVkXG4iLChpbnQpc2JpLT5jbHVz
dGVyX2JpdHMpOworCQorCVBSSU5USygiRkFUWDogbGVhdmluZyBmYXR4X3BhcnNlX2Jvb3RfYmxv
Y2tcbiIpOworCQkKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZmF0eF9yZWFkX3Jvb3Qo
c3RydWN0IGlub2RlICppbm9kZSkKK3sKKwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUt
Pmlfc2I7CisJc3RydWN0IGZhdHhfc2JfaW5mbyAqc2JpID0gRkFUWF9TQihzYik7CisKKwlJTklU
X0xJU1RfSEVBRCgmRkFUWF9JKGlub2RlKS0+aV9mYXRfaGFzaCk7CisJRkFUWF9JKGlub2RlKS0+
aV9wb3MgPSAwOworCUZBVFhfSShpbm9kZSktPmlfZmF0X2lub2RlID0gaW5vZGU7CisJaW5vZGUt
PmlfdWlkID0gc2JpLT5vcHRpb25zLmZzX3VpZDsKKwlpbm9kZS0+aV9naWQgPSBzYmktPm9wdGlv
bnMuZnNfZ2lkOworCWlub2RlLT5pX3ZlcnNpb24gPSAxOworCWlub2RlLT5pX2dlbmVyYXRpb24g
PSAwOworCWlub2RlLT5pX21vZGUgPSAoU19JUldYVUdPICYgfnNiaS0+b3B0aW9ucy5mc191bWFz
aykgfCBTX0lGRElSOworCWlub2RlLT5pX29wID0gc2JpLT5kaXJfb3BzOworCWlub2RlLT5pX2Zv
cCA9ICZmYXR4X2Rpcl9vcGVyYXRpb25zOworCQorCUZBVFhfSShpbm9kZSktPmlfc3RhcnQgPSBG
QVRYX1JPT1RfSU5POworCWlub2RlLT5pX3NpemUgPSBzYmktPmRpcl9lbnRyaWVzICogc2l6ZW9m
KHN0cnVjdCBmYXR4X2Rpcl9lbnRyeSk7CisKKwlpbm9kZS0+aV9ibGtzaXplID0gMSA8PCBzYmkt
PmNsdXN0ZXJfYml0czsKKwlpbm9kZS0+aV9ibG9ja3MgPSAoKGlub2RlLT5pX3NpemUgKyBpbm9k
ZS0+aV9ibGtzaXplIC0gMSkKKwkJCSAgICYgfihpbm9kZS0+aV9ibGtzaXplIC0gMSkpID4+IDk7
CisJRkFUWF9JKGlub2RlKS0+aV9sb2dzdGFydCA9IDA7CisJRkFUWF9JKGlub2RlKS0+bW11X3By
aXZhdGUgPSBpbm9kZS0+aV9zaXplOworCisJRkFUWF9JKGlub2RlKS0+aV9hdHRycyA9IDA7CisJ
aW5vZGUtPmlfbXRpbWUudHZfc2VjID0gaW5vZGUtPmlfYXRpbWUudHZfc2VjID0gaW5vZGUtPmlf
Y3RpbWUudHZfc2VjID0gMDsKKwlpbm9kZS0+aV9tdGltZS50dl9uc2VjID0gaW5vZGUtPmlfYXRp
bWUudHZfbnNlYyA9IGlub2RlLT5pX2N0aW1lLnR2X25zZWMgPSAwOworCUZBVFhfSShpbm9kZSkt
PmlfY3RpbWVfbXMgPSAwOworCWlub2RlLT5pX25saW5rID0gZmF0eF9zdWJkaXJzKGlub2RlKSAr
IDI7Cit9CisKKy8qIFRoZSBwdWJsaWMgaW5vZGUgb3BlcmF0aW9ucyBmb3IgdGhlIGZhdHggZnMg
Ki8KK3N0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGZhdHhfZGlyX2lub2RlX29wZXJhdGlvbnMgPSB7
CisJLmNyZWF0ZQkJPSBmYXR4X2NyZWF0ZSwKKwkubG9va3VwCQk9IGZhdHhfbG9va3VwLAorCS51
bmxpbmsJCT0gZmF0eF91bmxpbmssCisJLm1rZGlyCQk9IGZhdHhfbWtkaXIsCisJLnJtZGlyCQk9
IGZhdHhfcm1kaXIsCisJLnJlbmFtZQkJPSBmYXR4X3JlbmFtZSwKKwkuc2V0YXR0cgk9IGZhdHhf
bm90aWZ5X2NoYW5nZSwKK307CisKK3ZvaWQgZmF0eF93cml0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUg
Kmlub2RlLCBpbnQgd2FpdCkKK3sKKwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlf
c2I7CisJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKKwlzdHJ1Y3QgZmF0eF9kaXJfZW50cnkgKnJh
d19lbnRyeTsKKwl1bnNpZ25lZCBpbnQgaV9wb3M7CisJCisJUFJJTlRLKCJGQVRYOiBmYXR4X3dy
aXRlX2lub2RlOiBlbnRlcmVkXG4iKTsKKworcmV0cnk6CisJaV9wb3MgPSBGQVRYX0koaW5vZGUp
LT5pX3BvczsKKwlpZiAoaW5vZGUtPmlfaW5vID09IEZBVFhfUk9PVF9JTk8gfHwgIWlfcG9zKSB7
CisJCXJldHVybjsKKwl9CisJbG9ja19rZXJuZWwoKTsKKwlpZiAoIShiaCA9IHNiX2JyZWFkKHNi
LCBpX3BvcyA+PiBGQVRYX1NCKHNiKS0+ZGlyX3Blcl9ibG9ja19iaXRzKSkpIHsKKwkJUFJJTlRL
KCJkZXYgPSAlcywgaW5vID0gJWRcbiIsIHNiLT5zX2lkLCBpX3Bvcyk7CisJCWZhdHhfZnNfcGFu
aWMoc2IsICJmYXR4X3dyaXRlX2lub2RlOiB1bmFibGUgdG8gcmVhZCBpLW5vZGUgYmxvY2siKTsK
KwkJdW5sb2NrX2tlcm5lbCgpOworCQlyZXR1cm47CisJfQorCXNwaW5fbG9jaygmZmF0eF9pbm9k
ZV9sb2NrKTsKKwlpZiAoaV9wb3MgIT0gRkFUWF9JKGlub2RlKS0+aV9wb3MpIHsKKwkJc3Bpbl91
bmxvY2soJmZhdHhfaW5vZGVfbG9jayk7CisJCWlmKGJoKSBicmVsc2UoYmgpOworCQl1bmxvY2tf
a2VybmVsKCk7CisJCWdvdG8gcmV0cnk7CisJfQorCisJcmF3X2VudHJ5ID0gJigoc3RydWN0IGZh
dHhfZGlyX2VudHJ5ICopIChiaC0+Yl9kYXRhKSkKKwkgICAgW2lfcG9zICYgKEZBVFhfU0Ioc2Ip
LT5kaXJfcGVyX2Jsb2NrIC0gMSldOworCWlmIChTX0lTRElSKGlub2RlLT5pX21vZGUpKSB7CisJ
CXJhd19lbnRyeS0+YXR0ciA9IEFUVFJfRElSOworCQlyYXdfZW50cnktPnNpemUgPSAwOworCX0K
KwllbHNlIHsKKwkJcmF3X2VudHJ5LT5hdHRyID0gQVRUUl9OT05FOworCQlyYXdfZW50cnktPnNp
emUgPSBDVF9MRV9MKGlub2RlLT5pX3NpemUpOworCX0KKwlyYXdfZW50cnktPmF0dHIgfD0gRkFU
WF9NS0FUVFIoaW5vZGUtPmlfbW9kZSkgfAorCSAgICBGQVRYX0koaW5vZGUpLT5pX2F0dHJzOwor
CXJhd19lbnRyeS0+c3RhcnQgPSBDVF9MRV9MKEZBVFhfSShpbm9kZSktPmlfbG9nc3RhcnQpOwor
CQorCVBSSU5USygiRkFUWDogZmF0eF93cml0ZV9pbm9kZTogc3RhcnQgPT0gJTA4bFggKExFPSUw
OGxYKVxuIiwKKwkJCShsb25nKUZBVFhfSShpbm9kZSktPmlfbG9nc3RhcnQsCisJCQkobG9uZylD
VF9MRV9MKEZBVFhfSShpbm9kZSktPmlfbG9nc3RhcnQpKTsKKwkKKwlmYXR4X2RhdGVfdW5peDJk
b3MoaW5vZGUtPmlfbXRpbWUudHZfc2VjLCZyYXdfZW50cnktPnRpbWUsJnJhd19lbnRyeS0+ZGF0
ZSk7CisJcmF3X2VudHJ5LT50aW1lID0gQ1RfTEVfVyhyYXdfZW50cnktPnRpbWUpOworCXJhd19l
bnRyeS0+ZGF0ZSA9IENUX0xFX1cocmF3X2VudHJ5LT5kYXRlKTsKKwkKKwlmYXR4X2RhdGVfdW5p
eDJkb3MoaW5vZGUtPmlfY3RpbWUudHZfc2VjLCZyYXdfZW50cnktPmN0aW1lLCZyYXdfZW50cnkt
PmNkYXRlKTsKKwlyYXdfZW50cnktPmN0aW1lID0gQ1RfTEVfVyhyYXdfZW50cnktPmN0aW1lKTsK
KwlyYXdfZW50cnktPmNkYXRlID0gQ1RfTEVfVyhyYXdfZW50cnktPmNkYXRlKTsKKwlyYXdfZW50
cnktPmF0aW1lID0gQ1RfTEVfVyhyYXdfZW50cnktPmN0aW1lKTsKKwlyYXdfZW50cnktPmFkYXRl
ID0gQ1RfTEVfVyhyYXdfZW50cnktPmNkYXRlKTsKKwkKKwlzcGluX3VubG9jaygmZmF0eF9pbm9k
ZV9sb2NrKTsKKwltYXJrX2J1ZmZlcl9kaXJ0eShiaCk7CisJaWYoYmgpIGJyZWxzZShiaCk7CisJ
dW5sb2NrX2tlcm5lbCgpOworCQorCVBSSU5USygiRkFUWDogZmF0eF93cml0ZV9pbm9kZTogbGVh
dmluZ1xuIik7Cit9CisKK2ludCBmYXR4X3N0YXRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0
cnVjdCBrc3RhdGZzICpidWYpCit7CisJaW50IGZyZWUsbnI7CisKKwlsb2NrX2ZhdHgoc2IpOwor
ICAgICAgICBpZiAoRkFUWF9TQihzYiktPmZyZWVfY2x1c3RlcnMgIT0gLTEpCisJCWZyZWUgPSBG
QVRYX1NCKHNiKS0+ZnJlZV9jbHVzdGVyczsKKwllbHNlIHsKKwkJZnJlZSA9IDA7CisJCWZvciAo
bnIgPSAyOyBuciA8IEZBVFhfU0Ioc2IpLT5jbHVzdGVycysyOyBucisrKQorCQkJaWYgKCFmYXR4
X2FjY2VzcyhzYixuciwtMSkpIGZyZWUrKzsKKwkJRkFUWF9TQihzYiktPmZyZWVfY2x1c3RlcnMg
PSBmcmVlOworCX0KKwl1bmxvY2tfZmF0eChzYik7CisJYnVmLT5mX3R5cGUgPSBzYi0+c19tYWdp
YzsKKwlidWYtPmZfYnNpemUgPSAxIDw8IEZBVFhfU0Ioc2IpLT5jbHVzdGVyX2JpdHM7CisJYnVm
LT5mX2Jsb2NrcyA9IEZBVFhfU0Ioc2IpLT5jbHVzdGVyczsKKwlidWYtPmZfYmZyZWUgPSBmcmVl
OworCWJ1Zi0+Zl9iYXZhaWwgPSBmcmVlOworCWJ1Zi0+Zl9uYW1lbGVuID0gRkFUWF9NQVhfTkFN
RV9MRU5HVEg7CisJcmV0dXJuIDA7Cit9CisKKwordm9pZCBmYXR4X2RlbGV0ZV9pbm9kZShzdHJ1
Y3QgaW5vZGUgKmlub2RlKQoreworCWlmICghaXNfYmFkX2lub2RlKGlub2RlKSkgeworCQlsb2Nr
X2tlcm5lbCgpOworCQlpbm9kZS0+aV9zaXplID0gMDsKKwkJZmF0eF90cnVuY2F0ZShpbm9kZSk7
CisJCXVubG9ja19rZXJuZWwoKTsKKwl9CisJY2xlYXJfaW5vZGUoaW5vZGUpOworfQorCit2b2lk
IGZhdHhfY2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKK3sKKwlpZiAoaXNfYmFkX2lu
b2RlKGlub2RlKSkKKwkJcmV0dXJuOworCWxvY2tfa2VybmVsKCk7CisJc3Bpbl9sb2NrKCZmYXR4
X2lub2RlX2xvY2spOworCWZhdHhfY2FjaGVfaW52YWxfaW5vZGUoaW5vZGUpOworCWxpc3RfZGVs
KCZGQVRYX0koaW5vZGUpLT5pX2ZhdF9oYXNoKTsKKwlzcGluX3VubG9jaygmZmF0eF9pbm9kZV9s
b2NrKTsKKwl1bmxvY2tfa2VybmVsKCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc3VwZXJfb3BlcmF0
aW9ucyBmYXR4X3NvcHMgPSB7IAorCS53cml0ZV9pbm9kZQk9IGZhdHhfd3JpdGVfaW5vZGUsCisJ
LmRlbGV0ZV9pbm9kZQk9IGZhdHhfZGVsZXRlX2lub2RlLAorCS5wdXRfc3VwZXIJPSBmYXR4X3B1
dF9zdXBlciwKKwkuc3RhdGZzCQk9IGZhdHhfc3RhdGZzLAorCS5jbGVhcl9pbm9kZQk9IGZhdHhf
Y2xlYXJfaW5vZGUsCisJLnJlYWRfaW5vZGUJPSBtYWtlX2JhZF9pbm9kZSwKK307CisKK2VudW0g
eworCU9wdF91aWQsIE9wdF9naWQsIE9wdF91bWFzaywgT3B0X3F1aWV0LCBPcHRfZXJyLAorfTsK
Kworc3RhdGljIG1hdGNoX3RhYmxlX3QgZmF0X3Rva2VucyA9IHsKKwl7T3B0X3VpZCwgInVpZD0l
dSJ9LAorCXtPcHRfZ2lkLCAiZ2lkPSV1In0sCisgICAgICAgIHtPcHRfdW1hc2ssICJ1bWFzaz0l
byJ9LAorCXtPcHRfcXVpZXQsICJxdWlldCJ9LAorCXtPcHRfZXJyLCBOVUxMfQorfTsKKworc3Rh
dGljIGludCBwYXJzZV9vcHRpb25zKGNoYXIgKm9wdGlvbnMsc3RydWN0IGZhdHhfbW91bnRfb3B0
aW9ucyAqb3B0cykKK3sKKyAgICAgICAgY2hhciAqcDsKKyAgICAgICAgc3Vic3RyaW5nX3QgYXJn
c1tNQVhfT1BUX0FSR1NdOworICAgICAgICBpbnQgb3B0aW9uOworCisJb3B0cy0+ZnNfdWlkID0g
Y3VycmVudC0+dWlkOworICAgICAgICBvcHRzLT5mc19naWQgPSBjdXJyZW50LT5naWQ7CisgICAg
ICAgIG9wdHMtPmZzX3VtYXNrID0gY3VycmVudC0+ZnMtPnVtYXNrOworCisJd2hpbGUgKChwID0g
c3Ryc2VwKCZvcHRpb25zLCAiLCIpKSAhPSBOVUxMKSB7CisJCWludCB0b2tlbjsKKwkJaWYgKCEq
cCkKKwkJCWNvbnRpbnVlOworCQl0b2tlbiA9IG1hdGNoX3Rva2VuKHAsIGZhdF90b2tlbnMsIGFy
Z3MpOworCQlzd2l0Y2godG9rZW4pIHsKKwkJCWNhc2UgT3B0X3F1aWV0OgorCQkJCW9wdHMtPnF1
aWV0ID0gMTsKKwkJCQlicmVhazsKKwkJCWNhc2UgT3B0X3VpZDoKKwkJCQlpZiAobWF0Y2hfaW50
KCZhcmdzWzBdLCAmb3B0aW9uKSkKKwkJCQkJcmV0dXJuIDA7CisJCQkJb3B0cy0+ZnNfdWlkID0g
b3B0aW9uOworCQkJCWJyZWFrOworCQkJY2FzZSBPcHRfZ2lkOgorCQkJCWlmIChtYXRjaF9pbnQo
JmFyZ3NbMF0sICZvcHRpb24pKQorCQkJCQlyZXR1cm4gMDsKKwkJCQlvcHRzLT5mc19naWQgPSBv
cHRpb247CisJCQkJYnJlYWs7CisJCQljYXNlIE9wdF91bWFzazoKKwkJCQlpZiAobWF0Y2hfb2N0
YWwoJmFyZ3NbMF0sICZvcHRpb24pKQorCQkJCQlyZXR1cm4gMDsKKwkJCQlvcHRzLT5mc191bWFz
ayA9IG9wdGlvbjsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJcHJpbnRrKEtFUk5fRVJS
ICJGQVRYOiBVbnJlY29nbml6ZWQgbW91bnQgb3B0aW9uIFwiJXNcIiAiCisJCQkJCSJvciBtaXNz
aW5nIHZhbHVlXG4iLCBwKTsKKwkJCQlyZXR1cm4gMDsKKwkJfQorCX0KKwlyZXR1cm4gMTsKK30K
KworaW50IGZhdHhfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHZvaWQgKmRhdGEs
IGludCBzaWxlbnQpCit7CisJc3RydWN0IGlub2RlICpyb290X2lub2RlOworCXN0cnVjdCBidWZm
ZXJfaGVhZCAqYmg7CisJc3RydWN0IGZhdHhfc2JfaW5mbyAqc2JpOworCWludCBoYXJkX2Jsa3Np
emU7CisJaW50IGVycm9yOworCisJUFJJTlRLKCJGQVRYOiBlbnRlcmluZyBmYXR4X2ZpbGxfc3Vw
ZXJcbiIpOworCisJc2JpID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGZhdHhfc2JfaW5mbyksIEdG
UF9LRVJORUwpOworCWlmICghc2JpKQorCQlyZXR1cm4gLUVOT01FTTsKKwlzYi0+c19mc19pbmZv
ID0gc2JpOworCW1lbXNldChzYmksIDAsIHNpemVvZihzdHJ1Y3QgZmF0eF9zYl9pbmZvKSk7CisJ
c2JpLT5wcml2YXRlX2RhdGEgPSBOVUxMOworCisJc2JpLT5kaXJfb3BzID0gJmZhdHhfZGlyX2lu
b2RlX29wZXJhdGlvbnM7CisKKwlzYi0+c19vcCA9ICZmYXR4X3NvcHM7CisKKwloYXJkX2Jsa3Np
emUgPSA1MTI7CisKKwkvL3N0b3JlIGZhdCB2YWx1ZSBwYXJzZWQgaW50byBmYXR4X2JpdHMuLi5w
b3NzaWJseSBvdmVycmlkZGVuIGxhdGVyCisJc2JpLT5mYXRfYml0cyA9IDA7CisJCisJZXJyb3Ig
PSAtRUlOVkFMOworICAgICAgICBpZiAoIXBhcnNlX29wdGlvbnMoKGNoYXIgKikgZGF0YSwgJihz
YmktPm9wdGlvbnMpKSkKKyAgICAgICAgICAgICAgICBnb3RvIG91dF9mYWlsOworCQorCWZhdHhf
Y2FjaGVfaW5pdCgpOworCisJZXJyb3IgPSAtRUlPOworCisJc2JfbWluX2Jsb2Nrc2l6ZShzYiwg
NTEyKTsKKy8vCXNiX3NldF9ibG9ja3NpemUoc2IsIGhhcmRfYmxrc2l6ZSk7CisJYmggPSBzYl9i
cmVhZChzYiwgMCk7CisJaWYgKGJoID09IE5VTEwpIHsKKwkJUFJJTlRLKCJGQVRYOiB1bmFibGUg
dG8gcmVhZCBib290IHNlY3RvclxuIik7CisJCWdvdG8gb3V0X2ZhaWw7CisJfQorCisJLy8gaW5z
ZXJ0IGNhbGwocykgdG8gc3VwZXJibG9jayBwYXJzaW5nCisJZXJyb3IgPSBmYXR4X3BhcnNlX2Jv
b3RfYmxvY2soc2IsYmgpOworCWJyZWxzZShiaCk7CisKKwlpZiAoZXJyb3IpCisJCWdvdG8gb3V0
X2ludmFsaWQ7CisKKwlzYl9zZXRfYmxvY2tzaXplKHNiLCBzYi0+c19ibG9ja3NpemUpOworCisJ
c2ItPnNfbWFnaWMgPSBGQVRYX0JPT1RCTE9DS19NQUdJQzsKKwkvKiBzZXQgdXAgZW5vdWdoIHNv
IHRoYXQgaXQgY2FuIHJlYWQgYW4gaW5vZGUgKi8KKwlpbml0X01VVEVYKCZzYmktPmZhdHhfbG9j
ayk7CisJc2JpLT5wcmV2X2ZyZWUgPSAwOworCisJCisJc2JpLT5ubHNfaW8gPSBOVUxMOworCWlm
ICghIHNiaS0+bmxzX2lvKQorCQlzYmktPm5sc19pbyA9IGxvYWRfbmxzX2RlZmF1bHQoKTsKKwkK
Kwlyb290X2lub2RlID0gbmV3X2lub2RlKHNiKTsKKwlpZiAoIXJvb3RfaW5vZGUpCisJCWdvdG8g
b3V0X3VubG9hZF9ubHM7CisJcm9vdF9pbm9kZS0+aV9pbm8gPSBGQVRYX1JPT1RfSU5POworCWZh
dHhfcmVhZF9yb290KHJvb3RfaW5vZGUpOworCWluc2VydF9pbm9kZV9oYXNoKHJvb3RfaW5vZGUp
OworCXNiLT5zX3Jvb3QgPSBkX2FsbG9jX3Jvb3Qocm9vdF9pbm9kZSk7CisJaWYgKCFzYi0+c19y
b290KQorCQlnb3RvIG91dF9ub19yb290OworCisJUFJJTlRLKCJGQVRYOiBsZWF2ZSBmYXR4X2Zp
bGxfc3VwZXJcbiIpOworCQorCXJldHVybiAwOworCitvdXRfbm9fcm9vdDoKKwlQUklOVEsoIkZB
VFg6IGdldCByb290IGlub2RlIGZhaWxlZFxuIik7CisJaXB1dChyb290X2lub2RlKTsKK291dF91
bmxvYWRfbmxzOgorCXVubG9hZF9ubHMoc2JpLT5ubHNfaW8pOworCWdvdG8gb3V0X2ZhaWw7Citv
dXRfaW52YWxpZDoKKwllcnJvciA9IC1FSU5WQUw7CisJaWYgKCFzaWxlbnQpIHsKKwkJUFJJTlRL
KCJWRlM6IENhbid0IGZpbmQgYSB2YWxpZCBGQVQgZmlsZXN5c3RlbSBvbiBkZXYgJXMuXG4iLAor
CQkJc2ItPnNfaWQpOworCX0KK291dF9mYWlsOgorCWlmKHNiaS0+cHJpdmF0ZV9kYXRhKQorCQlr
ZnJlZShzYmktPnByaXZhdGVfZGF0YSk7CisJc2JpLT5wcml2YXRlX2RhdGEgPSBOVUxMOworCWtm
cmVlKHNiaSk7IAorCXJldHVybiBlcnJvcjsKK30KKwkJCitpbnQgZmF0eF9ub3RpZnlfY2hhbmdl
KHN0cnVjdCBkZW50cnkgKiBkZW50cnksIHN0cnVjdCBpYXR0ciAqIGF0dHIpCit7CisJc3RydWN0
IHN1cGVyX2Jsb2NrICpzYiA9IGRlbnRyeS0+ZF9zYjsKKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0g
ZGVudHJ5LT5kX2lub2RlOworCWludCBlcnJvcjsKKworCS8qIEZBVCBjYW5ub3QgdHJ1bmNhdGUg
dG8gYSBsb25nZXIgZmlsZSAqLworCWlmIChhdHRyLT5pYV92YWxpZCAmIEFUVFJfU0laRSkgewor
CQlpZiAoYXR0ci0+aWFfc2l6ZSA+IGlub2RlLT5pX3NpemUpCisJCQlyZXR1cm4gLUVQRVJNOwor
CX0KKworCWVycm9yID0gaW5vZGVfY2hhbmdlX29rKGlub2RlLCBhdHRyKTsKKwlpZiAoZXJyb3Ip
CisJCXJldHVybiBGQVRYX1NCKHNiKS0+b3B0aW9ucy5xdWlldCA/IDAgOiBlcnJvcjsKKworCWlm
ICgoKGF0dHItPmlhX3ZhbGlkICYgQVRUUl9VSUQpICYmIAorCSAgICAgKGF0dHItPmlhX3VpZCAh
PSBGQVRYX1NCKHNiKS0+b3B0aW9ucy5mc191aWQpKSB8fAorCSAgICAoKGF0dHItPmlhX3ZhbGlk
ICYgQVRUUl9HSUQpICYmIAorCSAgICAgKGF0dHItPmlhX2dpZCAhPSBGQVRYX1NCKHNiKS0+b3B0
aW9ucy5mc19naWQpKSB8fAorCSAgICAoKGF0dHItPmlhX3ZhbGlkICYgQVRUUl9NT0RFKSAmJgor
CSAgICAgKGF0dHItPmlhX21vZGUgJiB+RkFUWF9WQUxJRF9NT0RFKSkpCisJCWVycm9yID0gLUVQ
RVJNOworCisJaWYgKGVycm9yKQorCQlyZXR1cm4gRkFUWF9TQihzYiktPm9wdGlvbnMucXVpZXQg
PyAwIDogZXJyb3I7CisKKwllcnJvciA9IGlub2RlX3NldGF0dHIoaW5vZGUsIGF0dHIpOworCWlm
IChlcnJvcikKKwkJcmV0dXJuIGVycm9yOworCisJaWYgKFNfSVNESVIoaW5vZGUtPmlfbW9kZSkp
CisJCWlub2RlLT5pX21vZGUgfD0gU19JWFVHTzsKKworCWlub2RlLT5pX21vZGUgPSAoKGlub2Rl
LT5pX21vZGUgJiBTX0lGTVQpIHwgKCgoKGlub2RlLT5pX21vZGUgJiBTX0lSV1hVCisJICAgICYg
fkZBVFhfU0Ioc2IpLT5vcHRpb25zLmZzX3VtYXNrKSB8IFNfSVJVU1IpID4+IDYpKlNfSVhVR08p
KSAmCisJICAgIH5GQVRYX1NCKHNiKS0+b3B0aW9ucy5mc191bWFzazsKKwlyZXR1cm4gMDsKK30K
KwpkaWZmIC11ck4gbGludXgtMi42LjUub3JpZy9mcy9mYXR4L21pc2MuYyBsaW51eC0yLjYuNS9m
cy9mYXR4L21pc2MuYwotLS0gbGludXgtMi42LjUub3JpZy9mcy9mYXR4L21pc2MuYwkxOTcwLTAx
LTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUvZnMvZmF0eC9taXNj
LmMJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSwyNzIgQEAK
Ky8qCisgKiAgbGludXgvZnMvZmF0eC9taXNjLmMKKyAqCisgKiAgV3JpdHRlbiAyMDAzIGJ5IEVk
Z2FyIEh1Y2VrIGFuZCBMZWhuZXIgRnJhbnoKKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2Zh
dHhfZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5l
bC5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+
CisjaW5jbHVkZSA8bGludXgvc3RhdC5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KKyNpbmNs
dWRlIDxsaW51eC90eXBlcy5oPgorCisjZGVmaW5lIFBSSU5USyhmb3JtYXQsIGFyZ3MuLi4pIGRv
IHsgaWYgKGZhdHhfZGVidWcpIHByaW50ayggZm9ybWF0LCAjI2FyZ3MgKTsgfSB3aGlsZSgwKQor
CisvKgorICogZmF0eF9mc19wYW5pYyByZXBvcnRzIGEgc2V2ZXJlIGZpbGUgc3lzdGVtIHByb2Js
ZW0gYW5kIHNldHMgdGhlIGZpbGUgc3lzdGVtCisgKiByZWFkLW9ubHkuIFRoZSBmaWxlIHN5c3Rl
bSBjYW4gYmUgbWFkZSB3cml0YWJsZSBhZ2FpbiBieSByZW1vdW50aW5nIGl0LgorICovCisKK3Zv
aWQgZmF0eF9mc19wYW5pYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsY29uc3QgY2hhciAqbXNnKQor
eworCWludCBub3Rfcm87CisKKwlub3Rfcm8gPSAhKHMtPnNfZmxhZ3MgJiBNU19SRE9OTFkpOwor
CWlmIChub3Rfcm8pIHMtPnNfZmxhZ3MgfD0gTVNfUkRPTkxZOworCXByaW50aygiRmlsZXN5c3Rl
bSBwYW5pYyAoZGV2ICVzKS5cbiAgJXNcbiIsIHMtPnNfaWQsIG1zZyk7CisJaWYgKG5vdF9ybykK
KwkJcHJpbnRrKCIgIEZpbGUgc3lzdGVtIGhhcyBiZWVuIHNldCByZWFkLW9ubHlcbiIpOworfQor
CitzdGF0aWMgaW50IGRheV9uW10gPSB7ICAwLCAzMSwgNTksIDkwLDEyMCwxNTEsMTgxLDIxMiwy
NDMsMjczLDMwNCwzMzQsMCwwLDAsMCB9OworCQkvKiAgICBKYW4gRmViIE1hciBBcHIgTWF5IEp1
biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYyAqLworCitleHRlcm4gc3RydWN0IHRpbWV6b25lIHN5
c190ejsKKworaW50IGZhdHhfZGF0ZV9kb3MydW5peCh1bnNpZ25lZCBzaG9ydCB0aW1lLHVuc2ln
bmVkIHNob3J0IGRhdGUpCit7CisJaW50IG1vbnRoLHllYXIsc2VjcyxkYXlzOworCisJLyogZmly
c3Qgc3VidHJhY3QgYW5kIG1hc2sgYWZ0ZXIgdGhhdC4uLiBPdGhlcndpc2UsIGlmCisJICAgZGF0
ZSA9PSAwLCBiYWQgdGhpbmdzIGhhcHBlbiAqLworCW1vbnRoPSAgKChkYXRlID4+IDUpIC0gMSkg
JiAxNTsKKwl5ZWFyID0gIGRhdGUgPj4gOTsKKwlkYXlzID0gIChkYXRlICYgMzEpLTErZGF5X25b
bW9udGhdKyh5ZWFyLzQpKyh5ZWFyKzMwKSozNjU7CisJLy9za2lwcGVkIGFuZCBjdXJyZW50IGxl
YXAgeWVhcnMKKwlkYXlzICs9ICgoeWVhciAmIDMpID09IDAgJiYgbW9udGggPCAyID8gMCA6IDEp
ICsgNzsgCisJCisJc2VjcyA9ICAodGltZSAmIDMxKSoyOwkJLy9zZWNvbmRzIGludG8gY3VyciBt
aW51dGUKKwlzZWNzICs9IDYwKigodGltZSA+PiA1KSAmIDYzKTsJLy9taW51dGVzIGludG8gY3Vy
ciBob3VyCisJc2VjcyArPSAzNjAwKih0aW1lID4+IDExKTsJLy9ob3VycyBpbnRvIGN1cnIgZGF5
CisJc2VjcyArPSA4NjQwMCpkYXlzOwkJLy9kYXlzIChmcm9tIDEuMS43MCkKKwkKKwlzZWNzICs9
IHN5c190ei50el9taW51dGVzd2VzdCo2MDsKKwlyZXR1cm4gc2VjczsKK30KKworCisvKgorICog
ZmF0X2FkZF9jbHVzdGVyIHRyaWVzIHRvIGFsbG9jYXRlIGEgbmV3IGNsdXN0ZXIgYW5kIGFkZHMg
aXQgdG8gdGhlCisgKiBmaWxlIHJlcHJlc2VudGVkIGJ5IGlub2RlLgorICovCitpbnQgZmF0eF9h
ZGRfY2x1c3RlcihzdHJ1Y3QgaW5vZGUgKmlub2RlKQoreworCXN0cnVjdCBzdXBlcl9ibG9jayAq
c2IgPSBpbm9kZS0+aV9zYjsKKwlpbnQgY291bnQsIG5yLCBsaW1pdCwgbGFzdCwgY3VyciwgZmls
ZV9jbHVzdGVyOworCWludCBjbHVzdGVyX3NpemUgPSBGQVRYX1NCKHNiKS0+Y2x1c3Rlcl9zaXpl
OworCWludCByZXMgPSAtRU5PU1BDOworCQorCWxvY2tfZmF0eChzYik7CisKKwlpZiAoRkFUWF9T
QihzYiktPmZyZWVfY2x1c3RlcnMgPT0gMCkgeworCQl1bmxvY2tfZmF0eChzYik7CisJCXJldHVy
biByZXM7CisJfQorCWxpbWl0ID0gRkFUWF9TQihzYiktPmNsdXN0ZXJzOworCW5yID0gbGltaXQ7
IC8qIHRvIGtlZXAgR0NDIGhhcHB5ICovCisJZm9yIChjb3VudCA9IDA7IGNvdW50IDwgbGltaXQ7
IGNvdW50KyspIHsKKwkJbnIgPSAoKGNvdW50ICsgRkFUWF9TQihzYiktPnByZXZfZnJlZSkgJSBs
aW1pdCkgKyAyOworCQlpZiAoZmF0eF9hY2Nlc3Moc2IsIG5yLCAtMSkgPT0gMCkKKwkJCWJyZWFr
OworCX0KKwlpZiAoY291bnQgPj0gbGltaXQpIHsKKwkJRkFUWF9TQihzYiktPmZyZWVfY2x1c3Rl
cnMgPSAwOworCQl1bmxvY2tfZmF0eChzYik7CisJCXJldHVybiByZXM7CisJfQorCQorCUZBVFhf
U0Ioc2IpLT5wcmV2X2ZyZWUgPSAoY291bnQgKyBGQVRYX1NCKHNiKS0+cHJldl9mcmVlICsgMSkg
JSBsaW1pdDsKKwlmYXR4X2FjY2VzcyhzYiwgbnIsIEVPRl9GQVQoc2IpKTsKKwlpZiAoRkFUWF9T
QihzYiktPmZyZWVfY2x1c3RlcnMgIT0gLTEpCisJCUZBVFhfU0Ioc2IpLT5mcmVlX2NsdXN0ZXJz
LS07CisJCisJdW5sb2NrX2ZhdHgoc2IpOworCQorCS8qIFdlIG11c3QgbG9jYXRlIHRoZSBsYXN0
IGNsdXN0ZXIgb2YgdGhlIGZpbGUgdG8gYWRkIHRoaXMKKwkgICBuZXcgb25lIChucikgdG8gdGhl
IGVuZCBvZiB0aGUgbGluayBsaXN0ICh0aGUgRkFUKS4KKwkgICAKKwkgICBIZXJlIGZpbGVfY2x1
c3RlciB3aWxsIGJlIHRoZSBudW1iZXIgb2YgdGhlIGxhc3QgY2x1c3RlciBvZiB0aGUKKwkgICBm
aWxlIChiZWZvcmUgd2UgYWRkIG5yKS4KKwkgICAKKwkgICBsYXN0IGlzIHRoZSBjb3JyZXNwb25k
aW5nIGNsdXN0ZXIgbnVtYmVyIG9uIHRoZSBkaXNrLiBXZSB3aWxsCisJICAgdXNlIGxhc3QgdG8g
cGx1ZyB0aGUgbnIgY2x1c3Rlci4gV2Ugd2lsbCB1c2UgZmlsZV9jbHVzdGVyIHRvCisJICAgdXBk
YXRlIHRoZSBjYWNoZS4KKwkqLworCWxhc3QgPSBmaWxlX2NsdXN0ZXIgPSAwOworCWlmICgoY3Vy
ciA9IEZBVFhfSShpbm9kZSktPmlfc3RhcnQpICE9IDApIHsKKwkJZmF0eF9jYWNoZV9sb29rdXAo
aW5vZGUsIElOVF9NQVgsICZsYXN0LCAmY3Vycik7CisJCWZpbGVfY2x1c3RlciA9IGxhc3Q7CisJ
CXdoaWxlIChjdXJyICYmIGN1cnIgIT0gLTEpeworCQkJZmlsZV9jbHVzdGVyKys7CisJCQlpZiAo
IShjdXJyID0gZmF0eF9hY2Nlc3Moc2IsIGxhc3QgPSBjdXJyLC0xKSkpIHsKKwkJCQlmYXR4X2Zz
X3BhbmljKHNiLCAiRmlsZSB3aXRob3V0IEVPRiIpOworCQkJCXJldHVybiByZXM7CisJCQl9CisJ
CX0KKwl9CisJaWYgKGxhc3QpIHsKKwkJZmF0eF9hY2Nlc3Moc2IsIGxhc3QsIG5yKTsKKwkJZmF0
eF9jYWNoZV9hZGQoaW5vZGUsIGZpbGVfY2x1c3RlciwgbnIpOworCX0gZWxzZSB7CisJCUZBVFhf
SShpbm9kZSktPmlfc3RhcnQgPSBucjsKKwkJRkFUWF9JKGlub2RlKS0+aV9sb2dzdGFydCA9IG5y
OworCQltYXJrX2lub2RlX2RpcnR5KGlub2RlKTsKKwl9CisJaWYgKGZpbGVfY2x1c3RlcgorCSAg
ICAhPSBpbm9kZS0+aV9ibG9ja3MgLyBjbHVzdGVyX3NpemUgLyAoc2ItPnNfYmxvY2tzaXplIC8g
NTEyKSkgeworCQlwcmludGsgKCJmaWxlX2NsdXN0ZXIgYmFkbHkgY29tcHV0ZWQhISEgJWQgPD4g
JWxkXG4iLAorCQkJZmlsZV9jbHVzdGVyLAorCQkJaW5vZGUtPmlfYmxvY2tzIC8gY2x1c3Rlcl9z
aXplIC8gKHNiLT5zX2Jsb2Nrc2l6ZSAvIDUxMikpOworCQlmYXR4X2NhY2hlX2ludmFsX2lub2Rl
KGlub2RlKTsKKwl9CisJaW5vZGUtPmlfYmxvY2tzICs9ICgxIDw8IEZBVFhfU0Ioc2IpLT5jbHVz
dGVyX2JpdHMpIC8gNTEyOworCXJldHVybiBucjsKK30KKworLyogQ29udmVydCBsaW5lYXIgVU5J
WCBkYXRlIHRvIGEgTVMtRE9TIHRpbWUvZGF0ZSBwYWlyLiAqLworCit2b2lkIGZhdHhfZGF0ZV91
bml4MmRvcyhpbnQgdW5peF9kYXRlLHVuc2lnbmVkIHNob3J0ICp0aW1lLAorICAgIHVuc2lnbmVk
IHNob3J0ICpkYXRlKQoreworCWludCBkYXkseWVhcixubF9kYXksbW9udGg7CisKKwl1bml4X2Rh
dGUgLT0gc3lzX3R6LnR6X21pbnV0ZXN3ZXN0KjYwOworCisJLyogYm91bmQgbG93IGVuZCBhdCBK
YW4gMSBHTVQgMDA6MDA6MDAgMjAwMC4gKi8KKwlpZiAodW5peF9kYXRlIDwgKCgzMCAqIDM2NSkg
KyA3KSAqIDI0ICogNjAgKiA2MCkgeworCQl1bml4X2RhdGUgPSAoKDMwICogMzY1KSArIDcpICog
MjQgKiA2MCAqIDYwOworCX0KKwkJCisJKnRpbWUgPSAodW5peF9kYXRlICUgNjApLzIgKyAJCQkv
L3NlY29uZHMKKwkJKCgodW5peF9kYXRlLzYwKSAlIDYwKSA8PCA1KSArCQkvL21pbnV0ZXMKKwkJ
KCgodW5peF9kYXRlLzM2MDApICUgMjQpIDw8IDExKTsJLy9ob3VycworCQorCWRheSA9IHVuaXhf
ZGF0ZS84NjQwMC0oMzAgKiAzNjUgKyA3KTsJCS8vZGF5cyAoZnJvbSAxLjEuMjAwMCkKKwl5ZWFy
ID0gZGF5LzM2NTsKKwlpZiAoKHllYXIrMykvNCszNjUqeWVhciA+IGRheSkgeWVhci0tOworCWRh
eSAtPSAoeWVhciszKS80KzM2NSp5ZWFyOworCWlmIChkYXkgPT0gNTkgJiYgISh5ZWFyICYgMykp
IHsKKwkJbmxfZGF5ID0gZGF5OworCQltb250aCA9IDI7CisJfQorCWVsc2UgeworCQlubF9kYXkg
PSAoeWVhciAmIDMpIHx8IGRheSA8PSA1OSA/IGRheSA6IGRheS0xOworCQlmb3IgKG1vbnRoID0g
MDsgbW9udGggPCAxMjsgbW9udGgrKykKKwkJCWlmIChkYXlfblttb250aF0gPiBubF9kYXkpIGJy
ZWFrOworCX0KKwkqZGF0ZSA9IG5sX2RheS1kYXlfblttb250aC0xXSsxKyhtb250aCA8PCA1KSso
eWVhciA8PCA5KTsKK30KKworc3RydWN0IGJ1ZmZlcl9oZWFkICpmYXR4X2V4dGVuZF9kaXIoc3Ry
dWN0IGlub2RlICppbm9kZSkKK3sKKwlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gaW5vZGUtPmlf
c2I7CisJaW50IG5yLCBzZWN0b3IsIGxhc3Rfc2VjdG9yOworCXN0cnVjdCBidWZmZXJfaGVhZCAq
YmgsICpyZXMgPSBOVUxMOworCWludCBjbHVzdGVyX3NpemUgPSBGQVRYX1NCKHNiKS0+Y2x1c3Rl
cl9zaXplOworCisJaWYgKGlub2RlLT5pX2lubyA9PSBGQVRYX1JPT1RfSU5PKQorCQkJcmV0dXJu
IHJlczsKKworCW5yID0gZmF0eF9hZGRfY2x1c3Rlcihpbm9kZSk7CisJaWYgKG5yIDwgMCkKKwkJ
cmV0dXJuIHJlczsKKwkKKwlzZWN0b3IgPSBGQVRYX1NCKHNiKS0+ZGF0YV9zdGFydCArIChuciAt
IDIpICogY2x1c3Rlcl9zaXplOworCWxhc3Rfc2VjdG9yID0gc2VjdG9yICsgY2x1c3Rlcl9zaXpl
OworCWZvciAoIDsgc2VjdG9yIDwgbGFzdF9zZWN0b3I7IHNlY3RvcisrKSB7CisjaWZkZWYgREVC
VUcKKwkJcHJpbnRrKCJ6ZXJvaW5nIHNlY3RvciAlZFxuIiwgc2VjdG9yKTsKKyNlbmRpZgorCQlp
ZiAoIShiaCA9IHNiX2dldGJsayhzYiwgc2VjdG9yKSkpCisJCQlwcmludGsoImdldGJsayBmYWls
ZWRcbiIpOworCQllbHNlIHsKKwkJCW1lbXNldChiaC0+Yl9kYXRhLCAweEZGLCBzYi0+c19ibG9j
a3NpemUpOworCQkJc2V0X2J1ZmZlcl91cHRvZGF0ZShiaCk7CisJCQltYXJrX2J1ZmZlcl9kaXJ0
eShiaCk7CisJCQlpZiAoIXJlcykKKwkJCQlyZXMgPSBiaDsKKwkJCWVsc2UKKwkJCQlpZihiaCkg
YnJlbHNlKGJoKTsKKwkJfQorCX0KKwlpZiAoaW5vZGUtPmlfc2l6ZSAmIChzYi0+c19ibG9ja3Np
emUgLSAxKSkgeworCQlmYXR4X2ZzX3BhbmljKHNiLCAiT2RkIGRpcmVjdG9yeSBzaXplIik7CisJ
CWlub2RlLT5pX3NpemUgPSAoaW5vZGUtPmlfc2l6ZSArIHNiLT5zX2Jsb2Nrc2l6ZSkKKwkJCSYg
fihzYi0+c19ibG9ja3NpemUgLSAxKTsKKwl9CisJaW5vZGUtPmlfc2l6ZSArPSAxIDw8IEZBVFhf
U0Ioc2IpLT5jbHVzdGVyX2JpdHM7CisJRkFUWF9JKGlub2RlKS0+bW11X3ByaXZhdGUgKz0gMSA8
PCBGQVRYX1NCKHNiKS0+Y2x1c3Rlcl9iaXRzOworCW1hcmtfaW5vZGVfZGlydHkoaW5vZGUpOwor
CisJcmV0dXJuIHJlczsKK30KKworLyogUmV0dXJucyB0aGUgaW5vZGUgbnVtYmVyIG9mIHRoZSBk
aXJlY3RvcnkgZW50cnkgYXQgb2Zmc2V0IHBvcy4gSWYgYmggaXMKKyAgIG5vbi1OVUxMLCBpdCBp
cyBicmVsc2UnZCBiZWZvcmUuIFBvcyBpcyBpbmNyZW1lbnRlZC4gVGhlIGJ1ZmZlciBoZWFkZXIg
aXMKKyAgIHJldHVybmVkIGluIGJoLgorICAgQVYuIE1vc3Qgb2Z0ZW4gd2UgZG8gaXQgaXRlbS1i
eS1pdGVtLiBNYWtlcyBzZW5zZSB0byBvcHRpbWl6ZS4KKyAgIEFWLiBPSywgdGhlcmUgd2UgZ286
IGlmIGJvdGggYmggYW5kIGRlIGFyZSBub24tTlVMTCB3ZSBhc3N1bWUgdGhhdCB3ZSBqdXN0Cisg
ICBBVi4gd2FudCB0aGUgbmV4dCBlbnRyeSAodG9vayBvbmUgZXhwbGljaXQgZGU9TlVMTCBpbiB2
ZmF0L25hbWVpLmMpLgorICAgQVYuIEl0J3MgZG9uZSBpbiBmYXR4X2dldF9lbnRyeSgpIChpbmxp
bmVkKSwgaGVyZSB0aGUgc2xvdyBjYXNlIGxpdmVzLgorICAgQVYuIEFkZGl0aW9uYWxseSwgd2hl
biB3ZSByZXR1cm4gLTEgKGkuZS4gcmVhY2hlZCB0aGUgZW5kIG9mIGRpcmVjdG9yeSkKKyAgIEFW
LiB3ZSBtYWtlIGJoIE5VTEwuIAorICovCisKK2ludCBmYXR4X2dldF9lbnRyeShzdHJ1Y3QgaW5v
ZGUgKmRpciwgbG9mZl90ICpwb3Msc3RydWN0IGJ1ZmZlcl9oZWFkICoqYmgsCisgICAgc3RydWN0
IGZhdHhfZGlyX2VudHJ5ICoqZGUsIGxvZmZfdCAqaV9wb3MpCit7CisJc3RydWN0IHN1cGVyX2Js
b2NrICpzYiA9IGRpci0+aV9zYjsKKwlzdHJ1Y3QgZmF0eF9zYl9pbmZvICpzYmkgPSBGQVRYX1NC
KHNiKTsKKwlpbnQgc2VjdG9yLCBvZmZzZXQ7CisKKwl3aGlsZSAoMSkgeworCQlvZmZzZXQgPSAq
cG9zOworCQlQUklOVEsoImdldF9lbnRyeSBvZmZzZXQgJWRcbiIsb2Zmc2V0KTsKKwkJaWYgKCpi
aCkKKwkJCWlmKCpiaCkgYnJlbHNlKCpiaCk7CisJCSpiaCA9IE5VTEw7CisJCWlmICgoc2VjdG9y
ID0gZmF0eF9ibWFwKGRpcixvZmZzZXQgPj4gc2ItPnNfYmxvY2tzaXplX2JpdHMpKSA9PSAtMSkK
KwkJCXJldHVybiAtMTsKKwkJUFJJTlRLKCJGQVRYOiBnZXRfZW50cnkgc2VjdG9yICVkICVwXG4i
LHNlY3RvciwqYmgpOworCQlQUklOVEsoIkZBVFg6IGdldF9lbnRyeSBzZWN0b3IgYXByZXMgYnJl
bHNlXG4iKTsKKwkJaWYgKCFzZWN0b3IpCisJCQlyZXR1cm4gLTE7IC8qIGJleW9uZCBFT0YgKi8K
KwkJKnBvcyArPSBzaXplb2Yoc3RydWN0IGZhdHhfZGlyX2VudHJ5KTsKKwkJaWYgKCEoKmJoID0g
c2JfYnJlYWQoc2IsIHNlY3RvcikpKSB7CisJCQlwcmludGsoIkRpcmVjdG9yeSBzcmVhZCAoc2Vj
dG9yIDB4JXgpIGZhaWxlZFxuIixzZWN0b3IpOworCQkJY29udGludWU7CisJCX0KKwkJUFJJTlRL
KCJGQVRYOiBnZXRfZW50cnkgYXByZXMgc3JlYWRcbiIpOworCisJCW9mZnNldCAmPSBzYi0+c19i
bG9ja3NpemUgLSAxOworCQkqZGUgPSAoc3RydWN0IGZhdHhfZGlyX2VudHJ5ICopICgoKmJoKS0+
Yl9kYXRhICsgb2Zmc2V0KTsKKwkJKmlfcG9zID0gKHNlY3RvciA8PCBzYmktPmRpcl9wZXJfYmxv
Y2tfYml0cykgKyAob2Zmc2V0ID4+IEZBVFhfRElSX0JJVFMpOworCisJCXJldHVybiAwOworCX0K
K30KKwordm9pZCBsb2NrX2ZhdHgoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKK3sKKwlkb3duKCYo
RkFUWF9TQihzYiktPmZhdHhfbG9jaykpOworfQorCit2b2lkIHVubG9ja19mYXR4KHN0cnVjdCBz
dXBlcl9ibG9jayAqc2IpCit7CisJdXAoJihGQVRYX1NCKHNiKS0+ZmF0eF9sb2NrKSk7Cit9CisK
ZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvZnMvZmF0eC9uYW1laS5jIGxpbnV4LTIuNi41L2Zz
L2ZhdHgvbmFtZWkuYwotLS0gbGludXgtMi42LjUub3JpZy9mcy9mYXR4L25hbWVpLmMJMTk3MC0w
MS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2ZzL2ZhdHgvbmFt
ZWkuYwkyMDA0LTA1LTAxIDE1OjIwOjQzLjAwMDAwMDAwMCArMDEwMApAQCAtMCwwICsxLDQxOSBA
QAorLyoKKyAqICBsaW51eC9mcy9mYXR4L25hbWVpLmMKKyAqCisgKiAgV3JpdHRlbiAyMDAzIGJ5
IEVkZ2FyIEh1Y2VrIGFuZCBMZWhuZXIgRnJhbnoKKyAqCisgKi8KKworI2RlZmluZSBfX05PX1ZF
UlNJT05fXworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorCisjaW5jbHVkZSA8bGludXgvc2No
ZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9mYXR4X2ZzLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8u
aD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKworI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+
CisKKyNkZWZpbmUgUFJJTlRLKGZvcm1hdCwgYXJncy4uLikgZG8geyBpZiAoZmF0eF9kZWJ1Zykg
cHJpbnRrKCBmb3JtYXQsICMjYXJncyApOyB9IHdoaWxlKDApCisKKy8qIENoYXJhY3RlcnMgdGhh
dCBhcmUgdW5kZXNpcmFibGUgaW4gYW4gTVMtRE9TIGZpbGUgbmFtZSAqLworICAKK3N0YXRpYyBj
aGFyIGJhZF9jaGFyc1tdID0gIio/PD58XCI7IjsKKworLyoKKyAqIEZvcm1hdHMgYSBGQVRYIGZp
bGUgbmFtZS4gUmVqZWN0cyBpbnZhbGlkIG5hbWVzLiAKKyAqLworCitzdGF0aWMgaW50IGZhdHhf
Zm9ybWF0X25hbWUoIGNvbnN0IGNoYXIgKm5hbWUsaW50IGxlbixjaGFyICpvdXRfbmFtZSApCit7
CisJaW50IGk7CisJY2hhciB0cmFzaFtGQVRYX01BWF9OQU1FX0xFTkdUSF07CisKKwlpZiAobGVu
ID4gRkFUWF9NQVhfTkFNRV9MRU5HVEgpIHJldHVybiAtRUlOVkFMOworCQorCWlmIChvdXRfbmFt
ZSA9PSBOVUxMKSBvdXRfbmFtZSA9IHRyYXNoOworCQorCW1lbXNldChvdXRfbmFtZSwweEZGLEZB
VFhfTUFYX05BTUVfTEVOR1RIKTsKKwkKKwkvL2NoZWNrIGZvciBiYWQgY2hhcmFjdGVycyBpbiBu
YW1lCisJZm9yKGk9MDsgaTxsZW47IGkrKykgeworCQlpZiAoc3RyY2hyKGJhZF9jaGFycyxuYW1l
W2ldKSkgcmV0dXJuIC1FSU5WQUw7CisJCW91dF9uYW1lW2ldID0gbmFtZVtpXTsKKwl9CisKKwly
ZXR1cm4gMDsKK30KKworLyoKKyAqIExvY2F0ZXMgYSBkaXJlY3RvcnkgZW50cnkuICBVc2VzIHVu
Zm9ybWF0dGVkIG5hbWUuIAorICovCisKK3N0YXRpYyBpbnQgZmF0eF9maW5kKCBzdHJ1Y3QgaW5v
ZGUgKmRpciwgY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbiwgc3RydWN0IGJ1ZmZlcl9oZWFkICoq
YmgsIAorCQlzdHJ1Y3QgZmF0eF9kaXJfZW50cnkgKipkZSwgbG9mZl90ICppX3BvcykKK3sKKwkv
L3ZlcmlmeSBpdHMgYSB2YWxpZCBuYW1lCisJaWYgKGZhdHhfZm9ybWF0X25hbWUobmFtZSxsZW4s
TlVMTCkgPCAwKSByZXR1cm4gLUVOT0VOVDsKKworCVBSSU5USygiRkFUWDogZmF0eF9maW5kXG4i
KTsKKwkKKwkvL2ZpbmQgdGhlIG5hbWUgaW4gdGhlIGRpcmVjdG9yeQorCXJldHVybiBmYXR4X3Nj
YW4oZGlyLG5hbWUsbGVuLGJoLGRlLGlfcG9zKTsKKworfQorCisvKiAKKyAqIEdldCBpbm9kZSB1
c2luZyBkaXJlY3RvcnkgYW5kIG5hbWUgCisgKi8KKworc3RydWN0IGRlbnRyeSAqZmF0eF9sb29r
dXAoc3RydWN0IGlub2RlICpkaXIsc3RydWN0IGRlbnRyeSAqZGVudHJ5LHN0cnVjdCBuYW1laWRh
dGEgKm5kKQoreworCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBkaXItPmlfc2I7CisJc3RydWN0
IGlub2RlICppbm9kZSA9IE5VTEw7CisJc3RydWN0IGZhdHhfZGlyX2VudHJ5ICpkZTsKKwlzdHJ1
Y3QgYnVmZmVyX2hlYWQgKmJoID0gTlVMTDsKKwlsb2ZmX3QgaV9wb3M7CisJaW50IHJlczsKKwkK
KwlQUklOVEsoIkZBVFg6IGZhdHhfbG9va3VwXG4iKTsKKworCXJlcyA9IGZhdHhfZmluZChkaXIs
IGRlbnRyeS0+ZF9uYW1lLm5hbWUsIGRlbnRyeS0+ZF9uYW1lLmxlbiwgJmJoLAorCQkJJmRlLCAm
aV9wb3MpOworCisJaWYgKHJlcyA9PSAtRU5PRU5UKQorCQlnb3RvIGFkZDsKKwlpZiAocmVzIDwg
MCkKKwkJZ290byBvdXQ7CisJaW5vZGUgPSBmYXR4X2J1aWxkX2lub2RlKHNiLCBkZSwgaV9wb3Ms
ICZyZXMpOworCWlmIChyZXMpCisJCWdvdG8gb3V0OworYWRkOgorCWRfYWRkKGRlbnRyeSwgaW5v
ZGUpOworCXJlcyA9IDA7CitvdXQ6CisJaWYgKGJoKQorCQlicmVsc2UoYmgpOworCXJldHVybiBF
UlJfUFRSKHJlcyk7Cit9CisKKy8qIAorICogQ3JlYXRlcyBhIGRpcmVjdG9yeSBlbnRyeSAobmFt
ZSBpcyBhbHJlYWR5IGZvcm1hdHRlZCkuIAorICovCisKK3N0YXRpYyBpbnQgZmF0eF9hZGRfZW50
cnkoCisJCXN0cnVjdCBpbm9kZSAqZGlyLCAKKwkJY29uc3QgY2hhciAqbmFtZSwKKwkJaW50IGxl
biwKKwkJc3RydWN0IGJ1ZmZlcl9oZWFkICoqYmgsCisJCXN0cnVjdCBmYXR4X2Rpcl9lbnRyeSAq
KmRlLAorCQlsb2ZmX3QgKmlfcG9zLAorCQlpbnQgaXNfZGlyICkKK3sKKwlpbnQgcmVzOworCisJ
aWYgKChyZXMgPSBmYXR4X2RvX2FkZF9lbnRyeShkaXIsIGJoLCBkZSwgaV9wb3MpKTwwKQorCQly
ZXR1cm4gcmVzOworCWRpci0+aV9jdGltZSA9IGRpci0+aV9tdGltZSA9IENVUlJFTlRfVElNRTsK
KwltYXJrX2lub2RlX2RpcnR5KGRpcik7CisJbWVtc2V0KCgqZGUpLT5uYW1lLDB4RkYsRkFUWF9N
QVhfTkFNRV9MRU5HVEgpOworCW1lbWNweSgoKmRlKS0+bmFtZSxuYW1lLGxlbik7CisJKCpkZSkt
Pm5hbWVfbGVuZ3RoID0gbGVuOworCSgqZGUpLT5hdHRyID0gaXNfZGlyID8gQVRUUl9ESVIgOiBB
VFRSX0FSQ0g7CisJKCpkZSktPnN0YXJ0ID0gMDsKKwlmYXR4X2RhdGVfdW5peDJkb3MoZGlyLT5p
X210aW1lLnR2X3NlYywmKCpkZSktPnRpbWUsJigqZGUpLT5kYXRlKTsKKwkoKmRlKS0+c2l6ZSA9
IDA7CisJbWFya19idWZmZXJfZGlydHkoKmJoKTsKKwlyZXR1cm4gMDsKK30KKworLyogCisgKiBD
cmVhdGUgYSBmaWxlIAorICovCisKK2ludCBmYXR4X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpcixz
dHJ1Y3QgZGVudHJ5ICpkZW50cnksaW50IG1vZGUsIHN0cnVjdCBuYW1laWRhdGEgKm5kKQorewor
CXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CisJc3RydWN0IGZhdHhfZGlyX2VudHJ5ICpkZTsKKwlz
dHJ1Y3QgaW5vZGUgKmlub2RlOworCWxvZmZfdCBpX3BvczsKKwlpbnQgcmVzOworCWNvbnN0IGNo
YXIgKm5hbWUgPSBkZW50cnktPmRfbmFtZS5uYW1lOworCWludCBuYW1lX2xlbmd0aCA9IGRlbnRy
eS0+ZF9uYW1lLmxlbjsKKwljaGFyIHN6Rm9ybWF0TmFtZVtGQVRYX01BWF9OQU1FX0xFTkdUSF07
CisJCisJcmVzID0gZmF0eF9mb3JtYXRfbmFtZShuYW1lLG5hbWVfbGVuZ3RoLHN6Rm9ybWF0TmFt
ZSk7CisJaWYgKHJlcyA8IDApCisJCXJldHVybiByZXM7CisJCisJaWYgKGZhdHhfc2NhbihkaXIs
bmFtZSxuYW1lX2xlbmd0aCwmYmgsJmRlLCZpX3BvcykgPj0gMCkgeworCQlpZihiaCkgYnJlbHNl
KGJoKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisgCX0KKwlpbm9kZSA9IE5VTEw7CisJcmVzID0gZmF0
eF9hZGRfZW50cnkoZGlyLCBzekZvcm1hdE5hbWUsIG5hbWVfbGVuZ3RoLCAmYmgsICZkZSwgJmlf
cG9zLCAwKTsKKwlpZiAocmVzKQorCQlyZXR1cm4gcmVzOworCWlub2RlID0gZmF0eF9idWlsZF9p
bm9kZShkaXItPmlfc2IsIGRlLCBpX3BvcywgJnJlcyk7CisJaWYoYmgpIGJyZWxzZShiaCk7CisJ
aWYgKCFpbm9kZSkKKwkJcmV0dXJuIHJlczsKKwlpbm9kZS0+aV9tdGltZSA9IGlub2RlLT5pX2F0
aW1lID0gaW5vZGUtPmlfY3RpbWUgPSBDVVJSRU5UX1RJTUU7CisJbWFya19pbm9kZV9kaXJ0eShp
bm9kZSk7CisJZF9pbnN0YW50aWF0ZShkZW50cnksIGlub2RlKTsKKwlyZXR1cm4gMDsKK30KKwor
LyoKKyAqIFJlbW92ZSBhIGRpcmVjdG9yeSAKKyAqLworCitpbnQgZmF0eF9ybWRpcihzdHJ1Y3Qg
aW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQoreworCXN0cnVjdCBpbm9kZSAqaW5v
ZGUgPSBkZW50cnktPmRfaW5vZGU7CisJbG9mZl90IGlfcG9zOwkKKwlpbnQgcmVzOworCXN0cnVj
dCBidWZmZXJfaGVhZCAqYmg7CisJc3RydWN0IGZhdHhfZGlyX2VudHJ5ICpkZTsKKworCWJoID0g
TlVMTDsKKwlyZXMgPSBmYXR4X2ZpbmQoZGlyLCBkZW50cnktPmRfbmFtZS5uYW1lLCBkZW50cnkt
PmRfbmFtZS5sZW4sCisJCQkJJmJoLCAmZGUsICZpX3Bvcyk7CisJaWYgKHJlcyA8IDApCisJCWdv
dG8gcm1kaXJfZG9uZTsKKwkvKgorCSAqIENoZWNrIHdoZXRoZXIgdGhlIGRpcmVjdG9yeSBpcyBu
b3QgaW4gdXNlLCB0aGVuIGNoZWNrCisJICogd2hldGhlciBpdCBpcyBlbXB0eS4KKwkgKi8KKwly
ZXMgPSBmYXR4X2Rpcl9lbXB0eShpbm9kZSk7CisJaWYgKHJlcykKKwkJZ290byBybWRpcl9kb25l
OworCisJZGUtPm5hbWVfbGVuZ3RoID0gREVMRVRFRF9GTEFHOworCW1hcmtfYnVmZmVyX2RpcnR5
KGJoKTsKKwlmYXR4X2RldGFjaChpbm9kZSk7CisJaW5vZGUtPmlfbmxpbmsgPSAwOworCWlub2Rl
LT5pX2N0aW1lID0gZGlyLT5pX2N0aW1lID0gZGlyLT5pX210aW1lID0gQ1VSUkVOVF9USU1FOwor
CWRpci0+aV9ubGluay0tOworCW1hcmtfaW5vZGVfZGlydHkoaW5vZGUpOworCW1hcmtfaW5vZGVf
ZGlydHkoZGlyKTsKKwlyZXMgPSAwOworCitybWRpcl9kb25lOgorCWlmKGJoKSBicmVsc2UoYmgp
OworCXJldHVybiByZXM7Cit9CisKKy8qCisgKiBNYWtlIGEgZGlyZWN0b3J5IAorICovCisKK2lu
dCBmYXR4X21rZGlyKHN0cnVjdCBpbm9kZSAqZGlyLHN0cnVjdCBkZW50cnkgKmRlbnRyeSxpbnQg
bW9kZSkKK3sKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoOworCXN0cnVjdCBmYXR4X2Rpcl9lbnRy
eSAqZGU7CisJc3RydWN0IGlub2RlICppbm9kZTsKKwlpbnQgcmVzOworCWNvbnN0IGNoYXIgKm5h
bWUgPSBkZW50cnktPmRfbmFtZS5uYW1lOworCWludCBuYW1lX2xlbmd0aCA9IGRlbnRyeS0+ZF9u
YW1lLmxlbjsKKwlsb2ZmX3QgaV9wb3M7CisJY2hhciBzekZvcm1hdE5hbWVbRkFUWF9NQVhfTkFN
RV9MRU5HVEhdOworCQorCXJlcyA9IGZhdHhfZm9ybWF0X25hbWUobmFtZSxuYW1lX2xlbmd0aCxz
ekZvcm1hdE5hbWUpOworCWlmIChyZXMgPCAwKQorCQlyZXR1cm4gcmVzOworCWlmIChmYXR4X3Nj
YW4oZGlyLG5hbWUsbmFtZV9sZW5ndGgsJmJoLCZkZSwmaV9wb3MpID49IDApCisJCWdvdG8gb3V0
X2V4aXN0OworCisJcmVzID0gZmF0eF9hZGRfZW50cnkoZGlyLCBzekZvcm1hdE5hbWUsIG5hbWVf
bGVuZ3RoLCAmYmgsICZkZSwgJmlfcG9zLCAxKTsKKwlpZiAocmVzKQorCQlnb3RvIG91dF91bmxv
Y2s7CisJaW5vZGUgPSBmYXR4X2J1aWxkX2lub2RlKGRpci0+aV9zYiwgZGUsIGlfcG9zLCAmcmVz
KTsKKwlpZiAoIWlub2RlKSB7CisJCWlmKGJoKSBicmVsc2UoYmgpOworCQlnb3RvIG91dF91bmxv
Y2s7CisJfQorCXJlcyA9IDA7CisKKwlkaXItPmlfbmxpbmsrKzsKKwlpbm9kZS0+aV9ubGluayA9
IDI7IC8qIG5vIG5lZWQgdG8gbWFyayB0aGVtIGRpcnR5ICovCisKKwlyZXMgPSBmYXR4X25ld19k
aXIoaW5vZGUsIGRpcik7CisJaWYgKHJlcykKKwkJZ290byBta2Rpcl9lcnJvcjsKKworCWlmKGJo
KSBicmVsc2UoYmgpOworCWRfaW5zdGFudGlhdGUoZGVudHJ5LCBpbm9kZSk7CisJcmVzID0gMDsK
Kworb3V0X3VubG9jazoKKwlyZXR1cm4gcmVzOworCitta2Rpcl9lcnJvcjoKKwlwcmludGsoS0VS
Tl9XQVJOSU5HICJmYXR4X21rZGlyOiBlcnJvcj0lZCwgYXR0ZW1wdGluZyBjbGVhbnVwXG4iLCBy
ZXMpOworCWlub2RlLT5pX25saW5rID0gMDsKKwlpbm9kZS0+aV9jdGltZSA9IGRpci0+aV9jdGlt
ZSA9IGRpci0+aV9tdGltZSA9IENVUlJFTlRfVElNRTsKKwlkaXItPmlfbmxpbmstLTsKKwltYXJr
X2lub2RlX2RpcnR5KGlub2RlKTsKKwltYXJrX2lub2RlX2RpcnR5KGRpcik7CisJZGUtPm5hbWVf
bGVuZ3RoID0gREVMRVRFRF9GTEFHOworCW1hcmtfYnVmZmVyX2RpcnR5KGJoKTsKKwlpZihiaCkg
YnJlbHNlKGJoKTsKKwlmYXR4X2RldGFjaChpbm9kZSk7CisJaXB1dChpbm9kZSk7CisJZ290byBv
dXRfdW5sb2NrOworCitvdXRfZXhpc3Q6CisJaWYoYmgpIGJyZWxzZShiaCk7CisJcmVzID0gLUVJ
TlZBTDsKKwlnb3RvIG91dF91bmxvY2s7Cit9CisKKy8qCisgKiBVbmxpbmsgYSBmaWxlIAorICov
CisKK2ludCBmYXR4X3VubGluayggc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRl
bnRyeSkKK3sKKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZGVudHJ5LT5kX2lub2RlOworCWxvZmZf
dCBpX3BvczsKKwlpbnQgcmVzOworCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CisJc3RydWN0IGZh
dHhfZGlyX2VudHJ5ICpkZTsKKworCWJoID0gTlVMTDsKKwlyZXMgPSBmYXR4X2ZpbmQoZGlyLCBk
ZW50cnktPmRfbmFtZS5uYW1lLCBkZW50cnktPmRfbmFtZS5sZW4sCisJCQkmYmgsICZkZSwgJmlf
cG9zKTsKKwlpZiAocmVzIDwgMCkKKwkJZ290byB1bmxpbmtfZG9uZTsKKworCWRlLT5uYW1lX2xl
bmd0aCA9IERFTEVURURfRkxBRzsKKwltYXJrX2J1ZmZlcl9kaXJ0eShiaCk7CisJZmF0eF9kZXRh
Y2goaW5vZGUpOworCWlmKGJoKSBicmVsc2UoYmgpOworCWlub2RlLT5pX25saW5rID0gMDsKKwlp
bm9kZS0+aV9jdGltZSA9IGRpci0+aV9jdGltZSA9IGRpci0+aV9tdGltZSA9IENVUlJFTlRfVElN
RTsKKwltYXJrX2lub2RlX2RpcnR5KGlub2RlKTsKKwltYXJrX2lub2RlX2RpcnR5KGRpcik7CisJ
cmVzID0gMDsKK3VubGlua19kb25lOgorCXJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbnQgZG9f
ZmF0eF9yZW5hbWUoc3RydWN0IGlub2RlICpvbGRfZGlyLCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVu
dHJ5LAorCQlzdHJ1Y3QgaW5vZGUgKm5ld19kaXIsIHN0cnVjdCBkZW50cnkgKm5ld19kZW50cnks
CisJCXN0cnVjdCBidWZmZXJfaGVhZCAqb2xkX2JoLCBzdHJ1Y3QgZmF0eF9kaXJfZW50cnkgKm9s
ZF9kZSwKKwkJaW50IG9sZF9pbm8gKQoreworCXN0cnVjdCBidWZmZXJfaGVhZCAqbmV3X2JoPU5V
TEwsKmRvdGRvdF9iaD1OVUxMOworCXN0cnVjdCBmYXR4X2Rpcl9lbnRyeSAqbmV3X2RlLCpkb3Rk
b3RfZGU7CisJc3RydWN0IGlub2RlICpvbGRfaW5vZGUsKm5ld19pbm9kZTsKKwlsb2ZmX3QgbmV3
X2lubzsKKwlpbnQgZXJyb3I7CisJaW50IGlzX2RpcjsKKwljb25zdCBjaGFyICpuZXdfbmFtZSA9
IG5ld19kZW50cnktPmRfbmFtZS5uYW1lOworCWludCBuZXdfbmFtZV9sZW4gPSBuZXdfZGVudHJ5
LT5kX25hbWUubGVuOworCisJUFJJTlRLKCJGQVRYOiBkb19mYXR4X3JlbmFtZTogZW50ZXJlZFxu
Iik7CisJCisJb2xkX2lub2RlID0gb2xkX2RlbnRyeS0+ZF9pbm9kZTsKKwluZXdfaW5vZGUgPSBu
ZXdfZGVudHJ5LT5kX2lub2RlOworCWlzX2RpciA9IFNfSVNESVIob2xkX2lub2RlLT5pX21vZGUp
OworCisJZXJyb3IgPSBmYXR4X3NjYW4obmV3X2RpcixuZXdfbmFtZSxuZXdfbmFtZV9sZW4sJm5l
d19iaCwmbmV3X2RlLCZuZXdfaW5vKTsKKwlpZiAoZXJyb3I+PTAgJiYhbmV3X2lub2RlKQorCQln
b3RvIGRlZ2VuZXJhdGVfY2FzZTsKKwlpZiAoIW5ld19iaCkgeworCQllcnJvciA9IGZhdHhfYWRk
X2VudHJ5KAluZXdfZGlyLCBuZXdfbmFtZSwgbmV3X25hbWVfbGVuLCAmbmV3X2JoLCAKKwkJCQkm
bmV3X2RlLCAmbmV3X2lubywgaXNfZGlyICk7CisJCWlmIChlcnJvcikKKwkJCWdvdG8gb3V0Owor
CX0KKwluZXdfZGlyLT5pX3ZlcnNpb24rKzsKKworCS8qIFRoZXJlIHdlIGdvICovCisKKwlpZiAo
bmV3X2lub2RlKQorCQlmYXR4X2RldGFjaChuZXdfaW5vZGUpOworCW9sZF9kZS0+bmFtZV9sZW5n
dGggPSBERUxFVEVEX0ZMQUc7CisJbWFya19idWZmZXJfZGlydHkob2xkX2JoKTsKKwlmYXR4X2Rl
dGFjaChvbGRfaW5vZGUpOworCWZhdHhfYXR0YWNoKG9sZF9pbm9kZSwgbmV3X2lubyk7CisJRkFU
WF9JKG9sZF9pbm9kZSktPmlfYXR0cnMgJj0gfkFUVFJfSElEREVOOworCW1hcmtfaW5vZGVfZGly
dHkob2xkX2lub2RlKTsKKwlvbGRfZGlyLT5pX3ZlcnNpb24rKzsKKwlvbGRfZGlyLT5pX2N0aW1l
ID0gb2xkX2Rpci0+aV9tdGltZSA9IG9sZF9kaXItPmlfYXRpbWUgPSBDVVJSRU5UX1RJTUU7CisJ
bWFya19pbm9kZV9kaXJ0eShvbGRfZGlyKTsKKwlpZiAobmV3X2lub2RlKSB7CisJCW5ld19pbm9k
ZS0+aV9ubGluay0tOworCQluZXdfaW5vZGUtPmlfY3RpbWUgPSBuZXdfaW5vZGUtPmlfYXRpbWUg
PSBDVVJSRU5UX1RJTUU7CisJCW1hcmtfaW5vZGVfZGlydHkobmV3X2lub2RlKTsKKwl9CisJaWYg
KGRvdGRvdF9iaCkgeworCQlkb3Rkb3RfZGUtPnN0YXJ0ID0gQ1RfTEVfTChGQVRYX0kobmV3X2Rp
ciktPmlfbG9nc3RhcnQpOworCQkKKwkJUFJJTlRLKCJGQVRYOiBkb19mYXR4X3JlbmFtZTogc3Rh
cnQgPSAlMDhsWCAoTEU9JTA4bFgpXG4iLAorCQkJCShsb25nKUZBVFhfSShuZXdfZGlyKS0+aV9s
b2dzdGFydCwKKwkJCQkobG9uZylkb3Rkb3RfZGUtPnN0YXJ0KTsKKwkJCisJCW1hcmtfYnVmZmVy
X2RpcnR5KGRvdGRvdF9iaCk7CisJCW9sZF9kaXItPmlfbmxpbmstLTsKKwkJbWFya19pbm9kZV9k
aXJ0eShvbGRfZGlyKTsKKwkJaWYgKG5ld19pbm9kZSkgeworCQkJbmV3X2lub2RlLT5pX25saW5r
LS07CisJCQltYXJrX2lub2RlX2RpcnR5KG5ld19pbm9kZSk7CisJCX0gZWxzZSB7CisJCQluZXdf
ZGlyLT5pX25saW5rKys7CisJCQltYXJrX2lub2RlX2RpcnR5KG5ld19kaXIpOworCQl9CisJfQor
CWVycm9yID0gMDsKK291dDoKKwlpZihuZXdfYmgpIGJyZWxzZShuZXdfYmgpOworCWlmKGRvdGRv
dF9iaCkgYnJlbHNlKGRvdGRvdF9iaCk7CisJUFJJTlRLKCJGQVRYOiBkb19mYXR4X3JlbmFtZTog
bGVhdmluZyAobm9ybWFsKVxuIik7CisJcmV0dXJuIGVycm9yOworCitkZWdlbmVyYXRlX2Nhc2U6
CisJZXJyb3IgPSAtRUlOVkFMOworCWlmIChuZXdfZGUhPW9sZF9kZSkKKwkJZ290byBvdXQ7CisJ
RkFUWF9JKG9sZF9pbm9kZSktPmlfYXR0cnMgJj0gfkFUVFJfSElEREVOOworCW1hcmtfaW5vZGVf
ZGlydHkob2xkX2lub2RlKTsKKwlvbGRfZGlyLT5pX3ZlcnNpb24rKzsKKwlvbGRfZGlyLT5pX2N0
aW1lID0gb2xkX2Rpci0+aV9tdGltZSA9IENVUlJFTlRfVElNRTsKKwltYXJrX2lub2RlX2RpcnR5
KG9sZF9kaXIpOworCVBSSU5USygiRkFUWDogZG9fZmF0eF9yZW5hbWU6IGxlYXZpbmcgKGRlZ2Vu
ZXJhdGUpXG4iKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFJlbmFtZSwgYSB3cmFwcGVyIGZv
ciByZW5hbWVfc2FtZV9kaXIgJiByZW5hbWVfZGlmZl9kaXIgCisgKi8KKworaW50IGZhdHhfcmVu
YW1lKHN0cnVjdCBpbm9kZSAqb2xkX2RpcixzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LAorCQkg
c3RydWN0IGlub2RlICpuZXdfZGlyLHN0cnVjdCBkZW50cnkgKm5ld19kZW50cnkpCit7CisJc3Ry
dWN0IGJ1ZmZlcl9oZWFkICpvbGRfYmg7CisJc3RydWN0IGZhdHhfZGlyX2VudHJ5ICpvbGRfZGU7
CisJbG9mZl90IG9sZF9pbm87CisJaW50IGVycm9yOworCisJZXJyb3IgPSBmYXR4X2Zvcm1hdF9u
YW1lKG9sZF9kZW50cnktPmRfbmFtZS5uYW1lLG9sZF9kZW50cnktPmRfbmFtZS5sZW4sTlVMTCk7
CisJaWYgKGVycm9yIDwgMCkKKwkJZ290byByZW5hbWVfZG9uZTsKKwllcnJvciA9IGZhdHhfZm9y
bWF0X25hbWUobmV3X2RlbnRyeS0+ZF9uYW1lLm5hbWUsbmV3X2RlbnRyeS0+ZF9uYW1lLmxlbixO
VUxMKTsKKwlpZiAoZXJyb3IgPCAwKQorCQlnb3RvIHJlbmFtZV9kb25lOworCisJZXJyb3IgPSBm
YXR4X3NjYW4ob2xkX2Rpciwgb2xkX2RlbnRyeS0+ZF9uYW1lLm5hbWUsIG9sZF9kZW50cnktPmRf
bmFtZS5sZW4sCisJCQkmb2xkX2JoLCAmb2xkX2RlLCAmb2xkX2lubyApOworCWlmIChlcnJvciA8
IDApCisJCWdvdG8gcmVuYW1lX2RvbmU7CisKKwllcnJvciA9IGRvX2ZhdHhfcmVuYW1lKCBvbGRf
ZGlyLCBvbGRfZGVudHJ5LCBuZXdfZGlyLCBuZXdfZGVudHJ5LAorCQkJb2xkX2JoLCBvbGRfZGUs
IChpbm9fdClvbGRfaW5vICk7CisJaWYob2xkX2JoKSBicmVsc2Uob2xkX2JoKTsKKworcmVuYW1l
X2RvbmU6CisJcmV0dXJuIGVycm9yOworfQpkaWZmIC11ck4gbGludXgtMi42LjUub3JpZy9mcy9w
YXJ0aXRpb25zL0tjb25maWcgbGludXgtMi42LjUvZnMvcGFydGl0aW9ucy9LY29uZmlnCi0tLSBs
aW51eC0yLjYuNS5vcmlnL2ZzL3BhcnRpdGlvbnMvS2NvbmZpZwkyMDA0LTA0LTA0IDA0OjM4OjEz
LjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUvZnMvcGFydGl0aW9ucy9LY29uZmlnCTIw
MDQtMDUtMDEgMTU6MjA6NDMuMDAwMDAwMDAwICswMTAwCkBAIC0yMzMsNCArMjMzLDEyIEBACiAJ
ICB3ZXJlIHBhcnRpdGlvbmVkIHVzaW5nIEVGSSBHUFQuICBQcmVzZW50bHkgb25seSB1c2VmdWwg
b24gdGhlCiAJICBJQS02NCBwbGF0Zm9ybS4KIAorY29uZmlnIFhCT1hfUEFSVElUSU9OCisJYm9v
bCAiWGJveCBQYXJ0aXRpb24gc3VwcG9ydCAoRVhQRVJJTUVOVEFMKSIKKwlkZXBlbmRzIG9uIFBB
UlRJVElPTl9BRFZBTkNFRCAmJiBFWFBFUklNRU5UQUwgJiYgQlJPS0VOCisJaGVscAorCSAgU2F5
IFkgaGVyZSBpZiB5b3UgYXJlIHJ1bm5pbmcgTGludXggb24gdGhlIFhib3gsIG9yIHdvdWxkCisJ
ICBsaWtlIHRvIGFjY2VzcyBhIGhhcmQgZGlzayBwYXJ0aXRpb25lZCBmb3IgdGhlIFhib3ggdW5k
ZXIKKwkgIGEgUEMgcnVubmluZyBMaW51eC4gT3RoZXJ3aXNlLCBzYXkgTi4KKwogIyAgICAgIGRl
ZmluZV9ib29sIENPTkZJR19BQ09STl9QQVJUSVRJT05fQ1VNQU5BIHkKZGlmZiAtdXJOIGxpbnV4
LTIuNi41Lm9yaWcvZnMvcGFydGl0aW9ucy9NYWtlZmlsZSBsaW51eC0yLjYuNS9mcy9wYXJ0aXRp
b25zL01ha2VmaWxlCi0tLSBsaW51eC0yLjYuNS5vcmlnL2ZzL3BhcnRpdGlvbnMvTWFrZWZpbGUJ
MjAwNC0wNC0wNCAwNDozNjo1Ny4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2ZzL3Bh
cnRpdGlvbnMvTWFrZWZpbGUJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAg
LTE4LDMgKzE4LDQgQEAKIG9iai0kKENPTkZJR19JQk1fUEFSVElUSU9OKSArPSBpYm0ubwogb2Jq
LSQoQ09ORklHX0VGSV9QQVJUSVRJT04pICs9IGVmaS5vCiBvYmotJChDT05GSUdfTkVDOThfUEFS
VElUSU9OKSArPSBuZWM5OC5vIG1zZG9zLm8KK29iai0kKENPTkZJR19YQk9YX1BBUlRJVElPTikg
Kz0geGJveC5vCmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL2ZzL3BhcnRpdGlvbnMvY2hlY2su
YyBsaW51eC0yLjYuNS9mcy9wYXJ0aXRpb25zL2NoZWNrLmMKLS0tIGxpbnV4LTIuNi41Lm9yaWcv
ZnMvcGFydGl0aW9ucy9jaGVjay5jCTIwMDQtMDQtMDQgMDQ6Mzg6MTUuMDAwMDAwMDAwICswMTAw
CisrKyBsaW51eC0yLjYuNS9mcy9wYXJ0aXRpb25zL2NoZWNrLmMJMjAwNC0wNS0wMSAxNToyMDo0
My4wMDAwMDAwMDAgKzAxMDAKQEAgLTM2LDYgKzM2LDkgQEAKICNpbmNsdWRlICJpYm0uaCIKICNp
bmNsdWRlICJ1bHRyaXguaCIKICNpbmNsdWRlICJlZmkuaCIKKyNpZmRlZiBDT05GSUdfWEJPWF9Q
QVJUSVRJT04KKyNpbmNsdWRlICJ4Ym94LmgiCisjZW5kaWYKIAogI2lmZGVmIENPTkZJR19CTEtf
REVWX01ECiBleHRlcm4gdm9pZCBtZF9hdXRvZGV0ZWN0X2RldihkZXZfdCBkZXYpOwpAQCAtMTkw
LDYgKzE5MywxNCBAQAogCQltZW1zZXQoJnN0YXRlLT5wYXJ0cywgMCwgc2l6ZW9mKHN0YXRlLT5w
YXJ0cykpOwogCQlyZXMgPSBjaGVja19wYXJ0W2krK10oc3RhdGUsIGJkZXYpOwogCX0KKyNpZmRl
ZiBDT05GSUdfWEJPWF9QQVJUSVRJT04KKwl7CisJCWludCB4Ym94OworCisJCXhib3ggPSB4Ym94
X3BhcnRpdGlvbihzdGF0ZSwgYmRldik7CisJCWlmKCFyZXMpIHJlcyA9IHhib3g7CisJfQorI2Vu
ZGlmCiAJaWYgKHJlcyA+IDApCiAJCXJldHVybiBzdGF0ZTsKIAlpZiAoIXJlcykKZGlmZiAtdXJO
IGxpbnV4LTIuNi41Lm9yaWcvZnMvcGFydGl0aW9ucy94Ym94LmMgbGludXgtMi42LjUvZnMvcGFy
dGl0aW9ucy94Ym94LmMKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZnMvcGFydGl0aW9ucy94Ym94LmMJ
MTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2ZzL3Bh
cnRpdGlvbnMveGJveC5jCTIwMDQtMDUtMDEgMTU6MjA6NDMuMDAwMDAwMDAwICswMTAwCkBAIC0w
LDAgKzEsMTEzIEBACisvKgorICogIGZzL3BhcnRpdGlvbnMveGJveC5jCisgKgorICogIC8vVE9E
TzogZmluZCBhbmQgaW5zZXJ0IEdQTCBub3RpY2UKKyAqCisgKiAgSnVuZSAyMDAyIGJ5IFNwZWVk
QnVtcDoJaW5pdGlhbCBpbXBsZW1lbnRhdGlvbgorICovCisKKyNpbmNsdWRlIDxsaW51eC9lcnJu
by5oPgorI2luY2x1ZGUgPGxpbnV4L2dlbmhkLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+
CisKKyNpbmNsdWRlICJjaGVjay5oIgorI2luY2x1ZGUgInhib3guaCIKKworCisvKgorICogVGhl
IG5hdGl2ZSBYYm94IGtlcm5lbCBtYWtlcyB1c2Ugb2YgYW4gaW1wbGljaXQgcGFydGl0aW9uaW5n
CisgKiBzY2hlbWUuIFBhcnRpdGlvbiBsb2NhdGlvbnMgYW5kIHNpemVzIG9uLWRpc2sgYXJlIGhh
cmQtY29kZWQuCisgKi8KKyNkZWZpbmUgWEJPWF9DT05GSUdfU1RBUlQJMHgwMDAwMDAwMEwKKyNk
ZWZpbmUgWEJPWF9DQUNIRTFfU1RBUlQJMHgwMDAwMDQwMEwKKyNkZWZpbmUgWEJPWF9DQUNIRTJf
U1RBUlQJMHgwMDE3NzQwMEwKKyNkZWZpbmUgWEJPWF9DQUNIRTNfU1RBUlQJMHgwMDJFRTQwMEwK
KyNkZWZpbmUgWEJPWF9TWVNURU1fU1RBUlQJMHgwMDQ2NTQwMEwKKyNkZWZpbmUgWEJPWF9EQVRB
X1NUQVJUCQkweDAwNTVGNDAwTAorI2RlZmluZSBYQk9YX0VYVEVORF9TVEFSVAkweDAwRUU4QUIw
TAorCisjZGVmaW5lIFhCT1hfQ09ORklHX1NJWkUJKFhCT1hfQ0FDSEUxX1NUQVJUIC0gWEJPWF9D
T05GSUdfU1RBUlQpCisjZGVmaW5lIFhCT1hfQ0FDSEUxX1NJWkUJKFhCT1hfQ0FDSEUyX1NUQVJU
IC0gWEJPWF9DQUNIRTFfU1RBUlQpCisjZGVmaW5lIFhCT1hfQ0FDSEUyX1NJWkUJKFhCT1hfQ0FD
SEUzX1NUQVJUIC0gWEJPWF9DQUNIRTJfU1RBUlQpCisjZGVmaW5lIFhCT1hfQ0FDSEUzX1NJWkUJ
KFhCT1hfU1lTVEVNX1NUQVJUIC0gWEJPWF9DQUNIRTNfU1RBUlQpCisjZGVmaW5lIFhCT1hfU1lT
VEVNX1NJWkUJKFhCT1hfREFUQV9TVEFSVCAtIFhCT1hfU1lTVEVNX1NUQVJUKQorI2RlZmluZSBY
Qk9YX0RBVEFfU0laRQkJKFhCT1hfRVhURU5EX1NUQVJUIC0gWEJPWF9EQVRBX1NUQVJUKQorCisj
ZGVmaW5lIFhCT1hfTUFHSUNfU0VDVAkJM0wKKworCitzdGF0aWMgaW50IHhib3hfY2hlY2tfbWFn
aWMoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc2VjdG9yX3QgYXRfc2VjdCwKKwkJY2hhciAq
bWFnaWMpCit7CisJU2VjdG9yIHNlY3Q7CisJY2hhciAqZGF0YTsKKwlpbnQgcmV0OworCisJZGF0
YSA9IHJlYWRfZGV2X3NlY3RvcihiZGV2LCBhdF9zZWN0LCAmc2VjdCk7CisJaWYgKCFkYXRhKQor
CQlyZXR1cm4gLTE7CisKKwkvKiBJY2shICovCisJcmV0ID0gKCoodTMyKilkYXRhID09ICoodTMy
KiltYWdpYykgPyAxIDogMDsKKwlwdXRfZGV2X3NlY3RvcihzZWN0KTsKKworCXJldHVybiByZXQ7
Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHhib3hfZHJpdmVfZGV0ZWN0KHN0cnVjdCBibG9ja19k
ZXZpY2UgKmJkZXYpCit7CisJLyoqIAorCSogIkJSRlIiIGlzIGFwcGFyZW50bHkgdGhlIG1hZ2lj
IG51bWJlciBpbiB0aGUgY29uZmlnIGFyZWEKKwkqIHRoZSBvdGhlcnMgYXJlIGp1c3QgcGFyYW5v
aWQgY2hlY2tzIHRvIGFzc3VyZSB0aGUgZXhwZWN0ZWQKKwkqICJGQVRYIiB0YWdzIGZvciB0aGUg
b3RoZXIgeGJveCBwYXJ0aXRpb25zCisJKgorCSogdGhlIG9kZHMgYWdhaW5zdCBhIG5vbi14Ym94
IGRyaXZlIGhhdmluZyByYW5kb20gZGF0YSB0byBtYXRjaCBpcworCSogYXN0cm9ub21pY2FsLi4u
YnV0IGl0J3MgcG9zc2libGUgSSBndWVzcy4uLnlvdSBzaG91bGQgb25seSBpbmNsdWRlCisJKiB0
aGlzIGNoZWNrIGlmIHlvdSBhY3R1YWxseSAqaGF2ZSogYW4geGJveCBkcml2ZS4uLnNpbmNlIGl0
IGhhcyB0bworCSogYmUgZGV0ZWN0ZWQgZmlyc3QKKwkqCisJKiBAc2VlIGNoZWNrLmMKKwkqLwor
CXJldHVybiAoeGJveF9jaGVja19tYWdpYyhiZGV2LCBYQk9YX01BR0lDX1NFQ1QsICJCUkZSIikg
JiYKKwkJeGJveF9jaGVja19tYWdpYyhiZGV2LCBYQk9YX1NZU1RFTV9TVEFSVCwgIkZBVFgiKSAm
JgorCQl4Ym94X2NoZWNrX21hZ2ljKGJkZXYsIFhCT1hfREFUQV9TVEFSVCwgIkZBVFgiKSkgPwor
CQkwIDogLUVOT0RFVjsKK30KKworaW50IHhib3hfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFy
dGl0aW9ucyAqc3RhdGUsIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpCit7CisJaW50IHNsb3Qs
IGVycjsKKwlzZWN0b3JfdCBsYXN0LCBzaXplOworCisJZXJyID0geGJveF9kcml2ZV9kZXRlY3Qo
YmRldik7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCXNsb3QgPSA1MDsKKwlwcmludGso
IiBbeGJveF0iKTsKKworCXB1dF9wYXJ0aXRpb24oc3RhdGUsIHNsb3QrKywgWEJPWF9EQVRBX1NU
QVJULCBYQk9YX0RBVEFfU0laRSk7CisJcHV0X3BhcnRpdGlvbihzdGF0ZSwgc2xvdCsrLCBYQk9Y
X1NZU1RFTV9TVEFSVCwgWEJPWF9TWVNURU1fU0laRSk7CisJcHV0X3BhcnRpdGlvbihzdGF0ZSwg
c2xvdCsrLCBYQk9YX0NBQ0hFMV9TVEFSVCwgWEJPWF9DQUNIRTFfU0laRSk7CisJcHV0X3BhcnRp
dGlvbihzdGF0ZSwgc2xvdCsrLCBYQk9YX0NBQ0hFMl9TVEFSVCwgWEJPWF9DQUNIRTJfU0laRSk7
CisJcHV0X3BhcnRpdGlvbihzdGF0ZSwgc2xvdCsrLCBYQk9YX0NBQ0hFM19TVEFSVCwgWEJPWF9D
QUNIRTNfU0laRSk7CisKKwkvKgorCSAqIFhib3ggSEREcyBjb21lIGluIHR3byBzaXplcyAtIDhH
QiBhbmQgMTBHQi4gVGhlIG5hdGl2ZSBYYm94IGtlcm5lbAorCSAqIHdpbGwgb25seSBhY2tub3ds
ZWRnZSB0aGUgZmlyc3QgOEdCLCByZWdhcmRsZXNzIG9mIGFjdHVhbCBkaXNrCisJICogc2l6ZS4g
Rm9yIGRpc2tzIGxhcmdlciB0aGFuIDhHQiwgYW55dGhpbmcgYWJvdmUgdGhhdCBsaW1pdCBpcyBt
YWRlCisJICogYXZhaWxhYmxlIGFzIGEgc2VwZXJhdGUgcGFydGl0aW9uLgorCSAqLworCWxhc3Qg
PSBiZGV2LT5iZF9kaXNrLT5jYXBhY2l0eTsKKwlpZiAobGFzdCA9PSBYQk9YX0VYVEVORF9TVEFS
VCkKKwkJZ290byBvdXQ7CisKKwlwcmludGsoIiA8Iik7CisJc2l6ZSA9IGxhc3QgLSBYQk9YX0VY
VEVORF9TVEFSVDsKKwlwdXRfcGFydGl0aW9uKHN0YXRlLCBzbG90KyssIFhCT1hfRVhURU5EX1NU
QVJULCBzaXplKTsKKwlwcmludGsoIiA+Iik7CisKK291dDoKKwlwcmludGsoIlxuIik7CisJcmV0
dXJuIDE7Cit9CmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL2ZzL3BhcnRpdGlvbnMveGJveC5o
IGxpbnV4LTIuNi41L2ZzL3BhcnRpdGlvbnMveGJveC5oCi0tLSBsaW51eC0yLjYuNS5vcmlnL2Zz
L3BhcnRpdGlvbnMveGJveC5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisr
KyBsaW51eC0yLjYuNS9mcy9wYXJ0aXRpb25zL3hib3guaAkyMDA0LTA1LTAxIDE1OjIwOjQzLjAw
MDAwMDAwMCArMDEwMApAQCAtMCwwICsxLDYgQEAKKy8qCisgKiAgZnMvcGFydGl0aW9ucy94Ym94
LmgKKyAqLworCitpbnQgeGJveF9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpz
dGF0ZSwKKwkJCXN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpOwpkaWZmIC11ck4gbGludXgtMi42
LjUub3JpZy9pbmNsdWRlL2FzbS1pMzg2L21hY2gtZGVmYXVsdC9tYWNoX3BjaV9ibGFja2xpc3Qu
aCBsaW51eC0yLjYuNS9pbmNsdWRlL2FzbS1pMzg2L21hY2gtZGVmYXVsdC9tYWNoX3BjaV9ibGFj
a2xpc3QuaAotLS0gbGludXgtMi42LjUub3JpZy9pbmNsdWRlL2FzbS1pMzg2L21hY2gtZGVmYXVs
dC9tYWNoX3BjaV9ibGFja2xpc3QuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEw
MAorKysgbGludXgtMi42LjUvaW5jbHVkZS9hc20taTM4Ni9tYWNoLWRlZmF1bHQvbWFjaF9wY2lf
YmxhY2tsaXN0LmgJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCAr
MSw2IEBACisjaWZuZGVmIF9fQVNNX01BQ0hfUENJX0JMQUNLTElTVF9ICisjZGVmaW5lIF9fQVNN
X01BQ0hfUENJX0JMQUNLTElTVF9ICisKKyNkZWZpbmUgbWFjaF9wY2lfaXNfYmxhY2tsaXN0ZWQo
YnVzLGRldixmbikgMAorCisjZW5kaWYKZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvaW5jbHVk
ZS9hc20taTM4Ni9tYWNoLXhib3gvbWFjaF9wY2lfYmxhY2tsaXN0LmggbGludXgtMi42LjUvaW5j
bHVkZS9hc20taTM4Ni9tYWNoLXhib3gvbWFjaF9wY2lfYmxhY2tsaXN0LmgKLS0tIGxpbnV4LTIu
Ni41Lm9yaWcvaW5jbHVkZS9hc20taTM4Ni9tYWNoLXhib3gvbWFjaF9wY2lfYmxhY2tsaXN0LmgJ
MTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2luY2x1
ZGUvYXNtLWkzODYvbWFjaC14Ym94L21hY2hfcGNpX2JsYWNrbGlzdC5oCTIwMDQtMDUtMDEgMTU6
MjA6NDMuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsMTQgQEAKKyNpZm5kZWYgX19BU01fTUFD
SF9QQ0lfQkxBQ0tMSVNUX0gKKyNkZWZpbmUgX19BU01fTUFDSF9QQ0lfQkxBQ0tMSVNUX0gKKwor
I2luY2x1ZGUgPGxpbnV4L3hib3guaD4KKworc3RhdGljIGlubGluZSBpbnQgbWFjaF9wY2lfaXNf
YmxhY2tsaXN0ZWQoaW50IGJ1cywgaW50IGRldiwgaW50IGZuKQoreworCWlmKG1hY2hpbmVfaXNf
eGJveCkgeworCQlyZXR1cm4gKGJ1cyA+IDEpIHx8ICgoYnVzICE9IDApICYmICgoZGV2ICE9IDAp
IHx8IChmbiAhPSAwKSkpIHx8CisJCQkoIWJ1cyAmJiAhZGV2ICYmICgoZm4gPT0gMSkgfHwgKGZu
ID09IDIpKSk7CisJfQorfQorCisjZW5kaWYKZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvaW5j
bHVkZS9hc20taTM4Ni9tYWNoLXhib3gvc2V0dXBfYXJjaF9wcmUuaCBsaW51eC0yLjYuNS9pbmNs
dWRlL2FzbS1pMzg2L21hY2gteGJveC9zZXR1cF9hcmNoX3ByZS5oCi0tLSBsaW51eC0yLjYuNS5v
cmlnL2luY2x1ZGUvYXNtLWkzODYvbWFjaC14Ym94L3NldHVwX2FyY2hfcHJlLmgJMTk3MC0wMS0w
MSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2luY2x1ZGUvYXNtLWkz
ODYvbWFjaC14Ym94L3NldHVwX2FyY2hfcHJlLmgJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAw
MDAgKzAxMDAKQEAgLTAsMCArMSwyNiBAQAorI2lmbmRlZiBfU0VUVVBfUFJFX1hCT1hfCisjZGVm
aW5lIF9TRVRVUF9QUkVfWEJPWF8KKworLyogSG9vayB0byBjYWxsIEJJT1MgaW5pdGlhbGlzYXRp
b24gZnVuY3Rpb24gKi8KKworLyogbm8gYWN0aW9uIGZvciBnZW5lcmljICovCisKKyNkZWZpbmUg
QVJDSF9TRVRVUCBhcmNoX3NldHVwX3hib3goKTsKKworI2luY2x1ZGUgPGxpbnV4L3RpbWV4Lmg+
CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKKy8vaW50IENMT0NLX1RJQ0tfUkFURTsKK2ludCBtYWNo
aW5lX2lzX3hib3ggX19pbml0ZGF0YSA9IDA7CisKK3N0YXRpYyAgaW5saW5lIHZvaWQgYXJjaF9z
ZXR1cF94Ym94KHZvaWQpIHsKKwlvdXRsKDB4ODAwMDAwMDAsIDB4Y2Y4KTsKKwlpZiAoaW5sKDB4
Y2ZjKT09MHgwMmE1MTBkZSkgeyAvKiBYYm94IFBDSSAwOjA6MCBJRCAweDEwZGUvMHgwMmE1ICov
CisJCW1hY2hpbmVfaXNfeGJveCA9IDE7CisvLwkJQ0xPQ0tfVElDS19SQVRFID0gMTEyNTAwMDsK
Kwl9IGVsc2UgeworLy8JCUNMT0NLX1RJQ0tfUkFURSA9IDExOTMxODA7CisJfQorfQorCisjZW5k
aWYKZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvaW5jbHVkZS9hc20taTM4Ni90aW1leC5oIGxp
bnV4LTIuNi41L2luY2x1ZGUvYXNtLWkzODYvdGltZXguaAotLS0gbGludXgtMi42LjUub3JpZy9p
bmNsdWRlL2FzbS1pMzg2L3RpbWV4LmgJMjAwNC0wNC0wNCAwNDozNjo1NC4wMDAwMDAwMDAgKzAx
MDAKKysrIGxpbnV4LTIuNi41L2luY2x1ZGUvYXNtLWkzODYvdGltZXguaAkyMDA0LTA1LTAxIDE1
OjIwOjQzLjQyMzkzNjc0NCArMDEwMApAQCAtMTEsMTIgKzExLDEyIEBACiAKICNpZmRlZiBDT05G
SUdfWDg2X1BDOTgwMAogICAgZXh0ZXJuIGludCBDTE9DS19USUNLX1JBVEU7CisjZWxpZiBkZWZp
bmVkKENPTkZJR19NRUxBTikKKyMgZGVmaW5lIENMT0NLX1RJQ0tfUkFURSAxMTg5MjAwIC8qIEFN
RCBFbGFuIGhhcyBkaWZmZXJlbnQgZnJlcXVlbmN5ISAqLworI2VsaWYgZGVmaW5lZChDT05GSUdf
WDg2X1hCT1gpCisjIGRlZmluZSBDTE9DS19USUNLX1JBVEUgMTEyNTAwMAogI2Vsc2UKLSNpZmRl
ZiBDT05GSUdfWDg2X0VMQU4KLSMgIGRlZmluZSBDTE9DS19USUNLX1JBVEUgMTE4OTIwMCAvKiBB
TUQgRWxhbiBoYXMgZGlmZmVyZW50IGZyZXF1ZW5jeSEgKi8KLSNlbHNlCi0jICBkZWZpbmUgQ0xP
Q0tfVElDS19SQVRFIDExOTMxODIgLyogVW5kZXJseWluZyBIWiAqLwotI2VuZGlmCisjIGRlZmlu
ZSBDTE9DS19USUNLX1JBVEUgMTE5MzE4MiAvKiBVbmRlcmx5aW5nIEhaICovCiAjZW5kaWYKIAog
I2RlZmluZSBDTE9DS19USUNLX0ZBQ1RPUgkyMAkvKiBGYWN0b3Igb2YgYm90aCAxMDAwMDAwIGFu
ZCBDTE9DS19USUNLX1JBVEUgKi8KZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvaW5jbHVkZS9s
aW51eC9mYXR4X2ZzLmggbGludXgtMi42LjUvaW5jbHVkZS9saW51eC9mYXR4X2ZzLmgKLS0tIGxp
bnV4LTIuNi41Lm9yaWcvaW5jbHVkZS9saW51eC9mYXR4X2ZzLmgJMTk3MC0wMS0wMSAwMTowMDow
MC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2luY2x1ZGUvbGludXgvZmF0eF9mcy5o
CTIwMDQtMDUtMDEgMTU6MjA6NDMuMDAwMDAwMDAwICswMTAwCkBAIC0wLDAgKzEsMjUzIEBACisj
aWZuZGVmIF9MSU5VWF9GQVRYX0ZTX0gKKyNkZWZpbmUgX0xJTlVYX0ZBVFhfRlNfSAorCisvKgor
ICogIFRoZSBGQVRYIGZpbGVzeXN0ZW0gY29uc3RhbnRzL3N0cnVjdHVyZXMKKyAqCisgKi8KKwor
I2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvYnVmZmVyX2hlYWQuaD4KKyNp
bmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisKKyNkZWZpbmUgRkFUWF9ST09UX0lOTyAgMSAvKiA9
PSBNSU5JWF9ST09UX0lOTyAqLworCisjZGVmaW5lIEZBVFhfQ0FDSEUgICAgOCAvKiBGQVQgY2Fj
aGUgc2l6ZSAqLworCisjZGVmaW5lIE1TRE9TX0RPVERPVCAiLi4gICAgICAgICAiIC8qICIuLiIs
IHBhZGRlZCB0byBNU0RPU19OQU1FIGNoYXJzICovCisKKyNkZWZpbmUgRkFUWF9FTlRfRlJFRSAg
ICgwKQorI2RlZmluZSBGQVRYMzJfTUFYX05PTl9MRlMgICAgICgoMVVMPDwzMikgLSAxKQorI2Rl
ZmluZSBGQVRYMTZfTUFYX05PTl9MRlMgICAgICgoMVVMPDwzMCkgLSAxKQorCQorI2RlZmluZSBD
TFVTVEVSX1NJWkUgMzIKKyNkZWZpbmUgQVRUUl9STyAgICAgIDEgIC8qIHJlYWQtb25seSAqLwor
I2RlZmluZSBBVFRSX0hJRERFTiAgMiAgLyogaGlkZGVuICovCisjZGVmaW5lIEFUVFJfU1lTICAg
ICA0ICAvKiBzeXN0ZW0gKi8KKyNkZWZpbmUgQVRUUl9ESVIgICAgIDE2IC8qIGRpcmVjdG9yeSAq
LworI2RlZmluZSBBVFRSX0FSQ0ggICAgMCAgLyogYXJjaGl2ZWQgKi8KKyNkZWZpbmUgQVRUUl9V
TlVTRUQgIChBVFRSX0FSQ0ggfCBBVFRSX1NZUyB8IEFUVFJfSElEREVOKQorCisjZGVmaW5lIEFU
VFJfTk9ORSAgICAwIC8qIG5vIGF0dHJpYnV0ZSBiaXRzICovCisKKyNkZWZpbmUgRkFUWF9CT09U
QkxPQ0tfTUFHSUMgY3B1X3RvX2xlMzIoMHg1ODU0NDE0NikKKyNkZWZpbmUgRkFUWF9NQVhfTkFN
RV9MRU5HVEggNDIKKyNkZWZpbmUgRkFUWF9ESVJfQklUUyA2CisKKyNkZWZpbmUgREVMRVRFRF9G
TEFHIDB4ZTUgLyogbWFya3MgZmlsZSBhcyBkZWxldGVkIHdoZW4gaW4gbmFtZV9sZW5ndGggKi8K
KworLy9GRiA9PSBlbmQgb2YgZGlyZWN0b3J5IGluZm8sIEU1ID09IGRlbGV0ZWQgZW50cnkKKyNk
ZWZpbmUgRkFUWF9JU19GUkVFKGRlKSAoKGRlKS0+bmFtZV9sZW5ndGg9PURFTEVURURfRkxBRykK
KyNkZWZpbmUgRkFUWF9FTkRfT0ZfRElSKGRlKSAoKGRlKS0+bmFtZV9sZW5ndGg9PTB4RkYpCisK
KyNkZWZpbmUgSVNfRlJFRShuKSAoISoobikgfHwgKihjb25zdCB1bnNpZ25lZCBjaGFyICopIChu
KSA9PSBERUxFVEVEX0ZMQUcpCisKKyNkZWZpbmUgQ0ZfTEVfVyh2KSBsZTE2X3RvX2NwdSh2KQor
I2RlZmluZSBDRl9MRV9MKHYpIGxlMzJfdG9fY3B1KHYpCisjZGVmaW5lIENUX0xFX1codikgY3B1
X3RvX2xlMTYodikKKyNkZWZpbmUgQ1RfTEVfTCh2KSBjcHVfdG9fbGUzMih2KQorCisvKiBiYWQg
Y2x1c3RlciBtYXJrICovCisjZGVmaW5lIEJBRF9GQVQxNiAweEZGRjcKKyNkZWZpbmUgQkFEX0ZB
VDMyIDB4MEZGRkZGRjcKKyNkZWZpbmUgQkFEX0ZBVChzKSAoRkFUWF9TQihzKS0+ZmF0X2JpdHMg
PT0gMzIgPyBCQURfRkFUMzIgOiBCQURfRkFUMTYpCisKKyNkZWZpbmUgRU9DX0ZBVDE2IDB4RkZG
OAkvLyBlbmQgb2YgY2hhaW4gbWFya2VyCisjZGVmaW5lIEVPQ19GQVQzMiAweEZGRkZGRkY4CS8v
IGVuZCBvZiBjaGFpbiBtYXJrZXIKKyNkZWZpbmUgRU9GX0ZBVDE2IDB4RkZGOAkvLyBlbmQgb2Yg
ZmlsZSBtYXJrZXIKKyNkZWZpbmUgRU9GX0ZBVDMyIDB4RkZGRkZGRjgJLy8gZW5kIG9mIGZpbGUg
bWFya2VyCisjZGVmaW5lIEVPRl9GQVQocykgKEZBVFhfU0IocyktPmZhdF9iaXRzID09IDMyID8g
RU9GX0ZBVDMyIDogRU9GX0ZBVDE2KQorCisjZGVmaW5lIEZBVFhfVkFMSURfTU9ERSAoU19JRlJF
RyB8IFNfSUZESVIgfCBTX0lSV1hVIHwgU19JUldYRyB8IFNfSVJXWE8pCisKKy8qIENvbnZlcnQg
YXR0cmlidXRlIGJpdHMgYW5kIGEgbWFzayB0byB0aGUgVU5JWCBtb2RlLiAqLworI2RlZmluZSBG
QVRYX01LTU9ERShhLG0pIChtICYgKGEgJiBBVFRSX1JPID8gU19JUlVHT3xTX0lYVUdPIDogU19J
UldYVUdPKSkKKworLyogQ29udmVydCB0aGUgVU5JWCBtb2RlIHRvIEZBVFggYXR0cmlidXRlIGJp
dHMuICovCisjZGVmaW5lIEZBVFhfTUtBVFRSKG0pICgobSAmIFNfSVdVR08pID8gQVRUUl9OT05F
IDogQVRUUl9STykKKworc3RydWN0IGZhdHhfYm9vdF9zZWN0b3IgeworICAgICAgICBfX3UzMglt
YWdpYzsJCS8qICJGQVRYIiAqLworCV9fdTMyCXZvbHVtZV9pZDsJLyogVm9sdW1lIElEICovCisg
ICAgICAgIF9fdTMyCWNsdXN0ZXJfc2l6ZTsJLyogc2VjdG9ycy9jbHVzdGVyICovCisJX191MTYJ
ZmF0czsJCS8qIG51bWJlciBvZiBGQVRzICovCisJX191MzIJdW5rbm93bjsKK307CisKK3N0cnVj
dCBmYXR4X2Rpcl9lbnRyeSB7CisgICAgICAgIF9fdTgJbmFtZV9sZW5ndGg7CS8qIGxlbmd0aCBv
ZiBmaWxlbmFtZSAoYnl0ZXMpICovCisJX191OAlhdHRyOwkJLyogYXR0cmlidXRlIGJpdHMgKi8K
KyAgICAgICAgX19zOAluYW1lWzQyXTsJLyogZmlsZW5hbWUgKi8KKwlfX3UzMglzdGFydDsJCS8q
IGZpcnN0IGNsdXN0ZXIgKi8KKwlfX3UzMglzaXplOwkJLyogZmlsZSBzaXplIChpbiBieXRlcykg
Ki8KKwlfX3UxNgl0aW1lLGRhdGU7CS8qIHRpbWUsIGRhdGUgKi8KKwlfX3UxNgljdGltZSxjZGF0
ZTsJLyogQ3JlYXRpb24gdGltZSAqLworCV9fdTE2CWF0aW1lLGFkYXRlOwkvKiBMYXN0IGFjY2Vz
cyB0aW1lICovCit9OworCitzdHJ1Y3QgZmF0eF9ib290X2ZzaW5mbyB7CisJX191MzIgICBzaWdu
YXR1cmUxOwkvKiAweDQxNjE1MjUyTCAqLworCV9fdTMyICAgcmVzZXJ2ZWQxWzEyMF07CS8qIE5v
dGhpbmcgYXMgZmFyIGFzIEkgY2FuIHRlbGwgKi8KKwlfX3UzMiAgIHNpZ25hdHVyZTI7CS8qIDB4
NjE0MTcyNzJMICovCisJX191MzIgICBmcmVlX2NsdXN0ZXJzOwkvKiBGcmVlIGNsdXN0ZXIgY291
bnQuICAtMSBpZiB1bmtub3duICovCisJX191MzIgICBuZXh0X2NsdXN0ZXI7CS8qIE1vc3QgcmVj
ZW50bHkgYWxsb2NhdGVkIGNsdXN0ZXIuCisJCQkJICogVW51c2VkIHVuZGVyIExpbnV4LiAqLwor
CV9fdTMyICAgcmVzZXJ2ZWQyWzRdOworfTsKKworc3RydWN0IGZhdHhfY2FjaGUgeworCWRldl90
IGRldmljZTsgLyogZGV2aWNlIG51bWJlci4gMCBtZWFucyB1bnVzZWQuICovCisJaW50IHN0YXJ0
X2NsdXN0ZXI7IC8qIGZpcnN0IGNsdXN0ZXIgb2YgdGhlIGNoYWluLiAqLworCWludCBmaWxlX2Ns
dXN0ZXI7IC8qIGNsdXN0ZXIgbnVtYmVyIGluIHRoZSBmaWxlLiAqLworCWludCBkaXNrX2NsdXN0
ZXI7IC8qIGNsdXN0ZXIgbnVtYmVyIG9uIGRpc2suICovCisJc3RydWN0IGZhdHhfY2FjaGUgKm5l
eHQ7IC8qIG5leHQgY2FjaGUgZW50cnkgKi8KK307CisKKyNpZmRlZiBfX0tFUk5FTF9fCisKKyNp
bmNsdWRlIDxsaW51eC9idWZmZXJfaGVhZC5oPgorI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgor
I2luY2x1ZGUgPGxpbnV4L25scy5oPgorI2luY2x1ZGUgPGxpbnV4L2ZhdHhfZnNfaS5oPgorI2lu
Y2x1ZGUgPGxpbnV4L2ZhdHhfZnNfc2IuaD4KKyNpbmNsdWRlIDxhc20vc3RhdGZzLmg+CisKK3N0
YXRpYyBpbmxpbmUgc3RydWN0IGZhdHhfc2JfaW5mbyAqRkFUWF9TQihzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKnNiKQoreworCXJldHVybiBzYi0+c19mc19pbmZvOworfQorCitzdGF0aWMgaW5saW5lIHN0
cnVjdCBmYXR4X2lub2RlX2luZm8gKkZBVFhfSShzdHJ1Y3QgaW5vZGUgKmlub2RlKQoreworCXJl
dHVybiBjb250YWluZXJfb2YoaW5vZGUsIHN0cnVjdCBmYXR4X2lub2RlX2luZm8sIHZmc19pbm9k
ZSk7Cit9CisKKy8qIGZhdHgvY2FjaGUuYyAqLworZXh0ZXJuIGludCBmYXR4X2FjY2VzcyhzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgbnIsIGludCBuZXdfdmFsdWUpOworZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgZmF0eF9ibWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsdW5zaWduZWQgbG9uZyBzZWN0
b3IpOworZXh0ZXJuIHZvaWQgZmF0eF9jYWNoZV9pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgZmF0
eF9jYWNoZV9sb29rdXAoc3RydWN0IGlub2RlICppbm9kZSwgaW50IGNsdXN0ZXIsIGludCAqZl9j
bHUsCisJCQkgICAgIGludCAqZF9jbHUpOworZXh0ZXJuIHZvaWQgZmF0eF9jYWNoZV9hZGQoc3Ry
dWN0IGlub2RlICppbm9kZSwgaW50IGZfY2x1LCBpbnQgZF9jbHUpOworZXh0ZXJuIHZvaWQgZmF0
eF9jYWNoZV9pbnZhbF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKK2V4dGVybiB2b2lkIGZh
dHhfY2FjaGVfaW52YWxfZGV2KGRldl90IGRldmljZSk7CitleHRlcm4gaW50IGZhdHhfZ2V0X2Ns
dXN0ZXIoc3RydWN0IGlub2RlICppbm9kZSxpbnQgY2x1c3Rlcik7CitleHRlcm4gaW50IGZhdHhf
ZnJlZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgc2tpcCk7CitleHRlcm4gdm9pZCBmYXR4X2Ns
dXN0ZXJzX2ZsdXNoKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOworCisvKiBmYXR4L2Rpci5jICov
CitleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmYXRfZGlyX29wZXJhdGlvbnM7CitleHRl
cm4gaW50IGZhdHhfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqZmlscCwgdm9pZCAqZGlyZW50LCBmaWxs
ZGlyX3QgZmlsbGRpcik7CitleHRlcm4gaW50IGZhdHhfZGlyX2VtcHR5KHN0cnVjdCBpbm9kZSAq
ZGlyKTsKK2V4dGVybiBpbnQgZmF0eF9hZGRfZW50cmllcyhzdHJ1Y3QgaW5vZGUgKmRpciwgaW50
IHNsb3RzLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipiaCwKKwkJCSAgIHN0cnVjdCBmYXR4X2Rpcl9l
bnRyeSAqKmRlLCBsb2ZmX3QgKmlfcG9zKTsKK2V4dGVybiBpbnQgZmF0eF9uZXdfZGlyKHN0cnVj
dCBpbm9kZSAqZGlyLCBzdHJ1Y3QgaW5vZGUgKnBhcmVudCk7CisKKy8qIGZhdC9maWxlLmMgKi8K
K2V4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZhdHhfZmlsZV9vcGVyYXRpb25zOworZXh0
ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGZhdHhfZmlsZV9pbm9kZV9vcGVyYXRpb25zOwor
ZXh0ZXJuIHNzaXplX3QgZmF0eF9maWxlX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIgKmJ1
Ziwgc2l6ZV90IGNvdW50LAorCQkJICAgICBsb2ZmX3QgKnBwb3MpOworZXh0ZXJuIGludCBmYXR4
X2dldF9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzZWN0b3JfdCBpYmxvY2ssCisJCQkgc3Ry
dWN0IGJ1ZmZlcl9oZWFkICpiaF9yZXN1bHQsIGludCBjcmVhdGUpOworZXh0ZXJuIHNzaXplX3Qg
ZmF0eF9maWxlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxwLCBjb25zdCBjaGFyIF9fdXNlciAqYnVm
LCBzaXplX3QgY291bnQsCisJCQkgICAgICBsb2ZmX3QgKnBwb3MpOworZXh0ZXJuIHZvaWQgZmF0
eF90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKKworLyogZmF0L2lub2RlLmMgKi8KK2V4
dGVybiB2b2lkIGZhdHhfaGFzaF9pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgZmF0eF9hdHRhY2go
c3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IGlfcG9zKTsKK2V4dGVybiB2b2lkIGZhdHhfZGV0
YWNoKHN0cnVjdCBpbm9kZSAqaW5vZGUpOworZXh0ZXJuIHN0cnVjdCBpbm9kZSAqZmF0eF9pZ2V0
KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGxvZmZfdCBpX3Bvcyk7CitleHRlcm4gc3RydWN0IGlu
b2RlICpmYXR4X2J1aWxkX2lub2RlKAorCQlzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAorCQlzdHJ1
Y3QgZmF0eF9kaXJfZW50cnkgKmRlLCAKKwkJbG9mZl90IGlfcG9zLCAKKwkJaW50ICpyZXMpOwor
ZXh0ZXJuIGludCBmYXR4X2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYix2b2lkICpk
YXRhLCBpbnQgc2lsZW50KTsKKworZXh0ZXJuIHZvaWQgZmF0eF9kZWxldGVfaW5vZGUoc3RydWN0
IGlub2RlICppbm9kZSk7CitleHRlcm4gdm9pZCBmYXR4X2NsZWFyX2lub2RlKHN0cnVjdCBpbm9k
ZSAqaW5vZGUpOworZXh0ZXJuIHZvaWQgZmF0eF9wdXRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2Nr
ICpzYik7CisKK3R5cGVkZWYgaW50ICgqZmF0eF9ib290X2Jsb2NrX3BhcnNlX2Z1bmMpKAorCQlz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCAKKwkJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCApOwordHlw
ZWRlZiB2b2lkICgqZmF0eF9yZWFkX3Jvb3RfZnVuYykoc3RydWN0IGlub2RlICppbm9kZSk7CisK
K2V4dGVybiBpbnQgZmF0eF9zdGF0ZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtz
dGF0ZnMgKmJ1Zik7CitleHRlcm4gdm9pZCBmYXR4X3dyaXRlX2lub2RlKHN0cnVjdCBpbm9kZSAq
aW5vZGUsIGludCB3YWl0KTsKK2V4dGVybiBpbnQgZmF0eF9ub3RpZnlfY2hhbmdlKHN0cnVjdCBk
ZW50cnkgKiBkZW50cnksIHN0cnVjdCBpYXR0ciAqIGF0dHIpOworCitleHRlcm4gc3RydWN0IGFk
ZHJlc3Nfc3BhY2Vfb3BlcmF0aW9ucyBmYXR4X2FvcHM7CitleHRlcm4gc3BpbmxvY2tfdCBmYXR4
X2lub2RlX2xvY2s7CisKKworLyogZmF0eC9uYW1laS5jIC0gdGhlc2UgYXJlIGZvciB0aGUgeGJv
eCdzIEZBVFggKi8KK3N0cnVjdCBkZW50cnkgKmZhdHhfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGly
LHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IG5hbWVpZGF0YSAqbmQpOworZXh0ZXJuIGlu
dCBmYXR4X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBp
bnQgbW9kZSwgCisJCXN0cnVjdCBuYW1laWRhdGEgKm5kKTsKK2V4dGVybiBpbnQgZmF0eF9ybWRp
cihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKK2V4dGVybiBpbnQg
ZmF0eF91bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7Citl
eHRlcm4gaW50IGZhdHhfbWtkaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRl
bnRyeSwgaW50IG1vZGUpOworZXh0ZXJuIGludCBmYXR4X3JlbmFtZShzdHJ1Y3QgaW5vZGUgKm9s
ZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksCisJCSAgICAgICBzdHJ1Y3QgaW5vZGUg
Km5ld19kaXIsIHN0cnVjdCBkZW50cnkgKm5ld19kZW50cnkpOworCisvKiBmYXR4L2ZhdHhmc19z
eW1zLmMgKi8KK2V4dGVybiB1bnNpZ25lZCBpbnQgZmF0eF9kZWJ1ZzsKKworZXh0ZXJuIHN0cnVj
dCBmaWxlX3N5c3RlbV90eXBlIGZhdHhfZnNfdHlwZTsKKworZXh0ZXJuIGludCBmYXR4X2dldF9l
bnRyeShzdHJ1Y3QgaW5vZGUgKmRpcixsb2ZmX3QgKnBvcyxzdHJ1Y3QgYnVmZmVyX2hlYWQgKipi
aCwKKwkJc3RydWN0IGZhdHhfZGlyX2VudHJ5ICoqZGUsbG9mZl90ICppX3BvcyApOworCitleHRl
cm4gaW50IGZhdHhfc2NhbihzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3QgY2hhciAqbmFtZSwgaW50
IG5hbWVfbGVuZ3RoLAorCQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKipyZXNfYmgsc3RydWN0IGZhdHhf
ZGlyX2VudHJ5ICoqcmVzX2RlLAorCQlsb2ZmX3QgKmlfcG9zKTsKKwkJCisvKiBtaXNjZWxhbmVv
dXMgc3VwcG9ydCBjb2RlIGZvciBmYXR4IGZzICovCitleHRlcm4gaW50IGZhdHhfZGF0ZV9kb3My
dW5peCggdW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIHNob3J0ICk7CitleHRlcm4gdm9pZCBmYXR4
X2RhdGVfdW5peDJkb3MoaW50IHVuaXhfZGF0ZSwgdW5zaWduZWQgc2hvcnQgKnRpbWUsIHVuc2ln
bmVkIHNob3J0ICpkYXRlKTsKKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyIGZhdHhfdG9s
b3dlcihzdHJ1Y3QgbmxzX3RhYmxlICp0LCB1bnNpZ25lZCBjaGFyIGMpCit7CisJdW5zaWduZWQg
Y2hhciBuYyA9IHQtPmNoYXJzZXQybG93ZXJbY107CisKKwlyZXR1cm4gbmMgPyBuYyA6IGM7Cit9
CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciBmYXR4X3RvdXBwZXIoc3RydWN0IG5sc190
YWJsZSAqdCwgdW5zaWduZWQgY2hhciBjKQoreworCXVuc2lnbmVkIGNoYXIgbmMgPSB0LT5jaGFy
c2V0MnVwcGVyW2NdOworCisJcmV0dXJuIG5jID8gbmMgOiBjOworfQorCitzdGF0aWMgaW5saW5l
IGludCBmYXR4X3N0cm5pY21wKHN0cnVjdCBubHNfdGFibGUgKnQsIGNvbnN0IHVuc2lnbmVkIGNo
YXIgKnMxLAorCQljb25zdCB1bnNpZ25lZCBjaGFyICpzMiwgaW50IGxlbiApCit7CisJd2hpbGUo
bGVuLS0pIHsKKwkJaWYgKGZhdHhfdG9sb3dlcih0LCAqczErKykgIT0gZmF0eF90b2xvd2VyKHQs
ICpzMisrKSkKKwkJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKworLyogZGlyZWN0b3J5
IGNvZGUgZm9yIGZhdHggZnMgKi8KK2V4dGVybiBpbnQgZmF0eF9kb19hZGRfZW50cnkoc3RydWN0
IGlub2RlICpkaXIsCXN0cnVjdCBidWZmZXJfaGVhZCAqKmJoLAorCQlzdHJ1Y3QgZmF0eF9kaXJf
ZW50cnkgKipkZSwgbG9mZl90ICppX3Bvcyk7CisJCQorZXh0ZXJuIGludCBmYXR4X2Rpcl9lbXB0
eShzdHJ1Y3QgaW5vZGUgKmRpcik7CitleHRlcm4gaW50IGZhdHhfc3ViZGlycyhzdHJ1Y3QgaW5v
ZGUgKmRpcik7CisJCQorZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZmF0eF9kaXJfb3Bl
cmF0aW9uczsKKyNlbmRpZiAvKiBfX0tFUk5FTF9fICovCisKK2V4dGVybiBpbnQgZmF0eF9hY2Nl
c3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IG5yLCBpbnQgbmV3X3ZhbHVlKTsKK2V4dGVy
biB2b2lkIGZhdHhfZnNfcGFuaWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLGNvbnN0IGNoYXIgKm1z
Zyk7CitleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICpmYXR4X2V4dGVuZF9kaXIoc3RydWN0IGlu
b2RlICppbm9kZSk7CitleHRlcm4gaW50IGZhdHhfYWRkX2NsdXN0ZXIoc3RydWN0IGlub2RlICpp
bm9kZSk7CitleHRlcm4gdm9pZCBsb2NrX2ZhdHgoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7Citl
eHRlcm4gdm9pZCB1bmxvY2tfZmF0eChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKKworI2VuZGlm
IC8qIF9MSU5VWF9GQVRYX0ZTX0ggKi8KZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvaW5jbHVk
ZS9saW51eC9mYXR4X2ZzX2kuaCBsaW51eC0yLjYuNS9pbmNsdWRlL2xpbnV4L2ZhdHhfZnNfaS5o
Ci0tLSBsaW51eC0yLjYuNS5vcmlnL2luY2x1ZGUvbGludXgvZmF0eF9mc19pLmgJMTk3MC0wMS0w
MSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2luY2x1ZGUvbGludXgv
ZmF0eF9mc19pLmgJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCAr
MSwyNiBAQAorI2lmbmRlZiBfRkFUWF9GU19JCisjZGVmaW5lIF9GQVRYX0ZTX0kKKworI2luY2x1
ZGUgPGxpbnV4L2ZzLmg+CisKKy8qCisgKiAgRkFUWCBmaWxlIHN5c3RlbSBpbm9kZSBkYXRhIGlu
IG1lbW9yeQorICovCisKK3N0cnVjdCBmYXR4X2lub2RlX2luZm8geworCS8qIGNhY2hlIG9mIGxh
c3Rlc3QgYWNjZXNzZWQgY2x1c3RlciAqLworCWludCBmaWxlX2NsdXN0ZXI7ICAgICAgIC8qIGNs
dXN0ZXIgbnVtYmVyIGluIHRoZSBmaWxlLiAqLworCWludCBkaXNrX2NsdXN0ZXI7ICAgICAgIC8q
IGNsdXN0ZXIgbnVtYmVyIG9uIGRpc2suICovCisJCisJbG9mZl90IG1tdV9wcml2YXRlOworCWlu
dCBpX3N0YXJ0OwkvKiBmaXJzdCBjbHVzdGVyIG9yIDAgKi8KKwlpbnQgaV9sb2dzdGFydDsJLyog
bG9naWNhbCBmaXJzdCBjbHVzdGVyICovCisJaW50IGlfYXR0cnM7CS8qIHVudXNlZCBhdHRyaWJ1
dGUgYml0cyAqLworCWludCBpX2N0aW1lX21zOwkvKiB1bnVzZWQgY2hhbmdlIHRpbWUgaW4gbWls
bGlzZWNvbmRzICovCisJbG9mZl90IGlfcG9zOyAgIC8qIG9uLWRpc2sgcG9zaXRpb24gb2YgZGly
ZWN0b3J5IGVudHJ5IG9yIDAgKi8KKwlzdHJ1Y3QgaW5vZGUgKmlfZmF0X2lub2RlOyAgICAgIC8q
IHN0cnVjdCBpbm9kZSBvZiB0aGlzIG9uZSAqLworCXN0cnVjdCBsaXN0X2hlYWQgaV9mYXRfaGFz
aDsJLyogaGFzaCBieSBpX2xvY2F0aW9uICovCisJc3RydWN0IGlub2RlIHZmc19pbm9kZTsKK307
CisKKyNlbmRpZgpkaWZmIC11ck4gbGludXgtMi42LjUub3JpZy9pbmNsdWRlL2xpbnV4L2ZhdHhf
ZnNfc2IuaCBsaW51eC0yLjYuNS9pbmNsdWRlL2xpbnV4L2ZhdHhfZnNfc2IuaAotLS0gbGludXgt
Mi42LjUub3JpZy9pbmNsdWRlL2xpbnV4L2ZhdHhfZnNfc2IuaAkxOTcwLTAxLTAxIDAxOjAwOjAw
LjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUvaW5jbHVkZS9saW51eC9mYXR4X2ZzX3Ni
LmgJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSw1MSBAQAor
I2lmbmRlZiBfRkFUWF9GU19TQgorI2RlZmluZSBfRkFUWF9GU19TQgorCisvKgorICogIEZBVFgg
ZmlsZSBzeXN0ZW0gaW4tY29yZSBzdXBlcmJsb2NrIGRhdGEKKyAqCisgKiAgV3JpdHRlbiAyMDAz
IGJ5IEVkZ2FyIEh1Y2VrIGFuZCBMZWhuZXIgRnJhbnoKKyAqCisgKi8KKworc3RydWN0IGZhdHhf
bW91bnRfb3B0aW9ucyB7CisJdWlkX3QgZnNfdWlkOworCWdpZF90IGZzX2dpZDsKKwl1bnNpZ25l
ZCBzaG9ydCBmc191bWFzazsKKwl1bnNpZ25lZCBzaG9ydCBjb2RlcGFnZTsgIC8qIENvZGVwYWdl
IGZvciBzaG9ydG5hbWUgY29udmVyc2lvbnMgKi8KKwl1bnNpZ25lZCBzaG9ydCBzaG9ydG5hbWU7
IC8qIGZsYWdzIGZvciBzaG9ydG5hbWUgZGlzcGxheS9jcmVhdGUgcnVsZSAqLworCXVuc2lnbmVk
IGNoYXIgbmFtZV9jaGVjazsgLyogciA9IHJlbGF4ZWQsIG4gPSBub3JtYWwsIHMgPSBzdHJpY3Qg
Ki8KKwl1bnNpZ25lZCBjaGFyIGNvbnZlcnNpb247IC8qIGIgPSBiaW5hcnksIHQgPSB0ZXh0LCBh
ID0gYXV0byAqLworCXVuc2lnbmVkIHF1aWV0OjE7ICAgICAgICAgLyogc2V0ID0gZmFrZSBzdWNj
ZXNzZnVsIGNobW9kcyBhbmQgY2hvd25zICovCit9OworCisjZGVmaW5lIEZBVFhfQ0FDSEVfTlIg
ICAgOCAvKiBudW1iZXIgb2YgRkFUIGNhY2hlICovCisKK3N0cnVjdCBmYXR4X3NiX2luZm8gewor
CXVuc2lnbmVkIHNob3J0IHNlY19wZXJfY2x1czsgLyogc2VjdG9ycy9jbHVzdGVyICovCisJdW5z
aWduZWQgc2hvcnQgY2x1c3Rlcl9iaXRzOyAvKiBsb2cyKGNsdXN0ZXJfc2l6ZSkgKi8KKwl1bnNp
Z25lZCBpbnQgY2x1c3Rlcl9zaXplOyAgIC8qIGNsdXN0ZXIgc2l6ZSAqLworCXVuc2lnbmVkIGNo
YXIgZmF0cyxmYXRfYml0czsgLyogbnVtYmVyIG9mIEZBVHMsIEZBVCBiaXRzICgxMiBvciAxNikg
Ki8KKwl1bnNpZ25lZCBzaG9ydCBmYXRfc3RhcnQ7CisJdW5zaWduZWQgbG9uZyBmYXRfbGVuZ3Ro
OyAgICAvKiBGQVQgc3RhcnQgJiBsZW5ndGggKHNlYy4pICovCisJdW5zaWduZWQgbG9uZyBkaXJf
c3RhcnQ7CisJdW5zaWduZWQgc2hvcnQgZGlyX2VudHJpZXM7ICAvKiByb290IGRpciBzdGFydCAm
IGVudHJpZXMgKi8KKwl1bnNpZ25lZCBsb25nIGRhdGFfc3RhcnQ7ICAgIC8qIGZpcnN0IGRhdGEg
c2VjdG9yICovCisJdW5zaWduZWQgbG9uZyBjbHVzdGVyczsgICAgICAvKiBudW1iZXIgb2YgY2x1
c3RlcnMgKi8KKwl1bnNpZ25lZCBsb25nIHJvb3RfY2x1c3RlcjsgIC8qIGZpcnN0IGNsdXN0ZXIg
b2YgdGhlIHJvb3QgZGlyZWN0b3J5ICovCisJdW5zaWduZWQgbG9uZyBmc2luZm9fc2VjdG9yOyAv
KiBGQVQzMiBmc2luZm8gb2Zmc2V0IGZyb20gc3RhcnQgb2YgZGlzayAqLworCXN0cnVjdCBzZW1h
cGhvcmUgZmF0eF9sb2NrOworCWludCBwcmV2X2ZyZWU7ICAgICAgICAgICAgICAgLyogcHJldmlv
dXNseSByZXR1cm5lZCBmcmVlIGNsdXN0ZXIgbnVtYmVyICovCisJaW50IGZyZWVfY2x1c3RlcnM7
ICAgICAgICAgICAvKiAtMSBpZiB1bmRlZmluZWQgKi8KKwlzdHJ1Y3QgZmF0eF9tb3VudF9vcHRp
b25zIG9wdGlvbnM7CisJc3RydWN0IG5sc190YWJsZSAqbmxzX2Rpc2s7ICAvKiBDb2RlcGFnZSB1
c2VkIG9uIGRpc2sgKi8KKwlzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87ICAgIC8qIENoYXJzZXQg
dXNlZCBmb3IgaW5wdXQgYW5kIGRpc3BsYXkgKi8KKwl2b2lkICpkaXJfb3BzOwkJICAgICAvKiBP
cGFxdWU7IGRlZmF1bHQgZGlyZWN0b3J5IG9wZXJhdGlvbnMgKi8KKwl2b2lkICpwcml2YXRlX2Rh
dGE7CisJaW50IGRpcl9wZXJfYmxvY2s7CSAgICAgLyogZGlyIGVudHJpZXMgcGVyIGJsb2NrICov
CisJaW50IGRpcl9wZXJfYmxvY2tfYml0czsJICAgICAvKiBsb2cyKGRpcl9wZXJfYmxvY2spICov
CisKKwlzcGlubG9ja190IGNhY2hlX2xvY2s7Cit9OworCisjZW5kaWYKZGlmZiAtdXJOIGxpbnV4
LTIuNi41Lm9yaWcvaW5jbHVkZS9saW51eC9wY2lfaWRzLmggbGludXgtMi42LjUvaW5jbHVkZS9s
aW51eC9wY2lfaWRzLmgKLS0tIGxpbnV4LTIuNi41Lm9yaWcvaW5jbHVkZS9saW51eC9wY2lfaWRz
LmgJMjAwNC0wNC0wNCAwNDozNjo1Ny4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41L2lu
Y2x1ZGUvbGludXgvcGNpX2lkcy5oCTIwMDQtMDUtMDEgMTU6MjA6NDMuMDAwMDAwMDAwICswMTAw
CkBAIC0xMDk1LDYgKzEwOTUsNyBAQAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9RVUFE
Uk80XzkwMFhHTAkweDAyNTgKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfUVVBRFJPNF83
NTBYR0wJMHgwMjU5CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX1FVQURSTzRfNzAwWEdM
CTB4MDI1QgorI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9JR0VGT1JDRTMJCTB4MDJhMAog
CiAjZGVmaW5lIFBDSV9WRU5ET1JfSURfSU1TCQkweDEwZTAKICNkZWZpbmUgUENJX0RFVklDRV9J
RF9JTVNfODg0OQkJMHg4ODQ5CmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL2luY2x1ZGUvbGlu
dXgveGJveC5oIGxpbnV4LTIuNi41L2luY2x1ZGUvbGludXgveGJveC5oCi0tLSBsaW51eC0yLjYu
NS5vcmlnL2luY2x1ZGUvbGludXgveGJveC5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAw
ICswMTAwCisrKyBsaW51eC0yLjYuNS9pbmNsdWRlL2xpbnV4L3hib3guaAkyMDA0LTA1LTAxIDE1
OjIwOjQzLjUwNDkyNDQzMiArMDEwMApAQCAtMCwwICsxLDEzNSBAQAorI2lmbmRlZiBfWEJPWF9I
XworI2RlZmluZSBfWEJPWF9IXworCisjZGVmaW5lIFhCT1hfU01CX0lPX0JBU0UgMHhDMDAwCisj
ZGVmaW5lIFhCT1hfU01CX0hPU1RfQUREUkVTUyAgICAgICAoMHg0ICsgWEJPWF9TTUJfSU9fQkFT
RSkKKyNkZWZpbmUgWEJPWF9TTUJfSE9TVF9DT01NQU5EICAgICAgICgweDggKyBYQk9YX1NNQl9J
T19CQVNFKQorI2RlZmluZSBYQk9YX1NNQl9IT1NUX0RBVEEgICAgICAgICAgKDB4NiArIFhCT1hf
U01CX0lPX0JBU0UpCisjZGVmaW5lIFhCT1hfU01CX0dMT0JBTF9FTkFCTEUgICAgICAgKDB4MiAr
IFhCT1hfU01CX0lPX0JBU0UpCisjZGVmaW5lIFhCT1hfR0VfQ1lDX1RZUEVfTUFTSyAoNykKKyNk
ZWZpbmUgWEJPWF9CWVRFX0RBVEEgICAgMHgwMgorCisjZGVmaW5lIFhCT1hfU01DX0FERFJFU1Mg
MHgxMAorI2RlZmluZSBYQk9YX1RWX0FERFJFU1MgMHg0NQorCisjZGVmaW5lIFNNQ19DTURfUE9X
RVIgMHgwMgorI2RlZmluZSBTTUNfQ01EX1RSQVlfU1RBVEUgMHgwMworI2RlZmluZSBTTUNfQ01E
X0FWX1BBQ0sgMHgwNAorI2RlZmluZSBTTUNfQ01EX0xFRF9NT0RFIDB4MDcKKyNkZWZpbmUgU01D
X0NNRF9MRURfUkVHSVNURVIgMHgwOAorI2RlZmluZSBTTUNfQ01EX0VKRUNUIDB4MEMKKyNkZWZp
bmUgU01DX0NNRF9JTlRFUlJVUFRfUkVTUE9ORCAweDBECisjZGVmaW5lIFNNQ19DTURfSU5URVJS
VVBUX1JFQVNPTiAweDExCisjZGVmaW5lIFNNQ19DTURfUkVTRVRfT05fRUpFQ1QgMHgxOQorI2Rl
ZmluZSBTTUNfQ01EX1NDUkFUQ0hfUkVHSVNURVIgMHgxQgorLy8gSSB0aGluayBjb21tYW5kcyAy
MCBhbmQgMjEgYXJlIHVzZWQgZm9yIGJvb3R1cCBhdXRoZW50aWNhdGlvbiwgYnV0CisvLyBJIGRv
bid0IGtub3cgdGhvc2UgY29tbWFuZHMuICBUaGUgQ1JPTSBwZW9wbGUga25vdy4KKy8vCisjZGVm
aW5lIFNNQ19TVUJDTURfUE9XRVJfUkVTRVQgMHgwMQorI2RlZmluZSBTTUNfU1VCQ01EX1BPV0VS
X0NZQ0xFIDB4NDAKKyNkZWZpbmUgU01DX1NVQkNNRF9QT1dFUl9PRkYgMHg4MAorLy8KKyNkZWZp
bmUgU01DX1NVQkNNRF9SRVNQT05EX0NPTlRJTlVFIDB4MDQKKy8vCisvLyBUaGVzZSBhcmUgZnJv
bSByZWNlbnQgcG9zdHMgdG8gdGhpcyBsaXN0IChleGNlcHQgTUlTU0lORykKKyNkZWZpbmUgU01D
X1ZBTFVFX0FWX1NDQVJUIDB4MDAKKyNkZWZpbmUgU01DX1ZBTFVFX0FWX0hEVFYgMHgwMQorI2Rl
ZmluZSBTTUNfVkFMVUVfQVZfVkdBIDB4MDIKKyNkZWZpbmUgU01DX1ZBTFVFX0FWX1JGVSAweDAz
CisjZGVmaW5lIFNNQ19WQUxVRV9BVl9TVklERU8gMHgwNAorI2RlZmluZSBTTUNfVkFMVUVfQVZf
U1RBTkRBUkQgMHgwNgorI2RlZmluZSBTTUNfVkFMVUVfQVZfVU5ERUZJTkVEIDB4MDUKKyNkZWZp
bmUgU01DX1ZBTFVFX0FWX01JU1NJTkcgMHgwNworLy8KKyNkZWZpbmUgU01DX1NVQkNNRF9MRURf
TU9ERV9ERUZBVUxUIDB4MDAKKyNkZWZpbmUgU01DX1NVQkNNRF9MRURfTU9ERV9DVVNUT00gMHgw
MQorCisjZGVmaW5lIFNNQ19TVUJDTURfRUpFQ1RfRUpFQ1QgMHgwMAorI2RlZmluZSBTTUNfU1VC
Q01EX0VKRUNUX0xPQUQgMHgwMQorCisvLyBCaXRzIDAxLi4uNDAgYWxsIGhhdmUgbWVhbmluZyBi
dXQgSSBkb24ndCBrbm93IHRoZW0gYWxsLgorI2RlZmluZSBTTUNfVkFMVUVfSU5URVJSVVBUX1BP
V0VSX0JVVFRPTiAweDAxCisjZGVmaW5lIFNNQ19WQUxVRV9JTlRFUlJVUFRfQVZfUkVNT1ZFRCAw
eDEwCisjZGVmaW5lIFNNQ19WQUxVRV9JTlRFUlJVUFRfRUpFQ1RfQlVUVE9OIDB4MjAKKworI2Rl
ZmluZSBTTUNfU1VCQ01EX1JFU0VUX09OX0VKRUNUX0VOQUJMRSAweDAwCisjZGVmaW5lIFNNQ19T
VUJDTURfUkVTRVRfT05fRUpFQ1RfRElTQUJMRSAweDAxCisKKy8vIFRoZXNlIGFyZSBkZWZpbmVk
IGJ5IHRoZSAqa2VybmVsKiwgbm90IHRoZSBTTUMuCisjZGVmaW5lIFNNQ19TQ1JBVENIX0VKRUNU
X0FGVEVSX0JPT1QgMHgwMQorI2RlZmluZSBTTUNfU0NSQVRDSF9ESVNQTEFZX0VSUk9SIDB4MDIK
KyNkZWZpbmUgU01DX1NDUkFUQ0hfTk9fQU5JTUFUSU9OIDB4MDQKKyNkZWZpbmUgU01DX1NDUkFU
Q0hfUlVOX0RBU0hCT0FSRCAweDA4CisKKy8qIGludGVycnVwdCBjYXVzZXMgKi8KKyNkZWZpbmUg
UE9XRVJET1dOX01BU0sgKDE8PDApCisjZGVmaW5lIFRSQVlDTE9TRURfTUFTSyAoMTw8MSkKKyNk
ZWZpbmUgVFJBWU9QRU5JTkdfTUFTSyAoMTw8MikKKyNkZWZpbmUgQVZQTFVHR0VEX01BU0sgKDE8
PDMpCisjZGVmaW5lIEFWVU5QTFVHR0VEX01BU0sgKDE8PDQpCisjZGVmaW5lIFRSQVlCVVRUT05f
TUFTSyAoMTw8NSkKKyNkZWZpbmUgVFJBWUNMT1NJTkdfTUFTSyAoMTw8NikKKyNkZWZpbmUgVU5L
Tk9XTl9NQVNLICgxPDw3KQorCitleHRlcm4gaW50IG1hY2hpbmVfaXNfeGJveDsKKworI2RlZmlu
ZSBYQk9YX0kyQ19JT19CQVNFIDB4YzAwMAorc3RhdGljIGlubGluZSB2b2lkIFhib3hfU01DX3dy
aXRlKHU4IGQxLHU4IGQyKSB7CisJaW50IGM9NDsKKwl1OCBiPTA7CisJdTMyIGR3U3BpbnNUb0xp
dmUgPSAweDgwMDAwMDA7CisKKwkvKgorCXdoaWxlKGludyhYQk9YX0kyQ19JT19CQVNFKzApJjB4
MDgwMCk7CisJKi8KKwl3aGlsZShjLS0pIHsKKwkJb3V0YihYQk9YX1NNQ19BRERSRVNTPDwxLCBY
Qk9YX1NNQl9IT1NUX0FERFJFU1MpOworCQlvdXRiKCh1OClkMSwgWEJPWF9TTUJfSE9TVF9DT01N
QU5EKTsKKwkJb3V0YigodTgpZDIsIFhCT1hfU01CX0hPU1RfREFUQSk7CisJCW91dHcoMHhmZmZm
LCBYQk9YX0kyQ19JT19CQVNFKzApOworCQlvdXRiKDB4MGEsIFhCT1hfU01CX0dMT0JBTF9FTkFC
TEUpOworCQl7CisJCQl3aGlsZSgoYiAhPTB4MTApICYmICgoYiYweDI2KT09MCkgJiYgKGR3U3Bp
bnNUb0xpdmUtLSkpIHsKKwkJCQliPWluYihYQk9YX0kyQ19JT19CQVNFKTsKKwkJCX0KKwkJCWlm
KGImMHgyKSBjb250aW51ZTsKKwkJCWlmKGImMHgyNCkgY29udGludWU7CisJCQlpZighKGImMHgx
MCkpIGNvbnRpbnVlOworCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50
IFhib3hfU01DX3JlYWQodTggZCkgeworICAgICAgICBpbnQgYz00OworCXU4IGI9MDsKKwl1MzIg
ZHdTcGluc1RvTGl2ZSA9IDB4ODAwMDAwMDsKKwkKKwkvKgorCXdoaWxlKGludyhYQk9YX0kyQ19J
T19CQVNFKzApJjB4MDgwMCk7CisJKi8KKyAgICAgICAgd2hpbGUoYy0tKSB7CisJCW91dGIoKFhC
T1hfU01DX0FERFJFU1M8PDEpfDEsIFhCT1hfU01CX0hPU1RfQUREUkVTUyk7CisgICAgICAgICAg
ICAgICAgb3V0YihkLCBYQk9YX1NNQl9IT1NUX0NPTU1BTkQpOworICAgICAgICAgICAgICAgIG91
dHcoMHhmZmZmLCBYQk9YX0kyQ19JT19CQVNFKzApOworICAgICAgICAgICAgICAgIG91dGIoMHgw
YSwgWEJPWF9TTUJfR0xPQkFMX0VOQUJMRSk7CisJCXsKKwkJCXdoaWxlKChiICE9MHgxMCkgJiYg
KChiJjB4MjYpPT0wKSAmJiAoZHdTcGluc1RvTGl2ZS0tKSkgeworCQkJCWI9aW5iKFhCT1hfSTJD
X0lPX0JBU0UpOworCQkJfQorCQkJaWYoYiYweDIpIGNvbnRpbnVlOworCQkJaWYoYiYweDI0KSBj
b250aW51ZTsKKwkJCWlmKCEoYiYweDEwKSkgY29udGludWU7CisJCQlicmVhazsJCisJCX0KKwl9
CisJcmV0dXJuIChpbnQpaW5iKFhCT1hfU01CX0hPU1RfREFUQSk7Cit9CisKKyNkZWZpbmUgWGJv
eF90cmF5X2xvYWQoKSBYYm94X1NNQ193cml0ZShTTUNfQ01EX0VKRUNULCBTTUNfU1VCQ01EX0VK
RUNUX0xPQUQpOworI2RlZmluZSBYYm94X3RyYXlfZWplY3QoKSBYYm94X1NNQ193cml0ZShTTUNf
Q01EX0VKRUNULCBTTUNfU1VCQ01EX0VKRUNUX0VKRUNUKTsKKworI2RlZmluZSBYYm94X3Bvd2Vy
X29mZigpIFhib3hfU01DX3dyaXRlKFNNQ19DTURfUE9XRVIsIFNNQ19TVUJDTURfUE9XRVJfT0ZG
KTsKKyNkZWZpbmUgWGJveF9yZXNldCgpIFhib3hfU01DX3dyaXRlKFNNQ19DTURfUE9XRVIsIFNN
Q19TVUJDTURfUE9XRVJfUkVTRVQpOworCisjZW5kaWYgLyogX1hCT1hfSF8gKi8KZGlmZiAtdXJO
IGxpbnV4LTIuNi41Lm9yaWcvaW5jbHVkZS9saW51eC94Ym94ZmJjdGwuaCBsaW51eC0yLjYuNS9p
bmNsdWRlL2xpbnV4L3hib3hmYmN0bC5oCi0tLSBsaW51eC0yLjYuNS5vcmlnL2luY2x1ZGUvbGlu
dXgveGJveGZiY3RsLmgJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxp
bnV4LTIuNi41L2luY2x1ZGUvbGludXgveGJveGZiY3RsLmgJMjAwNC0wNS0wMSAxNToyMDo0My41
MDg5MjM4MjQgKzAxMDAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvdmlk
ZW8veGJveGZiY3RsLmgKKyAqIC0gVHlwZSBkZWZpbml0aW9ucyBmb3IgaW9jdGxzIG9mIFhib3gg
dmlkZW8gZHJpdmVyCisgKgorICogTWFpbnRhaW5lcjogT2xpdmVyIFNjaHdhcnR6IDxPbGl2ZXIu
U2Nod2FydHpAZ214LmRlPgorICoKKyAqIENvbnRyaWJ1dG9yczoKKyAqCisgKiBUaGlzIGZpbGUg
aXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZS4gIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluIGRp
cmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUKKyAqIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogS25v
d24gYnVncyBhbmQgaXNzdWVzOgorICoKKyAqICAgICAgbm9uZQorICovCisKKyNpZm5kZWYgeGJv
ZmJjdGxfaAorI2RlZmluZSB4Ym9mYmN0bF9oCisKK3R5cGVkZWYgZW51bSBlbnVtVmlkZW9TdGFu
ZGFyZHMgeworCVRWX0VOQ19JTlZBTElEPS0xLAorCVRWX0VOQ19OVFNDPTAsCisJVFZfRU5DX05U
U0M2MCwKKwlUVl9FTkNfUEFMQkRHSEksCisJVFZfRU5DX1BBTE4sCisJVFZfRU5DX1BBTE5DLAor
CVRWX0VOQ19QQUxNLAorCVRWX0VOQ19QQUw2MAorfSB4Ym94X3R2X2VuY29kaW5nOworCit0eXBl
ZGVmIGVudW0gZW51bUF2VHlwZXMgeworCUFWX0lOVkFMSUQ9LTEsCisJQVZfU0NBUlRfUkdCLAor
CUFWX1NWSURFTywKKwlBVl9WR0FfU09HLAorCUFWX0hEVFYsCisJQVZfQ09NUE9TSVRFLAorCUFW
X1ZHQQorfSB4Ym94X2F2X3R5cGU7CisKK3R5cGVkZWYgZW51bSBlbnVtRW5jb2RlclR5cGUgewor
CUVOQ09ERVJfQ09ORVhBTlQsCisJRU5DT0RFUl9GT0NVUworfSB4Ym94X2VuY29kZXJfdHlwZTsK
KwordHlwZWRlZiBzdHJ1Y3QgX3hib3hPdmVyc2NhbiB7CisJZG91YmxlIGhvYzsKKwlkb3VibGUg
dm9jOworfSB4Ym94X292ZXJzY2FuOworCit0eXBlZGVmIHN0cnVjdCBfeGJveEZiQ29uZmlnIHsK
Kwl4Ym94X2F2X3R5cGUgYXZfdHlwZTsKKwl4Ym94X2VuY29kZXJfdHlwZSBlbmNvZGVyX3R5cGU7
Cit9IHhib3hmYl9jb25maWc7CisKKyNkZWZpbmUgRkJJT19YQk9YX0dFVF9PVkVSU0NBTiAgX0lP
UigneCcsIDEsIHhib3hfb3ZlcnNjYW4pCisvKiBpbiBwYXJhbTogZG91YmxlICBob2MgKDAuMC0w
LjIpLCBkb3VibGUgdm9jICgwLjAgLSAwLjIpICovCisjZGVmaW5lIEZCSU9fWEJPWF9TRVRfT1ZF
UlNDQU4gIF9JT1coJ3gnLCAyLCB4Ym94X292ZXJzY2FuKQorCisjZGVmaW5lIEZCSU9fWEJPWF9H
RVRfVFZfRU5DT0RJTkcgIF9JT1IoJ3gnLCAzLCB4Ym94X3R2X2VuY29kaW5nKQorI2RlZmluZSBG
QklPX1hCT1hfU0VUX1RWX0VOQ09ESU5HICBfSU9XKCd4JywgNCwgeGJveF90dl9lbmNvZGluZykK
KworI2RlZmluZSBGQklPX1hCT1hfR0VUX0NPTkZJRyAgX0lPUigneCcsIDUsIHhib3hmYl9jb25m
aWcpCisKKyNlbmRpZgpkaWZmIC11ck4gbGludXgtMi42LjUub3JpZy9rZXJuZWwuY29uZmlnIGxp
bnV4LTIuNi41L2tlcm5lbC5jb25maWcKLS0tIGxpbnV4LTIuNi41Lm9yaWcva2VybmVsLmNvbmZp
ZwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjUva2Vy
bmVsLmNvbmZpZwkyMDA0LTA1LTAxIDE1OjIwOjQzLjAwMDAwMDAwMCArMDEwMApAQCAtMCwwICsx
LDEyNTAgQEAKKyMKKyMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0
IGVkaXQKKyMKK0NPTkZJR19YODY9eQorQ09ORklHX01NVT15CitDT05GSUdfVUlEMTY9eQorQ09O
RklHX0dFTkVSSUNfSVNBX0RNQT15CisKKyMKKyMgQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25z
CisjCitDT05GSUdfRVhQRVJJTUVOVEFMPXkKKyMgQ09ORklHX0NMRUFOX0NPTVBJTEUgaXMgbm90
IHNldAorIyBDT05GSUdfU1RBTkRBTE9ORSBpcyBub3Qgc2V0CitDT05GSUdfQlJPS0VOPXkKK0NP
TkZJR19CUk9LRU5fT05fU01QPXkKKworIworIyBHZW5lcmFsIHNldHVwCisjCitDT05GSUdfU1dB
UD15CitDT05GSUdfU1lTVklQQz15CitDT05GSUdfQlNEX1BST0NFU1NfQUNDVD15CitDT05GSUdf
U1lTQ1RMPXkKK0NPTkZJR19MT0dfQlVGX1NISUZUPTE0CisjIENPTkZJR19IT1RQTFVHIGlzIG5v
dCBzZXQKK0NPTkZJR19JS0NPTkZJRz15CitDT05GSUdfSUtDT05GSUdfUFJPQz15CitDT05GSUdf
RU1CRURERUQ9eQorIyBDT05GSUdfS0FMTFNZTVMgaXMgbm90IHNldAorQ09ORklHX0ZVVEVYPXkK
K0NPTkZJR19FUE9MTD15CisjIENPTkZJR19JT1NDSEVEX05PT1AgaXMgbm90IHNldAorIyBDT05G
SUdfSU9TQ0hFRF9BUyBpcyBub3Qgc2V0CitDT05GSUdfSU9TQ0hFRF9ERUFETElORT15CisjIENP
TkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0CisKKyMKKyMgTG9hZGFibGUgbW9k
dWxlIHN1cHBvcnQKKyMKK0NPTkZJR19NT0RVTEVTPXkKK0NPTkZJR19NT0RVTEVfVU5MT0FEPXkK
K0NPTkZJR19NT0RVTEVfRk9SQ0VfVU5MT0FEPXkKK0NPTkZJR19PQlNPTEVURV9NT0RQQVJNPXkK
KyMgQ09ORklHX01PRFZFUlNJT05TIGlzIG5vdCBzZXQKK0NPTkZJR19LTU9EPXkKKworIworIyBQ
cm9jZXNzb3IgdHlwZSBhbmQgZmVhdHVyZXMKKyMKKyMgQ09ORklHX1g4Nl9QQyBpcyBub3Qgc2V0
CisjIENPTkZJR19YODZfRUxBTiBpcyBub3Qgc2V0CitDT05GSUdfWDg2X1hCT1g9eQorIyBDT05G
SUdfWDg2X1ZPWUFHRVIgaXMgbm90IHNldAorIyBDT05GSUdfWDg2X05VTUFRIGlzIG5vdCBzZXQK
KyMgQ09ORklHX1g4Nl9TVU1NSVQgaXMgbm90IHNldAorIyBDT05GSUdfWDg2X0JJR1NNUCBpcyBu
b3Qgc2V0CisjIENPTkZJR19YODZfVklTV1MgaXMgbm90IHNldAorIyBDT05GSUdfWDg2X0dFTkVS
SUNBUkNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX1g4Nl9FUzcwMDAgaXMgbm90IHNldAorIyBDT05G
SUdfTTM4NiBpcyBub3Qgc2V0CisjIENPTkZJR19NNDg2IGlzIG5vdCBzZXQKKyMgQ09ORklHX001
ODYgaXMgbm90IHNldAorIyBDT05GSUdfTTU4NlRTQyBpcyBub3Qgc2V0CisjIENPTkZJR19NNTg2
TU1YIGlzIG5vdCBzZXQKKyMgQ09ORklHX002ODYgaXMgbm90IHNldAorIyBDT05GSUdfTVBFTlRJ
VU1JSSBpcyBub3Qgc2V0CitDT05GSUdfTVBFTlRJVU1JSUk9eQorIyBDT05GSUdfTVBFTlRJVU1N
IGlzIG5vdCBzZXQKKyMgQ09ORklHX01QRU5USVVNNCBpcyBub3Qgc2V0CisjIENPTkZJR19NSzYg
aXMgbm90IHNldAorIyBDT05GSUdfTUs3IGlzIG5vdCBzZXQKKyMgQ09ORklHX01LOCBpcyBub3Qg
c2V0CisjIENPTkZJR19NRUxBTiBpcyBub3Qgc2V0CisjIENPTkZJR19NQ1JVU09FIGlzIG5vdCBz
ZXQKKyMgQ09ORklHX01XSU5DSElQQzYgaXMgbm90IHNldAorIyBDT05GSUdfTVdJTkNISVAyIGlz
IG5vdCBzZXQKKyMgQ09ORklHX01XSU5DSElQM0QgaXMgbm90IHNldAorIyBDT05GSUdfTUNZUklY
SUlJIGlzIG5vdCBzZXQKKyMgQ09ORklHX01WSUFDM18yIGlzIG5vdCBzZXQKK0NPTkZJR19YODZf
R0VORVJJQz15CitDT05GSUdfWDg2X0NNUFhDSEc9eQorQ09ORklHX1g4Nl9YQUREPXkKK0NPTkZJ
R19YODZfTDFfQ0FDSEVfU0hJRlQ9NworQ09ORklHX1JXU0VNX1hDSEdBRERfQUxHT1JJVEhNPXkK
K0NPTkZJR19YODZfV1BfV09SS1NfT0s9eQorQ09ORklHX1g4Nl9JTlZMUEc9eQorQ09ORklHX1g4
Nl9CU1dBUD15CitDT05GSUdfWDg2X1BPUEFEX09LPXkKK0NPTkZJR19YODZfR09PRF9BUElDPXkK
K0NPTkZJR19YODZfSU5URUxfVVNFUkNPUFk9eQorQ09ORklHX1g4Nl9VU0VfUFBST19DSEVDS1NV
TT15CitDT05GSUdfSFBFVF9USU1FUj15CisjIENPTkZJR19IUEVUX0VNVUxBVEVfUlRDIGlzIG5v
dCBzZXQKKyMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAorIyBDT05GSUdfWDg2X1VQX0FQSUMg
aXMgbm90IHNldAorQ09ORklHX1hCT1hfRUpFQ1Q9eQorQ09ORklHX1g4Nl9UU0M9eQorIyBDT05G
SUdfWDg2X01DRSBpcyBub3Qgc2V0CisjIENPTkZJR19UT1NISUJBIGlzIG5vdCBzZXQKKyMgQ09O
RklHX0k4SyBpcyBub3Qgc2V0CisjIENPTkZJR19NSUNST0NPREUgaXMgbm90IHNldAorIyBDT05G
SUdfWDg2X01TUiBpcyBub3Qgc2V0CisjIENPTkZJR19YODZfQ1BVSUQgaXMgbm90IHNldAorIyBD
T05GSUdfRUREIGlzIG5vdCBzZXQKK0NPTkZJR19OT0hJR0hNRU09eQorIyBDT05GSUdfSElHSE1F
TTRHIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hJR0hNRU02NEcgaXMgbm90IHNldAorIyBDT05GSUdf
TUFUSF9FTVVMQVRJT04gaXMgbm90IHNldAorQ09ORklHX01UUlI9eQorIyBDT05GSUdfUkVHUEFS
TSBpcyBub3Qgc2V0CisKKyMKKyMgUG93ZXIgbWFuYWdlbWVudCBvcHRpb25zIChBQ1BJLCBBUE0p
CisjCisjIENPTkZJR19QTSBpcyBub3Qgc2V0CisKKyMKKyMgQUNQSSAoQWR2YW5jZWQgQ29uZmln
dXJhdGlvbiBhbmQgUG93ZXIgSW50ZXJmYWNlKSBTdXBwb3J0CisjCisjIENPTkZJR19BQ1BJIGlz
IG5vdCBzZXQKKworIworIyBDUFUgRnJlcXVlbmN5IHNjYWxpbmcKKyMKKyMgQ09ORklHX0NQVV9G
UkVRIGlzIG5vdCBzZXQKKworIworIyBCdXMgb3B0aW9ucyAoUENJLCBQQ01DSUEsIEVJU0EsIE1D
QSwgSVNBKQorIworQ09ORklHX1BDST15CisjIENPTkZJR19QQ0lfR09CSU9TIGlzIG5vdCBzZXQK
KyMgQ09ORklHX1BDSV9HT01NQ09ORklHIGlzIG5vdCBzZXQKK0NPTkZJR19QQ0lfR09ESVJFQ1Q9
eQorIyBDT05GSUdfUENJX0dPQU5ZIGlzIG5vdCBzZXQKK0NPTkZJR19QQ0lfRElSRUNUPXkKKyMg
Q09ORklHX1BDSV9MRUdBQ1lfUFJPQyBpcyBub3Qgc2V0CisjIENPTkZJR19QQ0lfTkFNRVMgaXMg
bm90IHNldAorIyBDT05GSUdfSVNBIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDeDIwMCBpcyBub3Qg
c2V0CisKKyMKKyMgRXhlY3V0YWJsZSBmaWxlIGZvcm1hdHMKKyMKK0NPTkZJR19CSU5GTVRfRUxG
PXkKK0NPTkZJR19CSU5GTVRfQU9VVD1tCitDT05GSUdfQklORk1UX01JU0M9bQorCisjCisjIERl
dmljZSBEcml2ZXJzCisjCisKKyMKKyMgR2VuZXJpYyBEcml2ZXIgT3B0aW9ucworIworCisjCisj
IE1lbW9yeSBUZWNobm9sb2d5IERldmljZXMgKE1URCkKKyMKKyMgQ09ORklHX01URCBpcyBub3Qg
c2V0CisKKyMKKyMgUGFyYWxsZWwgcG9ydCBzdXBwb3J0CisjCisjIENPTkZJR19QQVJQT1JUIGlz
IG5vdCBzZXQKKworIworIyBQbHVnIGFuZCBQbGF5IHN1cHBvcnQKKyMKKworIworIyBCbG9jayBk
ZXZpY2VzCisjCisjIENPTkZJR19CTEtfREVWX0ZEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19D
UFFfREEgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0NQUV9DSVNTX0RBIGlzIG5vdCBzZXQKKyMg
Q09ORklHX0JMS19ERVZfREFDOTYwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfVU1FTSBp
cyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9MT09QPW0KK0NPTkZJR19CTEtfREVWX0NSWVBUT0xP
T1A9bQorQ09ORklHX0JMS19ERVZfTkJEPW0KK0NPTkZJR19CTEtfREVWX1JBTT15CitDT05GSUdf
QkxLX0RFVl9SQU1fU0laRT00MDk2CitDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQorIyBDT05GSUdf
TEJEIGlzIG5vdCBzZXQKKworIworIyBBVEEvQVRBUEkvTUZNL1JMTCBzdXBwb3J0CisjCitDT05G
SUdfSURFPXkKK0NPTkZJR19CTEtfREVWX0lERT15CisKKyMKKyMgUGxlYXNlIHNlZSBEb2N1bWVu
dGF0aW9uL2lkZS50eHQgZm9yIGhlbHAvaW5mbyBvbiBJREUgZHJpdmVzCisjCisjIENPTkZJR19C
TEtfREVWX0hEX0lERSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JREVESVNLPXkKKyMgQ09O
RklHX0lERURJU0tfTVVMVElfTU9ERSBpcyBub3Qgc2V0CisjIENPTkZJR19JREVESVNLX1NUUk9L
RSBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9JREVDRD15CisjIENPTkZJR19CTEtfREVWX0lE
RVRBUEUgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9JREVGTE9QUFkgaXMgbm90IHNldAor
IyBDT05GSUdfQkxLX0RFVl9JREVTQ1NJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lERV9UQVNLX0lP
Q1RMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lERV9UQVNLRklMRV9JTyBpcyBub3Qgc2V0CisKKyMK
KyMgSURFIGNoaXBzZXQgc3VwcG9ydC9idWdmaXhlcworIworQ09ORklHX0lERV9HRU5FUklDPXkK
KyMgQ09ORklHX0JMS19ERVZfQ01ENjQwIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0lERVBD
ST15CitDT05GSUdfSURFUENJX1NIQVJFX0lSUT15CisjIENPTkZJR19CTEtfREVWX09GRkJPQVJE
IGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0dFTkVSSUM9eQorIyBDT05GSUdfQkxLX0RFVl9P
UFRJNjIxIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfUloxMDAwIGlzIG5vdCBzZXQKK0NP
TkZJR19CTEtfREVWX0lERURNQV9QQ0k9eQorIyBDT05GSUdfQkxLX0RFVl9JREVETUFfRk9SQ0VE
IGlzIG5vdCBzZXQKK0NPTkZJR19JREVETUFfUENJX0FVVE89eQorIyBDT05GSUdfSURFRE1BX09O
TFlESVNLIGlzIG5vdCBzZXQKK0NPTkZJR19CTEtfREVWX0FETUE9eQorIyBDT05GSUdfQkxLX0RF
Vl9BRUM2MlhYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfQUxJMTVYMyBpcyBub3Qgc2V0
CitDT05GSUdfQkxLX0RFVl9BTUQ3NFhYPXkKKyMgQ09ORklHX0JMS19ERVZfQ01ENjRYIGlzIG5v
dCBzZXQKKyMgQ09ORklHX0JMS19ERVZfVFJJRkxFWCBpcyBub3Qgc2V0CisjIENPTkZJR19CTEtf
REVWX0NZODJDNjkzIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfQ1M1NTIwIGlzIG5vdCBz
ZXQKKyMgQ09ORklHX0JMS19ERVZfQ1M1NTMwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZf
SFBUMzRYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSFBUMzY2IGlzIG5vdCBzZXQKKyMg
Q09ORklHX0JMS19ERVZfU0MxMjAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfUElJWCBp
cyBub3Qgc2V0CisjIENPTkZJR19CTEtfREVWX05TODc0MTUgaXMgbm90IHNldAorIyBDT05GSUdf
QkxLX0RFVl9QREMyMDJYWF9PTEQgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9QREMyMDJY
WF9ORVcgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9TVldLUyBpcyBub3Qgc2V0CisjIENP
TkZJR19CTEtfREVWX1NJSU1BR0UgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9TSVM1NTEz
IGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfU0xDOTBFNjYgaXMgbm90IHNldAorIyBDT05G
SUdfQkxLX0RFVl9UUk0yOTAgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9WSUE4MkNYWFgg
aXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfSURFRE1BPXkKKyMgQ09ORklHX0lERURNQV9JVkIg
aXMgbm90IHNldAorQ09ORklHX0lERURNQV9BVVRPPXkKKyMgQ09ORklHX0RNQV9OT05QQ0kgaXMg
bm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9IRCBpcyBub3Qgc2V0CisKKyMKKyMgU0NTSSBkZXZp
Y2Ugc3VwcG9ydAorIworQ09ORklHX1NDU0k9bQorQ09ORklHX1NDU0lfUFJPQ19GUz15CisKKyMK
KyMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkKKyMKK0NPTkZJR19CTEtf
REVWX1NEPW0KK0NPTkZJR19DSFJfREVWX1NUPW0KK0NPTkZJR19DSFJfREVWX09TU1Q9bQorQ09O
RklHX0JMS19ERVZfU1I9bQorQ09ORklHX0JMS19ERVZfU1JfVkVORE9SPXkKK0NPTkZJR19DSFJf
REVWX1NHPW0KKworIworIyBTb21lIFNDU0kgZGV2aWNlcyAoZS5nLiBDRCBqdWtlYm94KSBzdXBw
b3J0IG11bHRpcGxlIExVTnMKKyMKK0NPTkZJR19TQ1NJX01VTFRJX0xVTj15CitDT05GSUdfU0NT
SV9SRVBPUlRfTFVOUz15CisjIENPTkZJR19TQ1NJX0NPTlNUQU5UUyBpcyBub3Qgc2V0CisjIENP
TkZJR19TQ1NJX0xPR0dJTkcgaXMgbm90IHNldAorCisjCisjIFNDU0kgbG93LWxldmVsIGRyaXZl
cnMKKyMKKyMgQ09ORklHX0JMS19ERVZfM1dfWFhYWF9SQUlEIGlzIG5vdCBzZXQKKyMgQ09ORklH
X1NDU0lfQUNBUkQgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9BQUNSQUlEIGlzIG5vdCBzZXQK
KyMgQ09ORklHX1NDU0lfQUlDN1hYWCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0FJQzdYWFhf
T0xEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfQUlDNzlYWCBpcyBub3Qgc2V0CisjIENPTkZJ
R19TQ1NJX0RQVF9JMk8gaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9BRFZBTlNZUyBpcyBub3Qg
c2V0CisjIENPTkZJR19TQ1NJX01FR0FSQUlEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfU0FU
QSBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0JVU0xPR0lDIGlzIG5vdCBzZXQKKyMgQ09ORklH
X1NDU0lfQ1BRRkNUUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0RNWDMxOTFEIGlzIG5vdCBz
ZXQKKyMgQ09ORklHX1NDU0lfRUFUQSBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0VBVEFfUElP
IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfRlVUVVJFX0RPTUFJTiBpcyBub3Qgc2V0CisjIENP
TkZJR19TQ1NJX0dEVEggaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9JUFMgaXMgbm90IHNldAor
IyBDT05GSUdfU0NTSV9JTklUSU8gaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9JTklBMTAwIGlz
IG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfU1lNNTNDOFhYXzIgaXMgbm90IHNldAorIyBDT05GSUdf
U0NTSV9QQ0kyMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfUENJMjIyMEkgaXMgbm90IHNl
dAorIyBDT05GSUdfU0NTSV9RTE9HSUNfSVNQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfUUxP
R0lDX0ZDIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfUUxPR0lDXzEyODAgaXMgbm90IHNldAor
Q09ORklHX1NDU0lfUUxBMlhYWD1tCisjIENPTkZJR19TQ1NJX1FMQTIxWFggaXMgbm90IHNldAor
IyBDT05GSUdfU0NTSV9RTEEyMlhYIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfUUxBMjMwMCBp
cyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX1FMQTIzMjIgaXMgbm90IHNldAorIyBDT05GSUdfU0NT
SV9RTEE2MzEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfUUxBNjMyMiBpcyBub3Qgc2V0Cisj
IENPTkZJR19TQ1NJX0RDMzk1eCBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0RDMzkwVCBpcyBu
b3Qgc2V0CisjIENPTkZJR19TQ1NJX05TUDMyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfREVC
VUcgaXMgbm90IHNldAorCisjCisjIE11bHRpLWRldmljZSBzdXBwb3J0IChSQUlEIGFuZCBMVk0p
CisjCitDT05GSUdfTUQ9eQorIyBDT05GSUdfQkxLX0RFVl9NRCBpcyBub3Qgc2V0CitDT05GSUdf
QkxLX0RFVl9ETT1tCisjIENPTkZJR19ETV9DUllQVCBpcyBub3Qgc2V0CisKKyMKKyMgRnVzaW9u
IE1QVCBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfRlVTSU9OIGlzIG5vdCBzZXQKKworIwor
IyBJRUVFIDEzOTQgKEZpcmVXaXJlKSBzdXBwb3J0CisjCisjIENPTkZJR19JRUVFMTM5NCBpcyBu
b3Qgc2V0CisKKyMKKyMgSTJPIGRldmljZSBzdXBwb3J0CisjCisjIENPTkZJR19JMk8gaXMgbm90
IHNldAorCisjCisjIE1hY2ludG9zaCBkZXZpY2UgZHJpdmVycworIworCisjCisjIE5ldHdvcmtp
bmcgc3VwcG9ydAorIworQ09ORklHX05FVD15CisKKyMKKyMgTmV0d29ya2luZyBvcHRpb25zCisj
CitDT05GSUdfUEFDS0VUPW0KK0NPTkZJR19QQUNLRVRfTU1BUD15CitDT05GSUdfTkVUTElOS19E
RVY9bQorQ09ORklHX1VOSVg9bQorIyBDT05GSUdfTkVUX0tFWSBpcyBub3Qgc2V0CitDT05GSUdf
SU5FVD15CitDT05GSUdfSVBfTVVMVElDQVNUPXkKK0NPTkZJR19JUF9BRFZBTkNFRF9ST1VURVI9
eQorQ09ORklHX0lQX01VTFRJUExFX1RBQkxFUz15CitDT05GSUdfSVBfUk9VVEVfTkFUPXkKK0NP
TkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eQorQ09ORklHX0lQX1JPVVRFX1RPUz15CitDT05GSUdf
SVBfUk9VVEVfVkVSQk9TRT15CisjIENPTkZJR19JUF9QTlAgaXMgbm90IHNldAorIyBDT05GSUdf
TkVUX0lQSVAgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX0lQR1JFIGlzIG5vdCBzZXQKKyMgQ09O
RklHX0lQX01ST1VURSBpcyBub3Qgc2V0CisjIENPTkZJR19BUlBEIGlzIG5vdCBzZXQKKyMgQ09O
RklHX0lORVRfRUNOIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NZTl9DT09LSUVTIGlzIG5vdCBzZXQK
KyMgQ09ORklHX0lORVRfQUggaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9FU1AgaXMgbm90IHNl
dAorIyBDT05GSUdfSU5FVF9JUENPTVAgaXMgbm90IHNldAorQ09ORklHX0lQVjY9bQorQ09ORklH
X0lQVjZfUFJJVkFDWT15CisjIENPTkZJR19JTkVUNl9BSCBpcyBub3Qgc2V0CisjIENPTkZJR19J
TkVUNl9FU1AgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVDZfSVBDT01QIGlzIG5vdCBzZXQKKyMg
Q09ORklHX0lQVjZfVFVOTkVMIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQ05FVCBpcyBub3Qgc2V0
CisjIENPTkZJR19CUklER0UgaXMgbm90IHNldAorIyBDT05GSUdfTkVURklMVEVSIGlzIG5vdCBz
ZXQKKworIworIyBTQ1RQIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMKK0NPTkZJR19J
UFY2X1NDVFBfXz1tCisjIENPTkZJR19JUF9TQ1RQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUTSBp
cyBub3Qgc2V0CisjIENPTkZJR19WTEFOXzgwMjFRIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xMQzIg
aXMgbm90IHNldAorIyBDT05GSUdfSVBYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUQUxLIGlzIG5v
dCBzZXQKKyMgQ09ORklHX1gyNSBpcyBub3Qgc2V0CisjIENPTkZJR19MQVBCIGlzIG5vdCBzZXQK
KyMgQ09ORklHX05FVF9ESVZFUlQgaXMgbm90IHNldAorIyBDT05GSUdfRUNPTkVUIGlzIG5vdCBz
ZXQKKyMgQ09ORklHX1dBTl9ST1VURVIgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX0ZBU1RST1VU
RSBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfSFdfRkxPV0NPTlRST0wgaXMgbm90IHNldAorCisj
CisjIFFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZworIworIyBDT05GSUdfTkVUX1NDSEVEIGlzIG5v
dCBzZXQKKworIworIyBOZXR3b3JrIHRlc3RpbmcKKyMKKyMgQ09ORklHX05FVF9QS1RHRU4gaXMg
bm90IHNldAorQ09ORklHX05FVERFVklDRVM9eQorCisjCisjIEFSQ25ldCBkZXZpY2VzCisjCisj
IENPTkZJR19BUkNORVQgaXMgbm90IHNldAorQ09ORklHX0RVTU1ZPW0KKyMgQ09ORklHX0JPTkRJ
TkcgaXMgbm90IHNldAorIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RV
TiBpcyBub3Qgc2V0CitDT05GSUdfRVRIRVJUQVA9bQorCisjCisjIEV0aGVybmV0ICgxMCBvciAx
MDBNYml0KQorIworQ09ORklHX05FVF9FVEhFUk5FVD15CitDT05GSUdfTUlJPW0KKyMgQ09ORklH
X0hBUFBZTUVBTCBpcyBub3Qgc2V0CisjIENPTkZJR19TVU5HRU0gaXMgbm90IHNldAorIyBDT05G
SUdfTkVUX1ZFTkRPUl8zQ09NIGlzIG5vdCBzZXQKKworIworIyBUdWxpcCBmYW1pbHkgbmV0d29y
ayBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfTkVUX1RVTElQIGlzIG5vdCBzZXQKKyMgQ09O
RklHX0hQMTAwIGlzIG5vdCBzZXQKK0NPTkZJR19ORVRfUENJPXkKK0NPTkZJR19QQ05FVDMyPW0K
KyMgQ09ORklHX0FNRDgxMTFfRVRIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FEQVBURUNfU1RBUkZJ
UkUgaXMgbm90IHNldAorIyBDT05GSUdfQjQ0IGlzIG5vdCBzZXQKK0NPTkZJR19GT1JDRURFVEg9
bQorIyBDT05GSUdfREdSUyBpcyBub3Qgc2V0CisjIENPTkZJR19FRVBSTzEwMCBpcyBub3Qgc2V0
CisjIENPTkZJR19FMTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQUxOWCBpcyBub3Qgc2V0Cisj
IENPTkZJR19OQVRTRU1JIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FMktfUENJIGlzIG5vdCBzZXQK
KyMgQ09ORklHXzgxMzlDUCBpcyBub3Qgc2V0CisjIENPTkZJR184MTM5VE9PIGlzIG5vdCBzZXQK
KyMgQ09ORklHX1NJUzkwMCBpcyBub3Qgc2V0CisjIENPTkZJR19FUElDMTAwIGlzIG5vdCBzZXQK
KyMgQ09ORklHX1NVTkRBTkNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RMQU4gaXMgbm90IHNldAor
IyBDT05GSUdfVklBX1JISU5FIGlzIG5vdCBzZXQKKworIworIyBFdGhlcm5ldCAoMTAwMCBNYml0
KQorIworIyBDT05GSUdfQUNFTklDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RMMksgaXMgbm90IHNl
dAorIyBDT05GSUdfRTEwMDAgaXMgbm90IHNldAorIyBDT05GSUdfTlM4MzgyMCBpcyBub3Qgc2V0
CisjIENPTkZJR19IQU1BQ0hJIGlzIG5vdCBzZXQKKyMgQ09ORklHX1lFTExPV0ZJTiBpcyBub3Qg
c2V0CisjIENPTkZJR19SODE2OSBpcyBub3Qgc2V0CisjIENPTkZJR19TSVMxOTAgaXMgbm90IHNl
dAorIyBDT05GSUdfU0s5OExJTiBpcyBub3Qgc2V0CisjIENPTkZJR19USUdPTjMgaXMgbm90IHNl
dAorCisjCisjIEV0aGVybmV0ICgxMDAwMCBNYml0KQorIworIyBDT05GSUdfSVhHQiBpcyBub3Qg
c2V0CisjIENPTkZJR19GRERJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hJUFBJIGlzIG5vdCBzZXQK
KyMgQ09ORklHX1BQUCBpcyBub3Qgc2V0CisjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKKworIwor
IyBXaXJlbGVzcyBMQU4gKG5vbi1oYW1yYWRpbykKKyMKKyMgQ09ORklHX05FVF9SQURJTyBpcyBu
b3Qgc2V0CisKKyMKKyMgVG9rZW4gUmluZyBkZXZpY2VzCisjCisjIENPTkZJR19UUiBpcyBub3Qg
c2V0CisjIENPTkZJR19ORVRfRkMgaXMgbm90IHNldAorIyBDT05GSUdfUkNQQ0kgaXMgbm90IHNl
dAorIyBDT05GSUdfU0hBUEVSIGlzIG5vdCBzZXQKKworIworIyBXYW4gaW50ZXJmYWNlcworIwor
IyBDT05GSUdfV0FOIGlzIG5vdCBzZXQKKworIworIyBBbWF0ZXVyIFJhZGlvIHN1cHBvcnQKKyMK
KyMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBzZXQKKworIworIyBJckRBIChpbmZyYXJlZCkgc3Vw
cG9ydAorIworIyBDT05GSUdfSVJEQSBpcyBub3Qgc2V0CisKKyMKKyMgQmx1ZXRvb3RoIHN1cHBv
cnQKKyMKKyMgQ09ORklHX0JUIGlzIG5vdCBzZXQKKworIworIyBJU0ROIHN1YnN5c3RlbQorIwor
IyBDT05GSUdfSVNETiBpcyBub3Qgc2V0CisKKyMKKyMgVGVsZXBob255IFN1cHBvcnQKKyMKKyMg
Q09ORklHX1BIT05FIGlzIG5vdCBzZXQKKworIworIyBJbnB1dCBkZXZpY2Ugc3VwcG9ydAorIwor
Q09ORklHX0lOUFVUPXkKKworIworIyBVc2VybGFuZCBpbnRlcmZhY2VzCisjCitDT05GSUdfSU5Q
VVRfTU9VU0VERVY9eQorQ09ORklHX0lOUFVUX01PVVNFREVWX1BTQVVYPXkKK0NPTkZJR19JTlBV
VF9NT1VTRURFVl9TQ1JFRU5fWD02NDAKK0NPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWT01
NzYKK0NPTkZJR19JTlBVVF9KT1lERVY9bQorIyBDT05GSUdfSU5QVVRfVFNERVYgaXMgbm90IHNl
dAorQ09ORklHX0lOUFVUX0VWREVWPW0KKyMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBzZXQK
KworIworIyBJbnB1dCBJL08gZHJpdmVycworIworIyBDT05GSUdfR0FNRVBPUlQgaXMgbm90IHNl
dAorQ09ORklHX1NPVU5EX0dBTUVQT1JUPXkKK0NPTkZJR19TRVJJTz15CitDT05GSUdfU0VSSU9f
STgwNDI9eQorQ09ORklHX1NFUklPX1NFUlBPUlQ9bQorIyBDT05GSUdfU0VSSU9fQ1Q4MkM3MTAg
aXMgbm90IHNldAorQ09ORklHX1NFUklPX1BDSVBTMj1tCisKKyMKKyMgSW5wdXQgRGV2aWNlIERy
aXZlcnMKKyMKK0NPTkZJR19JTlBVVF9LRVlCT0FSRD15CitDT05GSUdfS0VZQk9BUkRfQVRLQkQ9
eQorIyBDT05GSUdfS0VZQk9BUkRfU1VOS0JEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0tFWUJPQVJE
X1hUS0JEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0tFWUJPQVJEX05FV1RPTiBpcyBub3Qgc2V0CitD
T05GSUdfSU5QVVRfTU9VU0U9eQorQ09ORklHX01PVVNFX1BTMj1tCitDT05GSUdfTU9VU0VfU0VS
SUFMPW0KKyMgQ09ORklHX0lOUFVUX0pPWVNUSUNLIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lOUFVU
X1RPVUNIU0NSRUVOIGlzIG5vdCBzZXQKK0NPTkZJR19JTlBVVF9NSVNDPXkKK0NPTkZJR19JTlBV
VF9QQ1NQS1I9bQorQ09ORklHX0lOUFVUX1VJTlBVVD1tCisKKyMKKyMgQ2hhcmFjdGVyIGRldmlj
ZXMKKyMKK0NPTkZJR19WVD15CitDT05GSUdfVlRfQ09OU09MRT15CitDT05GSUdfSFdfQ09OU09M
RT15CisjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorCisjCisjIFNlcmlh
bCBkcml2ZXJzCisjCitDT05GSUdfU0VSSUFMXzgyNTA9bQorQ09ORklHX1NFUklBTF84MjUwX05S
X1VBUlRTPTQKKyMgQ09ORklHX1NFUklBTF84MjUwX0VYVEVOREVEIGlzIG5vdCBzZXQKKworIwor
IyBOb24tODI1MCBzZXJpYWwgcG9ydCBzdXBwb3J0CisjCitDT05GSUdfU0VSSUFMX0NPUkU9bQor
Q09ORklHX1VOSVg5OF9QVFlTPXkKK0NPTkZJR19MRUdBQ1lfUFRZUz15CitDT05GSUdfTEVHQUNZ
X1BUWV9DT1VOVD0yNTYKKworIworIyBNaWNlCisjCitDT05GSUdfQlVTTU9VU0U9bQorIyBDT05G
SUdfUUlDMDJfVEFQRSBpcyBub3Qgc2V0CisKKyMKKyMgSVBNSQorIworIyBDT05GSUdfSVBNSV9I
QU5ETEVSIGlzIG5vdCBzZXQKKworIworIyBXYXRjaGRvZyBDYXJkcworIworIyBDT05GSUdfV0FU
Q0hET0cgaXMgbm90IHNldAorIyBDT05GSUdfSFdfUkFORE9NIGlzIG5vdCBzZXQKKyMgQ09ORklH
X05WUkFNIGlzIG5vdCBzZXQKK0NPTkZJR19SVEM9bQorQ09ORklHX0dFTl9SVEM9bQorQ09ORklH
X0dFTl9SVENfWD15CisjIENPTkZJR19EVExLIGlzIG5vdCBzZXQKKyMgQ09ORklHX1IzOTY0IGlz
IG5vdCBzZXQKKyMgQ09ORklHX0FQUExJQ09NIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NPTllQSSBp
cyBub3Qgc2V0CisKKyMKKyMgRnRhcGUsIHRoZSBmbG9wcHkgdGFwZSBkZXZpY2UgZHJpdmVyCisj
CitDT05GSUdfRlRBUEU9bQorQ09ORklHX1pGVEFQRT1tCitDT05GSUdfWkZUX0RGTFRfQkxLX1Na
PTEwMjQwCisKKyMKKyMgVGhlIGNvbXByZXNzb3Igd2lsbCBiZSBidWlsdCBhcyBhIG1vZHVsZSBv
bmx5IQorIworQ09ORklHX1pGVF9DT01QUkVTU09SPW0KK0NPTkZJR19GVF9OUl9CVUZGRVJTPTMK
K0NPTkZJR19GVF9QUk9DX0ZTPXkKK0NPTkZJR19GVF9OT1JNQUxfREVCVUc9eQorIyBDT05GSUdf
RlRfRlVMTF9ERUJVRyBpcyBub3Qgc2V0CisjIENPTkZJR19GVF9OT19UUkFDRSBpcyBub3Qgc2V0
CisjIENPTkZJR19GVF9OT19UUkFDRV9BVF9BTEwgaXMgbm90IHNldAorCisjCisjIEhhcmR3YXJl
IGNvbmZpZ3VyYXRpb24KKyMKK0NPTkZJR19GVF9TVERfRkRDPXkKKyMgQ09ORklHX0ZUX01BQ0gy
IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZUX1BST0JFX0ZDMTAgaXMgbm90IHNldAorIyBDT05GSUdf
RlRfQUxUX0ZEQyBpcyBub3Qgc2V0CitDT05GSUdfRlRfRkRDX1RIUj04CitDT05GSUdfRlRfRkRD
X01BWF9SQVRFPTIwMDAKK0NPTkZJR19GVF9BTFBIQV9DTE9DSz0wCitDT05GSUdfQUdQPW0KKyMg
Q09ORklHX0FHUF9BTEkgaXMgbm90IHNldAorIyBDT05GSUdfQUdQX0FUSSBpcyBub3Qgc2V0Cisj
IENPTkZJR19BR1BfQU1EIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FHUF9BTUQ2NCBpcyBub3Qgc2V0
CisjIENPTkZJR19BR1BfSU5URUwgaXMgbm90IHNldAorQ09ORklHX0FHUF9OVklESUE9bQorIyBD
T05GSUdfQUdQX1NJUyBpcyBub3Qgc2V0CisjIENPTkZJR19BR1BfU1dPUktTIGlzIG5vdCBzZXQK
KyMgQ09ORklHX0FHUF9WSUEgaXMgbm90IHNldAorIyBDT05GSUdfQUdQX0VGRklDRU9OIGlzIG5v
dCBzZXQKK0NPTkZJR19EUk09eQorIyBDT05GSUdfRFJNX1RERlggaXMgbm90IHNldAorIyBDT05G
SUdfRFJNX0dBTU1BIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RSTV9SMTI4IGlzIG5vdCBzZXQKKyMg
Q09ORklHX0RSTV9SQURFT04gaXMgbm90IHNldAorIyBDT05GSUdfRFJNX01HQSBpcyBub3Qgc2V0
CisjIENPTkZJR19EUk1fU0lTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01XQVZFIGlzIG5vdCBzZXQK
K0NPTkZJR19SQVdfRFJJVkVSPW0KK0NPTkZJR19NQVhfUkFXX0RFVlM9MjU2CitDT05GSUdfSEFO
R0NIRUNLX1RJTUVSPW0KKworIworIyBJMkMgc3VwcG9ydAorIworQ09ORklHX0kyQz15CitDT05G
SUdfSTJDX0NIQVJERVY9eQorCisjCisjIEkyQyBBbGdvcml0aG1zCisjCitDT05GSUdfSTJDX0FM
R09CSVQ9bQorQ09ORklHX0kyQ19BTEdPUENGPW0KKworIworIyBJMkMgSGFyZHdhcmUgQnVzIHN1
cHBvcnQKKyMKKyMgQ09ORklHX0kyQ19BTEkxNTM1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19B
TEkxNVgzIGlzIG5vdCBzZXQKK0NPTkZJR19JMkNfQU1ENzU2PW0KK0NPTkZJR19JMkNfWEJPWD15
CisjIENPTkZJR19JMkNfQU1EODExMSBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfRUxWIGlzIG5v
dCBzZXQKKyMgQ09ORklHX0kyQ19JODAxIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19JODEwIGlz
IG5vdCBzZXQKKyMgQ09ORklHX0kyQ19JU0EgaXMgbm90IHNldAorQ09ORklHX0kyQ19ORk9SQ0Uy
PW0KKyMgQ09ORklHX0kyQ19QQVJQT1JUX0xJR0hUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19Q
SUlYNCBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfUFJPU0FWQUdFIGlzIG5vdCBzZXQKKyMgQ09O
RklHX0kyQ19TQVZBR0U0IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDeDIwMF9BQ0IgaXMgbm90IHNl
dAorIyBDT05GSUdfSTJDX1NJUzU1OTUgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX1NJUzYzMCBp
cyBub3Qgc2V0CisjIENPTkZJR19JMkNfU0lTOTZYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19W
RUxMRU1BTiBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfVklBIGlzIG5vdCBzZXQKKyMgQ09ORklH
X0kyQ19WSUFQUk8gaXMgbm90IHNldAorIyBDT05GSUdfSTJDX1ZPT0RPTzMgaXMgbm90IHNldAor
CisjCisjIEkyQyBIYXJkd2FyZSBTZW5zb3JzIENoaXAgc3VwcG9ydAorIworQ09ORklHX0kyQ19T
RU5TT1I9bQorQ09ORklHX1NFTlNPUlNfQURNMTAyMT1tCisjIENPTkZJR19TRU5TT1JTX0FTQjEw
MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0VFUFJPTSBpcyBub3Qgc2V0CisjIENPTkZJ
R19TRU5TT1JTX0ZTQ0hFUiBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0dMNTE4U00gaXMg
bm90IHNldAorIyBDT05GSUdfU0VOU09SU19JVDg3IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNP
UlNfTE03NSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0xNNzggaXMgbm90IHNldAorIyBD
T05GSUdfU0VOU09SU19MTTgzIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfTE04NSBpcyBu
b3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0xNOTAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09S
U19WSUE2ODZBIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfVzgzNzgxRCBpcyBub3Qgc2V0
CisjIENPTkZJR19TRU5TT1JTX1c4M0w3ODVUUyBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfREVC
VUdfQ09SRSBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfREVCVUdfQlVTIGlzIG5vdCBzZXQKKyMg
Q09ORklHX0kyQ19ERUJVR19DSElQIGlzIG5vdCBzZXQKKworIworIyBNaXNjIGRldmljZXMKKyMK
KyMgQ09ORklHX0lCTV9BU00gaXMgbm90IHNldAorCisjCisjIE11bHRpbWVkaWEgZGV2aWNlcwor
IworIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKKworIworIyBEaWdpdGFsIFZpZGVvIEJy
b2FkY2FzdGluZyBEZXZpY2VzCisjCisjIENPTkZJR19EVkIgaXMgbm90IHNldAorCisjCisjIEdy
YXBoaWNzIHN1cHBvcnQKKyMKK0NPTkZJR19GQj15CisjIENPTkZJR19GQl9DSVJSVVMgaXMgbm90
IHNldAorIyBDT05GSUdfRkJfUE0yIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX0NZQkVSMjAwMCBp
cyBub3Qgc2V0CisjIENPTkZJR19GQl9JTVNUVCBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9WR0Ex
NiBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9WRVNBIGlzIG5vdCBzZXQKK0NPTkZJR19WSURFT19T
RUxFQ1Q9eQorIyBDT05GSUdfRkJfSEdBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1JJVkEgaXMg
bm90IHNldAorQ09ORklHX0ZCX1hCT1g9eQorIyBDT05GSUdfRkJfTUFUUk9YIGlzIG5vdCBzZXQK
KyMgQ09ORklHX0ZCX1JBREVPTl9PTEQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfUkFERU9OIGlz
IG5vdCBzZXQKKyMgQ09ORklHX0ZCX0FUWTEyOCBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9BVFkg
aXMgbm90IHNldAorIyBDT05GSUdfRkJfU0lTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX05FT01B
R0lDIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX0tZUk8gaXMgbm90IHNldAorIyBDT05GSUdfRkJf
M0RGWCBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9WT09ET08xIGlzIG5vdCBzZXQKKyMgQ09ORklH
X0ZCX1RSSURFTlQgaXMgbm90IHNldAorIyBDT05GSUdfRkJfUE0zIGlzIG5vdCBzZXQKKyMgQ09O
RklHX0ZCX1ZJUlRVQUwgaXMgbm90IHNldAorCisjCisjIENvbnNvbGUgZGlzcGxheSBkcml2ZXIg
c3VwcG9ydAorIworQ09ORklHX1ZHQV9DT05TT0xFPXkKKyMgQ09ORklHX01EQV9DT05TT0xFIGlz
IG5vdCBzZXQKK0NPTkZJR19EVU1NWV9DT05TT0xFPXkKK0NPTkZJR19GUkFNRUJVRkZFUl9DT05T
T0xFPXkKK0NPTkZJR19QQ0lfQ09OU09MRT15CitDT05GSUdfRk9OVFM9eQorQ09ORklHX0ZPTlRf
OHg4PXkKK0NPTkZJR19GT05UXzh4MTY9eQorIyBDT05GSUdfRk9OVF82eDExIGlzIG5vdCBzZXQK
KyMgQ09ORklHX0ZPTlRfUEVBUkxfOHg4IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZPTlRfQUNPUk5f
OHg4IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZPTlRfTUlOSV80eDYgaXMgbm90IHNldAorIyBDT05G
SUdfRk9OVF9TVU44eDE2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZPTlRfU1VOMTJ4MjIgaXMgbm90
IHNldAorCisjCisjIExvZ28gY29uZmlndXJhdGlvbgorIworQ09ORklHX0xPR089eQorQ09ORklH
X0xPR09fTElOVVhfTU9OTz15CitDT05GSUdfTE9HT19MSU5VWF9WR0ExNj15CitDT05GSUdfTE9H
T19MSU5VWF9DTFVUMjI0PXkKKworIworIyBTb3VuZAorIworQ09ORklHX1NPVU5EPW0KKworIwor
IyBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUKKyMKK0NPTkZJR19TTkQ9bQorQ09O
RklHX1NORF9TRVFVRU5DRVI9bQorQ09ORklHX1NORF9TRVFfRFVNTVk9bQorQ09ORklHX1NORF9P
U1NFTVVMPXkKK0NPTkZJR19TTkRfTUlYRVJfT1NTPW0KK0NPTkZJR19TTkRfUENNX09TUz1tCitD
T05GSUdfU05EX1NFUVVFTkNFUl9PU1M9eQorQ09ORklHX1NORF9SVENUSU1FUj1tCisjIENPTkZJ
R19TTkRfVkVSQk9TRV9QUklOVEsgaXMgbm90IHNldAorIyBDT05GSUdfU05EX0RFQlVHIGlzIG5v
dCBzZXQKKworIworIyBHZW5lcmljIGRldmljZXMKKyMKK0NPTkZJR19TTkRfRFVNTVk9bQorQ09O
RklHX1NORF9WSVJNSURJPW0KK0NPTkZJR19TTkRfTVRQQVY9bQorQ09ORklHX1NORF9TRVJJQUxf
VTE2NTUwPW0KK0NPTkZJR19TTkRfTVBVNDAxPW0KKworIworIyBQQ0kgZGV2aWNlcworIworIyBD
T05GSUdfU05EX0FMSTU0NTEgaXMgbm90IHNldAorIyBDT05GSUdfU05EX0FaVDMzMjggaXMgbm90
IHNldAorIyBDT05GSUdfU05EX0JUODdYIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9DUzQ2WFgg
aXMgbm90IHNldAorIyBDT05GSUdfU05EX0NTNDI4MSBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRf
RU1VMTBLMSBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfS09SRzEyMTIgaXMgbm90IHNldAorIyBD
T05GSUdfU05EX05NMjU2IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9STUUzMiBpcyBub3Qgc2V0
CisjIENPTkZJR19TTkRfUk1FOTYgaXMgbm90IHNldAorIyBDT05GSUdfU05EX1JNRTk2NTIgaXMg
bm90IHNldAorIyBDT05GSUdfU05EX0hEU1AgaXMgbm90IHNldAorIyBDT05GSUdfU05EX1RSSURF
TlQgaXMgbm90IHNldAorIyBDT05GSUdfU05EX1lNRlBDSSBpcyBub3Qgc2V0CisjIENPTkZJR19T
TkRfQUxTNDAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfQ01JUENJIGlzIG5vdCBzZXQKKyMg
Q09ORklHX1NORF9FTlMxMzcwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9FTlMxMzcxIGlzIG5v
dCBzZXQKKyMgQ09ORklHX1NORF9FUzE5MzggaXMgbm90IHNldAorIyBDT05GSUdfU05EX0VTMTk2
OCBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfTUFFU1RSTzMgaXMgbm90IHNldAorIyBDT05GSUdf
U05EX0ZNODAxIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9JQ0UxNzEyIGlzIG5vdCBzZXQKKyMg
Q09ORklHX1NORF9JQ0UxNzI0IGlzIG5vdCBzZXQKK0NPTkZJR19TTkRfSU5URUw4WDA9bQorIyBD
T05GSUdfU05EX1NPTklDVklCRVMgaXMgbm90IHNldAorIyBDT05GSUdfU05EX1ZJQTgyWFggaXMg
bm90IHNldAorIyBDT05GSUdfU05EX1ZYMjIyIGlzIG5vdCBzZXQKKworIworIyBBTFNBIFVTQiBk
ZXZpY2VzCisjCitDT05GSUdfU05EX1VTQl9BVURJTz1tCisKKyMKKyMgT3BlbiBTb3VuZCBTeXN0
ZW0KKyMKKyMgQ09ORklHX1NPVU5EX1BSSU1FIGlzIG5vdCBzZXQKKworIworIyBVU0Igc3VwcG9y
dAorIworQ09ORklHX1VTQj1tCisjIENPTkZJR19VU0JfREVCVUcgaXMgbm90IHNldAorCisjCisj
IE1pc2NlbGxhbmVvdXMgVVNCIG9wdGlvbnMKKyMKK0NPTkZJR19VU0JfREVWSUNFRlM9eQorQ09O
RklHX1VTQl9CQU5EV0lEVEg9eQorQ09ORklHX1VTQl9EWU5BTUlDX01JTk9SUz15CisKKyMKKyMg
VVNCIEhvc3QgQ29udHJvbGxlciBEcml2ZXJzCisjCitDT05GSUdfVVNCX0VIQ0lfSENEPW0KK0NP
TkZJR19VU0JfT0hDSV9IQ0Q9bQorQ09ORklHX1VTQl9VSENJX0hDRD1tCisKKyMKKyMgVVNCIERl
dmljZSBDbGFzcyBkcml2ZXJzCisjCitDT05GSUdfVVNCX0FVRElPPW0KK0NPTkZJR19VU0JfQkxV
RVRPT1RIX1RUWT1tCitDT05GSUdfVVNCX01JREk9bQorQ09ORklHX1VTQl9BQ009bQorQ09ORklH
X1VTQl9QUklOVEVSPW0KK0NPTkZJR19VU0JfU1RPUkFHRT1tCisjIENPTkZJR19VU0JfU1RPUkFH
RV9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfVVNCX1NUT1JBR0VfREFUQUZBQj15CitDT05GSUdf
VVNCX1NUT1JBR0VfRlJFRUNPTT15CitDT05GSUdfVVNCX1NUT1JBR0VfSVNEMjAwPXkKK0NPTkZJ
R19VU0JfU1RPUkFHRV9EUENNPXkKK0NPTkZJR19VU0JfU1RPUkFHRV9IUDgyMDBlPXkKK0NPTkZJ
R19VU0JfU1RPUkFHRV9TRERSMDk9eQorQ09ORklHX1VTQl9TVE9SQUdFX1NERFI1NT15CitDT05G
SUdfVVNCX1NUT1JBR0VfSlVNUFNIT1Q9eQorCisjCisjIFVTQiBIdW1hbiBJbnRlcmZhY2UgRGV2
aWNlcyAoSElEKQorIworQ09ORklHX1VTQl9ISUQ9bQorQ09ORklHX1VTQl9ISURJTlBVVD15CitD
T05GSUdfSElEX0ZGPXkKK0NPTkZJR19ISURfUElEPXkKK0NPTkZJR19MT0dJVEVDSF9GRj15CitD
T05GSUdfVEhSVVNUTUFTVEVSX0ZGPXkKK0NPTkZJR19VU0JfSElEREVWPXkKKworIworIyBVU0Ig
SElEIEJvb3QgUHJvdG9jb2wgZHJpdmVycworIworQ09ORklHX1VTQl9LQkQ9bQorQ09ORklHX1VT
Ql9NT1VTRT1tCitDT05GSUdfVVNCX0FJUFRFSz1tCitDT05GSUdfVVNCX1dBQ09NPW0KK0NPTkZJ
R19VU0JfS0JUQUI9bQorQ09ORklHX1VTQl9QT1dFUk1BVEU9bQorQ09ORklHX1VTQl9YUEFEPW0K
K0NPTkZJR19VU0JfWFBBRF9NT1VTRT15CisKKyMKKyMgVVNCIEltYWdpbmcgZGV2aWNlcworIwor
Q09ORklHX1VTQl9NREM4MDA9bQorQ09ORklHX1VTQl9NSUNST1RFSz1tCitDT05GSUdfVVNCX0hQ
VVNCU0NTST1tCisKKyMKKyMgVVNCIE11bHRpbWVkaWEgZGV2aWNlcworIworQ09ORklHX1VTQl9E
QUJVU0I9bQorCisjCisjIFZpZGVvNExpbnV4IHN1cHBvcnQgaXMgbmVlZGVkIGZvciBVU0IgTXVs
dGltZWRpYSBkZXZpY2Ugc3VwcG9ydAorIworCisjCisjIFVTQiBOZXR3b3JrIGFkYXB0b3JzCisj
CitDT05GSUdfVVNCX0NBVEM9bQorQ09ORklHX1VTQl9LQVdFVEg9bQorQ09ORklHX1VTQl9QRUdB
U1VTPW0KK0NPTkZJR19VU0JfUlRMODE1MD1tCitDT05GSUdfVVNCX1VTQk5FVD1tCisKKyMKKyMg
VVNCIEhvc3QtdG8tSG9zdCBDYWJsZXMKKyMKK0NPTkZJR19VU0JfQU4yNzIwPXkKK0NPTkZJR19V
U0JfQkVMS0lOPXkKK0NPTkZJR19VU0JfR0VORVNZUz15CitDT05GSUdfVVNCX05FVDEwODA9eQor
Q09ORklHX1VTQl9QTDIzMDE9eQorCisjCisjIEludGVsbGlnZW50IFVTQiBEZXZpY2VzL0dhZGdl
dHMKKyMKK0NPTkZJR19VU0JfQVJNTElOVVg9eQorQ09ORklHX1VTQl9FUFNPTjI4ODg9eQorQ09O
RklHX1VTQl9aQVVSVVM9eQorQ09ORklHX1VTQl9DRENFVEhFUj15CisKKyMKKyMgVVNCIE5ldHdv
cmsgQWRhcHRlcnMKKyMKK0NPTkZJR19VU0JfQVg4ODE3WD15CisKKyMKKyMgVVNCIHBvcnQgZHJp
dmVycworIworCisjCisjIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKKyMKK0NPTkZJR19V
U0JfU0VSSUFMPW0KK0NPTkZJR19VU0JfU0VSSUFMX0dFTkVSSUM9eQorQ09ORklHX1VTQl9TRVJJ
QUxfQkVMS0lOPW0KK0NPTkZJR19VU0JfU0VSSUFMX1dISVRFSEVBVD1tCitDT05GSUdfVVNCX1NF
UklBTF9ESUdJX0FDQ0VMRVBPUlQ9bQorQ09ORklHX1VTQl9TRVJJQUxfRU1QRUc9bQorQ09ORklH
X1VTQl9TRVJJQUxfRlRESV9TSU89bQorQ09ORklHX1VTQl9TRVJJQUxfVklTT1I9bQorQ09ORklH
X1VTQl9TRVJJQUxfSVBBUT1tCitDT05GSUdfVVNCX1NFUklBTF9JUj1tCitDT05GSUdfVVNCX1NF
UklBTF9FREdFUE9SVD1tCitDT05GSUdfVVNCX1NFUklBTF9FREdFUE9SVF9UST1tCitDT05GSUdf
VVNCX1NFUklBTF9LRVlTUEFOX1BEQT1tCitDT05GSUdfVVNCX1NFUklBTF9LRVlTUEFOPW0KK0NP
TkZJR19VU0JfU0VSSUFMX0tFWVNQQU5fTVBSPXkKK0NPTkZJR19VU0JfU0VSSUFMX0tFWVNQQU5f
VVNBMjg9eQorQ09ORklHX1VTQl9TRVJJQUxfS0VZU1BBTl9VU0EyOFg9eQorQ09ORklHX1VTQl9T
RVJJQUxfS0VZU1BBTl9VU0EyOFhBPXkKK0NPTkZJR19VU0JfU0VSSUFMX0tFWVNQQU5fVVNBMjhY
Qj15CitDT05GSUdfVVNCX1NFUklBTF9LRVlTUEFOX1VTQTE5PXkKK0NPTkZJR19VU0JfU0VSSUFM
X0tFWVNQQU5fVVNBMThYPXkKK0NPTkZJR19VU0JfU0VSSUFMX0tFWVNQQU5fVVNBMTlXPXkKK0NP
TkZJR19VU0JfU0VSSUFMX0tFWVNQQU5fVVNBMTlRVz15CitDT05GSUdfVVNCX1NFUklBTF9LRVlT
UEFOX1VTQTE5UUk9eQorQ09ORklHX1VTQl9TRVJJQUxfS0VZU1BBTl9VU0E0OVc9eQorQ09ORklH
X1VTQl9TRVJJQUxfS0VZU1BBTl9VU0E0OVdMQz15CitDT05GSUdfVVNCX1NFUklBTF9LTFNJPW0K
K0NPTkZJR19VU0JfU0VSSUFMX0tPQklMX1NDVD1tCitDT05GSUdfVVNCX1NFUklBTF9NQ1RfVTIz
Mj1tCitDT05GSUdfVVNCX1NFUklBTF9QTDIzMDM9bQorIyBDT05GSUdfVVNCX1NFUklBTF9TQUZF
IGlzIG5vdCBzZXQKK0NPTkZJR19VU0JfU0VSSUFMX0NZQkVSSkFDSz1tCitDT05GSUdfVVNCX1NF
UklBTF9YSVJDT009bQorQ09ORklHX1VTQl9TRVJJQUxfT01OSU5FVD1tCitDT05GSUdfVVNCX0Va
VVNCPXkKKworIworIyBVU0IgTWlzY2VsbGFuZW91cyBkcml2ZXJzCisjCitDT05GSUdfVVNCX0VN
STYyPW0KK0NPTkZJR19VU0JfRU1JMjY9bQorQ09ORklHX1VTQl9USUdMPW0KK0NPTkZJR19VU0Jf
QVVFUlNXQUxEPW0KK0NPTkZJR19VU0JfUklPNTAwPW0KK0NPTkZJR19VU0JfTEVHT1RPV0VSPW0K
K0NPTkZJR19VU0JfQlJMVkdFUj1tCitDT05GSUdfVVNCX0xDRD1tCitDT05GSUdfVVNCX0xFRD1t
CitDT05GSUdfVVNCX1RFU1Q9bQorCisjCisjIFVTQiBHYWRnZXQgU3VwcG9ydAorIworQ09ORklH
X1VTQl9HQURHRVQ9bQorQ09ORklHX1VTQl9HQURHRVRfTkVUMjI4MD15CitDT05GSUdfVVNCX05F
VDIyODA9bQorIyBDT05GSUdfVVNCX0dBREdFVF9QWEEyWFggaXMgbm90IHNldAorIyBDT05GSUdf
VVNCX0dBREdFVF9HT0tVIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9HQURHRVRfU0ExMTAwIGlz
IG5vdCBzZXQKK0NPTkZJR19VU0JfWkVSTz1tCitDT05GSUdfVVNCX0VUSD1tCitDT05GSUdfVVNC
X0dBREdFVEZTPW0KK0NPTkZJR19VU0JfRklMRV9TVE9SQUdFPW0KKyMgQ09ORklHX1VTQl9GSUxF
X1NUT1JBR0VfVEVTVCBpcyBub3Qgc2V0CitDT05GSUdfVVNCX0dfU0VSSUFMPW0KKworIworIyBG
aWxlIHN5c3RlbXMKKyMKK0NPTkZJR19FWFQyX0ZTPXkKK0NPTkZJR19FWFQzX0ZTPW0KKyMgQ09O
RklHX0pCRCBpcyBub3Qgc2V0CitDT05GSUdfUkVJU0VSRlNfRlM9eQorIyBDT05GSUdfUkVJU0VS
RlNfQ0hFQ0sgaXMgbm90IHNldAorQ09ORklHX1JFSVNFUkZTX1BST0NfSU5GTz15CisjIENPTkZJ
R19KRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklH
X01JTklYX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09O
RklHX1FVT1RBIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FVVE9GU19GUyBpcyBub3Qgc2V0CisjIENP
TkZJR19BVVRPRlM0X0ZTIGlzIG5vdCBzZXQKKworIworIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1z
CisjCitDT05GSUdfSVNPOTY2MF9GUz15CitDT05GSUdfSk9MSUVUPXkKK0NPTkZJR19aSVNPRlM9
eQorQ09ORklHX1pJU09GU19GUz15CitDT05GSUdfVURGX0ZTPXkKKworIworIyBET1MvRkFUL05U
IEZpbGVzeXN0ZW1zCisjCitDT05GSUdfRkFUX0ZTPW0KK0NPTkZJR19NU0RPU19GUz1tCitDT05G
SUdfVkZBVF9GUz1tCitDT05GSUdfTlRGU19GUz1tCisjIENPTkZJR19OVEZTX0RFQlVHIGlzIG5v
dCBzZXQKK0NPTkZJR19OVEZTX1JXPXkKK0NPTkZJR19GQVRYX0ZTPW0KKworIworIyBQc2V1ZG8g
ZmlsZXN5c3RlbXMKKyMKK0NPTkZJR19QUk9DX0ZTPXkKK0NPTkZJR19QUk9DX0tDT1JFPXkKK0NP
TkZJR19ERVZGU19GUz15CitDT05GSUdfREVWRlNfTU9VTlQ9eQorIyBDT05GSUdfREVWRlNfREVC
VUcgaXMgbm90IHNldAorIyBDT05GSUdfREVWUFRTX0ZTX1hBVFRSIGlzIG5vdCBzZXQKK0NPTkZJ
R19UTVBGUz15CisjIENPTkZJR19IVUdFVExCRlMgaXMgbm90IHNldAorIyBDT05GSUdfSFVHRVRM
Ql9QQUdFIGlzIG5vdCBzZXQKK0NPTkZJR19SQU1GUz15CisKKyMKKyMgTWlzY2VsbGFuZW91cyBm
aWxlc3lzdGVtcworIworIyBDT05GSUdfQURGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BRkZT
X0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19IRlNQ
TFVTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JFRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdf
QkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CitDT05GSUdfQ1JB
TUZTPXkKKyMgQ09ORklHX1ZYRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfSFBGU19GUyBpcyBu
b3Qgc2V0CisjIENPTkZJR19RTlg0RlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfU1lTVl9GUyBp
cyBub3Qgc2V0CisjIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAorCisjCisjIE5ldHdvcmsgRmls
ZSBTeXN0ZW1zCisjCitDT05GSUdfTkZTX0ZTPW0KK0NPTkZJR19ORlNfVjM9eQorQ09ORklHX05G
U19WND15CitDT05GSUdfTkZTX0RJUkVDVElPPXkKK0NPTkZJR19ORlNEPW0KK0NPTkZJR19ORlNE
X1YzPXkKK0NPTkZJR19ORlNEX1Y0PXkKK0NPTkZJR19ORlNEX1RDUD15CitDT05GSUdfTE9DS0Q9
bQorQ09ORklHX0xPQ0tEX1Y0PXkKK0NPTkZJR19FWFBPUlRGUz1tCitDT05GSUdfU1VOUlBDPW0K
KyMgQ09ORklHX1NVTlJQQ19HU1MgaXMgbm90IHNldAorQ09ORklHX1NNQl9GUz1tCitDT05GSUdf
U01CX05MU19ERUZBVUxUPXkKK0NPTkZJR19TTUJfTkxTX1JFTU9URT0iY3A4NTAiCitDT05GSUdf
Q0lGUz1tCisjIENPTkZJR19OQ1BfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ09EQV9GUyBpcyBu
b3Qgc2V0CisjIENPTkZJR19JTlRFUk1FWlpPX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FGU19G
UyBpcyBub3Qgc2V0CisKKyMKKyMgUGFydGl0aW9uIFR5cGVzCisjCitDT05GSUdfUEFSVElUSU9O
X0FEVkFOQ0VEPXkKKyMgQ09ORklHX0FDT1JOX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJ
R19PU0ZfUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FNSUdBX1BBUlRJVElPTiBpcyBu
b3Qgc2V0CisjIENPTkZJR19BVEFSSV9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfTUFD
X1BBUlRJVElPTiBpcyBub3Qgc2V0CitDT05GSUdfTVNET1NfUEFSVElUSU9OPXkKKyMgQ09ORklH
X0JTRF9ESVNLTEFCRUwgaXMgbm90IHNldAorIyBDT05GSUdfTUlOSVhfU1VCUEFSVElUSU9OIGlz
IG5vdCBzZXQKKyMgQ09ORklHX1NPTEFSSVNfWDg2X1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENP
TkZJR19VTklYV0FSRV9ESVNLTEFCRUwgaXMgbm90IHNldAorIyBDT05GSUdfTERNX1BBUlRJVElP
TiBpcyBub3Qgc2V0CisjIENPTkZJR19ORUM5OF9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05G
SUdfU0dJX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19VTFRSSVhfUEFSVElUSU9OIGlz
IG5vdCBzZXQKKyMgQ09ORklHX1NVTl9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfRUZJ
X1BBUlRJVElPTiBpcyBub3Qgc2V0CitDT05GSUdfWEJPWF9QQVJUSVRJT049eQorCisjCisjIE5h
dGl2ZSBMYW5ndWFnZSBTdXBwb3J0CisjCitDT05GSUdfTkxTPXkKK0NPTkZJR19OTFNfREVGQVVM
VD0iaXNvODg1OS0xNSIKK0NPTkZJR19OTFNfQ09ERVBBR0VfNDM3PW0KK0NPTkZJR19OTFNfQ09E
RVBBR0VfNzM3PW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfNzc1PW0KK0NPTkZJR19OTFNfQ09ERVBB
R0VfODUwPW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfODUyPW0KK0NPTkZJR19OTFNfQ09ERVBBR0Vf
ODU1PW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfODU3PW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfODYw
PW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfODYxPW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfODYyPW0K
K0NPTkZJR19OTFNfQ09ERVBBR0VfODYzPW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfODY0PW0KK0NP
TkZJR19OTFNfQ09ERVBBR0VfODY1PW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfODY2PW0KK0NPTkZJ
R19OTFNfQ09ERVBBR0VfODY5PW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfOTM2PW0KK0NPTkZJR19O
TFNfQ09ERVBBR0VfOTUwPW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfOTMyPW0KK0NPTkZJR19OTFNf
Q09ERVBBR0VfOTQ5PW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfODc0PW0KK0NPTkZJR19OTFNfSVNP
ODg1OV84PW0KK0NPTkZJR19OTFNfQ09ERVBBR0VfMTI1MD1tCitDT05GSUdfTkxTX0NPREVQQUdF
XzEyNTE9bQorQ09ORklHX05MU19JU084ODU5XzE9bQorQ09ORklHX05MU19JU084ODU5XzI9bQor
Q09ORklHX05MU19JU084ODU5XzM9bQorQ09ORklHX05MU19JU084ODU5XzQ9bQorQ09ORklHX05M
U19JU084ODU5XzU9bQorQ09ORklHX05MU19JU084ODU5XzY9bQorQ09ORklHX05MU19JU084ODU5
Xzc9bQorQ09ORklHX05MU19JU084ODU5Xzk9bQorQ09ORklHX05MU19JU084ODU5XzEzPW0KK0NP
TkZJR19OTFNfSVNPODg1OV8xND1tCitDT05GSUdfTkxTX0lTTzg4NTlfMTU9bQorQ09ORklHX05M
U19LT0k4X1I9bQorQ09ORklHX05MU19LT0k4X1U9bQorQ09ORklHX05MU19VVEY4PW0KKworIwor
IyBQcm9maWxpbmcgc3VwcG9ydAorIworIyBDT05GSUdfUFJPRklMSU5HIGlzIG5vdCBzZXQKKwor
IworIyBLZXJuZWwgaGFja2luZworIworIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQK
KyMgQ09ORklHX0VBUkxZX1BSSU5USyBpcyBub3Qgc2V0CisjIENPTkZJR19ERUJVR19TUElOTE9D
S19TTEVFUCBpcyBub3Qgc2V0CisjIENPTkZJR19GUkFNRV9QT0lOVEVSIGlzIG5vdCBzZXQKKwor
IworIyBTZWN1cml0eSBvcHRpb25zCisjCisjIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0CisK
KyMKKyMgQ3J5cHRvZ3JhcGhpYyBvcHRpb25zCisjCitDT05GSUdfQ1JZUFRPPXkKK0NPTkZJR19D
UllQVE9fSE1BQz15CitDT05GSUdfQ1JZUFRPX05VTEw9bQorQ09ORklHX0NSWVBUT19NRDQ9bQor
Q09ORklHX0NSWVBUT19NRDU9bQorQ09ORklHX0NSWVBUT19TSEExPW0KK0NPTkZJR19DUllQVE9f
U0hBMjU2PW0KK0NPTkZJR19DUllQVE9fU0hBNTEyPW0KK0NPTkZJR19DUllQVE9fREVTPW0KK0NP
TkZJR19DUllQVE9fQkxPV0ZJU0g9bQorQ09ORklHX0NSWVBUT19UV09GSVNIPW0KK0NPTkZJR19D
UllQVE9fU0VSUEVOVD1tCitDT05GSUdfQ1JZUFRPX0FFUz1tCitDT05GSUdfQ1JZUFRPX0NBU1Q1
PW0KK0NPTkZJR19DUllQVE9fQ0FTVDY9bQorIyBDT05GSUdfQ1JZUFRPX0FSQzQgaXMgbm90IHNl
dAorQ09ORklHX0NSWVBUT19ERUZMQVRFPW0KK0NPTkZJR19DUllQVE9fVEVTVD1tCisKKyMKKyMg
TGlicmFyeSByb3V0aW5lcworIworQ09ORklHX0NSQzMyPW0KK0NPTkZJR19aTElCX0lORkxBVEU9
eQorQ09ORklHX1pMSUJfREVGTEFURT1tCmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL3NvdW5k
L3BjaS9hYzk3L2FjOTdfY29kZWMuYyBsaW51eC0yLjYuNS9zb3VuZC9wY2kvYWM5Ny9hYzk3X2Nv
ZGVjLmMKLS0tIGxpbnV4LTIuNi41Lm9yaWcvc291bmQvcGNpL2FjOTcvYWM5N19jb2RlYy5jCTIw
MDQtMDQtMDQgMDQ6MzY6NTYuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9zb3VuZC9w
Y2kvYWM5Ny9hYzk3X2NvZGVjLmMJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAK
QEAgLTE4MDcsMTAgKzE4MDcsMTMgQEAKIAl9CiAKIAlpZiAoIWFjOTdfaXNfYXVkaW8oYWM5Nykg
JiYgIWFjOTdfaXNfbW9kZW0oYWM5NykpIHsKKwkJLyogUEFUQ0ggRk9SIFhCT1ggKi8KKwkJLyoK
IAkJaWYgKCEoYWM5Ny0+c2NhcHMgJiAoQUM5N19TQ0FQX1NLSVBfQVVESU98QUM5N19TQ0FQX1NL
SVBfTU9ERU0pKSkKIAkJCXNuZF9wcmludGsoS0VSTl9FUlIgIkFDJzk3ICVkIGFjY2VzcyBlcnJv
ciAobm90IGF1ZGlvIG9yIG1vZGVtIGNvZGVjKVxuIiwgYWM5Ny0+bnVtKTsKIAkJc25kX2FjOTdf
ZnJlZShhYzk3KTsKIAkJcmV0dXJuIC1FQUNDRVM7CisJCSovCiAJfQogCiAJaWYgKGJ1cy0+cmVz
ZXQpIC8vIEZJWE1FOiBhbHdheXMgc2tpcHBpbmc/CmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmln
L3NvdW5kL3VzYi91c2JxdWlya3MuaCBsaW51eC0yLjYuNS9zb3VuZC91c2IvdXNicXVpcmtzLmgK
LS0tIGxpbnV4LTIuNi41Lm9yaWcvc291bmQvdXNiL3VzYnF1aXJrcy5oCTIwMDQtMDQtMDQgMDQ6
MzY6NTcuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS9zb3VuZC91c2IvdXNicXVpcmtz
LmgJMjAwNC0wNS0wMSAxNToyMDo0My4wMDAwMDAwMDAgKzAxMDAKQEAgLTY1Myw2ICs2NTMsODAg
QEAKIAkJLnR5cGUgPSBRVUlSS19NSURJX1NUQU5EQVJEX0lOVEVSRkFDRQogCX0KIH0sCit7CS8q
CisJICogVGhpcyBxdWlyayBpcyBmb3IgdGhlIFhib3ggQ29tbXVuaWNhdG9yCisJICogcGxlYXNl
IE5PVEU6CisJICoKKwkgKiAgVEhJUyBIQVMgX05PVF8gQkVFTiBURVNURUQgVEhPUk9VR0hMWSEK
KwkgKgorCSAqICBJVCBJUyBSRUFMTFkgSlVTVCBTT01FIENPUFkmUEFTVEUgRlJPTSBBQk9WRS4K
KwkgKiAgWW91IGhhdmUgYmVlbiB3YXJuZWQuCisJICoKKwkgKiAgSW4gZmFjdCwgSSBtYW5hZ2Vk
IHRvIGtpbmRhIGNyYXNoIGl0IGFuZCB0aGUgWGJveCBodW5nIHdoaWxlCisJICogICBjbGVhbmlu
ZyB1cCBhbHNhIG9uIHNodXRkb3duLgorCSAqCisJICogV2hhdCB3b3JrZWQgd2FzIHRvIGNhdCA8
ZmlsZT4gPiAvZGV2L2RzcCBhbmQgZ2V0IHN0YXRpYworCSAqICBvbiB0aGUgaGVhZHNldC4gR2V0
dGluZyBNcGxheWVyIHRvIG91dHB1dCBzb3VuZCBkaWQgbm90IHdvcmsKKwkgKiAgZm9yIG1lIChu
byBtdXNpYyBmaWxlcyBhbmQgdGhlcmVmb3JlIG5vIGV4dGVuc2l2ZSB0ZXN0cywgdGhvdWdoKS4K
KwkgKiBBbHNvIEkgaGFkIG5vIGx1Y2sgd2l0aCB0aGUgbWljLCBtaXhlciBzYWlkIGl0ICJmb3Vu
ZCBubyBlbGVtZW50cyIuCisJICoKKwkgKiBJZiB5b3Ugd2FubmEgdHJ5LCBnbyBhaGVhZCBhbmQg
cmVwb3J0IHRvIHhib3gtbGludXgub3JnIChNTCwgSVJDKQorCSAqCisJICogTWFya28gRnJpZWRl
bWFubiA8bWZyQGJteC1jaGVtbml0ei5kZT4KKwkgKi8KKwlVU0JfREVWSUNFKDB4MDQ1ZSwgMHgw
MjgzKSwKKwkuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgJiAoY29uc3Qgc25kX3VzYl9h
dWRpb19xdWlya190KSB7CisJCS52ZW5kb3JfbmFtZSA9ICJNaWNyb3NvZnQiLAorCQkucHJvZHVj
dF9uYW1lID0gIlhib3ggQ29tbXVuaWNhdG9yIiwKKwkJLmlmbnVtID0gUVVJUktfQU5ZX0lOVEVS
RkFDRSwKKwkJLnR5cGUgPSBRVUlSS19DT01QT1NJVEUsCisJCS5kYXRhID0gJiAoY29uc3Qgc25k
X3VzYl9hdWRpb19xdWlya190W10pIHsKKwkJCXsKKwkJCQkuaWZudW0gPSAwLAorCQkJCS50eXBl
ID0gUVVJUktfQVVESU9fRklYRURfRU5EUE9JTlQsCisJCQkJLmRhdGEgPSAmIChjb25zdCBzdHJ1
Y3QgYXVkaW9mb3JtYXQpIHsKKwkJCQkJLyogc2VlbXMgbWlnaHQgYXMgd2VsbCBiZSB3cm9uZyAq
LworCQkJCQkuZm9ybWF0ID0gU05EUlZfUENNX0ZPUk1BVF9TMTZfTEUsCisJCQkJCS8qIGFzIG1p
Z2h0IHRoaXMgKi8KKwkJCQkJLmNoYW5uZWxzID0gMSwKKwkJCQkJLmlmYWNlID0gMCwKKwkJCQkJ
LmFsdHNldHRpbmcgPSAwLAorCQkJCQkuYWx0c2V0X2lkeCA9IDAsCisJCQkJCS5hdHRyaWJ1dGVz
ID0gMCwKKwkJCQkJLmVuZHBvaW50ID0gMHgwNCwKKwkJCQkJLmVwX2F0dHIgPSAweDA1LAorCQkJ
CQkvKiBhbmQgdGhvc2UgKi8KKwkJCQkJLnJhdGVzID0gU05EUlZfUENNX1JBVEVfQ09OVElOVU9V
UywKKwkJCQkJLnJhdGVfbWluID0gNDQxMDAsCisJCQkJCS5yYXRlX21heCA9IDQ0MTAwLAorCQkJ
CX0KKwkJCX0sCisJCQl7CisJCQkJLmlmbnVtID0gMSwKKwkJCQkudHlwZSA9IFFVSVJLX0FVRElP
X0ZJWEVEX0VORFBPSU5ULAorCQkJCS5kYXRhID0gJiAoY29uc3Qgc3RydWN0IGF1ZGlvZm9ybWF0
KSB7CisJCQkJCS8qIHNlZW1zIG1pZ2h0IGFzIHdlbGwgYmUgd3JvbmcgKi8KKwkJCQkJLmZvcm1h
dCA9IFNORFJWX1BDTV9GT1JNQVRfUzE2X0xFLAorCQkJCQkvKiBhcyBtaWdodCB0aGlzICovCisJ
CQkJCS5jaGFubmVscyA9IDEsCisJCQkJCS5pZmFjZSA9IDEsCisJCQkJCS5hbHRzZXR0aW5nID0g
MCwKKwkJCQkJLmFsdHNldF9pZHggPSAwLAorCQkJCQkuYXR0cmlidXRlcyA9IDAsCisJCQkJCS5l
bmRwb2ludCA9IDB4ODUsCisJCQkJCS5lcF9hdHRyID0gMHgwNSwKKwkJCQkJLyogYW5kIHRob3Nl
ICovCisJCQkJCS5yYXRlcyA9IFNORFJWX1BDTV9SQVRFX0NPTlRJTlVPVVMsCisJCQkJCS5yYXRl
X21pbiA9IDQ0MTAwLAorCQkJCQkucmF0ZV9tYXggPSA0NDEwMCwKKwkJCQl9CisJCQl9LAorCQkJ
eworCQkJCS5pZm51bSA9IC0xCisJCQl9CisJCX0KKwl9Cit9LAogCiAvKiBNaWRpbWFuL00tQXVk
aW8gZGV2aWNlcyAqLwogewo=
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31023</attachid>
            <date>2004-05-08 20:18 0000</date>
            <desc>xbox-sources/files/lirc_2.6.5.patch</desc>
            <filename>lirc_2.6.5.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvRG9jdW1lbnRhdGlvbi9saXJjL2xpcmNfaXQ4NyBs
aW51eC0yLjYuNS5uZXcvRG9jdW1lbnRhdGlvbi9saXJjL2xpcmNfaXQ4NwotLS0gbGludXgtMi42
LjUub3JpZy9Eb2N1bWVudGF0aW9uL2xpcmMvbGlyY19pdDg3CTE5NzAtMDEtMDEgMDE6MDA6MDAu
MDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS5uZXcvRG9jdW1lbnRhdGlvbi9saXJjL2xp
cmNfaXQ4NwkyMDA0LTA1LTA0IDAxOjIzOjE2LjcxMzU3MTc2OCArMDEwMApAQCAtMCwwICsxLDU0
IEBACitUaGlzIGlzIHRoZSBSRUFETUUgdXNpbmcgdGhlIElURSBJVDg3MDUgYW5kIElUODcxMiBD
SVIgcG9ydCBmb3IgTElSQy4KKworVGhlIElUODcwNSBmb3IgZXhhbXBsZSBjYW4gYmUgZm91bmQg
b24gdGhlIEVDUyBLN1M1QS4KKworVGhlIGRyaXZlciBzdXBwb3J0cyByZWNlaXZpbmcgKE1PREUy
KSBhbmQgc2VuZGluZyAoUFVMU0UpLiBJdCBzZWVtcworc2VuZGluZyAnTElSQ19DQU5fU0VORF9Q
VUxTRScgaXNuJ3Qgb3B0aW1hbCBmb3IgdGhpcyB0eXBlIG9mIGhhcmR3YXJlLgorQnV0IGJlY2F1
c2UgSSBkb24ndCBrbm93IGhvdyB0byBpbXBsZW1lbnQgJ0xJUkNfQ0FOX1NFTkRfQ09ERScsIEkg
ZGlkCitpdCB0aGlzIHdheS4KKworQXR0ZW50aW9uOgorQmVjYXVzZSBvZiBtaXNzaW5nIGhhcmR3
YXJlLCB0aGUgZm9sbG93aW5nIGhhc24ndCBiZWVuIHRlc3RlZDoKK2EpIHJlY2VpdmluZyB3aXRo
IGRlbW9kdWxhdG9yIGVuYWJsZWQsCitiKSBzZW5kaW5nIChkZWJ1Z2dpbmcgb3V0cHV0IGxvb2tz
IGdvb2QpIGFuZAorYykgdXNpbmcgSVQ4NzEyCisKK0FueSBoZWxwIGFuZC9vciBhZGRpdGlvbnMg
ZXRjLiBpcyB3ZWxjb21lLgorCitsaXJjX2l0ODcga25vd3MgYWJvdXQgdGhlIGZvbGxvd2luZyBt
b2R1bGUtcGFyYW1ldGVyczoKK01PRFVMRV9ERVNDUklQVElPTigiTElSQyBkcml2ZXIgZm9yIElU
RSBJVDg3MTIvSVQ4NzA1IENJUiBwb3J0Iik7CitNT0RVTEVfUEFSTShpbywgImkiKTsKK01PRFVM
RV9QQVJNX0RFU0MoaW8sICJJL08gYmFzZSBhZGRyZXNzIChkZWZhdWx0OiAweDMxMCkiKTsKK01P
RFVMRV9QQVJNKGlycSwgImkiKTsKK01PRFVMRV9QQVJNX0RFU0MoaXJxLCAiSW50ZXJydXB0ICgx
LDMtMTIpIChkZWZhdWx0OiA3KSIpOworTU9EVUxFX1BBUk0oaXQ4N19lbmFibGVfZGVtb2R1bGF0
b3IsICJpIik7CitNT0RVTEVfUEFSTV9ERVNDKGl0ODdfZW5hYmxlX2RlbW9kdWxhdG9yLCAiUmVj
ZWl2ZXIgZGVtb2R1bGF0b3IKKwllbmFibGUvZGlzYWJsZSAoMS8wKSwgZGVmYXVsdDogMCIpOwor
CisKK1VzYWdlOgorCithKSBpbyBhbmQgaXJxOgorCitJZiB0aGUgZHJpdmVyIGZpbmRzIHRoZSBJ
VDg3MDUvMTItQ0lSIHBvcnQgaW5pdGlhbGl6ZWQsIGlvIGFuZCBpcnEgb2YKK3RoZSBwcmVpbml0
aWFsaXplZCBoYXJkd2FyZSBpcyB1c2VkIGJ5IHRoZSBkcml2ZXIuIElmIGJvdGggdmFsdWVzIGFy
ZQorcmVhZCAweDAgZnJvbSB0aGUgaGFyZHdhcmUsIHRoZSBkZWZhdWx0IG9yIGdpdmVuIHZhbHVl
IGlzIHVzZWQuCitOb3RlOiBJIGV4cGVyaWVuY2VkIHVzaW5nIGlycT0zLiBUaGUgZHJpdmVyIGlu
aXRpYWxpemVkIHdpdGhvdXQgYW55Citwcm9ibGVtcywgYnV0IG5vIGlycXMgYXJlIHJlY29nbml6
ZWQgYnkgdGhlIHN5c3RlbS4gSSBoYWQgdG8gc3dpdGNoCitiYWNrIHRvIGRlZmF1bHQsIGlycSA3
LgorCitiKSBpdDg3X2VuYWJsZV9kZW1vZHVsYXRvcjoKKworVGhlIGRlbW9kdWxhdG9yIGZvciB0
aGUgcmVjZWl2ZXIgY2FuIGJlIHN3aXRjaGVkIG9mZiAoZGVmYXVsdCB3aXRoaW4KK3RoZSBkcml2
ZXIpLiBJZiB5b3UgbmVlZCB0aGUgZGVtb2R1bGF0b3Igc2ltcGxlIGVuYWJsZSBpdCBieSB0aGUK
K2ZvbGxvd2luZyB3YXk6IGl0ODdfZW5hYmxlX2RlbW9kdWxhdG9yPTEuCisKK0hhbnMtR/xudGVy
IEz8dGtlIFVwaHVlcworCisKK1RPRE8KKworVGhpcyBpcyBteSB0b2RvLWxpc3QgZm9yIGxpcmNf
aXQ4NzoKKworMS4gZW5hYmxpbmcvdXNpbmcgc2hhcmVkIElSUQorMi4gaW5pdC9kcm9wIElSUS11
c2FnZSBpbiBsaXJjX29wZW4vbGlyY19jbG9zZQpkaWZmIC11ck4gbGludXgtMi42LjUub3JpZy9k
cml2ZXJzL2NoYXIvS2NvbmZpZyBsaW51eC0yLjYuNS5uZXcvZHJpdmVycy9jaGFyL0tjb25maWcK
LS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy9jaGFyL0tjb25maWcJMjAwNC0wNC0wNCAwNDoz
NjoxNS4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41Lm5ldy9kcml2ZXJzL2NoYXIvS2Nv
bmZpZwkyMDA0LTA1LTA0IDAxOjMyOjE5Ljk1Mjk4NjgyNCArMDEwMApAQCAtNjMyLDYgKzYzMiw4
IEBACiBjb21tZW50ICJtZXRhbGFiLnVuYy5lZHUgb3IgZnRwOi8vdGl0dXMuY2Z3LmNvbS9wdWIv
TGludXgvdXRpbC8iCiAJZGVwZW5kcyBvbiBRSUMwMl9UQVBFICYmIFFJQzAyX0RZTkNPTkYKIAor
c291cmNlICJkcml2ZXJzL2NoYXIvbGlyYy9LY29uZmlnIgorCiBzb3VyY2UgImRyaXZlcnMvY2hh
ci9pcG1pL0tjb25maWciCiAKIHNvdXJjZSAiZHJpdmVycy9jaGFyL3dhdGNoZG9nL0tjb25maWci
CmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvY2hhci9NYWtlZmlsZSBsaW51eC0y
LjYuNS5uZXcvZHJpdmVycy9jaGFyL01ha2VmaWxlCi0tLSBsaW51eC0yLjYuNS5vcmlnL2RyaXZl
cnMvY2hhci9NYWtlZmlsZQkyMDA0LTA0LTA0IDA0OjM4OjE4LjAwMDAwMDAwMCArMDEwMAorKysg
bGludXgtMi42LjUubmV3L2RyaXZlcnMvY2hhci9NYWtlZmlsZQkyMDA0LTA1LTA0IDAxOjIzOjU2
LjE3OTU3MjAyNCArMDEwMApAQCAtNyw3ICs3LDcgQEAKICMKIEZPTlRNQVBGSUxFID0gY3A0Mzcu
dW5pCiAKLW9iai15CSArPSBtZW0ubyByYW5kb20ubyB0dHlfaW8ubyBuX3R0eS5vIHR0eV9pb2N0
bC5vIHB0eS5vIG1pc2Mubworb2JqLXkJICs9IG1lbS5vIHJhbmRvbS5vIHR0eV9pby5vIG5fdHR5
Lm8gdHR5X2lvY3RsLm8gcHR5Lm8gbWlzYy5vIGxpcmMvCiAKIG9iai0kKENPTkZJR19WVCkJCSs9
IHZ0X2lvY3RsLm8gdmNfc2NyZWVuLm8gY29uc29sZW1hcC5vIFwKIAkJCQkgICBjb25zb2xlbWFw
X2RlZnRibC5vIHNlbGVjdGlvbi5vIGtleWJvYXJkLm8KZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9y
aWcvZHJpdmVycy9jaGFyL2xpcmMvS2NvbmZpZyBsaW51eC0yLjYuNS5uZXcvZHJpdmVycy9jaGFy
L2xpcmMvS2NvbmZpZwotLS0gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL2NoYXIvbGlyYy9LY29u
ZmlnCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS5u
ZXcvZHJpdmVycy9jaGFyL2xpcmMvS2NvbmZpZwkyMDA0LTA1LTA0IDAxOjIzOjU2LjE4MjU3MTU2
OCArMDEwMApAQCAtMCwwICsxLDIwOCBAQAorIyBMSVJDIGh0dHA6Ly9saXJjLnNmLm5ldC8KKyMg
S2VybmVsIHBhdGNoIGJ5IEZsYW1lZXllcyA8ZGdwODVAdXNlcnMuc2YubmV0PgorIyBDaGVjayBm
b3IgbmV3IHBhdGNoIGF0IGh0dHA6Ly9mbGFtZWV5ZXMud2ViLmN0b25ldC5pdAorIworIyBUaGFu
a3MgdG8gS29vcyBWcmllemVuIDxrb29zLnZyaWV6ZW5AeHM0YWxsLm5sPiBmb3IgdGhlIEhvbWVi
cmV3IHN1cHBvcnQuCisjIFRoYW5rcyB0byBKZWZmIENsYXJrIDxqZWZmQHRtdHJhZGluZy5jb20+
IGZvciBzdXBwb3J0IHdoZW4gSSB3YXNuJ3QgYWJsZQorIyB0byB1cGRhdGUgaXQgYW5kIGZvciBo
aXMgcGF0Y2ggKGZvdW5kIGF0IGh0dHA6Ly93d3cuY2xhcmttYW5pYS5jb20vfmpjbGFyay8KKyMg
VGhhbmtzIHRvIEJlcm5oYXJkIFJvc2Vua3JhZW56ZXIgPGJlcm9AYXJrbGludXgub3JnPiBmb3Ig
U01QIHBhdGNoLgorIyBUaGFua3MgdG8gVmluY2UgPGZ1enp5NzdAZnJlZS5mcj4gZm9yIHRoZSB0
ZW1wb3JhcnkgbGlyY19hdGl1c2IgZHJpdmVyLgorIyBUaGFua3MgdG8gUGF1bCBNaWxsZXIgPHBt
aWxsZXI5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gZm9yIHRoZSBuZXcgd29ya2luZworIyBsaXJj
X2F0aXVzYiBkcml2ZXIuCisKK21lbnUgIkxpbnV4IEluZnJhUmVkIENvbnRyb2xsZXIiCisKK2Nv
bmZpZyBMSVJDX1NVUFBPUlQKKwl0cmlzdGF0ZSAiTGludXggSW5mcmFSZWQgQ29udHJvbGxlciIK
KworCWNvbmZpZyBMSVJDX01BWF9ERVYKKwkJaW50ICJNYXhpbXVtIExJUkMgZGV2aWNlcyIKKwkJ
ZGVmYXVsdCAiMiIKKwkJZGVwZW5kcyBvbiBMSVJDX1NVUFBPUlQKKworCWNvbmZpZyBMSVJDX0ky
QworCQl0cmlzdGF0ZSAiSTJDIERyaXZlciIKKwkJZGVwZW5kcyBvbiBMSVJDX1NVUFBPUlQgJiYg
VklERU9fQlQ4NDggJiYgSTJDICYmIEkyQ19BTEdPQklUCisJCWhlbHAKKwkJICBTYXkgWSBoZXJl
IGlmIHlvdSBuZWVkIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgY2FyZHM6CisKKwkJICBQaXhl
bHZpZXcgSVIKKwkJICBIYXVwcGF1YWdlIElSCisJCSAgUFY5NTEgSVIKKwkJICBUVi1Cb3ggSVIK
KwkJICBLTkMgT05FIElSCisKKwkJICBJZiB0aGVzZSBkb250IG1ha2Ugc2Vuc2UgdG8geW91LCB0
aGVuIGRvbnQgdXNlIHRoZSBtb2R1bGUuCisKKwljb25maWcgTElSQ19HUElPCisJCXRyaXN0YXRl
ICJHUElPIERyaXZlciIKKwkJZGVwZW5kcyBvbiBMSVJDX1NVUFBPUlQgJiYgVklERU9fQlQ4NDgK
KworCWNvbmZpZyBMSVJDX0JUODI5CisJCXRyaXN0YXRlICJCVDgyOSBEcml2ZXIiCisJCWRlcGVu
ZHMgb24gTElSQ19TVVBQT1JUCisKKwljb25maWcgTElSQ19JVDg3CisJCXRyaXN0YXRlICJJVDg3
IERyaXZlciIKKwkJZGVwZW5kcyBvbiBMSVJDX1NVUFBPUlQKKworCWNvbmZpZyBMSVJDX0FUSVVT
QgorCQl0cmlzdGF0ZSAiQVRJIFVTQiBEcml2ZXIiCisJCWRlcGVuZHMgb24gTElSQ19TVVBQT1JU
ICYmIFVTQgorCisJY29uZmlnIExJUkNfTUNFVVNCCisJCXRyaXN0YXRlICJNQ0UgVVNCIERyaXZl
ciIKKwkJZGVwZW5kcyBvbiBMSVJDX1NVUFBPUlQgJiYgVVNCCisKKwljb25maWcgTElSQ19QQVJB
TExFTAorCQl0cmlzdGF0ZSAiUGFyYWxsZWwgRHJpdmVyIgorCQlkZXBlbmRzIG9uIExJUkNfU1VQ
UE9SVCAmJiAhU01QICYmIFBBUlBPUlQKKworCQljaG9pY2UKKwkJCXByb21wdCAiUGFyYWxsZWwg
UG9ydCIKKwkJCWRlcGVuZHMgb24gTElSQ19QQVJBTExFTAorCQkJY29uZmlnIExJUkNfUEFSQUxM
RUxfTFBUMQorCQkJCWJvb2wgIkxQVDEgKDB4Mzc4LCA3KSIKKwkJCWNvbmZpZyBMSVJDX1BBUkFM
TEVMX0xQVDIKKwkJCQlib29sICJMUFQyICgweDI3OCwgNSkiCisJCQljb25maWcgTElSQ19QQVJB
TExFTF9MUFQzCisJCQkJYm9vbCAiQ09NMyAoMHgzYmMsIG5vbmUpIgorCQkJY29uZmlnIExJUkNf
UEFSQUxMRUxfT1RIRVIKKwkJCQlib29sICJPdGhlciAoY3VzdG9tIHZhbHVlcykiCisJCWVuZGNo
b2ljZQorCisJCWNvbmZpZyBMSVJDX1BPUlRfUEFSQUxMRUwKKwkJCWhleCAiSS9PIFBvcnQiCisJ
CQkJZGVmYXVsdCAiMHgzNzgiIGlmIExJUkNfUEFSQUxMRUxfTFBUMQorCQkJCWRlZmF1bHQgIjB4
Mjc4IiBpZiBMSVJDX1BBUkFMTEVMX0xQVDIKKwkJCQlkZWZhdWx0ICIweDNiYyIgaWYgTElSQ19Q
QVJBTExFTF9MUFQzCisJCQlkZXBlbmRzIG9uIExJUkNfUEFSQUxMRUwKKworCQljb25maWcgTElS
Q19JUlFfUEFSQUxMRUwKKwkJCWhleCAiSVJRIgorCQkJCWRlZmF1bHQgIjciIGlmIExJUkNfUEFS
QUxMRUxfTFBUMQorCQkJCWRlZmF1bHQgIjUiIGlmIExJUkNfUEFSQUxMRUxfTFBUMgorCQkJZGVw
ZW5kcyBvbiBMSVJDX1BBUkFMTEVMCisKKwkJY29uZmlnIExJUkNfVElNRVIKKwkJCWludCAiVGlt
ZXIiCisJCQlkZWZhdWx0ICI2NTUzNSIKKwkJCWRlcGVuZHMgb24gTElSQ19QQVJBTExFTAorCisJ
Y29uZmlnIExJUkNfU0VSSUFMCisJCXRyaXN0YXRlICJTZXJpYWwgRHJpdmVyIgorCQlkZXBlbmRz
IG9uIExJUkNfU1VQUE9SVCAmJiBTRVJJQUxfODI1MAorCisJCWNob2ljZQorCQkJcHJvbXB0ICJT
ZXJpYWwgUmVjZWl2ZXIgVHlwZSIKKwkJCWRlcGVuZHMgb24gTElSQ19TRVJJQUwKKworCQkJY29u
ZmlnIExJUkNfSE9NRUJSRVcKKwkJCQlib29sICJIb21lYnJldyIKKworCQkJY29uZmlnIExJUkNf
U0VSSUFMX0FOSU1BWAorCQkJCWJvb2wgIkFuaW1heCIKKworCQkJY29uZmlnIExJUkNfU0VSSUFM
X0lSREVPCisJCQkJYm9vbCAiSVJkZW8iCisKKwkJCWNvbmZpZyBMSVJDX1NFUklBTF9JUkRFT19S
RU1PVEUKKwkJCQlib29sICJJUmRlbyBSZW1vdGUiCisKKwkJZW5kY2hvaWNlCisKKwkJY29uZmln
IExJUkNfU0VSSUFMX1RSQU5TTUlUVEVSCisJCQlib29sICJXaXRoIHRyYW5zbWl0dGVyIGRpb2Rl
IgorCQkJZGVwZW5kcyBvbiBMSVJDX1NFUklBTCAmJiAhTElSQ19TRVJJQUxfQU5JTUFYCisKKwkJ
Y29uZmlnIExJUkNfU0VSSUFMX1NPRlRDQVJSSUVSCisJCQlib29sICJXaXRoIHNvZnR3YXJlIGNh
cnJpZXIiCisJCQlkZXBlbmRzIG9uIExJUkNfU0VSSUFMX1RSQU5TTUlUVEVSCisKKwkJY29uZmln
IExJUkNfU0VSSUFMX0lHT1IKKwkJCWJvb2wgIklnb3IgQ2Vza2EncyB2YXJpYXRpb24iCisJCQlk
ZXBlbmRzIG9uIExJUkNfU0VSSUFMCisKKwkJY2hvaWNlCisJCQlwcm9tcHQgIlNlcmlhbCBQb3J0
IgorCQkJZGVwZW5kcyBvbiBMSVJDX1NFUklBTAorCQkJY29uZmlnIExJUkNfU0VSSUFMX0NPTTEK
KwkJCQlib29sICJDT00xICgweDNmOCwgNCkiCisJCQljb25maWcgTElSQ19TRVJJQUxfQ09NMgor
CQkJCWJvb2wgIkNPTTIgKDB4MmY4LCAzKSIKKwkJCWNvbmZpZyBMSVJDX1NFUklBTF9DT00zCisJ
CQkJYm9vbCAiQ09NMyAoMHgzZTgsIDQpIgorCQkJY29uZmlnIExJUkNfU0VSSUFMX0NPTTQKKwkJ
CQlib29sICJDT000ICgweDJlOCwgMykiCisJCQljb25maWcgTElSQ19TRVJJQUxfT1RIRVIKKwkJ
CQlib29sICJPdGhlciAoY3VzdG9tIHZhbHVlcykiCisJCWVuZGNob2ljZQorCisJCWNvbmZpZyBM
SVJDX1BPUlRfU0VSSUFMCisJCQloZXggIkkvTyBQb3J0IgorCQkJCWRlZmF1bHQgIjB4M2Y4IiBp
ZiBMSVJDX1NFUklBTF9DT00xCisJCQkJZGVmYXVsdCAiMHgyZjgiIGlmIExJUkNfU0VSSUFMX0NP
TTIKKwkJCQlkZWZhdWx0ICIweDNlOCIgaWYgTElSQ19TRVJJQUxfQ09NMworCQkJCWRlZmF1bHQg
IjB4MmU4IiBpZiBMSVJDX1NFUklBTF9DT000CisJCQlkZXBlbmRzIG9uIExJUkNfU0VSSUFMCisK
KwkJY29uZmlnIExJUkNfSVJRX1NFUklBTAorCQkJaGV4ICJJUlEiCisJCQkJZGVmYXVsdCAiNCIg
aWYgTElSQ19TRVJJQUxfQ09NMSB8fCBMSVJDX1NFUklBTF9DT00zCisJCQkJZGVmYXVsdCAiMyIg
aWYgTElSQ19TRVJJQUxfQ09NMiB8fCBMSVJDX1NFUklBTF9DT000CisJCQlkZXBlbmRzIG9uIExJ
UkNfU0VSSUFMCisKKwljb25maWcgTElSQ19TSVIKKwkJdHJpc3RhdGUgIlNJUiBEcml2ZXIiCisJ
CWRlcGVuZHMgb24gTElSQ19TVVBQT1JUCisKKwkJY29uZmlnIExJUkNfT05fU0ExMTAwCisJCQli
b29sICJMSVJDIGRyaXZlciBmb3IgU3Ryb25nQVJNIFNBMTEwMCBlbWJlZGRlZCBtaWNyb3Byb2Nl
c3NvciIKKwkJCWRlcGVuZHMgb24gTElSQ19TSVIKKworCQljaG9pY2UKKwkJCXByb21wdCAiU0lS
IFR5cGUiCisJCQlkZXBlbmRzIG9uIExJUkNfU0lSICYmICFMSVJDX09OX1NBMTEwMAorCisJCQlj
b25maWcgTElSQ19TSVJfSVJEQQorCQkJCWJvb2wgIlNJUiBJckRBIChidWlsdC1pbiBJUiBwb3J0
cykiCisKKwkJCWNvbmZpZyBMSVJDX1NJUl9URUtSQU0KKwkJCQlib29sICJUZWtyYW0gSXJtYXRl
IDIxMCAoMTZ4NTAgVUFSVCBjb21wYXRpYmxlIHNlcmlhbCBwb3J0KSIKKworCQkJY29uZmlnIExJ
UkNfU0lSX0FDVElTWVNfQUNUMjAwTAorCQkJCWJvb2wgIkFjdGlzeXMgQWN0MjAwTCBTSVIgZHJp
dmVyIHN1cHBvcnQiCisKKwkJZW5kY2hvaWNlCisKKwkJY2hvaWNlCisJCQlwcm9tcHQgIlNlcmlh
bCBQb3J0IgorCQkJZGVwZW5kcyBvbiBMSVJDX1NJUgorCQkJY29uZmlnIExJUkNfU0lSX0NPTTEK
KwkJCQlib29sICJDT00xICgweDNmOCwgNCkiCisJCQljb25maWcgTElSQ19TSVJfQ09NMgorCQkJ
CWJvb2wgIkNPTTIgKDB4MmY4LCAzKSIKKwkJCWNvbmZpZyBMSVJDX1NJUl9DT00zCisJCQkJYm9v
bCAiQ09NMyAoMHgzZTgsIDQpIgorCQkJY29uZmlnIExJUkNfU0lSX0NPTTQKKwkJCQlib29sICJD
T000ICgweDJlOCwgMykiCisJCQljb25maWcgTElSQ19TSVJfT1RIRVIKKwkJCQlib29sICJPdGhl
ciAoY3VzdG9tIHZhbHVlcykiCisJCWVuZGNob2ljZQorCisJCWNvbmZpZyBMSVJDX1BPUlRfU0lS
CisJCQloZXggIkkvTyBQb3J0IgorCQkJCWRlZmF1bHQgIjB4M2Y4IiBpZiBMSVJDX1NJUl9DT00x
CisJCQkJZGVmYXVsdCAiMHgyZjgiIGlmIExJUkNfU0lSX0NPTTIKKwkJCQlkZWZhdWx0ICIweDNl
OCIgaWYgTElSQ19TSVJfQ09NMworCQkJCWRlZmF1bHQgIjB4MmU4IiBpZiBMSVJDX1NJUl9DT000
CisJCQlkZXBlbmRzIG9uIExJUkNfU0lSCisKKwkJY29uZmlnIExJUkNfSVJRX1NJUgorCQkJaGV4
ICJJUlEiCisJCQkJZGVmYXVsdCAiNCIgaWYgTElSQ19TSVJfQ09NMSB8fCBMSVJDX1NJUl9DT00z
CisJCQkJZGVmYXVsdCAiMyIgaWYgTElSQ19TSVJfQ09NMiB8fCBMSVJDX1NJUl9DT000CisJCQlk
ZXBlbmRzIG9uIExJUkNfU0lSCisKK2VuZG1lbnUKKwpkaWZmIC11ck4gbGludXgtMi42LjUub3Jp
Zy9kcml2ZXJzL2NoYXIvbGlyYy9NYWtlZmlsZSBsaW51eC0yLjYuNS5uZXcvZHJpdmVycy9jaGFy
L2xpcmMvTWFrZWZpbGUKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy9jaGFyL2xpcmMvTWFr
ZWZpbGUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41
Lm5ldy9kcml2ZXJzL2NoYXIvbGlyYy9NYWtlZmlsZQkyMDA0LTA1LTA0IDAxOjIzOjU2LjE4NTU3
MTExMiArMDEwMApAQCAtMCwwICsxLDE0IEBACisjCisjIE1ha2VmaWxlIGZvciB0aGUgbGlyYyBk
cml2ZXJzCisjCisKK29iai0kKENPTkZJR19MSVJDX1NVUFBPUlQpICs9IGxpcmNfZGV2Lm8KK29i
ai0kKENPTkZJR19MSVJDX0dQSU8pICs9IGxpcmNfZ3Bpby5vCitvYmotJChDT05GSUdfTElSQ19C
VDgyOSkgKz0gbGlyY19idDgyOS5vCitvYmotJChDT05GSUdfTElSQ19JVDg3KSArPSBsaXJjX2l0
ODcubworb2JqLSQoQ09ORklHX0xJUkNfUEFSQUxMRUwpICs9IGxpcmNfcGFyYWxsZWwubworb2Jq
LSQoQ09ORklHX0xJUkNfU0VSSUFMKSArPSBsaXJjX3NlcmlhbC5vCitvYmotJChDT05GSUdfTElS
Q19TSVIpICs9IGxpcmNfc2lyLm8KK29iai0kKENPTkZJR19MSVJDX0FUSVVTQikgKz0gbGlyY19h
dGl1c2Iubworb2JqLSQoQ09ORklHX0xJUkNfTUNFVVNCKSArPSBsaXJjX21jZXVzYi5vCitvYmot
JChDT05GSUdfTElSQ19JMkMpICs9IGxpcmNfaTJjLm8KZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9y
aWcvZHJpdmVycy9jaGFyL2xpcmMvbGlyY19hdGl1c2IuYyBsaW51eC0yLjYuNS5uZXcvZHJpdmVy
cy9jaGFyL2xpcmMvbGlyY19hdGl1c2IuYwotLS0gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL2No
YXIvbGlyYy9saXJjX2F0aXVzYi5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAw
CisrKyBsaW51eC0yLjYuNS5uZXcvZHJpdmVycy9jaGFyL2xpcmMvbGlyY19hdGl1c2IuYwkyMDA0
LTA1LTA0IDAxOjIzOjU2LjIwNzU2Nzc2OCArMDEwMApAQCAtMCwwICsxLDYyOSBAQAorLyogbGly
Y19hdGl1c2IgLSBVU0IgcmVtb3RlIHN1cHBvcnQgZm9yIExJUkMKKyAqIChjdXJyZW50bHkgb25s
eSBzdXBwb3J0cyBYMTAgVVNCIHJlbW90ZXMpCisgKiBWZXJzaW9uIDAuMyAgW2JldGEgc3RhdHVz
XQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IFBhdWwgTWlsbGVyIDxwbWlsbGVyOUB1
c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgKgorICogVGhpcyBkcml2ZXIgd2FzIGRlcml2ZWQgZnJv
bToKKyAqICAgVmxhZGltaXIgRGVyZ2FjaGV2IDx2b2xvZHlhQG1pbnNwcmluZy5jb20+J3MgMjAw
MgorICogICAgICAiVVNCIEFUSSBSZW1vdGUgc3VwcG9ydCIgKGlucHV0IGRldmljZSkKKyAqICAg
QWRyaWFuIERld2h1cnN0IDxzYWlsb3ItbGtAc2FpbG9yZnJhZy5uZXQ+J3MgMjAwMgorICogICAg
ICAiVVNCIFN0cmVhbVphcCByZW1vdGUgZHJpdmVyIiAoTElSQykKKyAqICAgQXJ0dXIgTGlwb3dz
a2kgPGFsaXBvd3NraUBra2kubmV0LnBsPidzIDIwMDIKKyAqICAgICAgImxpcmNfZGV2IiBhbmQg
ImxpcmNfZ3BpbyIgTElSQyBtb2R1bGVzCisgKgorICogJElkOiBsaXJjX2F0aXVzYi5jLHYgMS4y
MSAyMDA0LzAxLzMxIDAzOjM4OjU4IHBtaWxsZXI5IEV4cCAkCisgKi8KKworLyoKKyAqIFRoaXMg
cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig
bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUg
MzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51
eC92ZXJzaW9uLmg+CisjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMiwg
MiwgNCkKKyNlcnJvciAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiIKKyNlcnJvciAiU29ycnksIHRoaXMgZHJpdmVyIG5lZWRzIGtlcm5lbCB2
ZXJzaW9uIDIuMi40IG9yIGhpZ2hlciIKKyNlcnJvciAiKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyNlbmRpZgorCisjaWYgTElOVVhfVkVS
U0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDIsIDYsIDApCisjZGVmaW5lIEtFUk5FTDI2CQkx
CisjZWxzZQorI2RlZmluZSBLRVJORUwyNgkJMAorI2VuZGlmCisKKyNpbmNsdWRlIDxsaW51eC9j
b25maWcuaD4KKworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2Vy
cm5vLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4K
KyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9rbW9kLmg+CisjaW5j
bHVkZSA8bGludXgvc21wX2xvY2suaD4KKyNpbmNsdWRlIDxsaW51eC9jb21wbGV0aW9uLmg+Cisj
aW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC91c2IuaD4KKyNpbmNsdWRl
IDxsaW51eC9wb2xsLmg+CisjaW5jbHVkZSA8bGludXgvd2FpdC5oPgorCisjaWYgS0VSTkVMMjYK
KyNpbmNsdWRlIDxsaW51eC9saXJjLmg+CisjaW5jbHVkZSAibGlyY19kZXYuaCIKKyNlbHNlCisj
aW5jbHVkZSAiZHJpdmVycy9saXJjLmgiCisjaW5jbHVkZSAiZHJpdmVycy9saXJjX2Rldi9saXJj
X2Rldi5oIgorI2VuZGlmCisKKyNkZWZpbmUgRFJJVkVSX1ZFUlNJT04JCSIwLjMiCisjZGVmaW5l
IERSSVZFUl9BVVRIT1IJCSJQYXVsIE1pbGxlciA8cG1pbGxlcjlAdXNlcnMuc291cmNlZm9yZ2Uu
bmV0PiIKKyNkZWZpbmUgRFJJVkVSX0RFU0MJCSJVU0IgcmVtb3RlIGRyaXZlciBmb3IgTElSQyIK
KyNkZWZpbmUgRFJJVkVSX05BTUUJCSJsaXJjX2F0aXVzYiIKKworI2RlZmluZSBDT0RFX0xFTkdU
SAkJNQorI2RlZmluZSBDT0RFX01JTl9MRU5HVEgJCTQKKyNkZWZpbmUgVVNCX0JVRkxFTgkJKENP
REVfTEVOR1RIKjQpCisKKyNpZmRlZiBDT05GSUdfVVNCX0RFQlVHCisJc3RhdGljIGludCBkZWJ1
ZyA9IDE7CisjZWxzZQorCXN0YXRpYyBpbnQgZGVidWcgPSAwOworI2VuZGlmCisjZGVmaW5lIGRw
cmludGsJCQlpZiAoZGVidWcpIHByaW50aworCisvKiBnZXQgaGkgYW5kIGxvdyBieXRlcyBvZiBh
IDE2LWJpdHMgaW50ICovCisjZGVmaW5lIEhJKGEpCQkJKCh1bnNpZ25lZCBjaGFyKSgoYSkgPj4g
OCkpCisjZGVmaW5lIExPKGEpCQkJKCh1bnNpZ25lZCBjaGFyKSgoYSkgJiAweGZmKSkKKworLyog
bG9jayBpcmN0bCBzdHJ1Y3R1cmUgKi8KKyNkZWZpbmUgSVJMT0NLCQkJZG93bl9pbnRlcnJ1cHRp
YmxlKCZpci0+bG9jaykKKyNkZWZpbmUgSVJVTkxPQ0sJCXVwKCZpci0+bG9jaykKKworLyogZ2Vu
ZXJhbCBjb25zdGFudHMgKi8KKyNkZWZpbmUgU1VDQ0VTUwkJCTAKKyNkZWZpbmUgU0VORF9GTEFH
X0lOX1BST0dSRVNTCTEKKyNkZWZpbmUgU0VORF9GTEFHX0NPTVBMRVRFCTIKKworCisvKiBkYXRh
IHN0cnVjdHVyZSBmb3IgZWFjaCB1c2IgcmVtb3RlICovCitzdHJ1Y3QgaXJjdGwgeworCisJLyog
dXNiICovCisJc3RydWN0IHVzYl9kZXZpY2UgKnVzYmRldjsKKwlzdHJ1Y3QgdXJiICp1cmJfaW47
CisJc3RydWN0IHVyYiAqdXJiX291dDsKKwlpbnQgZGV2bnVtOworCisJLyogYnVmZmVycyBhbmQg
ZG1hICovCisJdW5zaWduZWQgY2hhciAqYnVmX2luOworCXVuc2lnbmVkIGNoYXIgKmJ1Zl9vdXQ7
CisJdW5zaWduZWQgaW50IGxlbl9pbjsKKyNpZiBLRVJORUwyNgorCWRtYV9hZGRyX3QgZG1hX2lu
OworCWRtYV9hZGRyX3QgZG1hX291dDsKKyNlbmRpZgorCisJLyogbGlyYyAqLworCXN0cnVjdCBs
aXJjX3BsdWdpbiAqcDsKKwlpbnQgY29ubmVjdGVkOworCisJLyogaGFuZGxlIHNlbmRpbmcgKGlu
aXQgc3RyaW5ncykgKi8KKwlpbnQgc2VuZF9mbGFnczsKKwl3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0
X291dDsKKworCXN0cnVjdCBzZW1hcGhvcmUgbG9jazsKK307CisKKy8qIGluaXQgc3RyaW5ncyAq
Lworc3RhdGljIGNoYXIgaW5pdDFbXSA9IHsweDAxLCAweDAwLCAweDIwLCAweDE0fTsKK3N0YXRp
YyBjaGFyIGluaXQyW10gPSB7MHgwMSwgMHgwMCwgMHgyMCwgMHgxNCwgMHgyMCwgMHgyMCwgMHgy
MH07CisKKy8qIHNlbmQgcGFja2V0IC0gdXNlZCB0byBpbml0aWFsaXplIHJlbW90ZSAqLworc3Rh
dGljIHZvaWQgc2VuZF9wYWNrZXQoc3RydWN0IGlyY3RsICppciwgdTE2IGNtZCwgdW5zaWduZWQg
Y2hhciAqZGF0YSkKK3sKKwlERUNMQVJFX1dBSVRRVUVVRSh3YWl0LCBjdXJyZW50KTsKKwlpbnQg
dGltZW91dCA9IEhaOyAvKiAxIHNlY29uZCAqLworCXVuc2lnbmVkIGNoYXIgYnVmW1VTQl9CVUZM
RU5dOworCisJZHByaW50ayhEUklWRVJfTkFNRSAiWyVkXTogc2VuZCBjYWxsZWQgKCUjeClcbiIs
IGlyLT5kZXZudW0sIGNtZCk7CisKKwlJUkxPQ0s7CisJaXItPnVyYl9vdXQtPnRyYW5zZmVyX2J1
ZmZlcl9sZW5ndGggPSBMTyhjbWQpICsgMTsKKwlpci0+dXJiX291dC0+ZGV2ID0gaXItPnVzYmRl
djsKKwlpci0+c2VuZF9mbGFncyA9IFNFTkRfRkxBR19JTl9QUk9HUkVTUzsKKworCW1lbWNweShi
dWYrMSwgZGF0YSwgTE8oY21kKSk7CisJYnVmWzBdID0gSEkoY21kKTsKKwltZW1jcHkoaXItPmJ1
Zl9vdXQsIGJ1ZiwgTE8oY21kKSsxKTsKKworCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJS
VVBUSUJMRSk7CisJYWRkX3dhaXRfcXVldWUoJmlyLT53YWl0X291dCwgJndhaXQpOworCisjaWYg
S0VSTkVMMjYKKwlpZiAodXNiX3N1Ym1pdF91cmIoaXItPnVyYl9vdXQsIFNMQUJfQVRPTUlDKSkg
eworI2Vsc2UKKwlpZiAodXNiX3N1Ym1pdF91cmIoaXItPnVyYl9vdXQpKSB7CisjZW5kaWYKKwkJ
c2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKKwkJcmVtb3ZlX3dhaXRfcXVldWUoJmly
LT53YWl0X291dCwgJndhaXQpOworCQlJUlVOTE9DSzsKKwkJcmV0dXJuOworCX0KKwlJUlVOTE9D
SzsKKworCXdoaWxlICh0aW1lb3V0ICYmIChpci0+dXJiX291dC0+c3RhdHVzID09IC1FSU5QUk9H
UkVTUykKKwkJJiYgIShpci0+c2VuZF9mbGFncyAmIFNFTkRfRkxBR19DT01QTEVURSkpIHsKKwkJ
dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7CisJCXJtYigpOworCX0KKworCWRw
cmludGsoRFJJVkVSX05BTUUgIlslZF06IHNlbmQgY29tcGxldGUgKCUjeClcbiIsIGlyLT5kZXZu
dW0sIGNtZCk7CisKKwlzZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpOworCXJlbW92ZV93
YWl0X3F1ZXVlKCZpci0+d2FpdF9vdXQsICZ3YWl0KTsKKwl1c2JfdW5saW5rX3VyYihpci0+dXJi
X291dCk7Cit9CisKK3N0YXRpYyBpbnQgdW5yZWdpc3Rlcl9mcm9tX2xpcmMoc3RydWN0IGlyY3Rs
ICppcikKK3sKKwlzdHJ1Y3QgbGlyY19wbHVnaW4gKnAgPSBpci0+cDsKKwlpbnQgZGV2bnVtOwor
CWludCBydG47CisKKwlkZXZudW0gPSBpci0+ZGV2bnVtOworCWRwcmludGsoRFJJVkVSX05BTUUg
IlslZF06IHVucmVnaXN0ZXIgZnJvbSBsaXJjIGNhbGxlZFxuIiwgZGV2bnVtKTsKKworCWlmICgo
cnRuID0gbGlyY191bnJlZ2lzdGVyX3BsdWdpbihwLT5taW5vcikpID4gMCkgeworCQlwcmludGso
RFJJVkVSX05BTUUgIlslZF06IGVycm9yIGluIGxpcmNfdW5yZWdpc3RlciBtaW5vcjogJWRcbiIK
KwkJCSJUcnlpbmcgYWdhaW4uLi5cbiIsIGRldm51bSwgcC0+bWlub3IpOworCQlpZiAocnRuID09
IC1FQlVTWSkgeworCQkJcHJpbnRrKERSSVZFUl9OQU1FCisJCQkJIlslZF06IGRldmljZSBpcyBv
cGVuZWQsIHdpbGwgdW5yZWdpc3RlciIKKwkJCQkiIG9uIGNsb3NlXG4iLCBkZXZudW0pOworCQkJ
cmV0dXJuIC1FQUdBSU47CisJCX0KKwkJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJ
QkxFKTsKKwkJc2NoZWR1bGVfdGltZW91dChIWik7CisKKwkJaWYgKChydG4gPSBsaXJjX3VucmVn
aXN0ZXJfcGx1Z2luKHAtPm1pbm9yKSkgPiAwKSB7CisJCQlwcmludGsoRFJJVkVSX05BTUUgIlsl
ZF06IGxpcmNfdW5yZWdpc3RlciBmYWlsZWRcbiIsCisJCQlkZXZudW0pOworCQl9CisJfQorCisJ
aWYgKHJ0biAhPSBTVUNDRVNTKSB7CisJCXByaW50ayhEUklWRVJfTkFNRSAiWyVkXTogZGlkbid0
IGZyZWUgcmVzb3VyY2VzXG4iLCBkZXZudW0pOworCQlyZXR1cm4gLUVBR0FJTjsKKwl9CisKKwlw
cmludGsoRFJJVkVSX05BTUUgIlslZF06IHVzYiByZW1vdGUgZGlzY29ubmVjdGVkXG4iLCBkZXZu
dW0pOworCisJbGlyY19idWZmZXJfZnJlZShwLT5yYnVmKTsKKwlrZnJlZShwLT5yYnVmKTsKKwlr
ZnJlZShwKTsKKwlrZnJlZShpcik7CisJcmV0dXJuIFNVQ0NFU1M7Cit9CisKK3N0YXRpYyBpbnQg
c2V0X3VzZV9pbmModm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgaXJjdGwgKmlyID0gZGF0YTsKKwor
CWlmICghaXIpIHsKKwkJcHJpbnRrKERSSVZFUl9OQU1FICJbP106IHNldF91c2VfaW5jIGNhbGxl
ZCB3aXRoIG5vIGNvbnRleHRcbiIpOworCQlyZXR1cm4gLUVJTzsKKwl9CisJZHByaW50ayhEUklW
RVJfTkFNRSAiWyVkXTogc2V0IHVzZSBpbmNcbiIsIGlyLT5kZXZudW0pOworCisJaWYgKCFpci0+
Y29ubmVjdGVkKSB7CisJCWlmICghaXItPnVzYmRldikKKwkJCXJldHVybiAtRU5PRU5UOworCQlp
ci0+dXJiX2luLT5kZXYgPSBpci0+dXNiZGV2OworI2lmIEtFUk5FTDI2CisJCWlmICh1c2Jfc3Vi
bWl0X3VyYihpci0+dXJiX2luLCBTTEFCX0FUT01JQykpIHsKKyNlbHNlCisJCWlmICh1c2Jfc3Vi
bWl0X3VyYihpci0+dXJiX2luKSkgeworI2VuZGlmCisJCQlwcmludGsoRFJJVkVSX05BTUUgIlsl
ZF06IG9wZW4gcmVzdWx0ID0gLUVJTyBlcnJvciAiCisJCQkJInN1Ym1pdHRpbmcgdXJiXG4iLCBp
ci0+ZGV2bnVtKTsKKwkJCXJldHVybiAtRUlPOworCQl9CisJCWlyLT5jb25uZWN0ZWQgPSAxOwor
CX0KKworCXJldHVybiBTVUNDRVNTOworfQorCitzdGF0aWMgdm9pZCBzZXRfdXNlX2RlYyh2b2lk
ICpkYXRhKQoreworCXN0cnVjdCBpcmN0bCAqaXIgPSBkYXRhOworCisJaWYgKCFpcikgeworCQlw
cmludGsoRFJJVkVSX05BTUUgIls/XTogc2V0X3VzZV9kZWMgY2FsbGVkIHdpdGggbm8gY29udGV4
dFxuIik7CisJCXJldHVybjsKKwl9CisJZHByaW50ayhEUklWRVJfTkFNRSAiWyVkXTogc2V0IHVz
ZSBkZWNcbiIsIGlyLT5kZXZudW0pOworCisJaWYgKGlyLT5jb25uZWN0ZWQpIHsKKwkJSVJMT0NL
OworCQl1c2JfdW5saW5rX3VyYihpci0+dXJiX2luKTsKKwkJaXItPmNvbm5lY3RlZCA9IDA7CisJ
CUlSVU5MT0NLOworCX0KK30KKworCisjaWYgS0VSTkVMMjYKK3N0YXRpYyB2b2lkIHVzYl9yZW1v
dGVfcmVjdihzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQorI2Vsc2UKK3N0
YXRpYyB2b2lkIHVzYl9yZW1vdGVfcmVjdihzdHJ1Y3QgdXJiICp1cmIpCisjZW5kaWYKK3sKKwlz
dHJ1Y3QgaXJjdGwgKmlyOworCWNoYXIgYnVmW0NPREVfTEVOR1RIXTsKKwlpbnQgaSwgbGVuOwor
CisJaWYgKCF1cmIpCisJCXJldHVybjsKKworCWlmICghKGlyID0gdXJiLT5jb250ZXh0KSkgewor
CQl1c2JfdW5saW5rX3VyYih1cmIpOworCQlyZXR1cm47CisJfQorCisJZHByaW50ayhEUklWRVJf
TkFNRSAiWyVkXTogZGF0YSByZWNlaXZlZCAobGVuZ3RoICVkKVxuIiwKKwkJaXItPmRldm51bSwg
dXJiLT5hY3R1YWxfbGVuZ3RoKTsKKworCXN3aXRjaCAodXJiLT5zdGF0dXMpIHsKKworCS8qIHN1
Y2Nlc3MgKi8KKwljYXNlIFNVQ0NFU1M6CisJCS8qIHNvbWUgcmVtb3RlcyBlbWl0IGJvdGggNCBh
bmQgNSBieXRlIGxlbmd0aCBjb2Rlcy4gKi8KKwkJbGVuID0gdXJiLT5hY3R1YWxfbGVuZ3RoOwor
CQlpZiAobGVuIDwgQ09ERV9NSU5fTEVOR1RIIHx8IGxlbiA+IENPREVfTEVOR1RIKSByZXR1cm47
CisKKwkJbWVtY3B5KGJ1Zix1cmItPnRyYW5zZmVyX2J1ZmZlcixsZW4pOworCQlmb3IgKGkgPSBs
ZW47IGkgPCBDT0RFX0xFTkdUSDsgaSsrKSBidWZbaV0gPSAwOworCisJCWxpcmNfYnVmZmVyX3dy
aXRlXzEoaXItPnAtPnJidWYsIGJ1Zik7CisJCXdha2VfdXAoJmlyLT5wLT5yYnVmLT53YWl0X3Bv
bGwpOworCQlicmVhazsKKworCS8qIHVubGluayAqLworCWNhc2UgLUVDT05OUkVTRVQ6CisJY2Fz
ZSAtRU5PRU5UOgorCWNhc2UgLUVTSFVURE9XTjoKKwkJdXNiX3VubGlua191cmIodXJiKTsKKwkJ
cmV0dXJuOworCX0KKworCS8qIHJlc3VibWl0IHVyYiAqLworI2lmIEtFUk5FTDI2CisJdXNiX3N1
Ym1pdF91cmIodXJiLCBTTEFCX0FUT01JQyk7CisjZWxzZQorCXVzYl9zdWJtaXRfdXJiKHVyYik7
CisjZW5kaWYKK30KKworI2lmIEtFUk5FTDI2CitzdGF0aWMgdm9pZCB1c2JfcmVtb3RlX3NlbmQo
c3RydWN0IHVyYiAqdXJiLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKKyNlbHNlCitzdGF0aWMgdm9p
ZCB1c2JfcmVtb3RlX3NlbmQoc3RydWN0IHVyYiAqdXJiKQorI2VuZGlmCit7CisJc3RydWN0IGly
Y3RsICppcjsKKworCWlmICghdXJiKQorCQlyZXR1cm47CisKKwlpZiAoIShpciA9IHVyYi0+Y29u
dGV4dCkpIHsKKwkJdXNiX3VubGlua191cmIodXJiKTsKKwkJcmV0dXJuOworCX0KKworCWRwcmlu
dGsoRFJJVkVSX05BTUUgIlslZF06IHVzYiBvdXQgY2FsbGVkXG4iLCBpci0+ZGV2bnVtKTsKKwor
CWlmICh1cmItPnN0YXR1cykKKwkJcmV0dXJuOworCisJaXItPnNlbmRfZmxhZ3MgfD0gU0VORF9G
TEFHX0NPTVBMRVRFOworCXdtYigpOworCWlmICh3YWl0cXVldWVfYWN0aXZlKCZpci0+d2FpdF9v
dXQpKQorCQl3YWtlX3VwKCZpci0+d2FpdF9vdXQpOworfQorCisjaWYgS0VSTkVMMjYKK3N0YXRp
YyBpbnQgdXNiX3JlbW90ZV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwKKwkJCQlj
b25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCit7CisJc3RydWN0IHVzYl9kZXZpY2UgKmRl
diA9IE5VTEw7CisJc3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqaWRlc2MgPSBOVUxMOworI2Vs
c2UKK3N0YXRpYyB2b2lkICp1c2JfcmVtb3RlX3Byb2JlKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYs
IHVuc2lnbmVkIGludCBpZm51bSwKKwkJCQljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQp
Cit7CisJc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGY7CisJc3RydWN0IHVzYl9pbnRlcmZhY2Vf
ZGVzY3JpcHRvciAqaWRlc2M7CisjZW5kaWYKKwlzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0
b3IgKmVwX2luLCAqZXBfb3V0OworCXN0cnVjdCBpcmN0bCAqaXIgPSBOVUxMOworCXN0cnVjdCBs
aXJjX3BsdWdpbiAqcGx1Z2luID0gTlVMTDsKKwlzdHJ1Y3QgbGlyY19idWZmZXIgKnJidWYgPSBO
VUxMOworCWludCBkZXZudW0sIHBpcGUsIG1heHAsIGxlbiwgYnVmX2xlbiwgYnl0ZXNfaW5fa2V5
OworCWludCBtaW5vciA9IDA7CisJY2hhciBidWZbNjNdLCBuYW1lWzEyOF09IiI7CisJaW50IG1l
bV9mYWlsdXJlID0gMDsKKworCWRwcmludGsoRFJJVkVSX05BTUUgIjogdXNiIHByb2JlIGNhbGxl
ZFxuIik7CisKKyNpZiBLRVJORUwyNgorCWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7
CisJaWRlc2MgPSAmaW50Zi0+YWx0c2V0dGluZ1tpbnRmLT5hY3RfYWx0c2V0dGluZ107CisJaWYg
KGlkZXNjLT5kZXNjLmJOdW1FbmRwb2ludHMgIT0gMikKKwkJcmV0dXJuIC1FTk9ERVY7CisJZXBf
aW4gPSAmaWRlc2MtPmVuZHBvaW50WzBdLmRlc2M7CisJZXBfb3V0ID0gJmlkZXNjLT5lbmRwb2lu
dFsxXS5kZXNjOworCWlmICgoKGVwX2luLT5iRW5kcG9pbnRBZGRyZXNzICYgVVNCX0VORFBPSU5U
X0RJUl9NQVNLKSAhPSBVU0JfRElSX0lOKQorCQl8fCAoZXBfaW4tPmJtQXR0cmlidXRlcyAmIFVT
Ql9FTkRQT0lOVF9YRkVSVFlQRV9NQVNLKQorCQkhPSBVU0JfRU5EUE9JTlRfWEZFUl9JTlQpCisJ
CXJldHVybiAtRU5PREVWOworI2Vsc2UKKwlpbnRmID0gJmRldi0+YWN0Y29uZmlnLT5pbnRlcmZh
Y2VbaWZudW1dOworCWlkZXNjID0gJmludGYtPmFsdHNldHRpbmdbaW50Zi0+YWN0X2FsdHNldHRp
bmddOworCWlmIChpZGVzYy0+Yk51bUVuZHBvaW50cyAhPSAyKQorCQlyZXR1cm4gTlVMTDsKKwll
cF9pbiA9IGlkZXNjLT5lbmRwb2ludCArIDA7CisJZXBfb3V0ID0gaWRlc2MtPmVuZHBvaW50ICsg
MTsKKwlpZiAoKChlcF9pbi0+YkVuZHBvaW50QWRkcmVzcyAmIFVTQl9FTkRQT0lOVF9ESVJfTUFT
SykgIT0gVVNCX0RJUl9JTikKKwkJfHwgKGVwX2luLT5ibUF0dHJpYnV0ZXMgJiBVU0JfRU5EUE9J
TlRfWEZFUlRZUEVfTUFTSykKKwkJIT0gVVNCX0VORFBPSU5UX1hGRVJfSU5UKQorCQlyZXR1cm4g
TlVMTDsKKyNlbmRpZgorCWRldm51bSA9IGRldi0+ZGV2bnVtOworCXBpcGUgPSB1c2JfcmN2aW50
cGlwZShkZXYsIGVwX2luLT5iRW5kcG9pbnRBZGRyZXNzKTsKKwltYXhwID0gdXNiX21heHBhY2tl
dChkZXYsIHBpcGUsIHVzYl9waXBlb3V0KHBpcGUpKTsKKworCWJ5dGVzX2luX2tleSA9IENPREVf
TEVOR1RIOworCWxlbiA9IChtYXhwID4gVVNCX0JVRkxFTikgPyBVU0JfQlVGTEVOIDogbWF4cDsK
KwlidWZfbGVuID0gbGVuIC0gKGxlbiAlIGJ5dGVzX2luX2tleSk7CisKKwlkcHJpbnRrKERSSVZF
Ul9OQU1FICJbJWRdOiBieXRlc19pbl9rZXk9JWQgbGVuPSVkIG1heHA9JWQgYnVmX2xlbj0lZFxu
IiwKKwkJZGV2bnVtLCBieXRlc19pbl9rZXksIGxlbiwgbWF4cCwgYnVmX2xlbik7CisKKworCS8q
IGFsbG9jYXRlIGtlcm5lbCBtZW1vcnkgKi8KKwltZW1fZmFpbHVyZSA9IDA7CisJaWYgKCEoaXIg
PSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgaXJjdGwpLCBHRlBfS0VSTkVMKSkpIHsKKwkJbWVtX2Zh
aWx1cmUgPSAxOworCX0gZWxzZSB7CisJCW1lbXNldChpciwgMCwgc2l6ZW9mKHN0cnVjdCBpcmN0
bCkpOworCisJCWlmICghKHBsdWdpbiA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBsaXJjX3BsdWdp
biksIEdGUF9LRVJORUwpKSkgeworCQkJbWVtX2ZhaWx1cmUgPSAyOworCQl9IGVsc2UgaWYgKCEo
cmJ1ZiA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBsaXJjX2J1ZmZlciksIEdGUF9LRVJORUwpKSkg
eworCQkJbWVtX2ZhaWx1cmUgPSAzOworCQl9IGVsc2UgaWYgKGxpcmNfYnVmZmVyX2luaXQocmJ1
ZiwgYnl0ZXNfaW5fa2V5LCBVU0JfQlVGTEVOL2J5dGVzX2luX2tleSkpIHsKKwkJCW1lbV9mYWls
dXJlID0gNDsKKyNpZiBLRVJORUwyNgorCQl9IGVsc2UgaWYgKCEoaXItPmJ1Zl9pbiA9IHVzYl9i
dWZmZXJfYWxsb2MoZGV2LCBidWZfbGVuLCBTTEFCX0FUT01JQywgJmlyLT5kbWFfaW4pKSkgewor
CQkJbWVtX2ZhaWx1cmUgPSA1OworCQl9IGVsc2UgaWYgKCEoaXItPmJ1Zl9vdXQgPSB1c2JfYnVm
ZmVyX2FsbG9jKGRldiwgVVNCX0JVRkxFTiwgU0xBQl9BVE9NSUMsICZpci0+ZG1hX291dCkpKSB7
CisJCQltZW1fZmFpbHVyZSA9IDY7CisJCX0gZWxzZSBpZiAoIShpci0+dXJiX2luID0gdXNiX2Fs
bG9jX3VyYigwLCBHRlBfS0VSTkVMKSkpIHsKKwkJCW1lbV9mYWlsdXJlID0gNzsKKwkJfSBlbHNl
IGlmICghKGlyLT51cmJfb3V0ID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKSkpIHsKKwkJ
CW1lbV9mYWlsdXJlID0gODsKKyNlbHNlCisJCX0gZWxzZSBpZiAoIShpci0+YnVmX2luID0ga21h
bGxvYyhidWZfbGVuLCBHRlBfS0VSTkVMKSkpIHsKKwkJCW1lbV9mYWlsdXJlID0gNTsKKwkJfSBl
bHNlIGlmICghKGlyLT5idWZfb3V0ID0ga21hbGxvYyhVU0JfQlVGTEVOLCBHRlBfS0VSTkVMKSkp
IHsKKwkJCW1lbV9mYWlsdXJlID0gNjsKKwkJfSBlbHNlIGlmICghKGlyLT51cmJfaW4gPSB1c2Jf
YWxsb2NfdXJiKDApKSkgeworCQkJbWVtX2ZhaWx1cmUgPSA3OworCQl9IGVsc2UgaWYgKCEoaXIt
PnVyYl9vdXQgPSB1c2JfYWxsb2NfdXJiKDApKSkgeworCQkJbWVtX2ZhaWx1cmUgPSA4OworI2Vu
ZGlmCisJCX0gZWxzZSB7CisKKwkJCW1lbXNldChwbHVnaW4sIDAsIHNpemVvZihzdHJ1Y3QgbGly
Y19wbHVnaW4pKTsKKworCQkJc3RyY3B5KHBsdWdpbi0+bmFtZSwgRFJJVkVSX05BTUUgIiAiKTsK
KwkJCXBsdWdpbi0+bWlub3IgPSAtMTsKKwkJCXBsdWdpbi0+Y29kZV9sZW5ndGggPSBieXRlc19p
bl9rZXkqODsKKwkJCXBsdWdpbi0+ZmVhdHVyZXMgPSBMSVJDX0NBTl9SRUNfTElSQ0NPREU7CisJ
CQlwbHVnaW4tPmRhdGEgPSBpcjsKKwkJCXBsdWdpbi0+cmJ1ZiA9IHJidWY7CisJCQlwbHVnaW4t
PnNldF91c2VfaW5jID0gJnNldF91c2VfaW5jOworCQkJcGx1Z2luLT5zZXRfdXNlX2RlYyA9ICZz
ZXRfdXNlX2RlYzsKKworCQkJaW5pdF9NVVRFWCgmaXItPmxvY2spOworCQkJaW5pdF93YWl0cXVl
dWVfaGVhZCgmaXItPndhaXRfb3V0KTsKKworCQkJaWYgKChtaW5vciA9IGxpcmNfcmVnaXN0ZXJf
cGx1Z2luKHBsdWdpbikpIDwgMCkgeworCQkJCW1lbV9mYWlsdXJlID0gOTsKKwkJCX0KKwkJfQor
CX0KKworCS8qIGZyZWUgYWxsb2NhdGVkIG1lbW9yeSBpbmNhc2Ugb2YgZmFpbHVyZSAqLworCXN3
aXRjaCAobWVtX2ZhaWx1cmUpIHsKKwljYXNlIDk6CisJCWxpcmNfYnVmZmVyX2ZyZWUocmJ1Zik7
CisJY2FzZSA4OgorCQl1c2JfZnJlZV91cmIoaXItPnVyYl9vdXQpOworCWNhc2UgNzoKKwkJdXNi
X2ZyZWVfdXJiKGlyLT51cmJfaW4pOworI2lmIEtFUk5FTDI2CisJY2FzZSA2OgorCQl1c2JfYnVm
ZmVyX2ZyZWUoZGV2LCBVU0JfQlVGTEVOLCBpci0+YnVmX291dCwgaXItPmRtYV9vdXQpOworCWNh
c2UgNToKKwkJdXNiX2J1ZmZlcl9mcmVlKGRldiwgYnVmX2xlbiwgaXItPmJ1Zl9pbiwgaXItPmRt
YV9pbik7CisjZWxzZQorCWNhc2UgNjoKKwkJa2ZyZWUoaXItPmJ1Zl9vdXQpOworCWNhc2UgNToK
KwkJa2ZyZWUoaXItPmJ1Zl9pbik7CisjZW5kaWYKKwljYXNlIDQ6CisJCWtmcmVlKHJidWYpOwor
CWNhc2UgMzoKKwkJa2ZyZWUocGx1Z2luKTsKKwljYXNlIDI6CisJCWtmcmVlKGlyKTsKKwljYXNl
IDE6CisJCXByaW50ayhEUklWRVJfTkFNRSAiWyVkXTogb3V0IG9mIG1lbW9yeSAoY29kZT0lZClc
biIsCisJCQlkZXZudW0sIG1lbV9mYWlsdXJlKTsKKyNpZiBLRVJORUwyNgorCQlyZXR1cm4gLUVO
T01FTTsKKyNlbHNlCisJCXJldHVybiBOVUxMOworI2VuZGlmCisJfQorCisJcGx1Z2luLT5taW5v
ciA9IG1pbm9yOworCWlyLT5wID0gcGx1Z2luOworCWlyLT5kZXZudW0gPSBkZXZudW07CisJaXIt
PnVzYmRldiA9IGRldjsKKwlpci0+bGVuX2luID0gYnVmX2xlbjsKKwlpci0+Y29ubmVjdGVkID0g
MDsKKworCXVzYl9maWxsX2ludF91cmIoaXItPnVyYl9pbiwgZGV2LCBwaXBlLCBpci0+YnVmX2lu
LAorCQlidWZfbGVuLCB1c2JfcmVtb3RlX3JlY3YsIGlyLCBlcF9pbi0+YkludGVydmFsKTsKKwl1
c2JfZmlsbF9pbnRfdXJiKGlyLT51cmJfb3V0LCBkZXYsCisJCXVzYl9zbmRpbnRwaXBlKGRldiwg
ZXBfb3V0LT5iRW5kcG9pbnRBZGRyZXNzKSwgaXItPmJ1Zl9vdXQsCisJCVVTQl9CVUZMRU4sIHVz
Yl9yZW1vdGVfc2VuZCwgaXIsIGVwX291dC0+YkludGVydmFsKTsKKworCWlmIChkZXYtPmRlc2Ny
aXB0b3IuaU1hbnVmYWN0dXJlcgorCQkmJiB1c2Jfc3RyaW5nKGRldiwgZGV2LT5kZXNjcmlwdG9y
LmlNYW51ZmFjdHVyZXIsIGJ1ZiwgNjMpID4gMCkKKwkJc3RybmNweShuYW1lLCBidWYsIDEyOCk7
CisJaWYgKGRldi0+ZGVzY3JpcHRvci5pUHJvZHVjdAorCQkmJiB1c2Jfc3RyaW5nKGRldiwgZGV2
LT5kZXNjcmlwdG9yLmlQcm9kdWN0LCBidWYsIDYzKSA+IDApCisJCXNucHJpbnRmKG5hbWUsIDEy
OCwgIiVzICVzIiwgbmFtZSwgYnVmKTsKKwlwcmludGsoRFJJVkVSX05BTUUgIlslZF06ICVzIG9u
IHVzYiVkOiVkXG4iLCBkZXZudW0sIG5hbWUsCisJICAgICAgIGRldi0+YnVzLT5idXNudW0sIGRl
dm51bSk7CisKKwlzZW5kX3BhY2tldChpciwgMHg4MDA0LCBpbml0MSk7CisJc2VuZF9wYWNrZXQo
aXIsIDB4ODAwNywgaW5pdDIpOworCisjaWYgS0VSTkVMMjYKKwl1c2Jfc2V0X2ludGZkYXRhKGlu
dGYsIGlyKTsKKwlyZXR1cm4gU1VDQ0VTUzsKKyNlbHNlCisJcmV0dXJuIGlyOworI2VuZGlmCit9
CisKKworI2lmIEtFUk5FTDI2CitzdGF0aWMgdm9pZCB1c2JfcmVtb3RlX2Rpc2Nvbm5lY3Qoc3Ry
dWN0IHVzYl9pbnRlcmZhY2UgKmludGYpCit7CisJc3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IGlu
dGVyZmFjZV90b191c2JkZXYoaW50Zik7CisJc3RydWN0IGlyY3RsICppciA9IHVzYl9nZXRfaW50
ZmRhdGEoaW50Zik7CisJdXNiX3NldF9pbnRmZGF0YShpbnRmLCBOVUxMKTsKKyNlbHNlCitzdGF0
aWMgdm9pZCB1c2JfcmVtb3RlX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgdm9p
ZCAqcHRyKQoreworCXN0cnVjdCBpcmN0bCAqaXIgPSBwdHI7CisjZW5kaWYKKworCWlmICghaXIg
fHwgIWlyLT5wKQorCQlyZXR1cm47CisKKwlpci0+dXNiZGV2ID0gTlVMTDsKKwl3YWtlX3VwX2Fs
bCgmaXItPndhaXRfb3V0KTsKKworCUlSTE9DSzsKKwl1c2JfdW5saW5rX3VyYihpci0+dXJiX2lu
KTsKKwl1c2JfdW5saW5rX3VyYihpci0+dXJiX291dCk7CisJdXNiX2ZyZWVfdXJiKGlyLT51cmJf
aW4pOworCXVzYl9mcmVlX3VyYihpci0+dXJiX291dCk7CisjaWYgS0VSTkVMMjYKKwl1c2JfYnVm
ZmVyX2ZyZWUoZGV2LCBpci0+bGVuX2luLCBpci0+YnVmX2luLCBpci0+ZG1hX2luKTsKKwl1c2Jf
YnVmZmVyX2ZyZWUoZGV2LCBVU0JfQlVGTEVOLCBpci0+YnVmX291dCwgaXItPmRtYV9vdXQpOwor
I2Vsc2UKKwlrZnJlZShpci0+YnVmX2luKTsKKwlrZnJlZShpci0+YnVmX291dCk7CisjZW5kaWYK
KwlJUlVOTE9DSzsKKworCXVucmVnaXN0ZXJfZnJvbV9saXJjKGlyKTsKK30KKworc3RhdGljIHN0
cnVjdCB1c2JfZGV2aWNlX2lkIHVzYl9yZW1vdGVfaWRfdGFibGUgW10gPSB7CisJeyBVU0JfREVW
SUNFKDB4MGJjNywgMHgwMDAyKSB9LAkJLyogWDEwIFVTQiBGaXJlY3JhY2tlciBJbnRlcmZhY2Ug
Ki8KKwl7IFVTQl9ERVZJQ0UoMHgwYmM3LCAweDAwMDMpIH0sCQkvKiBYMTAgVkdBIFZpZGVvIFNl
bmRlciAqLworCXsgVVNCX0RFVklDRSgweDBiYzcsIDB4MDAwNCkgfSwJCS8qIEFUSSBXaXJlbGVz
cyBSZW1vdGUgUmVjZWl2ZXIgKi8KKwl7IFVTQl9ERVZJQ0UoMHgwYmM3LCAweDAwMDUpIH0sCQkv
KiBOVklESUEgV2lyZWxlc3MgUmVtb3RlIFJlY2VpdmVyICovCisJeyBVU0JfREVWSUNFKDB4MGJj
NywgMHgwMDA2KSB9LAkJLyogQVRJIFdpcmVsZXNzIFJlbW90ZSBSZWNlaXZlciAqLworCXsgVVNC
X0RFVklDRSgweDBiYzcsIDB4MDAwNykgfSwJCS8qIFgxMCBVU0IgV2lyZWxlc3MgVHJhbnNjZWl2
ZXIgKi8KKwl7IFVTQl9ERVZJQ0UoMHgwYmM3LCAweDAwMDgpIH0sCQkvKiBYMTAgVVNCIFdpcmVs
ZXNzIFRyYW5zY2VpdmVyICovCisJeyBVU0JfREVWSUNFKDB4MGJjNywgMHgwMDA5KSB9LAkJLyog
WDEwIFVTQiBXaXJlbGVzcyBUcmFuc2NlaXZlciAqLworCXsgVVNCX0RFVklDRSgweDBiYzcsIDB4
MDAwQSkgfSwJCS8qIFgxMCBVU0IgV2lyZWxlc3MgVHJhbnNjZWl2ZXIgKi8KKwl7IFVTQl9ERVZJ
Q0UoMHgwYmM3LCAweDAwMEIpIH0sCQkvKiBYMTAgVVNCIFRyYW5zY2VpdmVyICovCisJeyBVU0Jf
REVWSUNFKDB4MGJjNywgMHgwMDBDKSB9LAkJLyogWDEwIFVTQiBUcmFuc2NlaXZlciAqLworCXsg
VVNCX0RFVklDRSgweDBiYzcsIDB4MDAwRCkgfSwJCS8qIFgxMCBVU0IgVHJhbnNjZWl2ZXIgKi8K
Kwl7IFVTQl9ERVZJQ0UoMHgwYmM3LCAweDAwMEUpIH0sCQkvKiBYMTAgVVNCIFRyYW5zY2VpdmVy
ICovCisJeyBVU0JfREVWSUNFKDB4MGJjNywgMHgwMDBGKSB9LAkJLyogWDEwIFVTQiBUcmFuc2Nl
aXZlciAqLworCisJeyB9CQkJCQkvKiBUZXJtaW5hdGluZyBlbnRyeSAqLworfTsKKworc3RhdGlj
IHN0cnVjdCB1c2JfZHJpdmVyIHVzYl9yZW1vdGVfZHJpdmVyID0geworCS5vd25lciA9CVRISVNf
TU9EVUxFLAorCS5uYW1lID0JCURSSVZFUl9OQU1FLAorCS5wcm9iZSA9CXVzYl9yZW1vdGVfcHJv
YmUsCisJLmRpc2Nvbm5lY3QgPQl1c2JfcmVtb3RlX2Rpc2Nvbm5lY3QsCisJLmlkX3RhYmxlID0J
dXNiX3JlbW90ZV9pZF90YWJsZQorfTsKKworc3RhdGljIGludCBfX2luaXQgdXNiX3JlbW90ZV9p
bml0KHZvaWQpCit7CisJaW50IGk7CisKKwlwcmludGsoIlxuIiBEUklWRVJfTkFNRSAiOiAiIERS
SVZFUl9ERVNDICIgdiIgRFJJVkVSX1ZFUlNJT04gIlxuIik7CisJcHJpbnRrKERSSVZFUl9OQU1F
ICI6ICIgRFJJVkVSX0FVVEhPUiAiXG4iKTsKKwlkcHJpbnRrKERSSVZFUl9OQU1FICI6IGRlYnVn
IG1vZGUgZW5hYmxlZFxuIik7CisKKwlyZXF1ZXN0X21vZHVsZSgibGlyY19kZXYiKTsKKworCWlm
ICgoaSA9IHVzYl9yZWdpc3RlcigmdXNiX3JlbW90ZV9kcml2ZXIpKSA8IDApIHsKKwkJcHJpbnRr
KERSSVZFUl9OQU1FICI6IHVzYiByZWdpc3RlciBmYWlsZWQsIHJlc3VsdCA9ICVkXG4iLCBpKTsK
KwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJcmV0dXJuIFNVQ0NFU1M7Cit9CisKK3N0YXRpYyB2
b2lkIF9fZXhpdCB1c2JfcmVtb3RlX2V4aXQodm9pZCkKK3sKKwl1c2JfZGVyZWdpc3RlcigmdXNi
X3JlbW90ZV9kcml2ZXIpOworfQorCittb2R1bGVfaW5pdCh1c2JfcmVtb3RlX2luaXQpOworbW9k
dWxlX2V4aXQodXNiX3JlbW90ZV9leGl0KTsKKworTU9EVUxFX0FVVEhPUiAoRFJJVkVSX0FVVEhP
Uik7CitNT0RVTEVfREVTQ1JJUFRJT04gKERSSVZFUl9ERVNDKTsKK01PRFVMRV9MSUNFTlNFICgi
R1BMIik7CitNT0RVTEVfREVWSUNFX1RBQkxFICh1c2IsIHVzYl9yZW1vdGVfaWRfdGFibGUpOwor
CitNT0RVTEVfUEFSTShkZWJ1ZywgImkiKTsKK01PRFVMRV9QQVJNX0RFU0MoZGVidWcsICJlbmFi
bGUgZHJpdmVyIGRlYnVnIG1vZGUiKTsKKworI2lmICFLRVJORUwyNgorRVhQT1JUX05PX1NZTUJP
TFM7CisjZW5kaWYKKwpkaWZmIC11ck4gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL2NoYXIvbGly
Yy9saXJjX2J0ODI5LmMgbGludXgtMi42LjUubmV3L2RyaXZlcnMvY2hhci9saXJjL2xpcmNfYnQ4
MjkuYwotLS0gbGludXgtMi42LjUub3JpZy9kcml2ZXJzL2NoYXIvbGlyYy9saXJjX2J0ODI5LmMJ
MTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41Lm5ldy9k
cml2ZXJzL2NoYXIvbGlyYy9saXJjX2J0ODI5LmMJMjAwNC0wNS0wNCAwMToyMzo1Ni4yMTE1Njcx
NjAgKzAxMDAKQEAgLTAsMCArMSwzNjggQEAKKy8qCisgKiBSZW1vdGUgY29udHJvbCBkcml2ZXIg
Zm9yIHRoZSBUVi1jYXJkIGJhc2VkIG9uIGJ0ODI5CisgKgorICogIGJ5IExlb25pZCBGcm9lbmNo
ZW5rbyA8bGZyb2VuQGdhbGlsZW8uY28uaWw+CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg
Qm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisqLworCisjaW5jbHVkZSA8bGludXgvdmVyc2lv
bi5oPgorI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o
PgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3RocmVhZHMuaD4K
KyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgorI2lu
Y2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8
bGludXgvaW5pdC5oPgorCisjaW5jbHVkZSAibGlyY19kZXYuaCIKKworaW50IHBvbGxfbWFpbih2
b2lkKTsKK2ludCBhdGlyX2luaXRfc3RhcnQodm9pZCk7CisKK3ZvaWQgd3JpdGVfaW5kZXgodW5z
aWduZWQgY2hhciBpbmRleCx1bnNpZ25lZCBpbnQgdmFsdWUpOwordW5zaWduZWQgaW50IHJlYWRf
aW5kZXgodW5zaWduZWQgY2hhciBpbmRleCk7CisKK3ZvaWQgZG9faTJjX3N0YXJ0KHZvaWQpOwor
dm9pZCBkb19pMmNfc3RvcCh2b2lkKTsKKwordm9pZCBzZWVtc193cl9ieXRlKHVuc2lnbmVkIGNo
YXIgYWwpOwordW5zaWduZWQgY2hhciBzZWVtc19yZF9ieXRlKHZvaWQpOworCit1bnNpZ25lZCBp
bnQgcmVhZF9pbmRleCh1bnNpZ25lZCBjaGFyIGFsKTsKK3ZvaWQgd3JpdGVfaW5kZXgodW5zaWdu
ZWQgY2hhciBhaCx1bnNpZ25lZCBpbnQgZWR4KTsKKwordm9pZCBjeWNsZV9kZWxheShpbnQgY3lj
bGUpOworCit2b2lkIGRvX3NldF9iaXRzKHVuc2lnbmVkIGNoYXIgYmwpOwordW5zaWduZWQgY2hh
ciBkb19nZXRfYml0cyh2b2lkKTsKKworI2RlZmluZSBEQVRBX1BDSV9PRkYgMHg3RkZDMDAKKyNk
ZWZpbmUgV0FJVF9DWUNMRSAgIDIwCisKKworaW50IGF0aXJfbWlub3I7Cit1bnNpZ25lZCBsb25n
IHBjaV9hZGRyX3BoeXMsIHBjaV9hZGRyX2xpbjsKKworc3RydWN0IGxpcmNfcGx1Z2luIGF0aXJf
cGx1Z2luOworCitpbnQgZG9fcGNpX3Byb2JlKHZvaWQpCit7CisJc3RydWN0IHBjaV9kZXYgKm15
X2RldjsKKwlteV9kZXYgPSAoc3RydWN0IHBjaV9kZXYgKilwY2lfZmluZF9kZXZpY2UoUENJX1ZF
TkRPUl9JRF9BVEksIFBDSV9ERVZJQ0VfSURfQVRJXzI2NFZULE5VTEwpOworCWlmICggbXlfZGV2
ICkgeworCQlwcmludGsoS0VSTl9FUlIgIkFUSVI6IFVzaW5nIGRldmljZTogJXNcbiIsbXlfZGV2
LT5zbG90X25hbWUpOworCQlwY2lfYWRkcl9waHlzID0gMDsKKwkJaWYgKCBteV9kZXYtPnJlc291
cmNlWzBdLmZsYWdzICYgSU9SRVNPVVJDRV9NRU0gKSB7CisJCQlwY2lfYWRkcl9waHlzID0gbXlf
ZGV2LT5yZXNvdXJjZVswXS5zdGFydDsKKwkJCXByaW50ayhLRVJOX0lORk8gIkFUSVIgbWVtb3J5
IGF0IDB4JTA4WCBcbiIsKHVuc2lnbmVkIGludClwY2lfYWRkcl9waHlzKTsKKwkJfQorCQlpZiAo
IHBjaV9hZGRyX3BoeXMgPT0gMCApIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiQVRJUiBubyBtZW1v
cnkgcmVzb3VyY2UgP1xuIik7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0gZWxzZSB7CisJCXByaW50
ayhLRVJOX0VSUiAiQVRJUjogcGNpX3Byb2IgZmFpbGVkXG4iKTsKKwkJcmV0dXJuIDA7CisJfQor
CXJldHVybiAxOworfQorCisKK2ludCBhdGlyX2FkZF90b19idWYgKHZvaWQqIGRhdGEsIHN0cnVj
dCBsaXJjX2J1ZmZlciogYnVmKQoreworCXVuc2lnbmVkIGNoYXIga2V5OworCWludCBzdGF0dXM7
CisJc3RhdHVzID0gcG9sbF9tYWluKCk7CisJa2V5ID0gKHN0YXR1cyA+PiA4KSAmIDB4RkY7CisJ
aWYoIHN0YXR1cyAmIDB4RkYgKQorCXsKKwkvLyAgICBwcmludGsoS0VSTl9JTkZPICJBVElSIHJl
YWRpbmcga2V5ICUwMlhcbiIsKmtleSk7CisJCWxpcmNfYnVmZmVyX3dyaXRlXzEoIGJ1ZiwgJmtl
eSApOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIC1FTk9EQVRBOworfQorCitpbnQgYXRpcl9z
ZXRfdXNlX2luYyh2b2lkKiBkYXRhKQoreworCXByaW50ayhLRVJOX0RFQlVHICJBVElSIGRyaXZl
ciBpcyBvcGVuZWRcbiIpOworCXJldHVybiAwOworfQorCit2b2lkIGF0aXJfc2V0X3VzZV9kZWMo
dm9pZCogZGF0YSkKK3sKKwlwcmludGsoS0VSTl9ERUJVRyAiQVRJUiBkcml2ZXIgaXMgY2xvc2Vk
XG4iKTsKK30KKworc3RhdGljIGludCBfX2luaXQgbGlyY19idDgyOV9pbml0KHZvaWQpCit7CisJ
aWYgKCAhZG9fcGNpX3Byb2JlKCkgKSB7CisJCXJldHVybiAxOworCX0KKworCWlmICggIWF0aXJf
aW5pdF9zdGFydCgpICkgeworCQlyZXR1cm4gMTsKKwl9CisKKwlzdHJjcHkoYXRpcl9wbHVnaW4u
bmFtZSwiQVRJUiIpOworCWF0aXJfcGx1Z2luLm1pbm9yICAgICAgID0gLTE7CisJYXRpcl9wbHVn
aW4uY29kZV9sZW5ndGggPSA4OworCWF0aXJfcGx1Z2luLnNhbXBsZV9yYXRlID0gMTA7CisJYXRp
cl9wbHVnaW4uZGF0YSAgICAgICAgPSAwOworCWF0aXJfcGx1Z2luLmFkZF90b19idWYgID0gYXRp
cl9hZGRfdG9fYnVmOworCWF0aXJfcGx1Z2luLnNldF91c2VfaW5jID0gYXRpcl9zZXRfdXNlX2lu
YzsKKwlhdGlyX3BsdWdpbi5zZXRfdXNlX2RlYyA9IGF0aXJfc2V0X3VzZV9kZWM7CisKKwlhdGly
X21pbm9yID0gbGlyY19yZWdpc3Rlcl9wbHVnaW4oJmF0aXJfcGx1Z2luKTsKKwlwcmludGsoS0VS
Tl9ERUJVRyAiQVRJUiBkcml2ZXIgaXMgcmVnaXN0ZXJlZCBvbiBtaW5vciAlZFxuIixhdGlyX21p
bm9yKTsKKworCXJldHVybiAwOworfQorCisKK3N0YXRpYyB2b2lkIF9fZXhpdCBsaXJjX2J0ODI5
X2V4aXQodm9pZCkKK3sKKwlsaXJjX3VucmVnaXN0ZXJfcGx1Z2luKGF0aXJfbWlub3IpOworfQor
CisKK2ludCBhdGlyX2luaXRfc3RhcnQodm9pZCkKK3sKKwlwY2lfYWRkcl9saW4gPSAodW5zaWdu
ZWQgbG9uZylpb3JlbWFwKHBjaV9hZGRyX3BoeXMgKyBEQVRBX1BDSV9PRkYsMHg0MDApOworCWlm
ICggcGNpX2FkZHJfbGluID09IDAgKSB7CisJCXByaW50ayhLRVJOX0lORk8gImF0aXI6IHBjaSBt
ZW0gbXVzdCBiZSBtYXBwZWRcbiIpOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIDE7Cit9CisK
K3ZvaWQgY3ljbGVfZGVsYXkoaW50IGN5Y2xlKQoreworCXVkZWxheShXQUlUX0NZQ0xFKmN5Y2xl
KTsKK30KKworCitpbnQgcG9sbF9tYWluKCkKK3sKKwl1bnNpZ25lZCBjaGFyIHN0YXR1c19oaWdo
LCBzdGF0dXNfbG93OworCisJZG9faTJjX3N0YXJ0KCk7CisKKwlzZWVtc193cl9ieXRlKDB4QUEp
OworCXNlZW1zX3dyX2J5dGUoMHgwMSk7CisKKwlkb19pMmNfc3RhcnQoKTsKKworCXNlZW1zX3dy
X2J5dGUoMHhBQik7CisKKwlzdGF0dXNfbG93ID0gc2VlbXNfcmRfYnl0ZSgpOworCXN0YXR1c19o
aWdoID0gc2VlbXNfcmRfYnl0ZSgpOworCisJZG9faTJjX3N0b3AoKTsKKworCXJldHVybiAoc3Rh
dHVzX2hpZ2ggPDwgOCkgfCBzdGF0dXNfbG93OworfQorCit2b2lkIGRvX2kyY19zdGFydCh2b2lk
KQoreworCWRvX3NldF9iaXRzKDMpOworCWN5Y2xlX2RlbGF5KDQpOworCisJZG9fc2V0X2JpdHMo
MSk7CisJY3ljbGVfZGVsYXkoNyk7CisKKwlkb19zZXRfYml0cygwKTsKKwljeWNsZV9kZWxheSgy
KTsKK30KKwordm9pZCBkb19pMmNfc3RvcCh2b2lkKQoreworCXVuc2lnbmVkIGNoYXIgYml0czsK
KwliaXRzID0gIGRvX2dldF9iaXRzKCkgJiAweEZEOworCWRvX3NldF9iaXRzKGJpdHMpOworCWN5
Y2xlX2RlbGF5KDEpOworCisJYml0cyB8PSAxOworCWRvX3NldF9iaXRzKGJpdHMpOworCWN5Y2xl
X2RlbGF5KDIpOworCisJYml0cyB8PSAyOworCWRvX3NldF9iaXRzKGJpdHMpOworCWJpdHMgPSAz
OworCWRvX3NldF9iaXRzKGJpdHMpOworCWN5Y2xlX2RlbGF5KDIpOworfQorCisKK3ZvaWQgc2Vl
bXNfd3JfYnl0ZSh1bnNpZ25lZCBjaGFyIHZhbHVlKQoreworCWludCBpOworCXVuc2lnbmVkIGNo
YXIgcmVnOworCisJcmVnID0gZG9fZ2V0X2JpdHMoKTsKKwlmb3IoaSA9IDA7aSA8IDg7aSsrKSB7
CisJCWlmICggdmFsdWUgJiAweDgwICkgeworCQkJcmVnIHw9IDB4MDI7CisJCX0gZWxzZSB7CisJ
CQlyZWcgJj0gMHhGRDsKKwkJfQorCQlkb19zZXRfYml0cyhyZWcpOworCQljeWNsZV9kZWxheSgx
KTsKKworCQlyZWcgfD0gMTsKKwkJZG9fc2V0X2JpdHMocmVnKTsKKwkJY3ljbGVfZGVsYXkoMSk7
CisKKwkJcmVnICY9IDB4RkU7CisJCWRvX3NldF9iaXRzKHJlZyk7CisJCWN5Y2xlX2RlbGF5KDEp
OworCQl2YWx1ZSA8PD0gMTsKKwl9CisJY3ljbGVfZGVsYXkoMik7CisKKwlyZWcgfD0gMjsKKwlk
b19zZXRfYml0cyhyZWcpOworCisJcmVnIHw9IDE7CisJZG9fc2V0X2JpdHMocmVnKTsKKworCWN5
Y2xlX2RlbGF5KDEpOworCWRvX2dldF9iaXRzKCk7CisKKwlyZWcgJj0gMHhGRTsKKwlkb19zZXRf
Yml0cyhyZWcpOworCWN5Y2xlX2RlbGF5KDMpOworfQorCit1bnNpZ25lZCBjaGFyIHNlZW1zX3Jk
X2J5dGUodm9pZCkKK3sKKwlpbnQgaTsKKwlpbnQgcmRfYnl0ZTsKKwl1bnNpZ25lZCBjaGFyIGJp
dHNfMiwgYml0c18xOworCisJYml0c18xID0gZG9fZ2V0X2JpdHMoKSB8IDI7CisJZG9fc2V0X2Jp
dHMoYml0c18xKTsKKworCXJkX2J5dGUgPSAwOworCWZvcihpID0gMDtpIDwgODtpKyspIHsKKwkJ
Yml0c18xICY9IDB4RkU7CisJCWRvX3NldF9iaXRzKGJpdHNfMSk7CisJCWN5Y2xlX2RlbGF5KDIp
OworCisJCWJpdHNfMSB8PSAxOworCQlkb19zZXRfYml0cyhiaXRzXzEpOworCQljeWNsZV9kZWxh
eSgxKTsKKworCQlpZiAoIChiaXRzXzIgPSBkb19nZXRfYml0cygpKSAmIDIgKSB7CisJCQlyZF9i
eXRlIHw9IDE7CisJCX0KKwkJcmRfYnl0ZSA8PD0gMTsKKwl9CisKKwliaXRzXzEgPSAwOworCWlm
ICggYml0c18yID09IDAgKSB7CisJCWJpdHNfMSB8PSAyOworCX0KKwlkb19zZXRfYml0cyhiaXRz
XzEpOworCWN5Y2xlX2RlbGF5KDIpOworCisJYml0c18xIHw9IDE7CisJZG9fc2V0X2JpdHMoYml0
c18xKTsKKwljeWNsZV9kZWxheSgzKTsKKworCWJpdHNfMSAmPSAweEZFOworCWRvX3NldF9iaXRz
KGJpdHNfMSk7CisJY3ljbGVfZGVsYXkoMik7CisKKwlyZF9ieXRlID4+PSAxOworCXJkX2J5dGUg
Jj0gMHhGRjsKKwlyZXR1cm4gcmRfYnl0ZTsKK30KKwordm9pZCBkb19zZXRfYml0cyh1bnNpZ25l
ZCBjaGFyIG5ld19iaXRzKQoreworCWludCByZWdfdmFsOworCXJlZ192YWwgPSByZWFkX2luZGV4
KDB4MzQpOworCWlmICggbmV3X2JpdHMgJiAyICkgeworCQlyZWdfdmFsICY9IDB4RkZGRkZGREY7
CisJCXJlZ192YWwgfD0gMTsKKwl9IGVsc2UgeworCQlyZWdfdmFsICY9IDB4RkZGRkZGRkU7CisJ
CXJlZ192YWwgfD0gMHgyMDsKKwl9CisJcmVnX3ZhbCB8PSAweDEwOworCXdyaXRlX2luZGV4KDB4
MzQscmVnX3ZhbCk7CisKKwlyZWdfdmFsID0gcmVhZF9pbmRleCgweDMxKTsKKwlpZiAoIG5ld19i
aXRzICYgMSApIHsKKwkJcmVnX3ZhbCB8PSAweDEwMDAwMDA7CisJfSBlbHNlIHsKKwkJcmVnX3Zh
bCAmPSAweEZFRkZGRkZGOworCX0KKwlyZWdfdmFsIHw9IDB4ODAwMDAwMDsKKwl3cml0ZV9pbmRl
eCgweDMxLHJlZ192YWwpOworfQorCit1bnNpZ25lZCBjaGFyIGRvX2dldF9iaXRzKHZvaWQpCit7
CisJdW5zaWduZWQgY2hhciBiaXRzOworCWludCByZWdfdmFsOworCisJcmVnX3ZhbCA9IHJlYWRf
aW5kZXgoMHgzNCk7CisJcmVnX3ZhbCB8PSAweDEwOworCXJlZ192YWwgJj0gMHhGRkZGRkZERjsK
Kwl3cml0ZV9pbmRleCgweDM0LHJlZ192YWwpOworCisJcmVnX3ZhbCA9IHJlYWRfaW5kZXgoMHgz
NCk7CisJYml0cyA9IDA7CisJaWYgKCByZWdfdmFsICYgOCApIHsKKwkJYml0cyB8PSAyOworCX0g
ZWxzZSB7CisJCWJpdHMgJj0gMHhGRDsKKwl9CisJcmVnX3ZhbCA9IHJlYWRfaW5kZXgoMHgzMSk7
CisJaWYgKCByZWdfdmFsICYgMHgxMDAwMDAwICkgeworCQliaXRzIHw9IDE7CisJfSBlbHNlIHsK
KwkJYml0cyAmPSAweEZFOworCX0KKwlyZXR1cm4gYml0czsKK30KKwordW5zaWduZWQgaW50IHJl
YWRfaW5kZXgodW5zaWduZWQgY2hhciBpbmRleCkKK3sKKwl1bnNpZ25lZCBpbnQgYWRkciwgdmFs
dWU7CisJLy8gIGFkZHIgPSBwY2lfYWRkcl9saW4gKyBEQVRBX1BDSV9PRkYgKyAoKGluZGV4ICYg
MHhGRikgPDwgMik7CisJYWRkciA9IHBjaV9hZGRyX2xpbiArICgoaW5kZXggJiAweEZGKSA8PCAy
KTsKKwl2YWx1ZSA9IHJlYWRsKGFkZHIpOworCXJldHVybiB2YWx1ZTsKK30KKwordm9pZCB3cml0
ZV9pbmRleCh1bnNpZ25lZCBjaGFyIGluZGV4LHVuc2lnbmVkIGludCByZWdfdmFsKQoreworCXVu
c2lnbmVkIGludCBhZGRyOworCWFkZHIgPSBwY2lfYWRkcl9saW4gKyAoKGluZGV4ICYgMHhGRikg
PDwgMik7CisJd3JpdGVsKHJlZ192YWwsYWRkcik7Cit9CisKK01PRFVMRV9BVVRIT1IoIkZyb2Vu
Y2hlbmtvIExlb25pZCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJJUiByZW1vdGUgZHJpdmVyIGZv
ciBidDgyOSBiYXNlZCBUViBjYXJkcyIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworCittb2R1
bGVfaW5pdChsaXJjX2J0ODI5X2luaXQpOworbW9kdWxlX2V4aXQobGlyY19idDgyOV9leGl0KTsK
ZGlmZiAtdXJOIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy9jaGFyL2xpcmMvbGlyY19kZXYuYyBs
aW51eC0yLjYuNS5uZXcvZHJpdmVycy9jaGFyL2xpcmMvbGlyY19kZXYuYwotLS0gbGludXgtMi42
LjUub3JpZy9kcml2ZXJzL2NoYXIvbGlyYy9saXJjX2Rldi5jCTE5NzAtMDEtMDEgMDE6MDA6MDAu
MDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuNS5uZXcvZHJpdmVycy9jaGFyL2xpcmMvbGly
Y19kZXYuYwkyMDA0LTA1LTA0IDAxOjIzOjU2LjIxODU2NjA5NiArMDEwMApAQCAtMCwwICsxLDcy
NyBAQAorLyoKKyAqIExJUkMgYmFzZSBkcml2ZXIKKyAqCisgKiAoTCkgYnkgQXJ0dXIgTGlwb3dz
a2kgPGFsaXBvd3NraUBpbnRlcmlhLnBsPgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJv
c3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICoKKyAqICRJZDogbGlyY19kZXYuYyx2IDEuMjcg
MjAwNC8wMS8xMyAxMzo1OTo0OCBsaXJjIEV4cCAkCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51
eC92ZXJzaW9uLmg+CisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51
eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9z
Y2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+CisjaW5jbHVkZSA8bGludXgvZnMuaD4K
KyNpbmNsdWRlIDxsaW51eC9wb2xsLmg+CisjaW5jbHVkZSA8bGludXgvc21wX2xvY2suaD4KKyNp
bmNsdWRlIDxhc20vdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGFzbS9zZW1hcGhvcmUuaD4KKyNpbmNs
dWRlIDxhc20vZXJybm8uaD4KKyNkZWZpbmUgX19LRVJORUxfU1lTQ0FMTFNfXworI2luY2x1ZGUg
PGxpbnV4L3VuaXN0ZC5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51
eC9kZXZmc19mc19rZXJuZWwuaD4KKworI2luY2x1ZGUgPGxpbnV4L2xpcmMuaD4KKworI2luY2x1
ZGUgImxpcmNfZGV2LmgiCisKK3N0YXRpYyBpbnQgZGVidWcgPSAwOworCitNT0RVTEVfUEFSTShk
ZWJ1ZywiaSIpOworCisjZGVmaW5lIElSQ1RMX0RFVl9OQU1FICAgICJCYXNlUmVtb3RlQ3RsIgor
I2RlZmluZSBTVUNDRVNTICAgICAgICAgICAwCisjZGVmaW5lIE5PUExVRyAgICAgICAgICAgIC0x
CisjZGVmaW5lIGRwcmludGsgICAgICAgICAgIGlmIChkZWJ1ZykgcHJpbnRrCisKKyNkZWZpbmUg
TE9HSEVBRCAgICAgICAgICAgImxpcmNfZGV2ICglc1slZF0pOiAiCisKK3N0cnVjdCBpcmN0bAor
eworCXN0cnVjdCBsaXJjX3BsdWdpbiBwOworCWludCBvcGVuOworCisJc3RydWN0IGxpcmNfYnVm
ZmVyICpidWY7CisKKwlpbnQgdF9waWQ7CisKKwlzdHJ1Y3Qgc2VtYXBob3JlICp0X25vdGlmeTsK
KwlzdHJ1Y3Qgc2VtYXBob3JlICp0X25vdGlmeTI7CisJaW50IHNodXRkb3duOworCWxvbmcgamlm
Zmllc190b193YWl0OworfTsKKworREVDTEFSRV9NVVRFWChwbHVnaW5fbG9jayk7CisKK3N0YXRp
YyBzdHJ1Y3QgaXJjdGwgaXJjdGxzW0NPTkZJR19MSVJDX01BWF9ERVZdOworc3RhdGljIHN0cnVj
dCBmaWxlX29wZXJhdGlvbnMgZm9wczsKKworCisvKiAgaGVscGVyIGZ1bmN0aW9uCisgKiAgaW5p
dGlhbGl6ZXMgdGhlIGlyY3RsIHN0cnVjdHVyZQorICovCitzdGF0aWMgaW5saW5lIHZvaWQgaW5p
dF9pcmN0bChzdHJ1Y3QgaXJjdGwgKmlyKQoreworCW1lbXNldCgmaXItPnAsIDAsIHNpemVvZihz
dHJ1Y3QgbGlyY19wbHVnaW4pKTsKKwlpci0+cC5taW5vciA9IE5PUExVRzsKKworCWlyLT50X3Bp
ZCA9IC0xOworCWlyLT50X25vdGlmeSA9IE5VTEw7CisJaXItPnRfbm90aWZ5MiA9IE5VTEw7CisJ
aXItPnNodXRkb3duID0gMDsKKworCWlyLT5qaWZmaWVzX3RvX3dhaXQgPSAwOworCisJaXItPm9w
ZW4gPSAwOworfQorCisKKy8qICBoZWxwZXIgZnVuY3Rpb24KKyAqICByZWFkcyBrZXkgY29kZXMg
ZnJvbSBwbHVnaW4gYW5kIHB1dHMgdGhlbSBpbnRvIGJ1ZmZlcgorICogIGJ1ZmZlciBmcmVlIHNw
YWNlIGlzIGNoZWNrZWQgYW5kIGxvY2tpbmcgcGVyZm9ybWVkCisgKiAgcmV0dXJucyAwIG9uIHN1
Y2Nlc3MKKyAqLworCitpbmxpbmUgc3RhdGljIGludCBhZGRfdG9fYnVmKHN0cnVjdCBpcmN0bCAq
aXIpCit7CisJaWYgKGxpcmNfYnVmZmVyX2Z1bGwoaXItPmJ1ZikpIHsKKwkJZHByaW50ayhMT0dI
RUFEICJidWZmZXIgb3ZlcmZsb3dcbiIsCisJCQlpci0+cC5uYW1lLCBpci0+cC5taW5vcik7CisJ
CXJldHVybiAtRU9WRVJGTE9XOworCX0KKworICAgIGlmKGlyLT5wLmFkZF90b19idWYpIHsKKyAg
ICAgICAgaW50IHJlcyA9IC1FTk9EQVRBOworICAgICAgICBpbnQgZ290X2RhdGEgPSAwOworICAg
ICAgICAKKyAgICAgICAgLyogU2VydmljZSB0aGUgZGV2aWNlIGFzIGxvbmcgYXMgaXQgaXMgcmV0
dXJuaW5nCisgICAgICAgICAqIGRhdGEgYW5kIHdlIGhhdmUgc3BhY2UKKyAgICAgICAgICovCisg
ICAgICAgIHdoaWxlKCAhbGlyY19idWZmZXJfZnVsbChpci0+YnVmKSApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJlcyA9IGlyLT5wLmFkZF90b19idWYoIGlyLT5wLmRhdGEsIGlyLT5idWYgKTsK
KyAgICAgICAgICAgIGlmKCByZXMgPT0gU1VDQ0VTUyApCisgICAgICAgICAgICAgICAgZ290X2Rh
dGErKzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGlmKCByZXMgPT0gLUVOT0RFViApCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlyLT5zaHV0ZG93biA9IDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChnb3RfZGF0YSA/
IFNVQ0NFU1MgOiByZXMpOworICAgIH0KKworCXJldHVybiBTVUNDRVNTOworfQorCisvKiBtYWlu
IGZ1bmN0aW9uIG9mIHRoZSBwb2xsaW5nIHRocmVhZAorICovCitzdGF0aWMgaW50IGxpcmNfdGhy
ZWFkKHZvaWQgKmlyY3RsKQoreworCXN0cnVjdCBpcmN0bCAqaXIgPSBpcmN0bDsKKworCWRhZW1v
bml6ZSgibGlyY19kZXYiKTsKKworCWlmIChpci0+dF9ub3RpZnkgIT0gTlVMTCkgeworCQl1cChp
ci0+dF9ub3RpZnkpOworCX0KKworCWRwcmludGsoTE9HSEVBRCAicG9sbCB0aHJlYWQgc3RhcnRl
ZFxuIiwgaXItPnAubmFtZSwgaXItPnAubWlub3IpOworCisJZG8geworCQlpZiAoaXItPm9wZW4p
IHsKKwkJCWlmIChpci0+amlmZmllc190b193YWl0KSB7CisJCQkJY3VycmVudC0+c3RhdGUgPSBU
QVNLX0lOVEVSUlVQVElCTEU7CisJCQkJc2NoZWR1bGVfdGltZW91dChpci0+amlmZmllc190b193
YWl0KTsKKwkJCX0gZWxzZSB7CisJCQkJaW50ZXJydXB0aWJsZV9zbGVlcF9vbihpci0+cC5nZXRf
cXVldWUoaXItPnAuZGF0YSkpOworCQkJfQorCQkJaWYgKGlyLT5zaHV0ZG93biB8fCAhaXItPm9w
ZW4pIHsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlmICghYWRkX3RvX2J1ZihpcikpIHsKKwkJCQl3
YWtlX3VwX2ludGVycnVwdGlibGUoJmlyLT5idWYtPndhaXRfcG9sbCk7CisJCQl9CisJCX0gZWxz
ZSB7CisJCQkvKiBpZiBkZXZpY2Ugbm90IG9wZW5lZCBzbyB3ZSBjYW4gc2xlZXAgaGFsZiBhIHNl
Y29uZCAqLworCQkJY3VycmVudC0+c3RhdGUgPSBUQVNLX0lOVEVSUlVQVElCTEU7CisJCQlzY2hl
ZHVsZV90aW1lb3V0KEhaLzIpOworCQl9CisJfSB3aGlsZSAoIWlyLT5zaHV0ZG93bik7CisKKwlk
cHJpbnRrKExPR0hFQUQgInBvbGwgdGhyZWFkIGVuZGVkXG4iLCBpci0+cC5uYW1lLCBpci0+cC5t
aW5vcik7CisKKwlpZiAoaXItPnRfbm90aWZ5MiAhPSBOVUxMKSB7CisJCWRvd24oaXItPnRfbm90
aWZ5Mik7CisJfQorCisJaXItPnRfcGlkID0gLTE7CisKKwlpZiAoaXItPnRfbm90aWZ5ICE9IE5V
TEwpIHsKKwkJdXAoaXItPnRfbm90aWZ5KTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAq
CisgKi8KK2ludCBsaXJjX3JlZ2lzdGVyX3BsdWdpbihzdHJ1Y3QgbGlyY19wbHVnaW4gKnApCit7
CisJc3RydWN0IGlyY3RsICppcjsKKwlpbnQgbWlub3I7CisJaW50IGJ5dGVzX2luX2tleTsKKwlE
RUNMQVJFX01VVEVYX0xPQ0tFRCh0bik7CisKKwlpZiAoIXApIHsKKwkJcHJpbnRrKCJsaXJjX2Rl
djogbGlyY19yZWdpc3Rlcl9wbHVnaW46IgorCQkgICAgICAgInBsdWdpbiBwb2ludGVyIG11c3Qg
YmUgbm90IE5VTEwhXG4iKTsKKwkJcmV0dXJuIC1FQkFEUlFDOworCX0KKworCWlmIChDT05GSUdf
TElSQ19NQVhfREVWIDw9IHAtPm1pbm9yKSB7CisJCXByaW50aygibGlyY19kZXY6IGxpcmNfcmVn
aXN0ZXJfcGx1Z2luOiIKKwkJICAgICAgICJcIiBtaW5vclwiIG11c3QgYmUgYmVldHdlZW4gMCBh
bmQgJWQgKCVkKSFcbiIsCisJCSAgICAgICBDT05GSUdfTElSQ19NQVhfREVWLTEsIHAtPm1pbm9y
KTsKKwkJcmV0dXJuIC1FQkFEUlFDOworCX0KKworCWlmICgxID4gcC0+Y29kZV9sZW5ndGggfHwg
KEJVRkxFTio4KSA8IHAtPmNvZGVfbGVuZ3RoKSB7CisJCXByaW50aygibGlyY19kZXY6IGxpcmNf
cmVnaXN0ZXJfcGx1Z2luOiIKKwkJICAgICAgICJjb2RlIGxlbmd0aCBpbiBiaXRzIGZvciBtaW5v
ciAoJWQpICIKKwkJICAgICAgICJtdXN0IGJlIGxlc3MgdGhhbiAlZCFcbiIsCisJCSAgICAgICBw
LT5taW5vciwgQlVGTEVOKjgpOworCQlyZXR1cm4gLUVCQURSUUM7CisJfQorCisJcHJpbnRrKCJs
aXJjX2RldjogbGlyY19yZWdpc3Rlcl9wbHVnaW46IgorCSAgICAgICAic2FtcGxlX3JhdGU6ICVk
XG4iLHAtPnNhbXBsZV9yYXRlKTsKKwlpZiAocC0+c2FtcGxlX3JhdGUpIHsKKwkJaWYgKDIgPiBw
LT5zYW1wbGVfcmF0ZSB8fCAxMDAgPCBwLT5zYW1wbGVfcmF0ZSkgeworCQkJcHJpbnRrKCJsaXJj
X2RldjogbGlyY19yZWdpc3Rlcl9wbHVnaW46IgorCQkJICAgICAgICJzYW1wbGVfcmF0ZSBtdXN0
IGJlIGJlZXR3ZWVuIDIgYW5kIDEwMCFcbiIpOworCQkJcmV0dXJuIC1FQkFEUlFDOworCQl9Cisg
ICAgICAgIGlmICghcC0+YWRkX3RvX2J1ZikgeworICAgICAgICAgICAgcHJpbnRrKCJsaXJjX2Rl
djogbGlyY19yZWdpc3Rlcl9wbHVnaW46IgorICAgICAgICAgICAgICAgICAgICJhZGRfdG9fYnVm
IGNhbm5vdCBiZSBOVUxMIHdoZW4gc2FtcGxlX3JhdGUgaXMgc2V0XG4iKTsKKyAgICAgICAgICAg
IHJldHVybiAtRUJBRFJRQzsKKyAgICAgICAgfQorCX0gZWxzZSBpZiAoIShwLT5mb3BzICYmIHAt
PmZvcHMtPnJlYWQpCisJCQkmJiAhcC0+Z2V0X3F1ZXVlICYmICFwLT5yYnVmKSB7CisJCXByaW50
aygibGlyY19kZXY6IGxpcmNfcmVnaXN0ZXJfcGx1Z2luOiIKKwkJICAgICAgICJmb3BzLT5yZWFk
LCBnZXRfcXVldWUgYW5kIHJidWYgY2Fubm90IGFsbCBiZSBOVUxMIVxuIik7CisJCXJldHVybiAt
RUJBRFJRQzsKKwl9IGVsc2UgaWYgKCFwLT5nZXRfcXVldWUgJiYgIXAtPnJidWYpIHsKKwkJaWYg
KCEocC0+Zm9wcyAmJiBwLT5mb3BzLT5yZWFkICYmIHAtPmZvcHMtPnBvbGwpCisJCQkJfHwgKCFw
LT5mb3BzLT5pb2N0bCAmJiAhcC0+aW9jdGwpKSB7CisJCQlwcmludGsoImxpcmNfZGV2OiBsaXJj
X3JlZ2lzdGVyX3BsdWdpbjoiCisJCQkgICAgICAgIm5laXRoZXIgcmVhZCwgcG9sbCBub3IgaW9j
dGwgY2FuIGJlIE5VTEwhXG4iKTsKKwkJCXJldHVybiAtRUJBRFJRQzsKKwkJfQorCX0KKworCWRv
d25faW50ZXJydXB0aWJsZSgmcGx1Z2luX2xvY2spOworCisJbWlub3IgPSBwLT5taW5vcjsKKwor
CWlmICgwID4gbWlub3IpIHsKKwkJLyogZmluZCBmaXJzdCBmcmVlIHNsb3QgZm9yIHBsdWdpbiAq
LworCQlmb3IgKG1pbm9yPTA7IG1pbm9yPENPTkZJR19MSVJDX01BWF9ERVY7IG1pbm9yKyspCisJ
CQlpZiAoaXJjdGxzW21pbm9yXS5wLm1pbm9yID09IE5PUExVRykKKwkJCQlicmVhazsKKwkJaWYg
KENPTkZJR19MSVJDX01BWF9ERVYgPT0gbWlub3IpIHsKKwkJCXByaW50aygibGlyY19kZXY6IGxp
cmNfcmVnaXN0ZXJfcGx1Z2luOiAiCisJCQkgICAgICAgIm5vIGZyZWUgc2xvdHMgZm9yIHBsdWdp
bnMhXG4iKTsKKwkJCXVwKCZwbHVnaW5fbG9jayk7CisJCQlyZXR1cm4gLUVOT01FTTsKKwkJfQor
CX0gZWxzZSBpZiAoaXJjdGxzW21pbm9yXS5wLm1pbm9yICE9IE5PUExVRykgeworCQlwcmludGso
ImxpcmNfZGV2OiBsaXJjX3JlZ2lzdGVyX3BsdWdpbjoiCisJCSAgICAgICAibWlub3IgKCVkKSBq
dXN0IHJlZ2lzdGVyZCFcbiIsIG1pbm9yKTsKKwkJdXAoJnBsdWdpbl9sb2NrKTsKKwkJcmV0dXJu
IC1FQlVTWTsKKwl9CisKKwlpciA9ICZpcmN0bHNbbWlub3JdOworCisJaWYgKHAtPnNhbXBsZV9y
YXRlKSB7CisJCWlyLT5qaWZmaWVzX3RvX3dhaXQgPSBIWiAvIHAtPnNhbXBsZV9yYXRlOworCX0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgLyogaXQgbWVhbnMgLSB3YWl0IGZvciBleHRlcm5lYWwg
ZXZlbnQgaW4gdGFzayBxdWV1ZSAqLworCQlpci0+amlmZmllc190b193YWl0ID0gMDsKKwl9CisK
KwkvKiBzb21lIHNhZmV0eSBjaGVjayA4LSkgKi8KKwlwLT5uYW1lW3NpemVvZihwLT5uYW1lKS0x
XSA9ICdcMCc7CisKKwlieXRlc19pbl9rZXkgPSBwLT5jb2RlX2xlbmd0aC84ICsgKHAtPmNvZGVf
bGVuZ3RoJTggPyAxIDogMCk7CisKKwlpZiAocC0+cmJ1ZikgeworCQlpci0+YnVmID0gcC0+cmJ1
ZjsKKwl9IGVsc2UgeworCQlpci0+YnVmID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGxpcmNfYnVm
ZmVyKSwgR0ZQX0tFUk5FTCk7CisJCWxpcmNfYnVmZmVyX2luaXQoaXItPmJ1ZiwgYnl0ZXNfaW5f
a2V5LCBCVUZMRU4vYnl0ZXNfaW5fa2V5KTsKKwl9CisKKwlpZiAocC0+ZmVhdHVyZXM9PTApCisJ
CXAtPmZlYXR1cmVzID0gKHAtPmNvZGVfbGVuZ3RoID4gOCkgPworCQkJTElSQ19DQU5fUkVDX0xJ
UkNDT0RFIDogTElSQ19DQU5fUkVDX0NPREU7CisKKwlpci0+cCA9ICpwOworCWlyLT5wLm1pbm9y
ID0gbWlub3I7CisKKyNpZmRlZiBDT05GSUdfREVWRlNfRlMKKwlkZXZmc19ta19jZGV2KE1LREVW
KElSQ1RMX0RFVl9NQUpPUiwgaXItPnAubWlub3IpLCBTX0lGQ0hSIHwgU19JUlVTUiB8IFNfSVdV
U1IsICJsaXJjL2xpcmMlZCIsIGlyLT5wLm1pbm9yKTsKKyNlbmRpZgorCisJaWYocC0+c2FtcGxl
X3JhdGUgfHwgcC0+Z2V0X3F1ZXVlKSB7CisJCS8qIHRyeSB0byBmaXJlIHVwIHBvbGxpbmcgdGhy
ZWFkICovCisJCWlyLT50X25vdGlmeSA9ICZ0bjsKKwkJaXItPnRfcGlkID0ga2VybmVsX3RocmVh
ZChsaXJjX3RocmVhZCwgKHZvaWQqKWlyLCAwKTsKKwkJaWYgKGlyLT50X3BpZCA8IDApIHsKKwkJ
CXVwKCZwbHVnaW5fbG9jayk7CisJCQlwcmludGsoImxpcmNfZGV2OiBsaXJjX3JlZ2lzdGVyX3Bs
dWdpbjoiCisJCQkgICAgICAgImNhbm5vdCBydW4gcG9sbCB0aHJlYWQgZm9yIG1pbm9yID0gJWRc
biIsCisJCQkgICAgICAgcC0+bWlub3IpOworCQkJcmV0dXJuIC1FQ0hJTEQ7CisJCX0KKwkJZG93
bigmdG4pOworCQlpci0+dF9ub3RpZnkgPSBOVUxMOworCX0KKwl1cCgmcGx1Z2luX2xvY2spOwor
CisJdHJ5X21vZHVsZV9nZXQoVEhJU19NT0RVTEUpOworCisJZHByaW50aygibGlyY19kZXY6IHBs
dWdpbiAlcyByZWdpc3RlcmVkIGF0IG1pbm9yIG51bWJlciA9ICVkXG4iLAorCQlpci0+cC5uYW1l
LCBpci0+cC5taW5vcik7CisKKwlyZXR1cm4gbWlub3I7Cit9CisKKy8qCisgKgorICovCitpbnQg
bGlyY191bnJlZ2lzdGVyX3BsdWdpbihpbnQgbWlub3IpCit7CisJc3RydWN0IGlyY3RsICppcjsK
KwlERUNMQVJFX01VVEVYX0xPQ0tFRCh0bik7CisJREVDTEFSRV9NVVRFWF9MT0NLRUQodG4yKTsK
KworCWlmIChtaW5vciA8IDAgfHwgbWlub3IgPj0gQ09ORklHX0xJUkNfTUFYX0RFVikgeworCQlw
cmludGsoImxpcmNfZGV2OiBsaXJjX3VucmVnaXN0ZXJfcGx1Z2luOiIKKwkJICAgICAgICJcIiBt
aW5vclwiIG11c3QgYmUgYmVldHdlZW4gMCBhbmQgJWQhXG4iLAorCQkgICAgICAgQ09ORklHX0xJ
UkNfTUFYX0RFVi0xKTsKKwkJcmV0dXJuIC1FQkFEUlFDOworCX0KKworCWlyID0gJmlyY3Rsc1tt
aW5vcl07CisKKwlkb3duX2ludGVycnVwdGlibGUoJnBsdWdpbl9sb2NrKTsKKworCWlmIChpci0+
cC5taW5vciAhPSBtaW5vcikgeworCQlwcmludGsoImxpcmNfZGV2OiBsaXJjX3VucmVnaXN0ZXJf
cGx1Z2luOiIKKwkJICAgICAgICJtaW5vciAoJWQpIGRldmljZSBub3QgcmVnaXN0ZXJlZCEiLCBt
aW5vcik7CisJCXVwKCZwbHVnaW5fbG9jayk7CisJCXJldHVybiAtRU5PRU5UOworCX0KKworCWlm
IChpci0+b3BlbikgeworCQlwcmludGsoImxpcmNfZGV2OiBsaXJjX3VucmVnaXN0ZXJfcGx1Z2lu
OiIKKwkJICAgICAgICJwbHVnaW4gJXNbJWRdIGluIHVzZSEiLCBpci0+cC5uYW1lLCBpci0+cC5t
aW5vcik7CisJCXVwKCZwbHVnaW5fbG9jayk7CisJCXJldHVybiAtRUJVU1k7CisJfQorCisJLyog
ZW5kIHVwIHBvbGxpbmcgdGhyZWFkICovCisJaWYgKGlyLT50X3BpZCA+PSAwKSB7CisJCWlyLT50
X25vdGlmeSA9ICZ0bjsKKwkJaXItPnRfbm90aWZ5MiA9ICZ0bjI7CisJCWlyLT5zaHV0ZG93biA9
IDE7CisJCXsKKwkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqcDsKKworCQkJcCA9IGZpbmRfdGFza19i
eV9waWQoaXItPnRfcGlkKTsKKwkJCXdha2VfdXBfcHJvY2VzcyhwKTsKKwkJfQorCQl1cCgmdG4y
KTsKKwkJZG93bigmdG4pOworCQlpci0+dF9ub3RpZnkgPSBOVUxMOworCQlpci0+dF9ub3RpZnky
ID0gTlVMTDsKKwl9CisKKwlkcHJpbnRrKCJsaXJjX2RldjogcGx1Z2luICVzIHVucmVnaXN0ZXJl
ZCBmcm9tIG1pbm9yIG51bWJlciA9ICVkXG4iLAorCQlpci0+cC5uYW1lLCBpci0+cC5taW5vcik7
CisKKyNpZmRlZiBDT05GSUdfREVWRlNfRlMKKwlkZXZmc19yZW1vdmUoImxpcmMvbGlyYyVkIiwg
aXItPnAubWlub3IpOworI2VuZGlmCisKKwlpZiAoaXItPmJ1ZiAhPSBpci0+cC5yYnVmKXsKKwkJ
bGlyY19idWZmZXJfZnJlZShpci0+YnVmKTsKKwkJa2ZyZWUoaXItPmJ1Zik7CisJfQorCWlyLT5i
dWYgPSBOVUxMOworCWluaXRfaXJjdGwoaXIpOworCXVwKCZwbHVnaW5fbG9jayk7CisKKwltb2R1
bGVfcHV0KFRISVNfTU9EVUxFKTsKKworCXJldHVybiBTVUNDRVNTOworfQorCisvKgorICoKKyAq
Lworc3RhdGljIGludCBpcmN0bF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxl
ICpmaWxlKQoreworCXN0cnVjdCBpcmN0bCAqaXI7CisJaW50IHJldHZhbDsKKworCWlmIChNSU5P
Uihpbm9kZS0+aV9yZGV2KSA+PSBDT05GSUdfTElSQ19NQVhfREVWKSB7CisJCWRwcmludGsoImxp
cmNfZGV2IFslZF06IG9wZW4gcmVzdWx0ID0gLUVOT0RFVlxuIiwKKwkJCU1JTk9SKGlub2RlLT5p
X3JkZXYpKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJaXIgPSAmaXJjdGxzW01JTk9SKGlu
b2RlLT5pX3JkZXYpXTsKKworCWRwcmludGsoTE9HSEVBRCAib3BlbiBjYWxsZWRcbiIsIGlyLT5w
Lm5hbWUsIGlyLT5wLm1pbm9yKTsKKworCS8qIGlmIHRoZSBwbHVnaW4gaGFzIGFuIG9wZW4gZnVu
Y3Rpb24gdXNlIGl0IGluc3RlYWQgKi8KKwlpZihpci0+cC5mb3BzICYmIGlyLT5wLmZvcHMtPm9w
ZW4pCisJCXJldHVybiBpci0+cC5mb3BzLT5vcGVuKGlub2RlLCBmaWxlKTsKKworCWRvd25faW50
ZXJydXB0aWJsZSgmcGx1Z2luX2xvY2spOworCisJaWYgKGlyLT5wLm1pbm9yID09IE5PUExVRykg
eworCQl1cCgmcGx1Z2luX2xvY2spOworCQlkcHJpbnRrKExPR0hFQUQgIm9wZW4gcmVzdWx0ID0g
LUVOT0RFVlxuIiwKKwkJCWlyLT5wLm5hbWUsIGlyLT5wLm1pbm9yKTsKKwkJcmV0dXJuIC1FTk9E
RVY7CisJfQorCisJaWYgKGlyLT5vcGVuKSB7CisJCXVwKCZwbHVnaW5fbG9jayk7CisJCWRwcmlu
dGsoTE9HSEVBRCAib3BlbiByZXN1bHQgPSAtRUJVU1lcbiIsCisJCQlpci0+cC5uYW1lLCBpci0+
cC5taW5vcik7CisJCXJldHVybiAtRUJVU1k7CisJfQorCisJLyogdGhlcmUgaXMgbm8gbmVlZCBm
b3IgbG9ja2luZyBoZXJlIGJlY2F1c2UgaXItPm9wZW4gaXMgMAorICAgICAgICAgKiBhbmQgbGly
Y190aHJlYWQgaXNuJ3QgdXNpbmcgYnVmZmVyCisJICogcGx1Z2lucyB3aGljaCB1c2UgaXJxJ3Mg
c2hvdWxkIGFsbG9jYXRlIHRoZW0gb24gc2V0X3VzZV9pbmMsCisJICogc28gdGhlcmUgc2hvdWxk
IGJlIG5vIHByb2JsZW0gd2l0aCB0aG9zZSBlaXRoZXIuCisgICAgICAgICAqLworCWlyLT5idWYt
PmhlYWQgPSBpci0+YnVmLT50YWlsOworCWlyLT5idWYtPmZpbGwgPSAwOworCisJKytpci0+b3Bl
bjsKKwlyZXR2YWwgPSBpci0+cC5zZXRfdXNlX2luYyhpci0+cC5kYXRhKTsKKworCXVwKCZwbHVn
aW5fbG9jayk7CisKKwlpZiAocmV0dmFsICE9IFNVQ0NFU1MpIHsKKwkJLS1pci0+b3BlbjsKKwkJ
cmV0dXJuIHJldHZhbDsKKwl9CisKKwlkcHJpbnRrKExPR0hFQUQgIm9wZW4gcmVzdWx0ID0gJWRc
biIsIGlyLT5wLm5hbWUsIGlyLT5wLm1pbm9yLCBTVUNDRVNTKTsKKworCXJldHVybiBTVUNDRVNT
OworfQorCisvKgorICoKKyAqLworc3RhdGljIGludCBpcmN0bF9jbG9zZShzdHJ1Y3QgaW5vZGUg
Kmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgaXJjdGwgKmlyID0gJmlyY3Rs
c1tNSU5PUihpbm9kZS0+aV9yZGV2KV07CisKKwlkcHJpbnRrKExPR0hFQUQgImNsb3NlIGNhbGxl
ZFxuIiwgaXItPnAubmFtZSwgaXItPnAubWlub3IpOworCisJLyogaWYgdGhlIHBsdWdpbiBoYXMg
YSBjbG9zZSBmdW5jdGlvbiB1c2UgaXQgaW5zdGVhZCAqLworCWlmKGlyLT5wLmZvcHMgJiYgaXIt
PnAuZm9wcy0+cmVsZWFzZSkKKwkJcmV0dXJuIGlyLT5wLmZvcHMtPnJlbGVhc2UoaW5vZGUsIGZp
bGUpOworCisJZG93bl9pbnRlcnJ1cHRpYmxlKCZwbHVnaW5fbG9jayk7CisKKwktLWlyLT5vcGVu
OworCWlyLT5wLnNldF91c2VfZGVjKGlyLT5wLmRhdGEpOworCisJdXAoJnBsdWdpbl9sb2NrKTsK
KworCXJldHVybiBTVUNDRVNTOworfQorCisvKgorICoKKyAqLworc3RhdGljIHVuc2lnbmVkIGlu
dCBpcmN0bF9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KQoreworCXN0
cnVjdCBpcmN0bCAqaXIgPSAmaXJjdGxzW01JTk9SKGZpbGUtPmZfZGVudHJ5LT5kX2lub2RlLT5p
X3JkZXYpXTsKKworCWRwcmludGsoTE9HSEVBRCAicG9sbCBjYWxsZWRcbiIsIGlyLT5wLm5hbWUs
IGlyLT5wLm1pbm9yKTsKKworCS8qIGlmIHRoZSBwbHVnaW4gaGFzIGEgcG9sbCBmdW5jdGlvbiB1
c2UgaXQgaW5zdGVhZCAqLworCWlmKGlyLT5wLmZvcHMgJiYgaXItPnAuZm9wcy0+cG9sbCkKKwkJ
cmV0dXJuIGlyLT5wLmZvcHMtPnBvbGwoZmlsZSwgd2FpdCk7CisKKwlwb2xsX3dhaXQoZmlsZSwg
JmlyLT5idWYtPndhaXRfcG9sbCwgd2FpdCk7CisKKwlkcHJpbnRrKExPR0hFQUQgInBvbGwgcmVz
dWx0ID0gJXNcbiIsCisJCWlyLT5wLm5hbWUsIGlyLT5wLm1pbm9yLAorCQlsaXJjX2J1ZmZlcl9l
bXB0eShpci0+YnVmKSA/ICIwIiA6ICJQT0xMSU58UE9MTFJETk9STSIpOworCisJcmV0dXJuIGxp
cmNfYnVmZmVyX2VtcHR5KGlyLT5idWYpID8gMCA6IChQT0xMSU58UE9MTFJETk9STSk7Cit9CisK
Ky8qCisgKgorICovCitzdGF0aWMgaW50IGlyY3RsX2lvY3RsKHN0cnVjdCBpbm9kZSAqaW5vZGUs
IHN0cnVjdCBmaWxlICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
Y21kLCB1bnNpZ25lZCBsb25nIGFyZykKK3sKKwl1bnNpZ25lZCBsb25nIG1vZGU7CisJaW50IHJl
c3VsdDsKKwlzdHJ1Y3QgaXJjdGwgKmlyID0gJmlyY3Rsc1tNSU5PUihpbm9kZS0+aV9yZGV2KV07
CisKKwlkcHJpbnRrKExPR0hFQUQgImlvY3RsIGNhbGxlZCAoJXUpXG4iLAorCQlpci0+cC5uYW1l
LCBpci0+cC5taW5vciwgY21kKTsKKworCS8qIGlmIHRoZSBwbHVnaW4gaGFzIGEgaW9jdGwgZnVu
Y3Rpb24gdXNlIGl0IGluc3RlYWQgKi8KKwlpZihpci0+cC5mb3BzICYmIGlyLT5wLmZvcHMtPmlv
Y3RsKQorCQlyZXR1cm4gaXItPnAuZm9wcy0+aW9jdGwoaW5vZGUsIGZpbGUsIGNtZCwgYXJnKTsK
KworCWlmIChpci0+cC5taW5vciA9PSBOT1BMVUcpIHsKKwkJZHByaW50ayhMT0dIRUFEICJpb2N0
bCByZXN1bHQgPSAtRU5PREVWXG4iLAorCQkJaXItPnAubmFtZSwgaXItPnAubWlub3IpOworCQly
ZXR1cm4gLUVOT0RFVjsKKwl9CisKKwkvKiBHaXZlIHRoZSBwbHVnaW4gYSBjaGFuY2UgdG8gaGFu
ZGxlIHRoZSBpb2N0bCAqLworCWlmKGlyLT5wLmlvY3RsKXsKKwkJcmVzdWx0ID0gaXItPnAuaW9j
dGwoaW5vZGUsIGZpbGUsIGNtZCwgYXJnKTsKKwkJaWYgKHJlc3VsdCAhPSAtRU5PSU9DVExDTUQp
CisJCQlyZXR1cm4gcmVzdWx0OworCX0KKwkvKiBUaGUgcGx1Z2luIGNhbid0IGhhbmRsZSBjbWQg
Ki8KKwlyZXN1bHQgPSBTVUNDRVNTOworCisJc3dpdGNoKGNtZCkKKwl7CisJY2FzZSBMSVJDX0dF
VF9GRUFUVVJFUzoKKwkJcmVzdWx0ID0gcHV0X3VzZXIoaXItPnAuZmVhdHVyZXMsICh1bnNpZ25l
ZCBsb25nKilhcmcpOworCQlicmVhazsKKwljYXNlIExJUkNfR0VUX1JFQ19NT0RFOgorCQlpZigh
KGlyLT5wLmZlYXR1cmVzJkxJUkNfQ0FOX1JFQ19NQVNLKSkKKwkJCXJldHVybigtRU5PU1lTKTsK
KworCQlyZXN1bHQgPSBwdXRfdXNlcihMSVJDX1JFQzJNT0RFCisJCQkJICAoaXItPnAuZmVhdHVy
ZXMmTElSQ19DQU5fUkVDX01BU0spLAorCQkJCSAgKHVuc2lnbmVkIGxvbmcqKWFyZyk7CisJCWJy
ZWFrOworCWNhc2UgTElSQ19TRVRfUkVDX01PREU6CisJCWlmKCEoaXItPnAuZmVhdHVyZXMmTElS
Q19DQU5fUkVDX01BU0spKQorCQkJcmV0dXJuKC1FTk9TWVMpOworCisJCXJlc3VsdCA9IGdldF91
c2VyKG1vZGUsICh1bnNpZ25lZCBsb25nKilhcmcpOworCQlpZighcmVzdWx0ICYmICEoTElSQ19N
T0RFMlJFQyhtb2RlKSAmIGlyLT5wLmZlYXR1cmVzKSkgeworCQkJcmVzdWx0ID0gLUVJTlZBTDsK
KwkJfQorCQkvKiBGSVhNRTogV2Ugc2hvdWxkIGFjdHVhbGx5IHNldCB0aGUgbW9kZSBzb21laG93
CisJCSAqIGJ1dCBmb3Igbm93LCBsaXJjX3NlcmlhbCBkb2Vzbid0IHN1cHBvcnQgbW9kZSBjaGFu
Z2luCisJCSAqIGVpZ2h0ZXIgKi8KKwkJYnJlYWs7CisJY2FzZSBMSVJDX0dFVF9MRU5HVEg6CisJ
CXJlc3VsdCA9IHB1dF91c2VyKCh1bnNpZ25lZCBsb25nKWlyLT5wLmNvZGVfbGVuZ3RoLAorCQkJ
CSAgKHVuc2lnbmVkIGxvbmcgKilhcmcpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXN1bHQg
PSAtRU5PSU9DVExDTUQ7CisJfQorCisJZHByaW50ayhMT0dIRUFEICJpb2N0bCByZXN1bHQgPSAl
ZFxuIiwKKwkJaXItPnAubmFtZSwgaXItPnAubWlub3IsIHJlc3VsdCk7CisKKwlyZXR1cm4gcmVz
dWx0OworfQorCisvKgorICoKKyAqLworc3RhdGljIHNzaXplX3QgaXJjdGxfcmVhZChzdHJ1Y3Qg
ZmlsZSAqZmlsZSwKKwkJCSAgY2hhciAqYnVmZmVyLAorCQkJICBzaXplX3QgbGVuZ3RoLAorCQkJ
ICBsb2ZmX3QgKnBwb3MpCit7CisJc3RydWN0IGlyY3RsICppciA9ICZpcmN0bHNbTUlOT1IoZmls
ZS0+Zl9kZW50cnktPmRfaW5vZGUtPmlfcmRldildOworCXVuc2lnbmVkIGNoYXIgYnVmW2lyLT5i
dWYtPmNodW5rX3NpemVdOworCWludCByZXQ9MCwgd3JpdHRlbj0wOworCURFQ0xBUkVfV0FJVFFV
RVVFKHdhaXQsIGN1cnJlbnQpOworCisJZHByaW50ayhMT0dIRUFEICJyZWFkIGNhbGxlZFxuIiwg
aXItPnAubmFtZSwgaXItPnAubWlub3IpOworCisJLyogaWYgdGhlIHBsdWdpbiBoYXMgYSBzcGVj
aWZpYyByZWFkIGZ1bmN0aW9uIHVzZSBpdCBpbnN0ZWFkICovCisJaWYoaXItPnAuZm9wcyAmJiBp
ci0+cC5mb3BzLT5yZWFkKQorCQlyZXR1cm4gaXItPnAuZm9wcy0+cmVhZChmaWxlLCBidWZmZXIs
IGxlbmd0aCwgcHBvcyk7CisKKwlpZiAobGVuZ3RoICUgaXItPmJ1Zi0+Y2h1bmtfc2l6ZSkgewor
CQlkcHJpbnRrKExPR0hFQUQgInJlYWQgcmVzdWx0ID0gLUVJTlZBTFxuIiwKKwkJCWlyLT5wLm5h
bWUsIGlyLT5wLm1pbm9yKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogd2UgYWRkIG91
cnNlbHZlcyB0byB0aGUgdGFzayBxdWV1ZSBiZWZvcmUgYnVmZmVyIGNoZWNrCisgICAgICAgICAq
IHRvIGF2b2lkIGxvc2luZyBzY2FuIGNvZGUgKGluIGNhc2Ugd2hlbiBxdWV1ZSBpcyBhd2FrZW4g
c29tZXdoZXJlCisJICogYmVldHdlbiB3aGlsZSBjb25kaXRpb24gY2hlY2tpbmcgYW5kIHNjaGVk
dWxpbmcpCisJICovCisJYWRkX3dhaXRfcXVldWUoJmlyLT5idWYtPndhaXRfcG9sbCwgJndhaXQp
OworCWN1cnJlbnQtPnN0YXRlID0gVEFTS19JTlRFUlJVUFRJQkxFOworCisJLyogd2hpbGUgd2Ug
ZGlkJ3QgcHJvdmlkZSAnbGVuZ3RoJyBieXRlcywgZGV2aWNlIGlzIG9wZW5lZCBpbiBibG9ja2lu
ZworCSAqIG1vZGUgYW5kICdjb3B5X3RvX3VzZXInIGlzIGhhcHB5LCB3YWl0IGZvciBkYXRhLgor
CSAqLworCXdoaWxlICh3cml0dGVuIDwgbGVuZ3RoICYmIHJldCA9PSAwKSB7CisJCWlmIChsaXJj
X2J1ZmZlcl9lbXB0eShpci0+YnVmKSkgeworCQkJLyogQWNjb3JkaW5nIHRvIHRoZSByZWFkKDIp
IG1hbiBwYWdlLCAnd3JpdHRlbicgY2FuIGJlCisJCQkgKiByZXR1cm5lZCBhcyBsZXNzIHRoYW4g
J2xlbmd0aCcsIGluc3RlYWQgb2YgYmxvY2tpbmcKKwkJCSAqIGFnYWluLCByZXR1cm5pbmcgLUVX
T1VMREJMT0NLLCBvciByZXR1cm5pbmcKKwkJCSAqIC1FUkVTVEFSVFNZUyAqLworCQkJaWYgKHdy
aXR0ZW4pIGJyZWFrOworCQkJaWYgKGZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NLKSB7CisJCQkJ
ZHByaW50ayhMT0dIRUFEICJyZWFkIHJlc3VsdCA9IC1FV09VTERCTE9DS1xuIiwKKwkJCQkJCWly
LT5wLm5hbWUsIGlyLT5wLm1pbm9yKTsKKwkJCQlyZW1vdmVfd2FpdF9xdWV1ZSgmaXItPmJ1Zi0+
d2FpdF9wb2xsLCAmd2FpdCk7CisJCQkJY3VycmVudC0+c3RhdGUgPSBUQVNLX1JVTk5JTkc7CisJ
CQkJcmV0dXJuIC1FV09VTERCTE9DSzsKKwkJCX0KKwkJCWlmIChzaWduYWxfcGVuZGluZyhjdXJy
ZW50KSkgeworCQkJCWRwcmludGsoTE9HSEVBRCAicmVhZCByZXN1bHQgPSAtRVJFU1RBUlRTWVNc
biIsCisJCQkJCQlpci0+cC5uYW1lLCBpci0+cC5taW5vcik7CisJCQkJcmVtb3ZlX3dhaXRfcXVl
dWUoJmlyLT5idWYtPndhaXRfcG9sbCwgJndhaXQpOworCQkJCWN1cnJlbnQtPnN0YXRlID0gVEFT
S19SVU5OSU5HOworCQkJCXJldHVybiAtRVJFU1RBUlRTWVM7CisJCQl9CisJCQlzY2hlZHVsZSgp
OworCQkJY3VycmVudC0+c3RhdGUgPSBUQVNLX0lOVEVSUlVQVElCTEU7CisJCX0gZWxzZSB7CisJ
CQlsaXJjX2J1ZmZlcl9yZWFkXzEoaXItPmJ1ZiwgYnVmKTsKKwkJCXJldCA9IGNvcHlfdG9fdXNl
cigodm9pZCAqKWJ1ZmZlcit3cml0dGVuLCBidWYsCisJCQkJCSAgIGlyLT5idWYtPmNodW5rX3Np
emUpOworCQkJd3JpdHRlbiArPSBpci0+YnVmLT5jaHVua19zaXplOworCQl9CisJfQorCisJcmVt
b3ZlX3dhaXRfcXVldWUoJmlyLT5idWYtPndhaXRfcG9sbCwgJndhaXQpOworCWN1cnJlbnQtPnN0
YXRlID0gVEFTS19SVU5OSU5HOworCisJZHByaW50ayhMT0dIRUFEICJyZWFkIHJlc3VsdCA9ICVz
ICglZClcbiIsCisJCWlyLT5wLm5hbWUsIGlyLT5wLm1pbm9yLCByZXQgPyAiLUVGQVVMVCIgOiAi
T0siLCByZXQpOworCisJcmV0dXJuIHJldCA/IC1FRkFVTFQgOiB3cml0dGVuOworfQorCitzdGF0
aWMgc3NpemVfdCBpcmN0bF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqYnVm
ZmVyLAorCQkJICAgc2l6ZV90IGxlbmd0aCwgbG9mZl90ICogcHBvcykKK3sKKwlzdHJ1Y3QgaXJj
dGwgKmlyID0gJmlyY3Rsc1tNSU5PUihmaWxlLT5mX2RlbnRyeS0+ZF9pbm9kZS0+aV9yZGV2KV07
CisKKwlkcHJpbnRrKExPR0hFQUQgIndyaXRlIGNhbGxlZFxuIiwgaXItPnAubmFtZSwgaXItPnAu
bWlub3IpOworCisJLyogaWYgdGhlIHBsdWdpbiBoYXMgYSBzcGVjaWZpYyByZWFkIGZ1bmN0aW9u
IHVzZSBpdCBpbnN0ZWFkICovCisJaWYoaXItPnAuZm9wcyAmJiBpci0+cC5mb3BzLT53cml0ZSkK
KwkJcmV0dXJuIGlyLT5wLmZvcHMtPndyaXRlKGZpbGUsIGJ1ZmZlciwgbGVuZ3RoLCBwcG9zKTsK
KworCXJldHVybiAtRUlOVkFMOworfQorCisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z
IGZvcHMgPSB7CisJcmVhZDogICAgaXJjdGxfcmVhZCwKKwl3cml0ZTogICBpcmN0bF93cml0ZSwK
Kwlwb2xsOiAgICBpcmN0bF9wb2xsLAorCWlvY3RsOiAgIGlyY3RsX2lvY3RsLAorCW9wZW46ICAg
IGlyY3RsX29wZW4sCisJcmVsZWFzZTogaXJjdGxfY2xvc2UKK307CisKK3N0YXRpYyBpbnQgX19p
bml0IGxpcmNfZGV2X2luaXQodm9pZCkKK3sKKwlpbnQgaTsKKworCWZvciAoaT0wOyBpIDwgQ09O
RklHX0xJUkNfTUFYX0RFVjsgKytpKSB7CisJCWluaXRfaXJjdGwoJmlyY3Rsc1tpXSk7CisJfQor
CisJaSA9IHJlZ2lzdGVyX2NocmRldihJUkNUTF9ERVZfTUFKT1IsCisJCQkJICAgSVJDVExfREVW
X05BTUUsCisJCQkJICAgJmZvcHMpOworCisJaWYgKGkgPCAwKSB7CisJCXByaW50ayAoImxpcmNf
ZGV2OiBkZXZpY2UgcmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoICVkXG4iLCBpKTsKKwkJcmV0dXJu
IGk7CisJfQorCisJcHJpbnRrKCJsaXJjX2RldjogSVIgUmVtb3RlIENvbnRyb2wgZHJpdmVyIHJl
Z2lzdGVyZWQsIGF0IG1ham9yICVkIFxuIiwKKwkgICAgICAgSVJDVExfREVWX01BSk9SKTsKKwor
CXJldHVybiBTVUNDRVNTOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgbGlyY19kZXZfZXhpdCh2
b2lkKQoreworCWludCByZXQ7CisKKwlyZXQgPSB1bnJlZ2lzdGVyX2NocmRldihJUkNUTF9ERVZf
TUFKT1IsIElSQ1RMX0RFVl9OQU1FKTsKKworCWlmICgwID4gcmV0KXsKKwkJcHJpbnRrKCJsaXJj
X2RldjogZXJyb3IgaW4gbW9kdWxlX3VucmVnaXN0ZXJfY2hyZGV2OiAlZFxuIiwKKwkJICAgICAg
IHJldCk7CisJfSBlbHNlIHsKKwkJZHByaW50aygibGlyY19kZXY6IG1vZHVsZSBzdWNjZXNzZnVs
bHkgdW5sb2FkZWRcbiIpOworCX0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiBGb3Ig
bm93IGRvbnQgdHJ5IHRvIHVzZSBpdCBhcyBhIHN0YXRpYyB2ZXJzaW9uICEgICovCisKK01PRFVM
RV9ERVNDUklQVElPTigiTElSQyBiYXNlIGRyaXZlciBtb2R1bGUiKTsKK01PRFVMRV9BVVRIT1Io
IkFydHVyIExpcG93c2tpIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKK0VYUE9SVF9TWU1C
T0wobGlyY19yZWdpc3Rlcl9wbHVnaW4pOworRVhQT1JUX1NZTUJPTChsaXJjX3VucmVnaXN0ZXJf
cGx1Z2luKTsKKworbW9kdWxlX2luaXQobGlyY19kZXZfaW5pdCk7Cittb2R1bGVfZXhpdChsaXJj
X2Rldl9leGl0KTsKKworLyoKKyAqIE92ZXJyaWRlcyBmb3IgRW1hY3Mgc28gdGhhdCB3ZSBmb2xs
b3cgTGludXMncyB0YWJiaW5nIHN0eWxlLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBMb2Nh
bCB2YXJpYWJsZXM6CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogRW5kOgorICovCmRpZmYgLXVy
TiBsaW51eC0yLjYuNS5vcmlnL2RyaXZlcnMvY2hhci9saXJjL2xpcmNfZGV2LmggbGludXgtMi42
LjUubmV3L2RyaXZlcnMvY2hhci9saXJjL2xpcmNfZGV2LmgKLS0tIGxpbnV4LTIuNi41Lm9yaWcv
ZHJpdmVycy9jaGFyL2xpcmMvbGlyY19kZXYuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAw
MCArMDEwMAorKysgbGludXgtMi42LjUubmV3L2RyaXZlcnMvY2hhci9saXJjL2xpcmNfZGV2LmgJ
MjAwNC0wNS0wNCAwMToyMzo1Ni4yMjE1NjU2NDAgKzAxMDAKQEAgLTAsMCArMSwyMzcgQEAKKy8q
CisgKiBMSVJDIGJhc2UgZHJpdmVyCisgKgorICogKEwpIGJ5IEFydHVyIExpcG93c2tpIDxhbGlw
b3dza2lAaW50ZXJpYS5wbD4KKyAqICAgICAgICBUaGlzIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
R05VIEdQTAorICoKKyAqICRJZDogbGlyY19kZXYuaCx2IDEuMTEgMjAwMy8wNS8wMiAxODo1Njo0
NCByYW50eSBFeHAgJAorICoKKyAqLworCisjaWZuZGVmIF9MSU5VWF9MSVJDX0RFVl9ICisjZGVm
aW5lIF9MSU5VWF9MSVJDX0RFVl9ICisKKyNkZWZpbmUgQlVGTEVOICAgICAgICAgICAgMTYKKwor
Ly8jZGVmaW5lIExJUkNfQlVGRl9QT1dFUl9PRl8yCisjaWZkZWYgTElSQ19CVUZGX1BPV0VSX09G
XzIKKyNkZWZpbmUgbW9kKG4sIGRpdikgKChuKSAmICgoZGl2KSAtMSkpCisjZWxzZQorI2RlZmlu
ZSBtb2QobiwgZGl2KSAoKG4pICUgKGRpdikpCisjZW5kaWYKKyNpbmNsdWRlIDxsaW51eC9zbGFi
Lmg+CisjaW5jbHVkZSA8bGludXgvZnMuaD4KK3N0cnVjdCBsaXJjX2J1ZmZlcgoreworICAgICAg
ICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X3BvbGw7CisJc3BpbmxvY2tfdCBsb2NrOworCisJdW5z
aWduZWQgY2hhciAqZGF0YTsKKwl1bnNpZ25lZCBpbnQgY2h1bmtfc2l6ZTsKKwl1bnNpZ25lZCBp
bnQgc2l6ZTsgLyogaW4gY2h1bmtzICovCisJdW5zaWduZWQgaW50IGZpbGw7IC8qIGluIGNodW5r
cyAqLworCWludCBoZWFkLCB0YWlsOyAgICAvKiBpbiBjaHVua3MgKi8KKwkvKiBVc2luZyBjaHVu
a3MgaW5zdGVhZCBvZiBieXRlcyBwcmV0ZW5kcyB0byBzaW1wbGlmeSBib3VuZGFyeSBjaGVja2lu
ZworCSAqIEFuZCBzaG91bGQgYWxsb3cgZm9yIHNvbWUgcGVyZm9ybWFuY2UgZmluZSB0dW5uaW5n
IGxhdGVyICovCit9Oworc3RhdGljIGlubGluZSBpbnQgbGlyY19idWZmZXJfaW5pdChzdHJ1Y3Qg
bGlyY19idWZmZXIgKmJ1ZiwKKwkJCQkgICAgdW5zaWduZWQgaW50IGNodW5rX3NpemUsCisJCQkJ
ICAgIHVuc2lnbmVkIGludCBzaXplKQoreworCS8qIEFkanVzdGluZyBzaXplIHRvIHRoZSBuZXh0
IHBvd2VyIG9mIDIgd291bGQgYWxsb3cgZm9yCisJICogaW5jb25kaXRpb25hbCBMSVJDX0JVRkZf
UE9XRVJfT0ZfMiBvcHRpbWl6YXRpb24gKi8KKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZidWYtPndh
aXRfcG9sbCk7CisJc3Bpbl9sb2NrX2luaXQoJmJ1Zi0+bG9jayk7CisJYnVmLT5oZWFkID0gYnVm
LT50YWlsID0gYnVmLT5maWxsID0gMDsKKwlidWYtPmNodW5rX3NpemUgPSBjaHVua19zaXplOwor
CWJ1Zi0+c2l6ZSA9IHNpemU7CisJYnVmLT5kYXRhID0ga21hbGxvYyhzaXplKmNodW5rX3NpemUs
IEdGUF9LRVJORUwpOworCWlmIChidWYtPmRhdGEgPT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCW1l
bXNldChidWYtPmRhdGEsIDAsIHNpemUqY2h1bmtfc2l6ZSk7CisJcmV0dXJuIDA7Cit9CitzdGF0
aWMgaW5saW5lIHZvaWQgbGlyY19idWZmZXJfZnJlZShzdHJ1Y3QgbGlyY19idWZmZXIgKmJ1ZikK
K3sKKwlrZnJlZShidWYtPmRhdGEpOworCWJ1Zi0+ZGF0YSA9IE5VTEw7CisJYnVmLT5oZWFkID0g
YnVmLT50YWlsID0gYnVmLT5maWxsID0gMDsKKwlidWYtPmNodW5rX3NpemUgPSAwOworCWJ1Zi0+
c2l6ZSA9IDA7Cit9CitzdGF0aWMgaW5saW5lIGludCAgbGlyY19idWZmZXJfZnVsbChzdHJ1Y3Qg
bGlyY19idWZmZXIgKmJ1ZikKK3sKKwlyZXR1cm4gKGJ1Zi0+ZmlsbCA+PSBidWYtPnNpemUpOwor
fQorc3RhdGljIGlubGluZSBpbnQgIGxpcmNfYnVmZmVyX2VtcHR5KHN0cnVjdCBsaXJjX2J1ZmZl
ciAqYnVmKQoreworCXJldHVybiAhKGJ1Zi0+ZmlsbCk7Cit9CitzdGF0aWMgaW5saW5lIGludCAg
bGlyY19idWZmZXJfYXZhaWxhYmxlKHN0cnVjdCBsaXJjX2J1ZmZlciAqYnVmKQoreworICAgIHJl
dHVybiAoYnVmLT5zaXplIC0gYnVmLT5maWxsKTsKK30KK2V4dGVybiBpbmxpbmUgdm9pZCBsaXJj
X2J1ZmZlcl9sb2NrKHN0cnVjdCBsaXJjX2J1ZmZlciAqYnVmLCB1bnNpZ25lZCBsb25nICpmbGFn
cykKK3sKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYnVmLT5sb2NrLCAqZmxhZ3MpOworfQorZXh0ZXJu
IGlubGluZSB2b2lkIGxpcmNfYnVmZmVyX3VubG9jayhzdHJ1Y3QgbGlyY19idWZmZXIgKmJ1Ziwg
dW5zaWduZWQgbG9uZyAqZmxhZ3MpCit7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYnVmLT5s
b2NrLCAqZmxhZ3MpOworfQorc3RhdGljIGlubGluZSB2b2lkIF9saXJjX2J1ZmZlcl9yZW1vdmVf
MShzdHJ1Y3QgbGlyY19idWZmZXIgKmJ1ZikKK3sKKwlidWYtPmhlYWQgPSBtb2QoYnVmLT5oZWFk
KzEsIGJ1Zi0+c2l6ZSk7CisJYnVmLT5maWxsIC09IDE7Cit9CitzdGF0aWMgaW5saW5lIHZvaWQg
bGlyY19idWZmZXJfcmVtb3ZlXzEoc3RydWN0IGxpcmNfYnVmZmVyICpidWYpCit7CisJdW5zaWdu
ZWQgbG9uZyBmbGFnczsKKwlsaXJjX2J1ZmZlcl9sb2NrKGJ1ZiwgJmZsYWdzKTsKKwlfbGlyY19i
dWZmZXJfcmVtb3ZlXzEoYnVmKTsKKwlsaXJjX2J1ZmZlcl91bmxvY2soYnVmLCAmZmxhZ3MpOwor
fQorc3RhdGljIGlubGluZSB2b2lkIF9saXJjX2J1ZmZlcl9yZWFkXzEoc3RydWN0IGxpcmNfYnVm
ZmVyICpidWYsCisJCQkJICAgICB1bnNpZ25lZCBjaGFyICpkZXN0KQoreworCW1lbWNweShkZXN0
LCAmYnVmLT5kYXRhW2J1Zi0+aGVhZCpidWYtPmNodW5rX3NpemVdLCBidWYtPmNodW5rX3NpemUp
OworCWJ1Zi0+aGVhZCA9IG1vZChidWYtPmhlYWQrMSwgYnVmLT5zaXplKTsKKwlidWYtPmZpbGwg
LT0gMTsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBsaXJjX2J1ZmZlcl9yZWFkXzEoc3RydWN0IGxp
cmNfYnVmZmVyICpidWYsCisJCQkJICAgICAgdW5zaWduZWQgY2hhciAqZGVzdCkKK3sKKwl1bnNp
Z25lZCBsb25nIGZsYWdzOworCWxpcmNfYnVmZmVyX2xvY2soYnVmLCAmZmxhZ3MpOworCV9saXJj
X2J1ZmZlcl9yZWFkXzEoYnVmLCBkZXN0KTsKKwlsaXJjX2J1ZmZlcl91bmxvY2soYnVmLCAmZmxh
Z3MpOworfQorc3RhdGljIGlubGluZSB2b2lkIF9saXJjX2J1ZmZlcl93cml0ZV8xKHN0cnVjdCBs
aXJjX2J1ZmZlciAqYnVmLAorCQkJCSAgICAgIHVuc2lnbmVkIGNoYXIgKm9yaWcpCit7CisJbWVt
Y3B5KCZidWYtPmRhdGFbYnVmLT50YWlsKmJ1Zi0+Y2h1bmtfc2l6ZV0sIG9yaWcsIGJ1Zi0+Y2h1
bmtfc2l6ZSk7CisJYnVmLT50YWlsID0gbW9kKGJ1Zi0+dGFpbCsxLCBidWYtPnNpemUpOworCWJ1
Zi0+ZmlsbCsrOworfQorc3RhdGljIGlubGluZSB2b2lkIGxpcmNfYnVmZmVyX3dyaXRlXzEoc3Ry
dWN0IGxpcmNfYnVmZmVyICpidWYsCisJCQkJICAgICAgIHVuc2lnbmVkIGNoYXIgKm9yaWcpCit7
CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlsaXJjX2J1ZmZlcl9sb2NrKGJ1ZiwgJmZsYWdzKTsK
KwlfbGlyY19idWZmZXJfd3JpdGVfMShidWYsIG9yaWcpOworCWxpcmNfYnVmZmVyX3VubG9jayhi
dWYsICZmbGFncyk7Cit9CitzdGF0aWMgaW5saW5lIHZvaWQgX2xpcmNfYnVmZmVyX3dyaXRlX24o
c3RydWN0IGxpcmNfYnVmZmVyICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIqIG9yaWcsIGludCBjb3VudCkKK3sKKyAgICBtZW1jcHkoJmJ1Zi0+ZGF0YVtidWYtPnRh
aWwqYnVmLT5jaHVua19zaXplXSwgb3JpZywgY291bnQqYnVmLT5jaHVua19zaXplKTsKKyAgICBi
dWYtPnRhaWwgPSBtb2QoYnVmLT50YWlsK2NvdW50LCBidWYtPnNpemUpOworICAgIGJ1Zi0+Zmls
bCArPSBjb3VudDsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBsaXJjX2J1ZmZlcl93cml0ZV9uKHN0
cnVjdCBsaXJjX2J1ZmZlciAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyKiBvcmlnLCBpbnQgY291bnQpCit7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICBp
bnQgc3BhY2UxOworICAgIGxpcmNfYnVmZmVyX2xvY2soYnVmLCZmbGFncyk7CisgICAgaWYoIGJ1
Zi0+aGVhZCA+IGJ1Zi0+dGFpbCApIHNwYWNlMSA9IGJ1Zi0+aGVhZCAtIGJ1Zi0+dGFpbDsKKyAg
ICBlbHNlIHNwYWNlMSA9IGJ1Zi0+c2l6ZSAtIGJ1Zi0+dGFpbDsKKyAgICAKKyAgICBpZiggY291
bnQgPiBzcGFjZTEgKQorICAgIHsKKyAgICAgICAgX2xpcmNfYnVmZmVyX3dyaXRlX24oYnVmLCBv
cmlnLCBzcGFjZTEpOworICAgICAgICBfbGlyY19idWZmZXJfd3JpdGVfbihidWYsIG9yaWcrKHNw
YWNlMSpidWYtPmNodW5rX3NpemUpLCBjb3VudC1zcGFjZTEpOworICAgIH0KKyAgICBlbHNlCisg
ICAgICAgIF9saXJjX2J1ZmZlcl93cml0ZV9uKGJ1Ziwgb3JpZywgY291bnQpOworICAgIGxpcmNf
YnVmZmVyX3VubG9jayhidWYsICZmbGFncyk7Cit9CisKK3N0cnVjdCBsaXJjX3BsdWdpbgorewor
ICAgICBjaGFyIG5hbWVbNDBdOworICAgICBpbnQgbWlub3I7CisgICAgIGludCBjb2RlX2xlbmd0
aDsKKyAgICAgaW50IHNhbXBsZV9yYXRlOworICAgICB1bnNpZ25lZCBsb25nIGZlYXR1cmVzOwor
ICAgICB2b2lkKiBkYXRhOworICAgICBpbnQgKCphZGRfdG9fYnVmKSAodm9pZCogZGF0YSwgc3Ry
dWN0IGxpcmNfYnVmZmVyKiBidWYpOworICAgICB3YWl0X3F1ZXVlX2hlYWRfdCogKCpnZXRfcXVl
dWUpICh2b2lkKiBkYXRhKTsKKyAgICAgc3RydWN0IGxpcmNfYnVmZmVyICpyYnVmOworICAgICBp
bnQgKCpzZXRfdXNlX2luYykgKHZvaWQqIGRhdGEpOworICAgICB2b2lkICgqc2V0X3VzZV9kZWMp
ICh2b2lkKiBkYXRhKTsKKyAgICAgaW50ICgqaW9jdGwpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3Qg
ZmlsZSAqLHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CisgICAgIHN0cnVjdCBmaWxlX29w
ZXJhdGlvbnMgKmZvcHM7Cit9OworLyogbmFtZToKKyAqIHRoaXMgc3RyaW5nIHdpbGwgYmUgdXNl
ZCBmb3IgbG9ncworICoKKyAqIG1pbm9yOgorICogaW5kaWNhdGVzIG1pbm9yIGRldmljZSAoL2Rl
di9saXJjZCkgbnVtYmVyIGZvciByZWdpc3RlcmVkIHBsdWdpbgorICogaWYgY2FsbGVyIGZpbGxz
IGl0IHdpdGggbmVnYXRpdmUgdmFsdWUsIHRoZW4gdGhlIGZpcnN0IGZyZWUgbWlub3IKKyAqIG51
bWJlciB3aWxsIGJlIHVzZWQgKGlmIGF2YWlsYWJsZSkKKyAqCisgKiBjb2RlX2xlbmd0aDoKKyAq
IGxlbmd0aCBvZiB0aGUgcmVtb3RlIGNvbnRyb2wga2V5IGNvZGUgZXhwcmVzc2VkIGluIGJpdHMK
KyAqIGlmIGNvZGVfbGVuZ3RoID4gOCB0aGVuIG1hbnkgYnl0ZXMgYXJlIHJldHVybmVkIHRocm91
Z2ggdGhlIGRldmljZSByZWFkCisgKiBpbiBzdWNoIHNpdHVhdGlvbiBnZXRfa2V5IHNob3VsZCBy
ZXR1cm4ga2V5IGNvZGUgdmFsdWVzIHN0YXJ0aW5nCisgKiBmcm9tIG1vc3Qgc2lnbmlmaWNhbnQg
Ynl0ZSAoZGV2aWNlIHJlYWQgd2lsbCBwcmVzZXZlIHRoaXMgb3JkZXIpCisgKiBpbiBhZGRpdGlv
biBpZiBjb2RlX2xlbmd0aCA+IDggdGhlbiBnZXRfa2V5IHdpbGwgYmUgY2FsbGVkCisgKiBzZXZl
cmFsIChjZWlsKGNvZGVfbGVuZ3RoLzgpKSB0aW1lcyBpbiBvbmUgcG9vbCBwYXNzIChvciBhZnRl
ciB0YXNrIHF1ZXVlCisgKiBhd2FrZSkga2V5X25vIHBhcmFtZXRlciBkZW5vdGVzIG51bWJlciBv
ZiB0aGUgcmVxdWVzdGVkIGJ5dGUgKDAgbWVhbnMgZmlyc3QKKyAqIGJ5dGUpCisgKgorICogc2Ft
cGxlX3JhdGU6CisgKiBzYW1wbGVfcmF0ZSBlcXVhbCB0byAwIG1lYW5zIHRoYXQgbm8gcG9sbGlu
ZyB3aWxsIGJlIHBlcmZvcm1lZCBhbmQgYWRkX3RvX2J1ZgorICogd2lsbCBiZSB0cmlnZ2VyZWQg
YnkgZXh0ZXJuYWwgZXZlbnRzICh0aHJvdWdoIHRhc2sgcXVldWUgcmV0dXJuZWQgYnkKKyAqIGdl
dF9xdWV1ZSkKKyAqCisgKiBkYXRhOgorICogaXQgbWF5IHBvaW50IHRvIGFueSBwbHVnaW4gZGF0
YSBhbmQgdGhpcyBwb2ludGVyIHdpbGwgYmUgcGFzc2VkIHRvIGFsbAorICogY2FsbGJhY2sgZnVu
Y3Rpb25zCisgKgorICogYWRkX3RvX2J1ZjoKKyAqIGFkZF90b19idWYgd2lsbCBiZSBjYWxsZWQg
YWZ0ZXIgc3BlY2lmaWVkIHBlcmlvZCBvZiB0aGUgdGltZSBvciB0cmlnZ2VyZWQKKyAqIGJ5IHRo
ZSBleHRlcm5hbCBldmVudCwgdGhpcyBiZWhhdmlvciBkZXBlbmRzIG9uIHZhbHVlIG9mIHRoZSBz
YW1wbGVfcmF0ZQorICogdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBpbiB1c2VyIGNvbnRl
eHQuIHRoaXMgcm91dGluZSBzaG91bGQgcmV0dXJuIDAKKyAqIGlmIGRhdGEgd2FzIGFkZGVkIHRv
IHRoZSBidWZmZXIgYW5kIC1FTk9EQVRBIGlmIG5vbmUgd2FzIGF2YWlsYWJsZS4gdGhpcyBzaG91
bGQKKyAqIGFkZCBzb21lIG51bWJlciBvZiBiaXRzIGV2ZW5seSBkaXZpc2libGUgYnkgY29kZV9s
ZW5ndGggdG8gdGhlIGJ1ZmZlcgorICoKKyAqIGdldF9xdWV1ZToKKyAqIHRoaXMgY2FsbGJhY2sg
c2hvdWxkIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHRhc2sgcXVldWUgd2hpY2ggd2lsbCBiZSB1
c2VkCisgKiBmb3IgZXh0ZXJuYWwgZXZlbnQgd2FpdGluZworICoKKyAqIHJidWY6CisgKiBpZiBu
b3QgTlVMTCwgaXQgd2lsbCBiZSB1c2VkIGFzIGEgcmVhZCBidWZmZXIsIHlvdSB3aWxsIGhhdmUg
dG8gd3JpdGUgdG8KKyAqIHRoZSBidWZmZXIgYnkgb3RoZXIgbWVhbnMsIGxpa2UgaXJxJ3MgKHNl
ZSBhbHNvIGxpcmNfc2VyaWFsLmMpLgorICoKKyAqIHNldF91c2VfaW5jOgorICogc2V0X3VzZV9p
bmMgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgZGV2aWNlIGlzIG9wZW5lZAorICoKKyAqIHNldF91c2Vf
ZGVjOgorICogc2V0X3VzZV9kZWMgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgZGV2aWNlIGlzIGNsb3Nl
ZAorICoKKyAqIGlvY3RsOgorICogU29tZSBpb2N0bCdzIGNhbiBiZSBkaXJlY3RseSBoYW5kbGVk
IGJ5IGxpcmNfZGV2IGJ1dCB3aWxsIGJlIGZvcndhcmVkIGhlcmUKKyAqIGlmIG5vdCBOVUxMIGFu
ZCBvbmx5IGhhbmRsZWQgaWYgaXQgcmV0dXJucyAtRU5PSU9DVExDTUQgKHNlZSBhbHNvCisgKiBs
aXJjX3NlcmlhbC5jKS4KKyAqCisgKiBmb3BzOgorICogZmlsZV9vcGVyYXRpb25zIGZvciBkcml2
ZXJzIHdoaWNoIGRvbid0IGZpdCB0aGUgY3VycmVudCBwbHVnaW4gbW9kZWwuCisgKi8KKworCisv
KiBmb2xsb3dpbmcgZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQgT05MWSBmcm9tIHVzZXIgY29udGV4
dAorICoKKyAqIHJldHVybnMgbmVnYXRpdmUgdmFsdWUgb24gZXJyb3Igb3IgbWlub3IgbnVtYmVy
CisgKiBvZiB0aGUgcmVnaXN0ZXJlZCBkZXZpY2UgaWYgc3VjY2VzcworICogY29udGVucyBvZiB0
aGUgc3RydWN0dXJlIHBvaW50ZWQgYnkgcCBpcyBjb3BpZWQKKyAqLworZXh0ZXJuIGludCBsaXJj
X3JlZ2lzdGVyX3BsdWdpbihzdHJ1Y3QgbGlyY19wbHVnaW4gKnApOworCisvKiByZXR1cm5zIG5l
Z2F0aXZlIHZhbHVlIG9uIGVycm9yIG9yIDAgaWYgc3VjY2VzcworKi8KK2V4dGVybiBpbnQgbGly
Y191bnJlZ2lzdGVyX3BsdWdpbihpbnQgbWlub3IpOworCisKKyNlbmRpZgpkaWZmIC11ck4gbGlu
dXgtMi42LjUub3JpZy9kcml2ZXJzL2NoYXIvbGlyYy9saXJjX2dwaW8uYyBsaW51eC0yLjYuNS5u
ZXcvZHJpdmVycy9jaGFyL2xpcmMvbGlyY19ncGlvLmMKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJp
dmVycy9jaGFyL2xpcmMvbGlyY19ncGlvLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAg
KzAxMDAKKysrIGxpbnV4LTIuNi41Lm5ldy9kcml2ZXJzL2NoYXIvbGlyYy9saXJjX2dwaW8uYwky
MDA0LTA1LTA0IDAxOjIzOjU2LjIyNzU2NDcyOCArMDEwMApAQCAtMCwwICsxLDU0NiBAQAorLyoK
KyAqIFJlbW90ZSBjb250cm9sIGRyaXZlciBmb3IgdGhlIFRWLWNhcmQKKyAqIGtleSBjb2RlcyBh
cmUgb2J0YWluZWQgZnJvbSBHUElPIHBvcnQKKyAqCisgKiAoTCkgYnkgQXJ0dXIgTGlwb3dza2kg
PGFsaXBvd3NraUBpbnRlcmlhLnBsPgorICogICAgIHBhdGNoIGZvciB0aGUgQXZlck1lZGlhIGJ5
IFNhbnRpYWdvIEdhcmNpYSBNYW50aW5hbiA8bWFudHlAaS5hbT4KKyAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZCBDaHJpc3RvcGggQmFydGVsbXVzIDxsaXJjQGJhcnRlbG11cy5kZT4K
KyAqICAgICBwYXRjaCBmb3IgdGhlIEJlc3RCdXkgYnkgTWlndWVsIEFuZ2VsIEFsdmFyZXogPG1h
YWNydXpAbmF2ZWdhbGlhLmNvbT4KKyAqICAgICBwYXRjaCBmb3IgdGhlIFdpbmZhc3QgVFYyMDAw
IGJ5IEp1YW4gVG9sZWRvCisgKiAgICAgPHRvbGVkb0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Cisg
KiAgICAgcGF0Y2ggZm9yIHRoZSBJLU8gRGF0YSBHVi1CQ1RWNS9QQ0kgYnkgSmVucyBDLiBSYXNt
dXNzZW4KKyAqICAgICA8amVucy5yYXNtdXNzZW5AaWVlZS5vcmc+CisgKgorICogIFRoaXMgcHJv
Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k
aWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor
ICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Us
IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKgorICogJElkOiBsaXJj
X2dwaW8uYyx2IDEuMzQgMjAwMy8xMS8wMiAxNTozODozNCBsaXJjIEV4cCAkCisgKgorICovCisK
KyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CisKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K
KyNpbmNsdWRlIDxsaW51eC9rbW9kLmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNs
dWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxs
aW51eC9tb2R1bGVwYXJhbS5oPgorCisjaW5jbHVkZSAiLi4vLi4vbWVkaWEvdmlkZW8vYnR0di5o
IgorI2luY2x1ZGUgIi4uLy4uL21lZGlhL3ZpZGVvL2J0dHZwLmgiCisKKyNpbmNsdWRlICJsaXJj
X2Rldi5oIgorCitzdGF0aWMgaW50IGRlYnVnID0gMDsKK3N0YXRpYyBpbnQgY2FyZCA9IDA7Citz
dGF0aWMgaW50IG1pbm9yID0gLTE7CitzdGF0aWMgaW50IGJ0dHZfaWQgPSBCVFRWX1VOS05PV047
CitzdGF0aWMgdW5zaWduZWQgbG9uZyBncGlvX21hc2sgPSAwOworc3RhdGljIHVuc2lnbmVkIGxv
bmcgZ3Bpb19lbmFibGUgPSAwOworc3RhdGljIHVuc2lnbmVkIGxvbmcgZ3Bpb19sb2NrX21hc2sg
PSAwOworc3RhdGljIHVuc2lnbmVkIGxvbmcgZ3Bpb194b3JfbWFzayA9IDA7CitzdGF0aWMgdW5z
aWduZWQgaW50IHNvZnRfZ2FwID0gMDsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHNhbXBsZV9yYXRl
ID0gMTA7CisKK01PRFVMRV9QQVJNKGRlYnVnLCJpIik7CitNT0RVTEVfUEFSTShjYXJkLCJpIik7
CitNT0RVTEVfUEFSTShtaW5vciwiaSIpOworTU9EVUxFX1BBUk0oZ3Bpb19tYXNrLCJsIik7CitN
T0RVTEVfUEFSTShncGlvX2xvY2tfbWFzaywibCIpOworTU9EVUxFX1BBUk0oZ3Bpb194b3JfbWFz
aywibCIpOworTU9EVUxFX1BBUk0oc29mdF9nYXAsImkiKTsKK01PRFVMRV9QQVJNKHNhbXBsZV9y
YXRlLCJiIik7CitNT0RVTEVfUEFSTShidHR2X2lkLCJpIik7CisKKyN1bmRlZiBkcHJpbnRrCisj
ZGVmaW5lIGRwcmludGsgIGlmIChkZWJ1ZykgcHJpbnRrCisKK3N0cnVjdCByY3ZfaW5mbyB7CisJ
aW50IGJ0dHZfaWQ7CisJaW50IGNhcmRfaWQ7CisJdW5zaWduZWQgbG9uZyBncGlvX21hc2s7CisJ
dW5zaWduZWQgbG9uZyBncGlvX2VuYWJsZTsKKwl1bnNpZ25lZCBsb25nIGdwaW9fbG9ja19tYXNr
OworCXVuc2lnbmVkIGxvbmcgZ3Bpb194b3JfbWFzazsKKwl1bnNpZ25lZCBpbnQgc29mdF9nYXA7
CisJdW5zaWduZWQgY2hhciBzYW1wbGVfcmF0ZTsKKwl1bnNpZ25lZCBjaGFyIGNvZGVfbGVuZ3Ro
OworfTsKKworc3RhdGljIHN0cnVjdCByY3ZfaW5mbyByY3ZfaW5mb3NbXSA9IHsKKwl7QlRUVl9V
TktOT1dOLCAgICAgICAgICAgICAgICAwLCAgICAgICAgICAwLCAgICAgICAgICAwLCAgICAgICAg
IDAsICAgICAgICAgIDAsICAgMCwgIDEsICAwfSwKKwl7QlRUVl9QWEVMVldQTFRWUEFLLCAgICAg
ICAgICAwLCAweDAwMDAzZTAwLCAgICAgICAgICAwLCAweDAwMTAwMDAsICAgICAgICAgIDAsICAg
MCwgMTUsIDMyfSwKKwl7QlRUVl9QWEVMVldQTFRWUFJPLCAgICAgICAgICAwLCAweDAwMDAxZjAw
LCAgICAgICAgICAwLCAweDAwMDgwMDAsICAgICAgICAgIDAsIDUwMCwgMTIsIDMyfSwKKwl7QlRU
Vl9QVl9CVDg3OFBfOUIsICAgICAgICAgICAwLCAweDAwMDAxZjAwLCAgICAgICAgICAwLCAweDAw
MDgwMDAsICAgICAgICAgIDAsIDUwMCwgMTIsIDMyfSwKKwl7QlRUVl9QVl9CVDg3OFBfUExVUywg
ICAgICAgICAwLCAweDAwMDAxZjAwLCAgICAgICAgICAwLCAweDAwMDgwMDAsICAgICAgICAgIDAs
IDUwMCwgMTIsIDMyfSwKKwl7QlRUVl9BVkVSTUVESUEsICAgICAgICAgICAgICAwLCAweDAwZjg4
MDAwLCAgICAgICAgICAwLCAweDAwMTAwMDAsIDB4MDAwMTAwMDAsICAgMCwgMTAsIDMyfSwKKwl7
QlRUVl9BVlBIT05FOTgsICAgICAweDAwMDExNDYxLCAweDAwM2I4MDAwLCAweDAwMDA0MDAwLCAw
eDA4MDAwMDAsIDB4MDA4MDAwMDAsICAgMCwgMTAsICAwfSwgLyptYXBwZWQgdG8gQ2FwdHVyZTk4
Ki8KKwl7QlRUVl9BVkVSTUVESUE5OCwgICAweDAwMDIxNDYxLCAweDAwM2I4MDAwLCAweDAwMDA0
MDAwLCAweDA4MDAwMDAsIDB4MDA4MDAwMDAsICAgMCwgMTAsICAwfSwgLyptYXBwZWQgdG8gQ2Fw
dHVyZTk4Ki8KKwl7QlRUVl9BVlBIT05FOTgsICAgICAweDAwMDMxNDYxLCAweDAwZjg4MDAwLCAg
ICAgICAgICAwLCAweDAwMTAwMDAsIDB4MDAwMTAwMDAsICAgMCwgMTAsIDMyfSwgLyptYXBwZWQg
dG8gUGhvbmU5OCovCisJLyogaXMgdGhpcyBvbmUgY29ycmVjdD8gKi8KKwl7QlRUVl9BVkVSTUVE
SUE5OCwgICAweDAwMDQxNDYxLCAweDAwZjg4MDAwLCAgICAgICAgICAwLCAweDAwMTAwMDAsIDB4
MDAwMTAwMDAsICAgMCwgMTAsIDMyfSwgLyptYXBwZWQgdG8gUGhvbmU5OCovCisJLyogd29yay1h
cm91bmQgZm9yIFZET01BVEUgKi8KKwl7QlRUVl9BVkVSTUVESUE5OCwgICAweDAzMDAxNDYxLCAw
eDAwZjg4MDAwLCAgICAgICAgICAwLCAweDAwMTAwMDAsIDB4MDAwMTAwMDAsICAgMCwgMTAsIDMy
fSwgLyptYXBwZWQgdG8gUGhvbmU5OCovCisJLyogcmVwb3J0ZWQgYnkgRGFuaWplbCBLb3J6aW5l
aywgQVZlclRWIEdPdy9GTSAqLworCXtCVFRWX0FWRVJNRURJQTk4LCAgIDB4MDAwMDAwMDAsIDB4
MDBmODgwMDAsICAgICAgICAgIDAsIDB4MDAxMDAwMCwgMHgwMDAxMDAwMCwgICAwLCAxMCwgMzJ9
LCAvKm1hcHBlZCB0byBQaG9uZTk4Ki8KKwl7QlRUVl9DSFJPTk9TX1ZTMiwgICAgICAgICAgICAw
LCAweDAwMDAwMGY4LCAgICAgICAgICAwLCAweDAwMDAxMDAsICAgICAgICAgIDAsICAgMCwgMjAs
ICAwfSwKKwkvKiBDUEgwMzEgYW5kIENQSDAzMyBjYXJkcyAoPykgKi8KKwkvKiBNSVJPIHdhcyBq
dXN0IGEgd29yay1hcm91bmQgKi8KKwl7QlRUVl9NSVJPLCAgICAgICAgICAgICAgICAgICAwLCAw
eDAwMDAxZjAwLCAgICAgICAgICAwLCAweDAwMDQwMDAsICAgICAgICAgIDAsICAgMCwgMTAsIDMy
fSwKKwl7QlRUVl9EWU5BTElOSywgICAgICAgICAgICAgICAwLCAweDAwMDAxZjAwLCAgICAgICAg
ICAwLCAweDAwMDQwMDAsICAgICAgICAgIDAsICAgMCwgMTAsIDMyfSwKKwl7QlRUVl9XSU5WSUVX
XzYwMSwgICAgICAgICAgICAwLCAweDAwMDAxZjAwLCAgICAgICAgICAwLCAweDAwMDQwMDAsICAg
ICAgICAgIDAsICAgMCwgIDAsIDMyfSwKKyNpZmRlZiBCVFRWX0tXT1JMRAorCXtCVFRWX0tXT1JM
RCwgICAgICAgICAgICAgICAgIDAsIDB4MDAwMDdmMDAsICAgICAgICAgIDAsIDB4MDAwNDAwMCwg
ICAgICAgICAgMCwgICAwLCAxMiwgMzJ9LAorI2VuZGlmCisJLyoganVzdCBhIGd1ZXNzICovCisJ
e0JUVFZfTUFHSUNUVklFVzA2MSwgICAgICAgICAgMCwgMHgwMDI4ZTAwMCwgICAgICAgICAgMCwg
MHgwMDIwMDAwLCAgICAgICAgICAwLCAgIDAsIDIwLCAzMn0sCisgCXtCVFRWX01BR0lDVFZJRVcw
NjMsICAgICAgICAgIDAsIDB4MDAyOGUwMDAsICAgICAgICAgIDAsIDB4MDAyMDAwMCwgICAgICAg
ICAgMCwgICAwLCAyMCwgMzJ9LAorIAl7QlRUVl9QSE9FQkVfVFZNQVMsICAgICAgICAgICAwLCAw
eDAwMjhlMDAwLCAgICAgICAgICAwLCAweDAwMjAwMDAsICAgICAgICAgIDAsICAgMCwgMjAsIDMy
fSwKKyNpZmRlZiBCVFRWX0JFU1RCVVlfRUFTWVRWMgorICAgICAgICB7QlRUVl9CRVNUQlVZX0VB
U1lUViwgICAgICAgICAwLCAweDAwMDA3RjAwLCAgICAgICAgICAwLCAweDAwMDQwMDAsICAgICAg
ICAgIDAsICAgMCwgMTAsICA4fSwKKyAgICAgICAge0JUVFZfQkVTVEJVWV9FQVNZVFYyLCAgICAg
ICAgMCwgMHgwMDAwN0YwMCwgICAgICAgICAgMCwgMHgwMDA4MDAwLCAgICAgICAgICAwLCAgIDAs
IDEwLCAgOH0sCisjZW5kaWYKKwkvKiBsb2NrX21hc2sgcHJvYmFibHkgYWxzbyAweDEwMCwgb3Ig
bWF5YmUgaXQgaXMgMHgwIGZvciBhbGwgb3RoZXJzICE/ISAqLworCXtCVFRWX0ZMWVZJREVPLCAg
ICAgICAgICAgICAgIDAsIDB4MDAwMDAwZjgsICAgICAgICAgIDAsICAgICAgICAgMCwgICAgICAg
ICAgMCwgICAwLCAgMCwgNDJ9LAorIAl7QlRUVl9GTFlWSURFT185OCwgICAgICAgICAgICAwLCAw
eDAwMDAwMGY4LCAgICAgICAgICAwLCAweDAwMDAxMDAsICAgICAgICAgIDAsICAgMCwgIDAsIDQy
fSwKKyAJe0JUVFZfVFlQSE9PTl9UVklFVywgICAgICAgICAgMCwgMHgwMDAwMDBmOCwgICAgICAg
ICAgMCwgMHgwMDAwMTAwLCAgICAgICAgICAwLCAgIDAsICAwLCA0Mn0sCisjaWZkZWYgQlRUVl9G
TFlWSURFT185OEZNCisJLyogc21vcmFyQGFsZm9uem8uc211dHMudWN0LmFjLnphICovCisJe0JU
VFZfRkxZVklERU9fOThGTSwgICAgICAgICAgMCwgMHgwMDAwMDBmOCwgICAgICAgICAgMCwgMHgw
MDAwMTAwLCAgICAgICAgICAwLCAgIDAsICAwLCA0Mn0sCisjZW5kaWYKKwkvKiBUaGUgTGVhZHRl
ayBXaW5GYXN0IFRWIDIwMDAgWFAgY2FyZCAoaWQgMHg2NjA2MTA3ZCkgdXNlcyBhbgorCSAqIGV4
dHJhIGdwaW8gYml0IGNvbXBhcmVkIHRvIHRoZSBvcmlnaW5hbCBUViAyMDAwIGNhcmQgKGlkCisJ
ICogMHgyMTdkNjYwNik7IGFzIHRoZSBidHR2LTAuNy4xMDAgZHJpdmVyIGRvZXMgbm90CisJICog
ZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgdHdvIGNhcmRzLCB3ZSBlbmFibGUgdGhlIGV4dHJhIGJp
dAorCSAqIGJhc2VkIG9uIHRoZSBjYXJkIGlkOiAqLworCXtCVFRWX1dJTkZBU1QyMDAwLCAgIDB4
NjYwNjEwN2QsIDB4MDAwMDA4ZjgsICAgICAgICAgIDAsIDB4MDAwMDEwMCwgICAgICAgICAgMCwg
ICAwLCAgMCwgMzJ9LAorCS8qIGRlZmF1bHQ6ICovCisJe0JUVFZfV0lORkFTVDIwMDAsICAgICAg
ICAgICAgMCwgMHgwMDAwMDBmOCwgICAgICAgICAgMCwgMHgwMDAwMTAwLCAgICAgICAgICAwLCAg
IDAsICAwLCAzMn0sCisjaWZkZWYgQlRUVl9HVkJDVFY1UENJCisJe0JUVFZfR1ZCQ1RWNVBDSSwg
ICAgICAgICAgICAgMCwgMHgwMGYwYjAwMCwgICAgICAgICAgMCwgICAgICAgICAwLCAgICAgICAg
ICAwLCAgIDAsIDIwLCAgOH0sCisjZW5kaWYKK307CisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGNv
ZGVfbGVuZ3RoID0gMDsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGNvZGVfYnl0ZXMgPSAxOworCisj
ZGVmaW5lIE1BWF9CWVRFUyA4CisKKyNkZWZpbmUgU1VDQ0VTUyAwCisjZGVmaW5lIExPR0hFQUQg
ImxpcmNfZ3BpbyAoJWQpOiAiCisKKy8qIGhvdyBtYW55IGJpdHMgR1BJTyB2YWx1ZSBjYW4gYmUg
c2hpZnRlZCByaWdodCBiZWZvcmUgcHJvY2Vzc2luZworICogaXQgaXMgY29tcHV0ZWQgZnJvbSB0
aGUgdmFsdWUgb2YgZ3Bpb19tYXNrX3BhcmFtZXRlcgorICovCitzdGF0aWMgdW5zaWduZWQgY2hh
ciBncGlvX3ByZV9zaGlmdCA9IDA7CisKKworc3RhdGljIGlubGluZSBpbnQgcmV2ZXJzZShpbnQg
ZGF0YSwgaW50IGJpdHMpCit7CisJaW50IGk7CisJaW50IGM7CisKKwlmb3IgKGM9MCxpPTA7IGk8
Yml0czsgaSsrKSB7CisJCWMgfD0gKCgoZGF0YSAmICgxPDxpKSkgPyAxOjApKSA8PCAoYml0cy0x
LWkpOworCX0KKworCXJldHVybiBjOworfQorCitzdGF0aWMgaW50IGJ1aWxkX2tleSh1bnNpZ25l
ZCBsb25nIGdwaW9fdmFsLCB1bnNpZ25lZCBjaGFyIGNvZGVzW01BWF9CWVRFU10pCit7CisJdW5z
aWduZWQgbG9uZyBtYXNrID0gZ3Bpb19tYXNrOworCXVuc2lnbmVkIGNoYXIgc2hpZnQgPSAwOwor
CisJZHByaW50ayhMT0dIRUFEICJncGlvX3ZhbCBpcyAlbHhcbiIsY2FyZCwodW5zaWduZWQgbG9u
ZykgZ3Bpb192YWwpOworCisJZ3Bpb192YWwgXj0gZ3Bpb194b3JfbWFzazsKKworCWlmIChncGlv
X2xvY2tfbWFzayAmJiAoZ3Bpb192YWwgJiBncGlvX2xvY2tfbWFzaykpIHsKKwkJcmV0dXJuIC1F
QlVTWTsKKwl9CisKKwlzd2l0Y2ggKGJ0dHZfaWQpCisJeworCWNhc2UgQlRUVl9BVkVSTUVESUE5
ODoKKwkJaWYgKGJ0dHZfd3JpdGVfZ3BpbyhjYXJkLCBncGlvX2VuYWJsZSwgZ3Bpb19lbmFibGUp
KSB7CisJCQlkcHJpbnRrKExPR0hFQUQgImNhbm5vdCB3cml0ZSB0byBHUElPXG4iLCBjYXJkKTsK
KwkJCXJldHVybiAtRUlPOworCQl9CisJCWlmIChidHR2X3JlYWRfZ3BpbyhjYXJkLCAmZ3Bpb192
YWwpKSB7CisJCQlkcHJpbnRrKExPR0hFQUQgImNhbm5vdCByZWFkIEdQSU9cbiIsIGNhcmQpOwor
CQkJcmV0dXJuIC1FSU87CisJCX0KKwkJaWYgKGJ0dHZfd3JpdGVfZ3BpbyhjYXJkLCBncGlvX2Vu
YWJsZSwgMCkpIHsKKwkJCWRwcmludGsoTE9HSEVBRCAiY2Fubm90IHdyaXRlIHRvIEdQSU9cbiIs
IGNhcmQpOworCQkJcmV0dXJuIC1FSU87CisJCX0KKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnJl
YWs7CisJfQorCisJLyogZXh0cmFjdCBiaXRzIGZyb20gInJhdyIgR1BJTyB2YWx1ZSB1c2luZyBn
cGlvX21hc2sgKi8KKwljb2Rlc1swXSA9IDA7CisJZ3Bpb192YWwgPj49IGdwaW9fcHJlX3NoaWZ0
OworCXdoaWxlIChtYXNrKSB7CisJCWlmIChtYXNrICYgMXUpIHsKKwkJCWNvZGVzWzBdIHw9IChn
cGlvX3ZhbCAmIDF1KSA8PCBzaGlmdCsrOworCQl9CisJCW1hc2sgPj49IDE7CisJCWdwaW9fdmFs
ID4+PSAxOworCX0KKworCWRwcmludGsoTE9HSEVBRCAiY29kZSBpcyAlbHhcbiIsY2FyZCwodW5z
aWduZWQgbG9uZykgY29kZXNbMF0pOworCXN3aXRjaCAoYnR0dl9pZCkKKwl7CisJY2FzZSBCVFRW
X0FWRVJNRURJQToKKwkJY29kZXNbMl0gPSAoY29kZXNbMF08PDIpJjB4ZmY7CisJCWNvZGVzWzNd
ID0gKH5jb2Rlc1syXSkmMHhmZjsKKwkJY29kZXNbMF0gPSAweDAyOworCQljb2Rlc1sxXSA9IDB4
RkQ7CisJCWJyZWFrOworCWNhc2UgQlRUVl9BVlBIT05FOTg6CisJCWNvZGVzWzJdID0gKChjb2Rl
c1swXSYofjB4MSkpPDwyKSYweGZmOworCQljb2Rlc1szXSA9ICh+Y29kZXNbMl0pJjB4ZmY7CisJ
CWlmIChjb2Rlc1swXSYweDEpIHsKKwkJCWNvZGVzWzBdID0gMHhjMDsKKwkJCWNvZGVzWzFdID0g
MHgzZjsKKwkJfSBlbHNlIHsKKwkJCWNvZGVzWzBdID0gMHg0MDsKKwkJCWNvZGVzWzFdID0gMHhi
ZjsKKwkJfQorCQlicmVhazsKKwljYXNlIEJUVFZfQVZFUk1FRElBOTg6CisJCWJyZWFrOworCWNh
c2UgQlRUVl9GTFlWSURFTzoKKwljYXNlIEJUVFZfRkxZVklERU9fOTg6CisJY2FzZSBCVFRWX1RZ
UEhPT05fVFZJRVc6CisjaWZkZWYgQlRUVl9GTFlWSURFT185OEZNCisJY2FzZSBCVFRWX0ZMWVZJ
REVPXzk4Rk06CisjZW5kaWYKKwkJY29kZXNbNF09Y29kZXNbMF08PDM7CisJCWNvZGVzWzVdPSgo
fmNvZGVzWzRdKSYweGZmKTsKKworCQljb2Rlc1swXT0weDAwOworCQljb2Rlc1sxXT0weDFBOwor
CQljb2Rlc1syXT0weDFGOworCQljb2Rlc1szXT0weDJGOworCQlicmVhazsKKyAgICAgICAgY2Fz
ZSBCVFRWX01BR0lDVFZJRVcwNjE6CisgICAgICAgIGNhc2UgQlRUVl9NQUdJQ1RWSUVXMDYzOgor
CWNhc2UgQlRUVl9QSE9FQkVfVFZNQVM6CisJCWNvZGVzWzBdID0gKGNvZGVzWzBdJjB4MDEpCisJ
CQl8KChjb2Rlc1swXSYweDAyKTw8MSkKKwkJCXwoKGNvZGVzWzBdJjB4MDQpPDwyKQorCQkJfCgo
Y29kZXNbMF0mMHgwOCk+PjIpCisJCQl8KChjb2Rlc1swXSYweDEwKT4+MSk7CisJCS8qIEZBTExU
SFJPVUdIICovCisJY2FzZSBCVFRWX01JUk86CisJY2FzZSBCVFRWX0RZTkFMSU5LOgorCWNhc2Ug
QlRUVl9QWEVMVldQTFRWUEFLOgorCWNhc2UgQlRUVl9QWEVMVldQTFRWUFJPOgorCWNhc2UgQlRU
Vl9QVl9CVDg3OFBfOUI6CisJY2FzZSBCVFRWX1BWX0JUODc4UF9QTFVTOgorI2lmZGVmIEJUVFZf
S1dPUkxECisJY2FzZSBCVFRWX0tXT1JMRDoKKyNlbmRpZgorCQljb2Rlc1syXSA9IHJldmVyc2Uo
Y29kZXNbMF0sOCk7CisJCWNvZGVzWzNdID0gKH5jb2Rlc1syXSkmMHhmZjsKKwkJY29kZXNbMF0g
PSAweDYxOworCQljb2Rlc1sxXSA9IDB4RDY7CisJCWJyZWFrOworI2lmIDAKKwkJLyogZGVyaXZl
ZCBmcm9tIGUtdGVjaCBjb25maWcgZmlsZSAqLworCQkvKiAyNiArIDE2IGJpdHMgKi8KKwkJLyog
d29uJ3QgYXBwbHkgaXQgdW50aWwgaXQncyBjb25maXJtZWQgd2l0aCBhIGZseTk4ICovCisgCWNh
c2UgQlRUVl9GTFlWSURFT185ODoKKwljYXNlIEJUVFZfRkxZVklERU9fOThGTToKKwkJY29kZXNb
NF09Y29kZXNbMF08PDM7CisJCWNvZGVzWzVdPSh+Y29kZXNbNF0pJjB4ZmY7CisKKwkJY29kZXNb
MF09MHgwMDsKKwkJY29kZXNbMV09MHgxQTsKKwkJY29kZXNbMl09MHgxRjsKKwkJY29kZXNbM109
MHgyRjsKKwkJYnJlYWs7CisjZW5kaWYKKwljYXNlIEJUVFZfV0lORkFTVDIwMDA6CisJCS8qIHNo
aWZ0IGV4dHJhIGJpdCAqLworCQljb2Rlc1swXSA9IChjb2Rlc1swXSYweDFmKSB8ICgoY29kZXNb
MF0mMHgyMCkgPDwgMSk7CisJY2FzZSBCVFRWX1dJTlZJRVdfNjAxOgorCQljb2Rlc1syXSA9IHJl
dmVyc2UoY29kZXNbMF0sOCk7CisJCWNvZGVzWzNdID0gKH5jb2Rlc1syXSkmMHhmZjsKKwkJY29k
ZXNbMF0gPSAweEMwOworCQljb2Rlc1sxXSA9IDB4M0Y7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ
CWJyZWFrOworCX0KKworCXJldHVybiBTVUNDRVNTOworfQorCisvKiBhZGRfdG9fYnVmIC0gY29w
eSBhIGNvZGUgdG8gdGhlIGJ1ZmZlciAqLworc3RhdGljIGludCBhZGRfdG9fYnVmKHZvaWQqIGRh
dGEsIHN0cnVjdCBsaXJjX2J1ZmZlciogYnVmKQoreworCXN0YXRpYyB1bnNpZ25lZCBsb25nIG5l
eHRfdGltZSA9IDA7CisJc3RhdGljIHVuc2lnbmVkIGNoYXIgcHJldl9jb2Rlc1tNQVhfQllURVNd
OworCXVuc2lnbmVkIGxvbmcgY29kZSA9IDA7CisJdW5zaWduZWQgY2hhciBjdXJfY29kZXNbTUFY
X0JZVEVTXTsKKworCWlmIChidHR2X3JlYWRfZ3BpbyhjYXJkLCAmY29kZSkpIHsKKwkJZHByaW50
ayhMT0dIRUFEICJjYW5ub3QgcmVhZCBHUElPXG4iLCBjYXJkKTsKKwkJcmV0dXJuIC1FSU87CisJ
fQorCisJaWYgKGJ1aWxkX2tleShjb2RlLCBjdXJfY29kZXMpKSB7CisJCXJldHVybiAtRUZBVUxU
OworCX0KKworCQkKKwkvKiBYWFggdGhpcyBzaG91bGQgYmUgZG91YmxlIGNoZWNrZWQ7IGkgdGhp
bmsgdGhlIHNvZnRfZ2FwCisJICogaGVyZSBpcyBzdXBwb3NlZCB0byB0cmFjayByZXBlYXRzLCB3
aGljaCBpcyB3aHkgaSBzYXZlIG9mZgorCSAqIHRoZSBwcmV2X2NvZGVzLCBidXQgaSdtIG5vdCBj
ZXJ0YWluIHRoaXMgaXMgY29ycmVjdAorCSAqLworCWlmIChzb2Z0X2dhcCkgeworCQlpZiAoIW1l
bWNtcChwcmV2X2NvZGVzLCBjdXJfY29kZXMsIGNvZGVfYnl0ZXMpICYmCisJCQlqaWZmaWVzIDwg
bmV4dF90aW1lKSB7CisJCQlyZXR1cm4gLUVBR0FJTjsKKwkJfQorCQluZXh0X3RpbWUgPSBqaWZm
aWVzICsgc29mdF9nYXA7CisJfQorCW1lbWNweSggcHJldl9jb2RlcywgY3VyX2NvZGVzLCBjb2Rl
X2J5dGVzICk7CisKKwlsaXJjX2J1ZmZlcl93cml0ZV8xKCBidWYsIGN1cl9jb2RlcyApOworCisJ
cmV0dXJuIFNVQ0NFU1M7Cit9CisKK3N0YXRpYyBpbnQgc2V0X3VzZV9pbmModm9pZCogZGF0YSkK
K3sKKwl0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRp
YyB2b2lkIHNldF91c2VfZGVjKHZvaWQqIGRhdGEpCit7CisJbW9kdWxlX3B1dChUSElTX01PRFVM
RSk7Cit9CisKK3N0YXRpYyB3YWl0X3F1ZXVlX2hlYWRfdCogZ2V0X3F1ZXVlKHZvaWQqIGRhdGEp
Cit7CisJcmV0dXJuIGJ0dHZfZ2V0X2dwaW9fcXVldWUoY2FyZCk7Cit9CisKK3N0YXRpYyBzdHJ1
Y3QgbGlyY19wbHVnaW4gcGx1Z2luID0geworCS5uYW1lCQk9ICJsaXJjX2dwaW8gICIsCisJLmFk
ZF90b19idWYJPSBhZGRfdG9fYnVmLAorCS5nZXRfcXVldWUJPSBnZXRfcXVldWUsCisJLnNldF91
c2VfaW5jCT0gc2V0X3VzZV9pbmMsCisJLnNldF91c2VfZGVjCT0gc2V0X3VzZV9kZWMsCit9Owor
CisvKgorICoKKyAqLworaW50IGdwaW9fcmVtb3RlX2luaXQodm9pZCkKK3sKKwlpbnQgcmV0Owor
CXVuc2lnbmVkIGludCBtYXNrOworCisJLyogIm5vcm1hbGl6ZSIgZ3Bpb19tYXNrCisJICogdGhp
cyBtZWFucyBzaGlmdCBpdCByaWdodCB1bnRpbCBmaXJzdCBiaXQgaXMgc2V0CisJICovCisJd2hp
bGUgKCEoZ3Bpb19tYXNrICYgMXUpKSB7CisJCWdwaW9fcHJlX3NoaWZ0Kys7CisJCWdwaW9fbWFz
ayA+Pj0gMTsKKwl9CisKKwlpZiAoY29kZV9sZW5ndGgpIHsKKwkJcGx1Z2luLmNvZGVfbGVuZ3Ro
ID0gY29kZV9sZW5ndGg7CisJfSBlbHNlIHsKKwkJLyogY2FsY3VsYXRlIHNjYW4gY29kZSBsZW5n
dGggaW4gYml0cyBpZiBuZWVkZWQgKi8KKwkJcGx1Z2luLmNvZGVfbGVuZ3RoID0gMTsKKwkJbWFz
ayA9IGdwaW9fbWFzayA+PiAxOworCQl3aGlsZSAobWFzaykgeworCQkJaWYgKG1hc2sgJiAxdSkg
eworCQkJCXBsdWdpbi5jb2RlX2xlbmd0aCsrOworCQkJfQorCQkJbWFzayA+Pj0gMTsKKwkJfQor
CX0KKworCWNvZGVfYnl0ZXMgPSAocGx1Z2luLmNvZGVfbGVuZ3RoLzgpICsgKHBsdWdpbi5jb2Rl
X2xlbmd0aCU4ID8gMSA6IDApOworCWlmIChNQVhfQllURVMgPCBjb2RlX2J5dGVzKSB7CisJCXBy
aW50ayAoTE9HSEVBRCAic2NhbiBjb2RlIHRvbyBsb25nICglZCBieXRlcylcbiIsCisJCQltaW5v
ciwgY29kZV9ieXRlcyk7CisJCXJldHVybiAtRUJBRFJRQzsKKwl9CisKKwlpZiAoZ3Bpb19lbmFi
bGUpIHsKKwkJaWYoYnR0dl9ncGlvX2VuYWJsZShjYXJkLCBncGlvX2VuYWJsZSwgZ3Bpb19lbmFi
bGUpKSB7CisJCQlwcmludGsoTE9HSEVBRCAiZ3Bpb19lbmFibGUgZmFpbHVyZVxuIiwgbWlub3Ip
OworCQkJcmV0dXJuIC1FSU87CisJCX0KKwl9CisKKworCS8qIHRyYW5zbGF0ZSBtcyB0byBqaWZm
aWVzICovCisJc29mdF9nYXAgPSAoc29mdF9nYXAqSFopIC8gMTAwMDsKKworCXBsdWdpbi5taW5v
ciA9IG1pbm9yOworCXBsdWdpbi5zYW1wbGVfcmF0ZSA9IHNhbXBsZV9yYXRlOworCisJcmV0ID0g
bGlyY19yZWdpc3Rlcl9wbHVnaW4oJnBsdWdpbik7CisKKwlpZiAoMCA+IHJldCkgeworCQlwcmlu
dGsgKExPR0hFQUQgImRldmljZSByZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggJWRcbiIsCisJCQlt
aW5vciwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwltaW5vciA9IHJldDsKKwlwcmludGso
TE9HSEVBRCAiZHJpdmVyIHJlZ2lzdGVyZWRcbiIsIG1pbm9yKTsKKworCXJldHVybiBTVUNDRVNT
OworfQorCitzdGF0aWMgaW50IF9faW5pdCBsaXJjX2dwaW9faW5pdCh2b2lkKQoreworCWludCB0
eXBlLGNhcmRpZCxjYXJkX3R5cGU7CisKKwlpZiAoQ09ORklHX0xJUkNfTUFYX0RFViA8IG1pbm9y
KSB7CisJCXByaW50aygibGlyY19ncGlvOiBwYXJhbWV0ZXIgbWlub3IgKCVkKSBtdXN0IGJlIGxl
c3MgdGhhbiAlZCFcbiIsCisJCSAgICAgICBtaW5vciwgQ09ORklHX0xJUkNfTUFYX0RFVi0xKTsK
KwkJcmV0dXJuIC1FQkFEUlFDOworCX0KKworCXJlcXVlc3RfbW9kdWxlKCJidHR2Iik7CisKKwkv
KiBpZiBncGlvX21hc2sgbm90IHplcm8gdGhlbiB1c2UgbW9kdWxlIHBhcmFtZXRlcnMKKwkgKiBp
bnN0ZWFkIG9mIGF1dG9kZXRlY3RpbmcgVFYgY2FyZAorCSAqLworCWlmIChncGlvX21hc2spIHsK
KwkJaWYgKHNhbXBsZV9yYXRlIT0wICYmICgyID4gc2FtcGxlX3JhdGUgfHwgNTAgPCBzYW1wbGVf
cmF0ZSkpIHsKKwkJCXByaW50ayhMT0dIRUFEICJwYXJhbWV0ZXIgc2FtcGxlX3JhdGUgIgorCQkJ
ICAgICAgICJtdXN0IGJlIGJlZXR3ZWVuIDIgYW5kIDUwIVxuIiwgbWlub3IpOworCQkJcmV0dXJu
IC1FQkFEUlFDOworCQl9CisKKwkJaWYgKHNhbXBsZV9yYXRlIT0wICYmIHNvZnRfZ2FwICYmCisJ
CSAgICAoKDIwMDAvc2FtcGxlX3JhdGUpID4gc29mdF9nYXAgfHwgMTAwMCA8IHNvZnRfZ2FwKSkg
eworCQkJcHJpbnRrKExPR0hFQUQgInBhcmFtZXRlciBzb2Z0X2dhcCAiCisJCQkgICAgICAgIm11
c3QgYmUgYmVldHdlZW4gJWQgYW5kIDEwMDAhXG4iLAorCQkJICAgICAgIG1pbm9yLCAyMDAwL3Nh
bXBsZV9yYXRlKTsKKwkJCXJldHVybiAtRUJBRFJRQzsKKwkJfQorCX0gZWxzZSB7CisJCWlmKGJ0
dHZfZ2V0X2NhcmRpbmZvKGNhcmQsJnR5cGUsJmNhcmRpZCk9PS0xKSB7CisJCQlwcmludGsoTE9H
SEVBRCAiY291bGQgbm90IGdldCBjYXJkIHR5cGVcbiIsIG1pbm9yKTsKKwkJfQorCQlwcmludGso
TE9HSEVBRCAiY2FyZCB0eXBlIDB4JXgsIGlkIDB4JXhcbiIsbWlub3IsCisJCSAgICAgICB0eXBl
LGNhcmRpZCk7CisKKwkJaWYgKHR5cGUgPT0gQlRUVl9VTktOT1dOKSB7CisJCQlwcmludGsoTE9H
SEVBRCAiY2Fubm90IGRldGVjdCBUViBjYXJkIG5yICVkIVxuIiwKKwkJCSAgICAgICBtaW5vciwg
Y2FyZCk7CisJCQlyZXR1cm4gLUVCQURSUUM7CisJCX0KKwkJZm9yIChjYXJkX3R5cGUgPSAxOwor
CQkgICAgIGNhcmRfdHlwZSA8IHNpemVvZihyY3ZfaW5mb3MpL3NpemVvZihzdHJ1Y3QgcmN2X2lu
Zm8pOworCQkgICAgIGNhcmRfdHlwZSsrKSB7CisJCQlpZiAocmN2X2luZm9zW2NhcmRfdHlwZV0u
YnR0dl9pZCA9PSB0eXBlICYmCisJCQkgICAgKHJjdl9pbmZvc1tjYXJkX3R5cGVdLmNhcmRfaWQg
PT0gMCB8fAorCQkJICAgICByY3ZfaW5mb3NbY2FyZF90eXBlXS5jYXJkX2lkID09IGNhcmRpZCkp
IHsKKwkJCQlidHR2X2lkID0gcmN2X2luZm9zW2NhcmRfdHlwZV0uYnR0dl9pZDsKKwkJCQlncGlv
X21hc2sgPSByY3ZfaW5mb3NbY2FyZF90eXBlXS5ncGlvX21hc2s7CisJCQkJZ3Bpb19lbmFibGUg
PSByY3ZfaW5mb3NbY2FyZF90eXBlXS5ncGlvX2VuYWJsZTsKKwkJCQlncGlvX2xvY2tfbWFzayA9
IHJjdl9pbmZvc1tjYXJkX3R5cGVdLmdwaW9fbG9ja19tYXNrOworCQkJCWdwaW9feG9yX21hc2sg
PSByY3ZfaW5mb3NbY2FyZF90eXBlXS5ncGlvX3hvcl9tYXNrOworCQkJCXNvZnRfZ2FwID0gcmN2
X2luZm9zW2NhcmRfdHlwZV0uc29mdF9nYXA7CisJCQkJc2FtcGxlX3JhdGUgPSByY3ZfaW5mb3Nb
Y2FyZF90eXBlXS5zYW1wbGVfcmF0ZTsKKwkJCQljb2RlX2xlbmd0aCA9IHJjdl9pbmZvc1tjYXJk
X3R5cGVdLmNvZGVfbGVuZ3RoOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlmICh0eXBlPT1C
VFRWX0FWUEhPTkU5OCAmJiBjYXJkaWQ9PTB4MDAwMTE0NjEpCXsKKwkJCWJ0dHZfaWQgPSBCVFRW
X0FWRVJNRURJQTk4OworCQl9CisJCWlmICh0eXBlPT1CVFRWX0FWRVJNRURJQTk4ICYmIGNhcmRp
ZD09MHgwMDA0MTQ2MSkgeworCQkJYnR0dl9pZCA9IEJUVFZfQVZQSE9ORTk4OworCQl9CisJCWlm
ICh0eXBlPT1CVFRWX0FWRVJNRURJQTk4ICYmIGNhcmRpZD09MHgwMzAwMTQ2MSkgeworCQkJYnR0
dl9pZCA9IEJUVFZfQVZQSE9ORTk4OworCQl9CisJCWlmICh0eXBlPT1CVFRWX0FWRVJNRURJQTk4
ICYmIGNhcmRpZD09MHgwMDAwMDAwMCkgeworCQkJYnR0dl9pZCA9IEJUVFZfQVZQSE9ORTk4Owor
CQl9CisJCWlmIChjYXJkX3R5cGUgPT0gc2l6ZW9mKHJjdl9pbmZvcykvc2l6ZW9mKHN0cnVjdCBy
Y3ZfaW5mbykpIHsKKwkJCXByaW50ayhMT0dIRUFEICJUViBjYXJkIHR5cGUgMHgleCBub3Qgc3Vw
cG9ydGVkIVxuIiwKKwkJCSAgICAgICBtaW5vciwgdHlwZSk7CisJCQlyZXR1cm4gLUVCQURSUUM7
CisJCX0KKwl9CisKKwlyZXF1ZXN0X21vZHVsZSgibGlyY19kZXYiKTsKKworCXJldHVybiBncGlv
X3JlbW90ZV9pbml0KCk7Cit9CisKK3ZvaWQgX19leGl0IGxpcmNfZ3Bpb19leGl0KHZvaWQpCit7
CisJaW50IHJldDsKKworCXJldCA9IGxpcmNfdW5yZWdpc3Rlcl9wbHVnaW4obWlub3IpOworCisJ
aWYgKDAgPiByZXQpIHsKKwkJcHJpbnRrKExPR0hFQUQgImVycm9yIGluIGxpcmNfdW5yZWdpc3Rl
cl9taW5vcjogJWRcbiIKKwkJICAgICAgICJUcnlpbmcgYWdhaW4uLi5cbiIsCisJCSAgICAgICBt
aW5vciwgcmV0KTsKKworCQljdXJyZW50LT5zdGF0ZSA9IFRBU0tfSU5URVJSVVBUSUJMRTsKKwkJ
c2NoZWR1bGVfdGltZW91dChIWik7CisKKwkJcmV0ID0gbGlyY191bnJlZ2lzdGVyX3BsdWdpbiht
aW5vcik7CisKKwkJaWYgKDAgPiByZXQpIHsKKwkJCXByaW50ayhMT0dIRUFEICJlcnJvciBpbiBs
aXJjX3VucmVnaXN0ZXJfbWlub3I6ICVkISEhXG4iLAorCQkJICAgICAgIG1pbm9yLCByZXQpOwor
CQkJcmV0dXJuOworCQl9CisJfQorCisJZHByaW50ayhMT0dIRUFEICJtb2R1bGUgc3VjY2Vzc2Z1
bGx5IHVubG9hZGVkXG4iLCBtaW5vcik7Cit9CisKK01PRFVMRV9ERVNDUklQVElPTigiRHJpdmVy
IG1vZHVsZSBmb3IgcmVtb3RlIGNvbnRyb2wgKGRhdGEgZnJvbSBidDg0OCBHUElPIHBvcnQpIik7
CitNT0RVTEVfQVVUSE9SKCJBcnR1ciBMaXBvd3NraSIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIp
OworCisjaWZkZWYgTU9EVUxFCisJbW9kdWxlX2luaXQobGlyY19ncGlvX2luaXQpOworI2Vsc2UK
KwlsYXRlX2luaXRjYWxsKGxpcmNfZ3Bpb19pbml0KTsKKyNlbmRpZgorbW9kdWxlX2V4aXQobGly
Y19ncGlvX2V4aXQpOworCisvKgorICogT3ZlcnJpZGVzIGZvciBFbWFjcyBzbyB0aGF0IHdlIGZv
bGxvdyBMaW51cydzIHRhYmJpbmcgc3R5bGUuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIExv
Y2FsIHZhcmlhYmxlczoKKyAqIGMtYmFzaWMtb2Zmc2V0OiA4CisgKiBFbmQ6CisgKi8KZGlmZiAt
dXJOIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy9jaGFyL2xpcmMvbGlyY19pMmMuYyBsaW51eC0y
LjYuNS5uZXcvZHJpdmVycy9jaGFyL2xpcmMvbGlyY19pMmMuYwotLS0gbGludXgtMi42LjUub3Jp
Zy9kcml2ZXJzL2NoYXIvbGlyYy9saXJjX2kyYy5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAw
MDAwICswMTAwCisrKyBsaW51eC0yLjYuNS5uZXcvZHJpdmVycy9jaGFyL2xpcmMvbGlyY19pMmMu
YwkyMDA0LTA1LTA0IDAxOjIzOjU2LjIzMTU2NDEyMCArMDEwMApAQCAtMCwwICsxLDQ0MCBAQAor
LyogICAgICAkSWQ6IGxpcmNfaTJjLmMsdiAxLjIyIDIwMDQvMDMvMDIgMTk6MzQ6MjEgbGlyYyBF
eHAgJCAgICAgICovCisKKy8qCisgKiBpMmMgSVIgbGlyYyBwbHVnaW4gZm9yIEhhdXBwYXVnZSBh
bmQgUGl4ZWx2aWV3IGNhcmRzIC0gbmV3IDIuOC54IGkyYyBzdGFjaworICoKKyAqIENvcHlyaWdo
dCAoYykgMjAwMCBHZXJkIEtub3JyIDxrcmF4ZWxAZ29sZGJhY2guaW4tYmVybGluLmRlPgorICog
bW9kaWZpZWQgZm9yIFBpeGVsVmlldyAoQlQ4NzhQK1cvRk0pIGJ5CisgKiAgICAgIE1pY2hhbCBL
b2NoYW5vd2ljeiA8bWtvY2hhbm9AcGxkLm9yZy5wbD4KKyAqICAgICAgQ2hyaXN0b3BoIEJhcnRl
bG11cyA8bGlyY0BiYXJ0ZWxtdXMuZGU+CisgKiBtb2RpZmllZCBmb3IgS05DIE9ORSBUViBTdGF0
aW9uL0FudWJpcyBUeXBob29uIFRWaWV3IFR1bmVyIGJ5CisgKiAgICAgIFVscmljaCBNdWVsbGVy
IDx1bHJpY2gubXVlbGxlcjQyQHdlYi5kZT4KKyAqIG1vZGlmaWVkIGZvciBBc3VzIFRWLUJveCBh
bmQgQ3JlYXRpdmUvVmlzaW9uVGVrIEJyZWFrT3V0LUJveCBieQorICogICAgICBTdGVmYW4gSmFo
biA8c3RlZmFuQGxrY2Mub3JnPgorICogbW9kaWZpZWQgZm9yIExpbnV4IDIuNiBieQorICogCUpl
ZmZyZXkgQ2xhcmsgPGplZmZAY2xhcmttYW5pYS5jb20+CisgKgorICogcGFydHMgYXJlIGN1dCZw
YXN0ZWQgZnJvbSB0aGUgb2xkIGxpcmNfaGF1cC5jIGRyaXZlcgorICoKKyAqICBUaGlzIHByb2dy
YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm
eQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAq
ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBT
dWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICoKKyAqLworCisjaW5jbHVk
ZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgva21vZC5oPgorI2luY2x1ZGUgPGxp
bnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgv
c3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxh
eS5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgor
I2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGVwYXJhbS5oPgor
CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLWFsZ28tYml0Lmg+
CisjaW5jbHVkZSA8YXNtL3NlbWFwaG9yZS5oPgorCisjaW5jbHVkZSAiLi4vLi4vbWVkaWEvdmlk
ZW8vYnR0di5oIgorCisjaW5jbHVkZSAibGlyY19kZXYuaCIKKworc3RhdGljIHVuc2lnbmVkIHNo
b3J0IG5vcm1hbF9pMmNbXSA9IHsgMHgxYSwgMHgxOCwgMHg0YiwgMHg2NCwgMHgzMCwgMHgyMSwg
MHgyMywgSTJDX0NMSUVOVF9FTkQgfTsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBub3JtYWxfaTJj
X3JhbmdlW10gPSB7IEkyQ19DTElFTlRfRU5EIH07CitzdGF0aWMgdW5zaWduZWQgc2hvcnQgcHJv
YmVbMl0gPSB7IEkyQ19DTElFTlRfRU5ELCBJMkNfQ0xJRU5UX0VORCB9Oworc3RhdGljIHVuc2ln
bmVkIHNob3J0IHByb2JlX3JhbmdlWzJdID0geyBJMkNfQ0xJRU5UX0VORCwgSTJDX0NMSUVOVF9F
TkQgfTsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBpZ25vcmVbMl0gPSB7IEkyQ19DTElFTlRfRU5E
LCBJMkNfQ0xJRU5UX0VORCB9Oworc3RhdGljIHVuc2lnbmVkIHNob3J0IGlnbm9yZV9yYW5nZVsy
XSA9IHsgSTJDX0NMSUVOVF9FTkQsIEkyQ19DTElFTlRfRU5EIH07CitzdGF0aWMgdW5zaWduZWQg
c2hvcnQgZm9yY2VbMl0gPSB7IEkyQ19DTElFTlRfRU5ELCBJMkNfQ0xJRU5UX0VORCB9OworCitz
dGF0aWMgc3RydWN0IGkyY19jbGllbnRfYWRkcmVzc19kYXRhIGFkZHJfZGF0YSA9IHsKKwkubm9y
bWFsX2kyYyAgICAgICAgICAgICA9IG5vcm1hbF9pMmMsCisJLm5vcm1hbF9pMmNfcmFuZ2UgICAg
ICAgPSBub3JtYWxfaTJjX3JhbmdlLAorCS5wcm9iZSAgICAgICAgICAgICAgICAgID0gcHJvYmUs
CisJLnByb2JlX3JhbmdlICAgICAgICAgICAgPSBwcm9iZV9yYW5nZSwKKwkuaWdub3JlICAgICAg
ICAgICAgICAgICA9IGlnbm9yZSwKKwkuaWdub3JlX3JhbmdlICAgICAgICAgICA9IGlnbm9yZV9y
YW5nZSwKKwkuZm9yY2UgICAgICAgICAgICAgICAgICA9IGZvcmNlCit9OworCitzdHJ1Y3QgaTJj
X2lyIHsKKwlzdHJ1Y3QgbGlyY19wbHVnaW4gbGlyYzsKKwlzdHJ1Y3QgaTJjX2NsaWVudCBjbGll
bnQ7CisJaW50IG5leHRrZXk7CisJdW5zaWduZWQgY2hhciBiWzNdOworCXVuc2lnbmVkIGNoYXIg
Yml0czsKKwl1bnNpZ25lZCBjaGFyIGZsYWc7Cit9OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwor
LyogaW5zbW9kIHBhcmFtZXRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KKworc3RhdGljIGludCBkZWJ1ZyAgID0gMDsgICAgLyogZGVi
dWcgb3V0cHV0ICovCitzdGF0aWMgaW50IG1pbm9yICAgPSAtMTsgICAvKiBtaW5vciBudW1iZXIg
Ki8KKworTU9EVUxFX1BBUk0oZGVidWcsImkiKTsKK01PRFVMRV9QQVJNKG1pbm9yLCJpIik7CisK
K01PRFVMRV9ERVNDUklQVElPTigiSW5mcmFyZWQgcmVjZWl2ZXIgZHJpdmVyIGZvciBIYXVwcGF1
Z2UgYW5kIFBpeGVsdmlldyBjYXJkcyAoaTJjIHN0YWNrKSIpOworTU9EVUxFX0FVVEhPUigiR2Vy
ZCBLbm9yciwgTWljaGFsIEtvY2hhbm93aWN6LCBDaHJpc3RvcGggQmFydGVsbXVzLCBVbHJpY2gg
TXVlbGxlciwgU3RlZmFuIEphaG4sIEplZmZyZXkgQ2xhcmsiKTsKK01PRFVMRV9MSUNFTlNFKCJH
UEwiKTsKKworI2RlZmluZSBkcHJpbnRrIGlmIChkZWJ1ZykgcHJpbnRrCisKKy8qIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICovCisKKyNkZWZpbmUgRFJJVkVSX05BTUUgImxpcmNfaTJjIgorI2RlZmluZSBERVZJ
Q0VfTkFNRSBEUklWRVJfTkFNRQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgaW5s
aW5lIGludCByZXZlcnNlKGludCBkYXRhLCBpbnQgYml0cykKK3sKKwlpbnQgaTsKKwlpbnQgYzsK
KwkKKwlmb3IgKGM9MCxpPTA7IGk8Yml0czsgaSsrKSB7CisJCWMgfD0gKCgoZGF0YSAmICgxPDxp
KSkgPyAxOjApKSA8PCAoYml0cy0xLWkpOworCX0KKworCXJldHVybiBjOworfQorCitzdGF0aWMg
aW50IGFkZF90b19idWZfcGNmODU3NCh2b2lkKiBkYXRhLCBzdHJ1Y3QgbGlyY19idWZmZXIqIGJ1
ZikKK3sKKwlzdHJ1Y3QgaTJjX2lyICppciA9IGRhdGE7CisJaW50IHJjOworCXVuc2lnbmVkIGNo
YXIgYWxsLCBtYXNrOworCXVuc2lnbmVkIGNoYXIga2V5OworCisJLyogY29tcHV0ZSBhbGwgdmFs
aWQgYml0cyAoa2V5IGNvZGUgKyBwcmVzc2VkL3JlbGVhc2UgZmxhZykgKi8KKwlhbGwgPSBpci0+
Yml0cyB8IGlyLT5mbGFnOworCisJLyogc2F2ZSBJUiB3cml0YWJsZSBtYXNrIGJpdHMgKi8KKwlt
YXNrID0gaTJjX3NtYnVzX3JlYWRfYnl0ZSgmaXItPmNsaWVudCkgJiB+YWxsOworCisJLyogc2Vu
ZCBiaXQgbWFzayAqLworCXJjID0gaTJjX3NtYnVzX3dyaXRlX2J5dGUoJmlyLT5jbGllbnQsICgw
eGZmICYgYWxsKSB8IG1hc2spOworCisJLyogcmVjZWl2ZSBzY2FuIGNvZGUgKi8KKwlyYyA9IGky
Y19zbWJ1c19yZWFkX2J5dGUoJmlyLT5jbGllbnQpOworCisJaWYgKHJjID09IC0xKSB7CisJCS8q
IHNob3VsZCB0aGlzIHJldHVybiAtRUlPPyAqLwkKKwkJZHByaW50ayhERVZJQ0VfTkFNRSAiOiAl
cyByZWFkIGVycm9yXG4iLCBpci0+Y2xpZW50Lm5hbWUpOworCQlyZXR1cm4gLUVOT0RBVEE7CisJ
fQorCisJLyogZHJvcCBkdXBsaWNhdGUgcG9sbHMgKi8KKwlpZiAoaXItPmJbMF0gPT0gKHJjICYg
YWxsKSkgeworCQlyZXR1cm4gLUVOT0RBVEE7CisJfQorCWlyLT5iWzBdID0gcmMgJiBhbGw7CisK
KwlkcHJpbnRrKERSSVZFUl9OQU1FICI6ICVzIGtleSAweCUwMlggJXNcbiIsCisJCWlyLT5jbGll
bnQubmFtZSwgcmMgJiBpci0+Yml0cywKKwkJKHJjICYgaXItPmZsYWcpID8gInJlbGVhc2VkIiA6
ICJwcmVzc2VkIik7CisKKwlpZiAocmMgJiBpci0+ZmxhZykgeworCQkvKiBpZ25vcmUgcmVsZWFz
ZWQgYnV0dG9ucyAqLworCQlyZXR1cm4gLUVOT0RBVEE7CisJfQorCisJLyogc2V0IHZhbGlkIGtl
eSBjb2RlICovCisJa2V5ICA9IHJjICYgaXItPmJpdHM7CisJbGlyY19idWZmZXJfd3JpdGVfMSgg
YnVmLCAma2V5ICk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYWRkX3RvX2J1Zl9oYXVw
KHZvaWQqIGRhdGEsIHN0cnVjdCBsaXJjX2J1ZmZlciogYnVmKQoreworCXN0cnVjdCBpMmNfaXIg
KmlyID0gZGF0YTsKKyAgICAgICAgdW5zaWduZWQgY2hhciBrZXlidWZbM107CisJX191MTYgY29k
ZTsKKwl1bnNpZ25lZCBjaGFyIGNvZGVzWzJdOworCisJLyogcG9sbCBJUiBjaGlwICovCisJaWYg
KDMgPT0gaTJjX21hc3Rlcl9yZWN2KCZpci0+Y2xpZW50LGtleWJ1ZiwzKSkgeworCQlpci0+Ylsw
XSA9IGtleWJ1ZlswXTsKKwkJaXItPmJbMV0gPSBrZXlidWZbMV07CisJCWlyLT5iWzJdID0ga2V5
YnVmWzJdOworCX0gZWxzZSB7CisJCWRwcmludGsoRFJJVkVSX05BTUUgIjogcmVhZCBlcnJvclxu
Iik7CisJCS8qIGtlZXAgbGFzdCBzdWNjZXNzZnVsbCByZWFkIGJ1ZmZlciAqLworCX0KKworCS8q
IGtleSBwcmVzc2VkID8gKi8KKwlpZiAoKGlyLT5iWzBdICYgMHg4MCkgPT0gMCkKKwkJcmV0dXJu
IC1FTk9EQVRBOworCQorCWRwcmludGsoRFJJVkVSX05BTUUgIjoga2V5ICgweCUwMngvMHglMDJ4
KVxuIiwKKwlpci0+YlswXSwgaXItPmJbMV0pOworCisJLyogbG9vayB3aGF0IHdlIGhhdmUgKi8K
Kwljb2RlID0gKCgoX191MTYpaXItPmJbMF0mMHg3Zik8PDYpIHwgKGlyLT5iWzFdPj4yKTsKKwor
CWNvZGVzWzBdID0gKGNvZGUgPj4gOCkgJiAweGZmOworCWNvZGVzWzFdID0gY29kZSAmIDB4ZmY7
CisKKwkvKiByZXR1cm4gaXQgKi8KKwlsaXJjX2J1ZmZlcl93cml0ZV8xKCBidWYsIGNvZGVzICk7
CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYWRkX3RvX2J1Zl9waXhlbHZpZXcodm9pZCog
ZGF0YSwgc3RydWN0IGxpcmNfYnVmZmVyKiBidWYpCit7CisJc3RydWN0IGkyY19pciAqaXIgPSBk
YXRhOworCXVuc2lnbmVkIGNoYXIga2V5OworCQorCS8qIHBvbGwgSVIgY2hpcCAqLworCWlmICgx
ICE9IGkyY19tYXN0ZXJfcmVjdigmaXItPmNsaWVudCwma2V5LDEpKSB7CisJCWRwcmludGsoRFJJ
VkVSX05BTUUgIjogcmVhZCBlcnJvclxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlkcHJpbnRr
KEtFUk5fREVCVUcgREVWSUNFX05BTUUgIjoga2V5ICUwMnhcbiIsIGtleSk7CisKKwkvKiByZXR1
cm4gaXQgKi8KKwlsaXJjX2J1ZmZlcl93cml0ZV8xKCBidWYsICZrZXkgKTsKKy8qIG5vdCBzdXJl
IHdoZXJlIGIgY2FtZSBmcm9tCisgCSprZXkgPSBiOworKi8KKwlyZXR1cm4gMDsKK30KKworc3Rh
dGljIGludCBhZGRfdG9fYnVmX3B2OTUxKHZvaWQqIGRhdGEsIHN0cnVjdCBsaXJjX2J1ZmZlciog
YnVmKQoreworCXN0cnVjdCBpMmNfaXIgKmlyID0gZGF0YTsKKwl1bnNpZ25lZCBjaGFyIGtleTsK
Kwl1bnNpZ25lZCBjaGFyIGNvZGVzWzRdOworCQorCS8qIHBvbGwgSVIgY2hpcCAqLworCWlmICgx
ICE9IGkyY19tYXN0ZXJfcmVjdigmaXItPmNsaWVudCwma2V5LDEpKSB7CisJCWRwcmludGsoRFJJ
VkVSX05BTUUgIjogcmVhZCBlcnJvclxuIik7CisJCXJldHVybiAtRU5PREFUQTsKKwl9CisJLyog
aWdub3JlIDB4YWEgKi8KKwlpZiAoa2V5PT0weGFhKQorCQlyZXR1cm4gLUVOT0RBVEE7CisJZHBy
aW50ayhLRVJOX0RFQlVHIERFVklDRV9OQU1FICI6IGtleSAlMDJ4XG4iLCBrZXkpOworCisJY29k
ZXNbM10gPSAweDYxOworCWNvZGVzWzJdID0gMHhENjsKKwljb2Rlc1sxXSA9IHJldmVyc2Uoa2V5
LDgpOworCWNvZGVzWzBdID0gKH5jb2Rlc1syXSkmMHhmZjsKKwkKKwlsaXJjX2J1ZmZlcl93cml0
ZV8xKCBidWYsIGNvZGVzICk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYWRkX3RvX2J1
Zl9rbmMxKHZvaWQgKmRhdGEsIHN0cnVjdCBsaXJjX2J1ZmZlciogYnVmKQoreworCXN0YXRpYyB1
bnNpZ25lZCBjaGFyIGxhc3Rfa2V5ID0gMHhGRjsKKwlzdHJ1Y3QgaTJjX2lyICppciA9IGRhdGE7
CisJdW5zaWduZWQgY2hhciBrZXk7CisJCisJLyogcG9sbCBJUiBjaGlwICovCisJaWYgKDEgIT0g
aTJjX21hc3Rlcl9yZWN2KCZpci0+Y2xpZW50LCZrZXksMSkpIHsKKwkJZHByaW50ayhEUklWRVJf
TkFNRSAiOiByZWFkIGVycm9yXG4iKTsKKwkJcmV0dXJuIC1FTk9EQVRBOworCX0KKwkKKwkvKiBp
dCBzZWVtcyB0aGF0IDB4RkUgaW5kaWNhdGVzIHRoYXQgYSBidXR0b24gaXMgc3RpbGwgaG9sZAor
CSAgIGRvd24sIHdoaWxlIDB4RkYgaW5kaWNhdGVzIHRoYXQgbm8gYnV0dG9uIGlzIGhvbGQKKwkg
ICBkb3duLiAweEZFIHNlcXVlbmNlcyBhcmUgc29tZXRpbWVzIGludGVycnVwdGVkIGJ5IDB4RkYg
Ki8KKwkKKwlkcHJpbnRrKEtFUk5fREVCVUcgREVWSUNFX05BTUUgIjoga2V5ICUwMnhcbiIsIGtl
eSk7CisJCisJaWYoIGtleSA9PSAweEZGICkKKwkJcmV0dXJuIC1FTk9EQVRBOworCisJaWYgKCBr
ZXkgPT0gMHhGRSApCisJCWtleSA9IGxhc3Rfa2V5OworCisJbGFzdF9rZXkgPSBrZXk7CisJbGly
Y19idWZmZXJfd3JpdGVfMSggYnVmLCAma2V5ICk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj
IGludCBzZXRfdXNlX2luYyh2b2lkKiBkYXRhKQoreworCXRyeV9tb2R1bGVfZ2V0KFRISVNfTU9E
VUxFKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc2V0X3VzZV9kZWModm9pZCogZGF0
YSkKK3sKKwltb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsKK30KKworc3RhdGljIHN0cnVjdCBsaXJj
X3BsdWdpbiBsaXJjX3RlbXBsYXRlID0geworCS5uYW1lID0gICAgICAgICJsaXJjX2kyYyIsCisJ
LnNldF91c2VfaW5jID0gc2V0X3VzZV9pbmMsCisJLnNldF91c2VfZGVjID0gc2V0X3VzZV9kZWMK
K307CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3N0YXRpYyBpbnQgbGlyY19pMmNfYXR0YWNo
KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCwgaW50IGFkZHIsIGludCBraW5kKTsKK3N0YXRpYyBp
bnQgbGlyY19pMmNfZGV0YWNoKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOworc3RhdGljIGlu
dCBsaXJjX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXApOworCitzdGF0aWMgc3Ry
dWN0IGkyY19kcml2ZXIgZHJpdmVyID0geworCS5vd25lciAgICAgICAgICA9IFRISVNfTU9EVUxF
LAorICAgICAgICAubmFtZSAgICAgICAgICAgPSBEUklWRVJfTkFNRSwKKyAgICAgICAgLmlkICAg
ICAgICAgICAgID0gSTJDX0RSSVZFUklEX0VYUDMsIC8qIEZJWE1FICovCisgICAgICAgIC5mbGFn
cyAgICAgICAgICA9IEkyQ19ERl9OT1RJRlksCisgICAgICAgIC5hdHRhY2hfYWRhcHRlciA9IGxp
cmNfaTJjX3Byb2JlLAorICAgICAgICAuZGV0YWNoX2NsaWVudCAgPSBsaXJjX2kyY19kZXRhY2gs
Cit9OworCitzdGF0aWMgc3RydWN0IGkyY19jbGllbnQgY2xpZW50X3RlbXBsYXRlID0gCit7Cisg
ICAgICAgIEkyQ19ERVZOQU1FKCIodW5zZXQpIiksCisJLmZsYWdzICA9IEkyQ19DTElFTlRfQUxM
T1dfVVNFLAorICAgICAgICAuZHJpdmVyID0gJmRyaXZlcgorfTsKKworc3RhdGljIGludCBsaXJj
X2kyY19hdHRhY2goc3RydWN0IGkyY19hZGFwdGVyICphZGFwLCBpbnQgYWRkciwgaW50IGtpbmQp
Cit7CisgICAgICAgIHN0cnVjdCBpMmNfaXIgKmlyOworCWludCByZXQ7CisJCisgICAgICAgIGNs
aWVudF90ZW1wbGF0ZS5hZGFwdGVyID0gYWRhcDsKKyAgICAgICAgY2xpZW50X3RlbXBsYXRlLmFk
ZHIgPSBhZGRyOworCQorCWlmIChOVUxMID09IChpciA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBp
MmNfaXIpLEdGUF9LRVJORUwpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKKwlt
ZW1zZXQoaXIsMCxzaXplb2Yoc3RydWN0IGkyY19pcikpOworCW1lbWNweSgmaXItPmNsaWVudCwm
Y2xpZW50X3RlbXBsYXRlLHNpemVvZihzdHJ1Y3QgaTJjX2NsaWVudCkpOworICAgICAgICBtZW1j
cHkoJmlyLT5saXJjLCZsaXJjX3RlbXBsYXRlLHNpemVvZihzdHJ1Y3QgbGlyY19wbHVnaW4pKTsK
KwkKKwlpci0+bGlyYy5kYXRhCQk9IGlyOworCWlyLT5saXJjLm1pbm9yCQk9IG1pbm9yOworCWly
LT5uZXh0a2V5CQk9IC0xOworCisJaTJjX3NldF9jbGllbnRkYXRhKCZpci0+Y2xpZW50LGlyKTsK
KworCXN3aXRjaChhZGRyKQorCXsKKwljYXNlIDB4NjQ6CisJCXN0cm5jcHkoaXItPmNsaWVudC5u
YW1lLCAiUGl4ZWx2aWV3IElSIiwgSTJDX05BTUVfU0laRSk7CisJCWlyLT5saXJjLmNvZGVfbGVu
Z3RoID0gODsKKwkJaXItPmxpcmMuc2FtcGxlX3JhdGUgPSAxMDsKKwkJaXItPmxpcmMuYWRkX3Rv
X2J1ZiA9IGFkZF90b19idWZfcGl4ZWx2aWV3OworCQlicmVhazsKKwljYXNlIDB4NGI6CisJCXN0
cm5jcHkoaXItPmNsaWVudC5uYW1lLCJQVjk1MSBJUiIsIEkyQ19OQU1FX1NJWkUpOworCQlpci0+
bGlyYy5jb2RlX2xlbmd0aCA9IDMyOworCQlpci0+bGlyYy5zYW1wbGVfcmF0ZSA9IDEwOworCQlp
ci0+bGlyYy5hZGRfdG9fYnVmID0gYWRkX3RvX2J1Zl9wdjk1MTsKKwkJYnJlYWs7CisJY2FzZSAw
eDE4OgorCWNhc2UgMHgxYToKKwkJc3RybmNweShpci0+Y2xpZW50Lm5hbWUsIkhhdXBwYXVnZSBJ
UiIsIEkyQ19OQU1FX1NJWkUpOworCQlpci0+bGlyYy5jb2RlX2xlbmd0aCA9IDEzOworCQlpci0+
bGlyYy5zYW1wbGVfcmF0ZSA9IDY7CisJCWlyLT5saXJjLmFkZF90b19idWYgPSBhZGRfdG9fYnVm
X2hhdXA7CisJCWJyZWFrOworCWNhc2UgMHgzMDoKKwkJc3RybmNweShpci0+Y2xpZW50Lm5hbWUs
IktOQyBPTkUgSVIiLCBJMkNfTkFNRV9TSVpFKTsKKwkJaXItPmxpcmMuY29kZV9sZW5ndGggPSA4
OworCQlpci0+bGlyYy5zYW1wbGVfcmF0ZSA9IDEwOworCQlpci0+bGlyYy5hZGRfdG9fYnVmID0g
YWRkX3RvX2J1Zl9rbmMxOworCQlicmVhazsKKwljYXNlIDB4MjE6CisJY2FzZSAweDIzOgorCQlz
dHJuY3B5KGlyLT5jbGllbnQubmFtZSwiVFYtQm94IElSIiwgSTJDX05BTUVfU0laRSk7CisJCWly
LT5saXJjLmNvZGVfbGVuZ3RoID0gODsKKwkJaXItPmxpcmMuc2FtcGxlX3JhdGUgPSAxMDsKKwkJ
aXItPmxpcmMuYWRkX3RvX2J1ZiA9IGFkZF90b19idWZfcGNmODU3NDsKKwkJaXItPmJpdHMgPSBp
ci0+Y2xpZW50LmZsYWdzICYgMHhmZjsKKwkJaXItPmZsYWcgPSAoaXItPmNsaWVudC5mbGFncyA+
PiA4KSAmIDB4ZmY7CisJCWJyZWFrOworCQkKKwlkZWZhdWx0OgorCQkvKiBzaG91bGRuJ3QgaGFw
cGVuICovCisJCWRwcmludGsoRFJJVkVSX05BTUUgIjogdW5rbm93biBpMmMgYWRkcmVzcyAoMHgl
MDJ4KT9cbiIsYWRkcik7CisJCWtmcmVlKGlyKTsKKwkJcmV0dXJuIC0xOworCX0KKwlkcHJpbnRr
KERSSVZFUl9OQU1FICI6IGNoaXAgZm91bmQgQCAweCUwMnggKCVzKVxuIixhZGRyLAorCQkJaXIt
PmNsaWVudC5uYW1lKTsKKwkKKwkvKiByZWdpc3RlciBkZXZpY2UgKi8KKwlpMmNfYXR0YWNoX2Ns
aWVudCgmaXItPmNsaWVudCk7CisJCisJaWYoKHJldCA9IGxpcmNfcmVnaXN0ZXJfcGx1Z2luKCZp
ci0+bGlyYykpKSB7CisJCWRwcmludGsoRFJJVkVSX05BTUUgIjogZGV2aWNlIHJlZ2lzdHJhdGlv
biBmYWlsZWQgd2l0aCAlZFxuIiwKKwkJCQlyZXQpOworCQlrZnJlZShpcik7CisJCXJldHVybiAt
MTsKKwl9CisKKwlpci0+bGlyYy5taW5vciA9IHJldDsKKwlkcHJpbnRrKERSSVZFUl9OQU1FICI6
IGRyaXZlciByZWdpc3RlcmVkXG4iKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGxp
cmNfaTJjX2RldGFjaChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQoreworICAgICAgICBzdHJ1
Y3QgaTJjX2lyICppciA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCWludCBlcnI7CisJ
CisJLyogdW5yZWdpc3RlciBkZXZpY2UgKi8KKwlpZiAoKGVyciA9IGxpcmNfdW5yZWdpc3Rlcl9w
bHVnaW4oaXItPmxpcmMubWlub3IpKSkgeworCQlkcHJpbnRrKERSSVZFUl9OQU1FICI6IGxpcmMg
dW5yZWdpc3RlciBmYWlsZWRcbiIpOworCQlyZXR1cm4gZXJyOworCX0gZWxzZSB7CisJCWRwcmlu
dGsoRFJJVkVSX05BTUUgIjogbGlyYyB1bnJlZ2lzdGVyIHN1Y2Nlc3NmdWxcbiIpOworCX0KKwor
CWlmICgoZXJyID0gaTJjX2RldGFjaF9jbGllbnQoJmlyLT5jbGllbnQpKSkgeworCQlkcHJpbnRr
KERSSVZFUl9OQU1FICI6IGkyYyBkZXRhY2ggZmFpbGVkXG4iKTsKKwkJcmV0dXJuIGVycjsKKwl9
IGVsc2UgeworCQlkcHJpbnRrKERSSVZFUl9OQU1FICI6IGkyYyBkZXRhY2ggc3VjY2Vzc2Z1bFxu
Iik7CisJfQorCisJLyogZnJlZSBtZW1vcnkgKi8KKwlrZnJlZShpcik7CisJcmV0dXJuIDA7Cit9
CisKK3N0YXRpYyBpbnQgbGlyY19pMmNfcHJvYmUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwKSB7
CisJZHByaW50ayhEUklWRVJfTkFNRSAiOiBzdGFydGluZyBwcm9iZSBmb3IgYWRhcHRlciAlcyAo
MHgleClcbiIsCisJCQlhZGFwLT5uYW1lLCBhZGFwLT5pZCk7CisJcmV0dXJuIGkyY19wcm9iZShh
ZGFwLCAmYWRkcl9kYXRhLCBsaXJjX2kyY19hdHRhY2gpOworfQorCitzdGF0aWMgaW50IF9faW5p
dCBsaXJjX2kyY19pbml0KHZvaWQpCit7CisJZHByaW50ayhEUklWRVJfTkFNRSAiOiBpbml0XG4i
KTsKKwlyZXF1ZXN0X21vZHVsZSgiYnR0diIpOworCXJlcXVlc3RfbW9kdWxlKCJsaXJjX2RldiIp
OworCXJldHVybiBpMmNfYWRkX2RyaXZlcigmZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19l
eGl0IGxpcmNfaTJjX2V4aXQodm9pZCkKK3sKKwlkcHJpbnRrKERSSVZFUl9OQU1FICI6IGV4aXRc
biIpOworCWkyY19kZWxfZHJpdmVyKCZkcml2ZXIpOworfQorCittb2R1bGVfaW5pdChsaXJjX2ky
Y19pbml0KTsKK21vZHVsZV9leGl0KGxpcmNfaTJjX2V4aXQpOwpkaWZmIC11ck4gbGludXgtMi42
LjUub3JpZy9kcml2ZXJzL2NoYXIvbGlyYy9saXJjX2l0ODcuYyBsaW51eC0yLjYuNS5uZXcvZHJp
dmVycy9jaGFyL2xpcmMvbGlyY19pdDg3LmMKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy9j
aGFyL2xpcmMvbGlyY19pdDg3LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAK
KysrIGxpbnV4LTIuNi41Lm5ldy9kcml2ZXJzL2NoYXIvbGlyYy9saXJjX2l0ODcuYwkyMDA0LTA1
LTA0IDAxOjIzOjU2LjIzNzU2MzIwOCArMDEwMApAQCAtMCwwICsxLDk1NyBAQAorLyoKKyAqIExJ
UkMgZHJpdmVyIGZvciBJVEUgSVQ4NzEyL0lUODcwNSBDSVIgcG9ydAorICoKKyAqIENvcHlyaWdo
dCAoQykgMjAwMSBIYW5zLUf8bnRlciBM/HRrZSBVcGh1ZXMgPGhnX2x1QHdlYi5kZT4KKyAqCisg
KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlCisgKiBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyAqIFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBT
dWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNworICogVVNBCisgKgorICogSVRFIElUODcw
NSBhbmQgSVQ4NzEyKG5vdCB0ZXN0ZWQpIENJUi1wb3J0IHN1cHBvcnQgZm9yIGxpcmMgYmFzZWQK
KyAqIHZpYSBjdXQgYW5kIHBhc3RlIGZyb20gbGlyY19zaXIuYyAoQykgMjAwMCBNaWxhbiBQaWt1
bGEKKyAqCisgKiBBdHRlbnRpb246IFNlbmRtb2RlIG9ubHkgdGVzdGVkIHdpdGggZGVidWdnaW5n
IGxvZ3MKKyAqCisgKiAyMDAxLzAyLzI3IENocmlzdG9waCBCYXJ0ZWxtdXMgPGxpcmNAYmFydGVs
bXVzLmRlPiA6CisgKiAgIHJlaW1wbGVtZW50ZWQgcmVhZCBmdW5jdGlvbgorICovCisKKworI2lu
Y2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKworI2lu
Y2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisKKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2lu
Y2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvc2lnbmFsLmg+CisjaW5jbHVk
ZSA8bGludXgvZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxs
aW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51
eC9tYWpvci5oPgorI2luY2x1ZGUgPGxpbnV4L3NlcmlhbF9yZWcuaD4KKyNpbmNsdWRlIDxsaW51
eC90aW1lLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvdHlw
ZXMuaD4KKyNpbmNsdWRlIDxsaW51eC93YWl0Lmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNp
bmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KKyNpbmNsdWRl
IDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL3NlZ21lbnQuaD4KKyNpbmNsdWRlIDxhc20v
aW8uaD4KKyNpbmNsdWRlIDxhc20vaXJxLmg+CisjaW5jbHVkZSA8YXNtL2ZjbnRsLmg+CisKKyNp
bmNsdWRlIDxsaW51eC90aW1lci5oPgorCisjaW5jbHVkZSA8bGludXgvbGlyYy5oPgorI2luY2x1
ZGUgImxpcmNfZGV2LmgiCisKKyNpbmNsdWRlICJsaXJjX2l0ODcuaCIKKworc3RhdGljIHVuc2ln
bmVkIGxvbmcgaXQ4N19iaXRzX2luX2J5dGVfb3V0ID0gMDsKK3N0YXRpYyB1bnNpZ25lZCBsb25n
IGl0ODdfc2VuZF9jb3VudGVyID0gMDsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGl0ODdfUlhFTl9t
YXNrID0gSVQ4N19DSVJfUkNSX1JYRU47CisKKyNkZWZpbmUgUkJVRl9MRU4gMTAyNAorI2RlZmlu
ZSBXQlVGX0xFTiAxMDI0CisKKyNkZWZpbmUgTElSQ19EUklWRVJfTkFNRSAibGlyY19pdDg3Igor
CisvKiB0aW1lb3V0IGZvciBzZXF1ZW5jZXMgaW4gamlmZmllcyAoPTUvMTAwcykgKi8KKy8qIG11
c3QgYmUgbG9uZ2VyIHRoYW4gVElNRV9DT05TVCAqLworI2RlZmluZSBJVDg3X1RJTUVPVVQJKEha
KjUvMTAwKQorCitzdGF0aWMgaW50IGlvID0gSVQ4N19DSVJfREVGQVVMVF9JT0JBU0U7CitzdGF0
aWMgaW50IGlycSA9IElUODdfQ0lSX0RFRkFVTFRfSVJROworc3RhdGljIHVuc2lnbmVkIGNoYXIg
aXQ4N19mcmVxID0gMzg7IC8qIGtIeiAqLworLyogcmVjZWl2ZXIgZGVtb2R1bGF0b3IgZGVmYXVs
dDogb2ZmICovCitzdGF0aWMgdW5zaWduZWQgY2hhciBpdDg3X2VuYWJsZV9kZW1vZHVsYXRvciA9
IDA7CisKK3N0YXRpYyBzcGlubG9ja190IHRpbWVyX2xvY2sgPSBTUElOX0xPQ0tfVU5MT0NLRUQ7
CitzdGF0aWMgc3RydWN0IHRpbWVyX2xpc3QgdGltZXJsaXN0OworLyogdGltZSBvZiBsYXN0IHNp
Z25hbCBjaGFuZ2UgZGV0ZWN0ZWQgKi8KK3N0YXRpYyBzdHJ1Y3QgdGltZXZhbCBsYXN0X3R2ID0g
ezAsIDB9OworLyogdGltZSBvZiBsYXN0IFVBUlQgZGF0YSByZWFkeSBpbnRlcnJ1cHQgKi8KK3N0
YXRpYyBzdHJ1Y3QgdGltZXZhbCBsYXN0X2ludHJfdHYgPSB7MCwgMH07CitzdGF0aWMgaW50IGxh
c3RfdmFsdWUgPSAwOworCitzdGF0aWMgREVDTEFSRV9XQUlUX1FVRVVFX0hFQUQobGlyY19yZWFk
X3F1ZXVlKTsKKworc3RhdGljIHNwaW5sb2NrX3QgaGFyZHdhcmVfbG9jayA9IFNQSU5fTE9DS19V
TkxPQ0tFRDsKK3N0YXRpYyBzcGlubG9ja190IGRldl9sb2NrID0gU1BJTl9MT0NLX1VOTE9DS0VE
OworCitzdGF0aWMgbGlyY190IHJ4X2J1ZltSQlVGX0xFTl07IHVuc2lnbmVkIGludCByeF90YWls
ID0gMCwgcnhfaGVhZCA9IDA7CitzdGF0aWMgbGlyY190IHR4X2J1ZltXQlVGX0xFTl07CisKKy8q
IFNFQ1RJT046IFByb3RvdHlwZXMgKi8KKworLyogQ29tbXVuaWNhdGlvbiB3aXRoIHVzZXItc3Bh
Y2UgKi8KK3N0YXRpYyBpbnQgbGlyY19vcGVuKHN0cnVjdCBpbm9kZSAqIGlub2RlLAorCQkgICAg
IHN0cnVjdCBmaWxlICogZmlsZSk7CitzdGF0aWMgaW50IGxpcmNfY2xvc2Uoc3RydWN0IGlub2Rl
ICogaW5vZGUsCisJCSAgICAgIHN0cnVjdCBmaWxlICpmaWxlKTsKK3N0YXRpYyB1bnNpZ25lZCBp
bnQgbGlyY19wb2xsKHN0cnVjdCBmaWxlICogZmlsZSwKKwkJCSAgICAgIHBvbGxfdGFibGUgKiB3
YWl0KTsKK3N0YXRpYyBzc2l6ZV90IGxpcmNfcmVhZChzdHJ1Y3QgZmlsZSAqIGZpbGUsCisJCQkg
Y2hhciAqIGJ1ZiwKKwkJCSBzaXplX3QgY291bnQsCisJCQkgbG9mZl90ICogcHBvcyk7CitzdGF0
aWMgc3NpemVfdCBsaXJjX3dyaXRlKHN0cnVjdCBmaWxlICogZmlsZSwKKwkJCSAgY29uc3QgY2hh
ciAqIGJ1ZiwKKwkJCSAgc2l6ZV90IG4sCisJCQkgIGxvZmZfdCAqIHBvcyk7CitzdGF0aWMgaW50
IGxpcmNfaW9jdGwoc3RydWN0IGlub2RlICpub2RlLAorCQkgICAgICBzdHJ1Y3QgZmlsZSAqZmls
ZXAsCisJCSAgICAgIHVuc2lnbmVkIGludCBjbWQsCisJCSAgICAgIHVuc2lnbmVkIGxvbmcgYXJn
KTsKK3N0YXRpYyB2b2lkIGFkZF9yZWFkX3F1ZXVlKGludCBmbGFnLAorCQkJICAgdW5zaWduZWQg
bG9uZyB2YWwpOworc3RhdGljIGludCBpbml0X2NocmRldih2b2lkKTsKK3N0YXRpYyB2b2lkIGRy
b3BfY2hyZGV2KHZvaWQpOworCS8qIEhhcmR3YXJlICovCitzdGF0aWMgaXJxcmV0dXJuX3QgaXQ4
N19pbnRlcnJ1cHQoaW50IGlycSwKKwkJCSAgIHZvaWQgKiBkZXZfaWQsCisJCQkgICBzdHJ1Y3Qg
cHRfcmVncyAqIHJlZ3MpOworc3RhdGljIHZvaWQgc2VuZF9zcGFjZSh1bnNpZ25lZCBsb25nIGxl
bik7CitzdGF0aWMgdm9pZCBzZW5kX3B1bHNlKHVuc2lnbmVkIGxvbmcgbGVuKTsKK3N0YXRpYyB2
b2lkIGluaXRfc2VuZCh2b2lkKTsKK3N0YXRpYyB2b2lkIHRlcm1pbmF0ZV9zZW5kKHVuc2lnbmVk
IGxvbmcgbGVuKTsKK3N0YXRpYyBpbnQgaW5pdF9oYXJkd2FyZSh2b2lkKTsKK3N0YXRpYyB2b2lk
IGRyb3BfaGFyZHdhcmUodm9pZCk7CisJLyogSW5pdGlhbGlzYXRpb24gKi8KK3N0YXRpYyBpbnQg
aW5pdF9wb3J0KHZvaWQpOworc3RhdGljIHZvaWQgZHJvcF9wb3J0KHZvaWQpOworaW50IGluaXRf
bW9kdWxlKHZvaWQpOwordm9pZCBjbGVhbnVwX21vZHVsZSh2b2lkKTsKKworCisvKiBTRUNUSU9O
OiBDb21tdW5pY2F0aW9uIHdpdGggdXNlci1zcGFjZSAqLworCitzdGF0aWMgaW50IGxpcmNfb3Bl
bihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwKKwkJICAgICBzdHJ1Y3QgZmlsZSAqIGZpbGUpCit7CisJ
c3Bpbl9sb2NrKCZkZXZfbG9jayk7CisjaWZkZWYgQ09ORklHX01PRFVMRV9VTkxPQUQKKwlpZiAo
bW9kdWxlX3JlZmNvdW50KFRISVNfTU9EVUxFKSkKKwl7CisJCXNwaW5fdW5sb2NrKCZkZXZfbG9j
ayk7CisJCXJldHVybiAtRUJVU1k7CisJfQorI2VuZGlmCisJdHJ5X21vZHVsZV9nZXQoVEhJU19N
T0RVTEUpOworCXNwaW5fdW5sb2NrKCZkZXZfbG9jayk7CisJcmV0dXJuIDA7Cit9CisKKworc3Rh
dGljIGludCBsaXJjX2Nsb3NlKHN0cnVjdCBpbm9kZSAqIGlub2RlLAorCQkgICAgICBzdHJ1Y3Qg
ZmlsZSAqZmlsZSkKK3sKKwltb2R1bGVfcHV0KFRISVNfTU9EVUxFKTsKKwlyZXR1cm4gMDsKK30K
KworCitzdGF0aWMgdW5zaWduZWQgaW50IGxpcmNfcG9sbChzdHJ1Y3QgZmlsZSAqIGZpbGUsCisJ
CQkgICAgICBwb2xsX3RhYmxlICogd2FpdCkKK3sKKwlwb2xsX3dhaXQoZmlsZSwgJmxpcmNfcmVh
ZF9xdWV1ZSwgd2FpdCk7CisJaWYgKHJ4X2hlYWQgIT0gcnhfdGFpbCkKKwkJcmV0dXJuIFBPTExJ
TiB8IFBPTExSRE5PUk07CisJcmV0dXJuIDA7Cit9CisKKworc3RhdGljIHNzaXplX3QgbGlyY19y
ZWFkKHN0cnVjdCBmaWxlICogZmlsZSwKKwkJCSBjaGFyICogYnVmLAorCQkJIHNpemVfdCBjb3Vu
dCwKKwkJCSBsb2ZmX3QgKiBwcG9zKQoreworCWludCBuPTA7CisJaW50IHJldHZhbD0wOworCisJ
d2hpbGUobjxjb3VudCkKKwl7CisJCWlmKGZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NLICYmCisJ
CSAgIHJ4X2hlYWQ9PXJ4X3RhaWwpCisJCXsKKwkJCXJldHZhbCA9IC1FQUdBSU47CisJCQlicmVh
azsKKwkJfQorCQlyZXR2YWw9d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGxpcmNfcmVhZF9xdWV1
ZSwKKwkJCQkJCXJ4X2hlYWQhPXJ4X3RhaWwpOworCQlpZihyZXR2YWwpCisJCXsKKwkJCWJyZWFr
OworCQl9CisKKwkJcmV0dmFsPXZlcmlmeV9hcmVhKFZFUklGWV9XUklURSwodm9pZCAqKSBidWYr
biwKKwkJCQkgICBzaXplb2YobGlyY190KSk7CisJCWlmIChyZXR2YWwpCisJCXsKKwkJCXJldHVy
biByZXR2YWw7CisJCX0KKwkJY29weV90b191c2VyKCh2b2lkICopIGJ1ZituLCh2b2lkICopIChy
eF9idWYrcnhfaGVhZCksCisJCQkgICAgIHNpemVvZihsaXJjX3QpKTsKKwkJcnhfaGVhZD0ocnhf
aGVhZCsxKSYoUkJVRl9MRU4tMSk7CisJCW4rPXNpemVvZihsaXJjX3QpOworCX0KKwlpZihuKQor
CXsKKwkJcmV0dXJuIG47CisJfQorCXJldHVybiByZXR2YWw7Cit9CisKKworc3RhdGljIHNzaXpl
X3QgbGlyY193cml0ZShzdHJ1Y3QgZmlsZSAqIGZpbGUsCisJCQkgIGNvbnN0IGNoYXIgKiBidWYs
CisJCQkgIHNpemVfdCBuLAorCQkJICBsb2ZmX3QgKiBwb3MpCit7CisJaW50IGk7CisJaW50IHJl
dHZhbDsKKworICAgICAgICBpZihuJXNpemVvZihsaXJjX3QpIHx8IChuL3NpemVvZihsaXJjX3Qp
KSA+IFdCVUZfTEVOKQorCQlyZXR1cm4oLUVJTlZBTCk7CisJcmV0dmFsID0gdmVyaWZ5X2FyZWEo
VkVSSUZZX1JFQUQsIGJ1Ziwgbik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlj
b3B5X2Zyb21fdXNlcih0eF9idWYsIGJ1Ziwgbik7CisJaSA9IDA7CisJbi89c2l6ZW9mKGxpcmNf
dCk7CisJaW5pdF9zZW5kKCk7CisJd2hpbGUgKDEpIHsKKwkJaWYgKGkgPj0gbikKKwkJCWJyZWFr
OworCQlpZiAodHhfYnVmW2ldKQorCQkJc2VuZF9wdWxzZSh0eF9idWZbaV0pOworCQlpKys7CisJ
CWlmIChpID49IG4pCisJCQlicmVhazsKKwkJaWYgKHR4X2J1ZltpXSkKKwkJCXNlbmRfc3BhY2Uo
dHhfYnVmW2ldKTsKKwkJaSsrOworCX0KKwl0ZXJtaW5hdGVfc2VuZCh0eF9idWZbaS0xXSk7CisJ
cmV0dXJuIG47Cit9CisKKworc3RhdGljIGludCBsaXJjX2lvY3RsKHN0cnVjdCBpbm9kZSAqbm9k
ZSwKKwkJICAgICAgc3RydWN0IGZpbGUgKmZpbGVwLAorCQkgICAgICB1bnNpZ25lZCBpbnQgY21k
LAorCQkgICAgICB1bnNpZ25lZCBsb25nIGFyZykKK3sKKwlpbnQgcmV0dmFsID0gMDsKKwl1bnNp
Z25lZCBsb25nIHZhbHVlID0gMDsKKwl1bnNpZ25lZCBpbnQgaXZhbHVlOworCisJaWYgKGNtZCA9
PSBMSVJDX0dFVF9GRUFUVVJFUykKKwkJdmFsdWUgPSBMSVJDX0NBTl9TRU5EX1BVTFNFIHwKKwkJ
CUxJUkNfQ0FOX1NFVF9TRU5EX0NBUlJJRVIgfAorCQkJTElSQ19DQU5fUkVDX01PREUyOworCWVs
c2UgaWYgKGNtZCA9PSBMSVJDX0dFVF9TRU5EX01PREUpCisJCXZhbHVlID0gTElSQ19NT0RFX1BV
TFNFOworCWVsc2UgaWYgKGNtZCA9PSBMSVJDX0dFVF9SRUNfTU9ERSkKKwkJdmFsdWUgPSBMSVJD
X01PREVfTU9ERTI7CisKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgTElSQ19HRVRfRkVBVFVSRVM6
CisJY2FzZSBMSVJDX0dFVF9TRU5EX01PREU6CisJY2FzZSBMSVJDX0dFVF9SRUNfTU9ERToKKwkJ
cmV0dmFsID0gcHV0X3VzZXIodmFsdWUsICh1bnNpZ25lZCBsb25nICopIGFyZyk7CisJCWJyZWFr
OworCisJY2FzZSBMSVJDX1NFVF9TRU5EX01PREU6CisJY2FzZSBMSVJDX1NFVF9SRUNfTU9ERToK
KwkJcmV0dmFsID0gZ2V0X3VzZXIodmFsdWUsICh1bnNpZ25lZCBsb25nICopIGFyZyk7CisJCWJy
ZWFrOworCisJY2FzZSBMSVJDX1NFVF9TRU5EX0NBUlJJRVI6CisJCXJldHZhbD1nZXRfdXNlcihp
dmFsdWUsKHVuc2lnbmVkIGludCAqKSBhcmcpOworCQlpZihyZXR2YWwpIHJldHVybihyZXR2YWwp
OworCQlpdmFsdWUgLz0gMTAwMDsKKwkJaWYgKGl2YWx1ZSA+IElUODdfQ0lSX0ZSRVFfTUFYIHx8
CisJCSAgICBpdmFsdWUgPCBJVDg3X0NJUl9GUkVRX01JTikgcmV0dXJuKC1FSU5WQUwpOworCisJ
CWl0ODdfZnJlcSA9IGl2YWx1ZTsKKwkJeworCQkJdW5zaWduZWQgbG9uZyBod19mbGFnczsKKwor
CQkJc3Bpbl9sb2NrX2lycXNhdmUoJmhhcmR3YXJlX2xvY2ssIGh3X2ZsYWdzKTsKKwkJCW91dGIo
KChpbmIoaW8gKyBJVDg3X0NJUl9UQ1IyKSAmIElUODdfQ0lSX1RDUjJfVFhNUFcpIHwKKwkJCSAg
ICAgIChpdDg3X2ZyZXEgLSBJVDg3X0NJUl9GUkVRX01JTikgPDwgMyksCisJCQkgICAgIGlvICsg
SVQ4N19DSVJfVENSMik7CisJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoYXJkd2FyZV9sb2Nr
LCBod19mbGFncyk7CisjaWZkZWYgREVCVUcKKwkJCXByaW50ayhLRVJOX0RFQlVHIExJUkNfRFJJ
VkVSX05BTUUKKwkJCSAgICAgICAiIGRlbW9kdWxhdGlvbiBmcmVxdWVuY3k6ICVkIGtIelxuIiwg
aXQ4N19mcmVxKTsKKyNlbmRpZgorCQl9CisKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlyZXR2
YWwgPSAtRU5PSU9DVExDTUQ7CisJfQorCisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsK
KworCWlmIChjbWQgPT0gTElSQ19TRVRfUkVDX01PREUpIHsKKwkJaWYgKHZhbHVlICE9IExJUkNf
TU9ERV9NT0RFMikKKwkJCXJldHZhbCA9IC1FTk9TWVM7CisJfSBlbHNlIGlmIChjbWQgPT0gTElS
Q19TRVRfU0VORF9NT0RFKSB7CisJCWlmICh2YWx1ZSAhPSBMSVJDX01PREVfUFVMU0UpCisJCQly
ZXR2YWwgPSAtRU5PU1lTOworCX0KKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgdm9pZCBh
ZGRfcmVhZF9xdWV1ZShpbnQgZmxhZywKKwkJCSAgIHVuc2lnbmVkIGxvbmcgdmFsKQoreworCXVu
c2lnbmVkIGludCBuZXdfcnhfdGFpbDsKKwlsaXJjX3QgbmV3dmFsOworCisjaWZkZWYgREVCVUdf
U0lHTkFMCisJcHJpbnRrKEtFUk5fREVCVUcgTElSQ19EUklWRVJfTkFNRQorCSAgICAgICAiOiBh
ZGQgZmxhZyAlZCB3aXRoIHZhbCAlbHVcbiIsCisJICAgICAgIGZsYWcsdmFsKTsKKyNlbmRpZgor
CisJbmV3dmFsID0gdmFsICYgUFVMU0VfTUFTSzsKKworCS8qIHN0YXRpc3RpY2FsbHkgcHVsc2Vz
IGFyZSB+VElNRV9DT05TVC8yIHRvbyBsb25nOiB3ZSBjb3VsZAorCSAgIG1heWJlIG1ha2UgdGhp
cyBtb3JlIGV4YWN0bHkgYnV0IHRoaXMgaXMgZ29vZCBlbm91Z2ggKi8KKwlpZihmbGFnKSAvKiBw
dWxzZSAqLyB7CisJCWlmKG5ld3ZhbD5USU1FX0NPTlNULzIpIHsKKwkJCW5ld3ZhbC09VElNRV9D
T05TVC8yOworCQl9CisJCWVsc2UgLyogc2hvdWxkIG5vdCBldmVyIGhhcHBlbiAqLyB7CisJCQlu
ZXd2YWw9MTsKKwkJfQorCQluZXd2YWx8PVBVTFNFX0JJVDsKKwl9CisJZWxzZSB7CisJCW5ld3Zh
bCs9VElNRV9DT05TVC8yOworCX0KKwluZXdfcnhfdGFpbCA9IChyeF90YWlsICsgMSkgJiAoUkJV
Rl9MRU4gLSAxKTsKKwlpZiAobmV3X3J4X3RhaWwgPT0gcnhfaGVhZCkgeworI2lmZGVmIERFQlVH
CisJCXByaW50ayhLRVJOX1dBUk5JTkcgTElSQ19EUklWRVJfTkFNRSAiOiBCdWZmZXIgb3ZlcnJ1
bi5cbiIpOworI2VuZGlmCisJCXJldHVybjsKKwl9CisJcnhfYnVmW3J4X3RhaWxdID0gbmV3dmFs
OworCXJ4X3RhaWwgPSBuZXdfcnhfdGFpbDsKKwl3YWtlX3VwX2ludGVycnVwdGlibGUoJmxpcmNf
cmVhZF9xdWV1ZSk7Cit9CisKKworc3RhdGljIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbGlyY19m
b3BzID0geworCXJlYWQ6ICAgIGxpcmNfcmVhZCwKKwl3cml0ZTogICBsaXJjX3dyaXRlLAorCXBv
bGw6ICAgIGxpcmNfcG9sbCwKKwlpb2N0bDogICBsaXJjX2lvY3RsLAorCW9wZW46ICAgIGxpcmNf
b3BlbiwKKwlyZWxlYXNlOiBsaXJjX2Nsb3NlLAorfTsKKworc3RhdGljIGludCBzZXRfdXNlX2lu
Yyh2b2lkKiBkYXRhKQoreworI2lmIFdFX0RPTlRfVVNFX0xPQ0FMX09QRU5fQ0xPU0UKKyAgICAg
ICB0cnlfbW9kdWxlX2dldChUSElTX01PRFVMRSk7CisjZW5kaWYKKyAgICAgICByZXR1cm4gMDsK
K30KKworc3RhdGljIHZvaWQgc2V0X3VzZV9kZWModm9pZCogZGF0YSkKK3sKKyNpZiBXRV9ET05U
X1VTRV9MT0NBTF9PUEVOX0NMT1NFCisgICAgICAgbW9kdWxlX3B1dChUSElTX01PRFVMRSk7Cisj
ZW5kaWYKK30KK3N0YXRpYyBzdHJ1Y3QgbGlyY19wbHVnaW4gcGx1Z2luID0geworICAgICAgIG5h
bWU6ICAgICAgICAgICBMSVJDX0RSSVZFUl9OQU1FLAorICAgICAgIG1pbm9yOiAgICAgICAgICAt
MSwKKyAgICAgICBjb2RlX2xlbmd0aDogICAgMSwKKyAgICAgICBzYW1wbGVfcmF0ZTogICAgMCwK
KyAgICAgICBkYXRhOiAgICAgICAgICAgTlVMTCwKKyAgICAgICBhZGRfdG9fYnVmOiAgICAgTlVM
TCwKKyAgICAgICBnZXRfcXVldWU6ICAgICAgTlVMTCwKKyAgICAgICBzZXRfdXNlX2luYzogICAg
c2V0X3VzZV9pbmMsCisgICAgICAgc2V0X3VzZV9kZWM6ICAgIHNldF91c2VfZGVjLAorICAgICAg
IGZvcHM6ICAgICAgICAgICAmbGlyY19mb3BzLAorfTsKKworCitpbnQgaW5pdF9jaHJkZXYodm9p
ZCkKK3sKKwlwbHVnaW4ubWlub3IgPSBsaXJjX3JlZ2lzdGVyX3BsdWdpbigmcGx1Z2luKTsKKwor
CWlmIChwbHVnaW4ubWlub3IgPCAwKSB7CisJCXByaW50ayhLRVJOX0VSUiBMSVJDX0RSSVZFUl9O
QU1FICI6IGluaXRfY2hyZGV2KCkgZmFpbGVkLlxuIik7CisJCXJldHVybiAtRUlPOworCX0KKwly
ZXR1cm4gMDsKK30KKworCitzdGF0aWMgdm9pZCBkcm9wX2NocmRldih2b2lkKQoreworCWxpcmNf
dW5yZWdpc3Rlcl9wbHVnaW4ocGx1Z2luLm1pbm9yKTsKK30KKworLyogU0VDVElPTjogSGFyZHdh
cmUgKi8KK3N0YXRpYyBsb25nIGRlbHRhKHN0cnVjdCB0aW1ldmFsICogdHYxLAorCQkgIHN0cnVj
dCB0aW1ldmFsICogdHYyKQoreworCXVuc2lnbmVkIGxvbmcgZGVsdHY7CisKKwlkZWx0diA9IHR2
Mi0+dHZfc2VjIC0gdHYxLT50dl9zZWM7CisJaWYgKGRlbHR2ID4gMTUpCisJCWRlbHR2ID0gMHhG
RkZGRkY7CisJZWxzZQorCQlkZWx0diA9IGRlbHR2KjEwMDAwMDAgKworCQkJdHYyLT50dl91c2Vj
IC0KKwkJCXR2MS0+dHZfdXNlYzsKKwlyZXR1cm4gZGVsdHY7Cit9CisKKworc3RhdGljIHZvaWQg
aXQ4N190aW1lb3V0KHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwkvKiBpZiBsYXN0IHJlY2VpdmVk
IHNpZ25hbCB3YXMgYSBwdWxzZSwgYnV0IHJlY2VpdmluZyBzdG9wcGVkCisJICAgd2l0aGluIHRo
ZSA5IGJpdCBmcmFtZSwgd2UgbmVlZCB0byBmaW5pc2ggdGhpcyBwdWxzZSBhbmQKKwkgICBzaW11
bGF0ZSBhIHNpZ25hbCBjaGFuZ2UgdG8gZnJvbSBwdWxzZSB0byBzcGFjZS4gT3RoZXJ3aXNlCisJ
ICAgdXBwZXIgbGF5ZXJzIHdpbGwgcmVjZWl2ZSB0d28gc2VxdWVuY2VzIG5leHQgdGltZS4gKi8K
KworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgbG9uZyBwdWxzZV9lbmQ7CisKKwkv
KiBhdm9pZCBpbnRlcmZlcmVuY2Ugd2l0aCBpbnRlcnJ1cHQgKi8KKyAJc3Bpbl9sb2NrX2lycXNh
dmUoJnRpbWVyX2xvY2ssIGZsYWdzKTsKKwlpZiAobGFzdF92YWx1ZSkgeworCQkvKiBkZXRlcm1p
bmUgJ3ZpcnR1YWwnIHB1bHNlIGVuZDogKi8KKwkgCXB1bHNlX2VuZCA9IGRlbHRhKCZsYXN0X3R2
LCAmbGFzdF9pbnRyX3R2KTsKKyNpZmRlZiBERUJVR19TSUdOQUwKKwkJcHJpbnRrKEtFUk5fREVC
VUcgTElSQ19EUklWRVJfTkFNRQorCQkgICAgICAgIjogdGltZW91dCBhZGQgJWQgZm9yICVsdSB1
c2VjXG4iLAorCQkgICAgICAgbGFzdF92YWx1ZSwKKwkJICAgICAgIHB1bHNlX2VuZCk7CisjZW5k
aWYKKwkJYWRkX3JlYWRfcXVldWUobGFzdF92YWx1ZSwKKwkJCSAgICAgICBwdWxzZV9lbmQpOwor
CQlsYXN0X3ZhbHVlID0gMDsKKwkJbGFzdF90dj1sYXN0X2ludHJfdHY7CisJfQorCXNwaW5fdW5s
b2NrX2lycXJlc3RvcmUoJnRpbWVyX2xvY2ssIGZsYWdzKTsKK30KKworCitzdGF0aWMgaXJxcmV0
dXJuX3QgaXQ4N19pbnRlcnJ1cHQoaW50IGlycSwKKwkJCSAgIHZvaWQgKiBkZXZfaWQsCisJCQkg
ICBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MpCit7CisJdW5zaWduZWQgY2hhciBkYXRhOworCXN0cnVj
dCB0aW1ldmFsIGN1cnJfdHY7CisJc3RhdGljIHVuc2lnbmVkIGxvbmcgZGVsdHY7CisJdW5zaWdu
ZWQgbG9uZyBkZWx0aW50cnR2OworCXVuc2lnbmVkIGxvbmcgZmxhZ3MsIGh3X2ZsYWdzOworCWlu
dCBpaXIsIGxzcjsKKwlpbnQgZmlmbyA9IDA7CisKKwlpaXIgPSBpbmIoaW8gKyBJVDg3X0NJUl9J
SVIpOworCisJc3dpdGNoIChpaXIgJiBJVDg3X0NJUl9JSVJfSUlEKSB7CisJY2FzZSAweDQ6CisJ
Y2FzZSAweDY6CisJCWxzciA9IGluYihpbyArIElUODdfQ0lSX1JTUikgJiAoSVQ4N19DSVJfUlNS
X1JYRlRPIHwKKwkJCQkJCSAgICBJVDg3X0NJUl9SU1JfUlhGQkMpOworCQlmaWZvID0gbHNyICYg
SVQ4N19DSVJfUlNSX1JYRkJDOworI2lmZGVmIERFQlVHX1NJR05BTAorCQlwcmludGsoS0VSTl9E
RUJVRyBMSVJDX0RSSVZFUl9OQU1FCisJCSAgICAgICAiaWlyOiAweCV4IGZpZm86IDB4JXhcbiIs
IGlpciwgbHNyKTsKKyNlbmRpZgorCisJCS8qIGF2b2lkIGludGVyZmVyZW5jZSB3aXRoIHRpbWVy
ICovCisJCXNwaW5fbG9ja19pcnFzYXZlKCZ0aW1lcl9sb2NrLCBmbGFncyk7CisJCXNwaW5fbG9j
a19pcnFzYXZlKCZoYXJkd2FyZV9sb2NrLCBod19mbGFncyk7CisJCWRvIHsKKwkJCWRlbF90aW1l
cigmdGltZXJsaXN0KTsKKwkJCWRhdGEgPSBpbmIoaW8gKyBJVDg3X0NJUl9EUik7CisjaWZkZWYg
REVCVUdfU0lHTkFMCisJCQlwcmludGsoS0VSTl9ERUJVRyBMSVJDX0RSSVZFUl9OQU1FCisJCQkg
ICAgICAgIjogZGF0YT0lLjJ4XG4iLAorCQkJICAgICAgIGRhdGEpOworI2VuZGlmCisJCQlkb19n
ZXR0aW1lb2ZkYXkoJmN1cnJfdHYpOworCQkJZGVsdHYgPSBkZWx0YSgmbGFzdF90diwgJmN1cnJf
dHYpOworCQkJZGVsdGludHJ0diA9IGRlbHRhKCZsYXN0X2ludHJfdHYsICZjdXJyX3R2KTsKKyNp
ZmRlZiBERUJVR19TSUdOQUwKKwkJCXByaW50ayhLRVJOX0RFQlVHIExJUkNfRFJJVkVSX05BTUUK
KwkJCSAgICAgICAiOiB0ICVsdSAsIGQgJWRcbiIsCisJCQkgICAgICAgZGVsdGludHJ0diwKKwkJ
CSAgICAgICAoaW50KWRhdGEpOworI2VuZGlmCisJCQkvKiBpZiBub3RoaW5nIGNhbWUgaW4gbGFz
dCAyIGN5Y2xlcywKKwkJCSAgIGl0IHdhcyBnYXAgKi8KKwkJCWlmIChkZWx0aW50cnR2ID4gVElN
RV9DT05TVCAqIDIpIHsKKwkJCQlpZiAobGFzdF92YWx1ZSkgeworI2lmZGVmIERFQlVHX1NJR05B
TAorCQkJCQlwcmludGsoS0VSTl9ERUJVRyBMSVJDX0RSSVZFUl9OQU1FICI6IEdBUFxuIik7Cisj
ZW5kaWYKKwkJCQkJLyogc2ltdWxhdGUgc2lnbmFsIGNoYW5nZSAqLworCQkJCQlhZGRfcmVhZF9x
dWV1ZShsYXN0X3ZhbHVlLAorCQkJCQkJICAgICAgIGRlbHR2LQorCQkJCQkJICAgICAgIGRlbHRp
bnRydHYpOworCQkJCQlsYXN0X3ZhbHVlID0gMDsKKwkJCQkJbGFzdF90di50dl9zZWMgPSBsYXN0
X2ludHJfdHYudHZfc2VjOworCQkJCQlsYXN0X3R2LnR2X3VzZWMgPSBsYXN0X2ludHJfdHYudHZf
dXNlYzsKKwkJCQkJZGVsdHYgPSBkZWx0aW50cnR2OworCQkJCX0KKwkJCX0KKwkJCWRhdGEgPSAx
OworCQkJaWYgKGRhdGEgXiBsYXN0X3ZhbHVlKSB7CisJCQkJLyogZGVsdGludHJ0diA+IDIqVElN
RV9DT05TVCwKKwkJCQkgICByZW1lbWJlciA/ICovCisJCQkJLyogdGhlIG90aGVyIGNhc2UgaXMg
dGltZW91dCAqLworCQkJCWFkZF9yZWFkX3F1ZXVlKGxhc3RfdmFsdWUsCisJCQkJCSAgICAgICBk
ZWx0di1USU1FX0NPTlNUKTsKKwkJCQlsYXN0X3ZhbHVlID0gZGF0YTsKKwkJCQlsYXN0X3R2ID0g
Y3Vycl90djsKKwkJCQlpZihsYXN0X3R2LnR2X3VzZWM+PVRJTUVfQ09OU1QpIHsKKwkJCQkJbGFz
dF90di50dl91c2VjLT1USU1FX0NPTlNUOworCQkJCX0KKwkJCQllbHNlIHsKKwkJCQkJbGFzdF90
di50dl9zZWMtLTsKKwkJCQkJbGFzdF90di50dl91c2VjKz0xMDAwMDAwLQorCQkJCQkJVElNRV9D
T05TVDsKKwkJCQl9CisJCQl9CisJCQlsYXN0X2ludHJfdHYgPSBjdXJyX3R2OworCQkJaWYgKGRh
dGEpIHsKKwkJCQkvKiBzdGFydCB0aW1lciBmb3IgZW5kIG9mIHNlcXVlbmNlIGRldGVjdGlvbiAq
LworCQkJCXRpbWVybGlzdC5leHBpcmVzID0gamlmZmllcyArIElUODdfVElNRU9VVDsKKwkJCQlh
ZGRfdGltZXIoJnRpbWVybGlzdCk7CisJCQl9CisJCQlvdXRiKChpbmIoaW8gKyBJVDg3X0NJUl9S
Q1IpICYgfklUODdfQ0lSX1JDUl9SWEVOKSB8CisJCQkgICAgIElUODdfQ0lSX1JDUl9SWEFDVCwK
KwkJCSAgICAgaW8gKyBJVDg3X0NJUl9SQ1IpOworCQkJaWYgKGl0ODdfUlhFTl9tYXNrKSB7CisJ
CQkJb3V0YihpbmIoaW8gKyBJVDg3X0NJUl9SQ1IpIHwgSVQ4N19DSVJfUkNSX1JYRU4sCisJCQkJ
ICAgICBpbyArIElUODdfQ0lSX1JDUik7CisJCQl9CisJCQlmaWZvLS07CisJCX0KKwkJd2hpbGUg
KGZpZm8gIT0gMCk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhhcmR3YXJlX2xvY2ssIGh3
X2ZsYWdzKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGltZXJfbG9jaywgZmxhZ3MpOwor
CQlicmVhazsKKworCWRlZmF1bHQ6CisJCS8qIG5vdCBvdXIgaXJxICovCisjaWZkZWYgREVCVUdf
U0lHTkFMCisJCXByaW50ayhLRVJOX0RFQlVHIExJUkNfRFJJVkVSX05BTUUKKwkJICAgICAgICJ1
bmtub3duIElSUSAoc2hvdWxkbid0IGhhcHBlbikgISFcbiIpOworI2VuZGlmCisJCWJyZWFrOwor
CX0KKwlyZXR1cm4gSVJRX0hBTkRMRUQ7IC8vRklYTUUgdHJ1ZSBzdGF0dXMgc2hvdWxkIGJlIHJl
dHVybmVkIChpbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oKQorfQorCisKK3N0YXRpYyB2b2lkIHNl
bmRfaXQ4Nyh1bnNpZ25lZCBsb25nIGxlbiwKKwkJICAgICAgdW5zaWduZWQgbG9uZyBzdGltZSwK
KwkJICAgICAgdW5zaWduZWQgY2hhciBzZW5kX2J5dGUsCisJCSAgICAgIHVuc2lnbmVkIGludCBj
b3VudF9iaXRzKQoreworICAgICAgICBsb25nIGNvdW50ID0gbGVuIC8gc3RpbWU7CisJbG9uZyB0
aW1lX2xlZnQgPSAwOworCXN0YXRpYyB1bnNpZ25lZCBjaGFyIGJ5dGVfb3V0ID0gMDsKKworI2lm
ZGVmIERFQlVHX1NJR05BTAorCXByaW50ayhLRVJOX0RFQlVHIExJUkNfRFJJVkVSX05BTUUKKwkg
ICAgICAgInNlbmRfaXQ4NzogbGVuPSVsZCwgc2I9JWRcbiIsCisJICAgICAgIGxlbiwKKwkgICAg
ICAgc2VuZF9ieXRlKTsKKyNlbmRpZgorCXRpbWVfbGVmdCA9IChsb25nKWxlbiAtIChsb25nKWNv
dW50ICogKGxvbmcpc3RpbWU7CisJY291bnQgKz0gKCgyICogdGltZV9sZWZ0KSAvIHN0aW1lKTsK
Kwl3aGlsZSAoY291bnQpIHsKKwkJbG9uZyBpPTA7CisJCWZvciAoaT0wOyBpPGNvdW50X2JpdHM7
IGkrKykgeworCQkJYnl0ZV9vdXQgPSAoYnl0ZV9vdXQgPDwgMSkgfCAoc2VuZF9ieXRlICYgMSk7
CisJCQlpdDg3X2JpdHNfaW5fYnl0ZV9vdXQrKzsKKwkJfQorCQlpZiAoaXQ4N19iaXRzX2luX2J5
dGVfb3V0ID09IDgpIHsKKyNpZmRlZiBERUJVR19TSUdOQUwKKwkJCXByaW50ayhLRVJOX0RFQlVH
IExJUkNfRFJJVkVSX05BTUUKKwkJCSAgICAgICAib3V0PTB4JXgsIHRzcl90eGZiYzogMHgleFxu
IiwKKwkJCSAgICAgICBieXRlX291dCwKKwkJCSAgICAgICBpbmIoaW8gKyBJVDg3X0NJUl9UU1Ip
ICYKKwkJCSAgICAgICBJVDg3X0NJUl9UU1JfVFhGQkMpOworI2VuZGlmCisJCQl3aGlsZSAoKGlu
YihpbyArIElUODdfQ0lSX1RTUikgJgorCQkJCUlUODdfQ0lSX1RTUl9UWEZCQykgPj0gSVQ4N19D
SVJfRklGT19TSVpFKTsKKwkJCXsKKwkJCQl1bnNpZ25lZCBsb25nIGh3X2ZsYWdzOworCisJCQkJ
c3Bpbl9sb2NrX2lycXNhdmUoJmhhcmR3YXJlX2xvY2ssIGh3X2ZsYWdzKTsKKwkJCQlvdXRiKGJ5
dGVfb3V0LCBpbyArIElUODdfQ0lSX0RSKTsKKwkJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZo
YXJkd2FyZV9sb2NrLCBod19mbGFncyk7CisJCQl9CisJCQlpdDg3X2JpdHNfaW5fYnl0ZV9vdXQg
PSAwOworCQkJaXQ4N19zZW5kX2NvdW50ZXIrKzsKKwkJCWJ5dGVfb3V0ID0gMDsKKwkJfQorCQlj
b3VudC0tOworCX0KK30KKworCisvKgorbWF5YmU6IGV4Y2hhbmdlIHNwYWNlIGFuZCBwdWxzZSBi
ZWNhdXNlCitpdDg3MDUgb25seSBtb2R1bGF0ZXMgMC1iaXRzCisqLworCisKK3N0YXRpYyB2b2lk
IHNlbmRfc3BhY2UodW5zaWduZWQgbG9uZyBsZW4pCit7CisJc2VuZF9pdDg3KGxlbiwKKwkJICBU
SU1FX0NPTlNULAorCQkgIElUODdfQ0lSX1NQQUNFLAorCQkgIElUODdfQ0lSX0JBVURSQVRFX0RJ
VklTT1IpOworfQorCitzdGF0aWMgdm9pZCBzZW5kX3B1bHNlKHVuc2lnbmVkIGxvbmcgbGVuKQor
eworCXNlbmRfaXQ4NyhsZW4sCisJCSAgVElNRV9DT05TVCwKKwkJICBJVDg3X0NJUl9QVUxTRSwK
KwkJICBJVDg3X0NJUl9CQVVEUkFURV9ESVZJU09SKTsKK30KKworCitzdGF0aWMgdm9pZCBpbml0
X3NlbmQoKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgm
aGFyZHdhcmVfbG9jaywgZmxhZ3MpOworCS8qIFJYRU49MDogcmVjZWl2ZXIgZGlzYWJsZSAqLwor
CWl0ODdfUlhFTl9tYXNrID0gMDsKKwlvdXRiKGluYihpbyArIElUODdfQ0lSX1JDUikgJiB+SVQ4
N19DSVJfUkNSX1JYRU4sCisJICAgICBpbyArIElUODdfQ0lSX1JDUik7CisJc3Bpbl91bmxvY2tf
aXJxcmVzdG9yZSgmaGFyZHdhcmVfbG9jaywgZmxhZ3MpOworCWl0ODdfYml0c19pbl9ieXRlX291
dCA9IDA7CisJaXQ4N19zZW5kX2NvdW50ZXIgPSAwOworfQorCisKK3N0YXRpYyB2b2lkIHRlcm1p
bmF0ZV9zZW5kKHVuc2lnbmVkIGxvbmcgbGVuKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJ
dW5zaWduZWQgbG9uZyBsYXN0ID0gMDsKKworCWxhc3QgPSBpdDg3X3NlbmRfY291bnRlcjsKKwkv
KiBtYWtlIHN1cmUgYWxsIG5lY2Vzc2FyeSBkYXRhIGhhcyBiZWVuIHNlbnQgKi8KKwl3aGlsZSAo
bGFzdCA9PSBpdDg3X3NlbmRfY291bnRlcikKKwkJc2VuZF9zcGFjZShsZW4pOworCS8qIHdhaXQg
dW50aWwgYWxsIGRhdGEgc2VudCAqLworCXdoaWxlICgoaW5iKGlvICsgSVQ4N19DSVJfVFNSKSAm
IElUODdfQ0lSX1RTUl9UWEZCQykgIT0gMCk7CisJLyogdGhlbiByZWVuYWJsZSByZWNlaXZlciAq
LworCXNwaW5fbG9ja19pcnFzYXZlKCZoYXJkd2FyZV9sb2NrLCBmbGFncyk7CisJaXQ4N19SWEVO
X21hc2sgPSBJVDg3X0NJUl9SQ1JfUlhFTjsKKwlvdXRiKGluYihpbyArIElUODdfQ0lSX1JDUikg
fCBJVDg3X0NJUl9SQ1JfUlhFTiwKKwkgICAgIGlvICsgSVQ4N19DSVJfUkNSKTsKKwlzcGluX3Vu
bG9ja19pcnFyZXN0b3JlKCZoYXJkd2FyZV9sb2NrLCBmbGFncyk7Cit9CisKKworc3RhdGljIGlu
dCBpbml0X2hhcmR3YXJlKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1bnNpZ25l
ZCBjaGFyIGl0ODdfcmNyID0gMDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZoYXJkd2FyZV9sb2Nr
LCBmbGFncyk7CisJLyogaW5pdCBjaXItcG9ydCAqLworCS8qIGVuYWJsZSByL3ctYWNjZXNzIHRv
IEJhdWRyYXRlLVJlZ2lzdGVyICovCisJb3V0YihJVDg3X0NJUl9JRVJfQlIsIGlvICsgSVQ4N19D
SVJfSUVSKTsKKwlvdXRiKElUODdfQ0lSX0JBVURSQVRFX0RJVklTT1IgJSAweDEwMCwgaW8rSVQ4
N19DSVJfQkRMUik7CisJb3V0YihJVDg3X0NJUl9CQVVEUkFURV9ESVZJU09SIC8gMHgxMDAsIGlv
K0lUODdfQ0lSX0JESFIpOworCS8qIEJhdWRyYXRlIFJlZ2lzdGVyIG9mZiwgZGVmaW5lIElSUXM6
IElucHV0IG9ubHkgKi8KKwlvdXRiKElUODdfQ0lSX0lFUl9JRUMgfCBJVDg3X0NJUl9JRVJfUkRB
SUUsIGlvICsgSVQ4N19DSVJfSUVSKTsKKwkvKiBSWDogSENGUz0wLCBSWERDUiA9IDAwMWIgKDM1
LDYuLjQwLDMga0h6KSwgUlhFTj0xICovCisJaXQ4N19yY3IgPSAoSVQ4N19DSVJfUkNSX1JYRU4g
JiBpdDg3X1JYRU5fbWFzaykgfCAweDE7CisJaWYgKGl0ODdfZW5hYmxlX2RlbW9kdWxhdG9yKQor
CQlpdDg3X3JjciB8PSBJVDg3X0NJUl9SQ1JfUlhFTkQ7CisJb3V0YihpdDg3X3JjciwgaW8gKyBJ
VDg3X0NJUl9SQ1IpOworCS8qIFRYOiAzOGtIeiwgMTMsM3VzIChwdWxzZS13aWR0aCAqLworCW91
dGIoKChpdDg3X2ZyZXEgLSBJVDg3X0NJUl9GUkVRX01JTikgPDwgMykgfCAweDA2LAorCSAgICAg
aW8gKyBJVDg3X0NJUl9UQ1IyKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoYXJkd2FyZV9s
b2NrLCBmbGFncyk7CisJcmV0dXJuIDA7Cit9CisKKworc3RhdGljIHZvaWQgZHJvcF9oYXJkd2Fy
ZSh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgm
aGFyZHdhcmVfbG9jaywgZmxhZ3MpOworCWRpc2FibGVfaXJxKGlycSk7CisJLyogcmVjZWl2ZXIg
ZGlzYWJsZSAqLworCWl0ODdfUlhFTl9tYXNrID0gMDsKKwlvdXRiKDB4MSwgaW8gKyBJVDg3X0NJ
Ul9SQ1IpOworCS8qIHR1cm4gb2ZmIGlycXMgKi8KKwlvdXRiKDAsIGlvICsgSVQ4N19DSVJfSUVS
KTsKKwkvKiBmaWZvIGNsZWFyICovCisgICAgICAgIG91dGIoSVQ4N19DSVJfVENSMV9GSUZPQ0xS
LCBpbytJVDg3X0NJUl9UQ1IxKTsKKyAgICAgICAgLyogcmVzZXQgKi8KKyAgICAgICAgb3V0YihJ
VDg3X0NJUl9JRVJfUkVTRVQsIGlvK0lUODdfQ0lSX0lFUik7CisJZW5hYmxlX2lycShpcnEpOwor
CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhhcmR3YXJlX2xvY2ssIGZsYWdzKTsKK30KKworCitz
dGF0aWMgdW5zaWduZWQgY2hhciBpdDg3X3JlYWQodW5zaWduZWQgY2hhciBwb3J0KQoreworCW91
dGIocG9ydCwgSVQ4N19BRFJQT1JUKTsKKwlyZXR1cm4gaW5iKElUODdfREFUQVBPUlQpOworfQor
CisKK3N0YXRpYyB2b2lkIGl0ODdfd3JpdGUodW5zaWduZWQgY2hhciBwb3J0LAorCQkgICAgICAg
dW5zaWduZWQgY2hhciBkYXRhKQoreworCW91dGIocG9ydCwgSVQ4N19BRFJQT1JUKTsKKwlvdXRi
KGRhdGEsIElUODdfREFUQVBPUlQpOworfQorCisKKy8qIFNFQ1RJT046IEluaXRpYWxpc2F0aW9u
ICovCisKK3N0YXRpYyBpbnQgaW5pdF9wb3J0KHZvaWQpCit7CisJaW50IHJldHZhbCA9IDA7CisK
Kwl1bnNpZ25lZCBjaGFyIGluaXRfYnl0ZXNbNF0gPSB7SVQ4N19JTklUfTsKKwl1bnNpZ25lZCBj
aGFyIGl0ODdfY2hpcGlkID0gMDsKKwl1bnNpZ25lZCBjaGFyIGxkbiA9IDA7CisJdW5zaWduZWQg
aW50ICBpdDg3X2lvID0gMDsKKwl1bnNpZ25lZCBpbnQgIGl0ODdfaXJxID0gMDsKKworCS8qIEVu
dGVyIE1CIFBuUCBNb2RlICovCisJb3V0Yihpbml0X2J5dGVzWzBdLCBJVDg3X0FEUlBPUlQpOwor
CW91dGIoaW5pdF9ieXRlc1sxXSwgSVQ4N19BRFJQT1JUKTsKKwlvdXRiKGluaXRfYnl0ZXNbMl0s
IElUODdfQURSUE9SVCk7CisJb3V0Yihpbml0X2J5dGVzWzNdLCBJVDg3X0FEUlBPUlQpOworCisJ
LyogODcxMiBvciA4NzA1ID8gKi8KKwlpdDg3X2NoaXBpZCA9IGl0ODdfcmVhZChJVDg3X0NISVBf
SUQxKTsKKwlpZiAoaXQ4N19jaGlwaWQgIT0gMHg4NykgeworCQlyZXR2YWwgPSAtRU5YSU87CisJ
CXJldHVybiByZXR2YWw7CisJfQorCWl0ODdfY2hpcGlkID0gaXQ4N19yZWFkKElUODdfQ0hJUF9J
RDIpOworCWlmICgoaXQ4N19jaGlwaWQgIT0gMHgxMikgJiYgKGl0ODdfY2hpcGlkICE9IDB4MDUp
KSB7CisJCXByaW50ayhLRVJOX0lORk8gTElSQ19EUklWRVJfTkFNRQorCQkgICAgICAgIjogbm8g
SVQ4NzA1LzEyIGZvdW5kLCBleGl0aW5nLi5cbiIpOworCQlyZXR2YWwgPSAtRU5YSU87CisJCXJl
dHVybiByZXR2YWw7CisJfQorCXByaW50ayhLRVJOX0lORk8gTElSQ19EUklWRVJfTkFNRQorCSAg
ICAgICAiOiBmb3VuZCBJVDg3JS4yeC5cbiIsCisJICAgICAgIGl0ODdfY2hpcGlkKTsKKworCS8q
IGdldCBJL08tUG9ydCBhbmQgSVJRICovCisJaWYgKGl0ODdfY2hpcGlkID09IDB4MTIpCisJCWxk
biA9IElUODcxMl9DSVJfTEROOworCWVsc2UKKwkJbGRuID0gSVQ4NzA1X0NJUl9MRE47CisJaXQ4
N193cml0ZShJVDg3X0xETiwgbGRuKTsKKworCWl0ODdfaW8gPSBpdDg3X3JlYWQoSVQ4N19DSVJf
QkFTRV9NU0IpICogMjU2ICsKKwkJaXQ4N19yZWFkKElUODdfQ0lSX0JBU0VfTFNCKTsKKwlpZiAo
aXQ4N19pbyA9PSAwKSB7CisJCWlmIChpbyA9PSAwKQorCQkJaW8gPSBJVDg3X0NJUl9ERUZBVUxU
X0lPQkFTRTsKKwkJcHJpbnRrKEtFUk5fSU5GTyBMSVJDX0RSSVZFUl9OQU1FCisJCSAgICAgICAi
OiBzZXQgZGVmYXVsdCBpbyAweCV4XG4iLAorCQkgICAgICAgaW8pOworCQlpdDg3X3dyaXRlKElU
ODdfQ0lSX0JBU0VfTVNCLCBpbyAvIDB4MTAwKTsKKwkJaXQ4N193cml0ZShJVDg3X0NJUl9CQVNF
X0xTQiwgaW8gJSAweDEwMCk7CisJfQorCWVsc2UKKwkJaW8gPSBpdDg3X2lvOworCisJaXQ4N19p
cnEgPSBpdDg3X3JlYWQoSVQ4N19DSVJfSVJRKTsKKwlpZiAoaXQ4N19pcnEgPT0gMCkgeworCQlp
ZiAoaXJxID09IDApCisJCQlpcnEgPSBJVDg3X0NJUl9ERUZBVUxUX0lSUTsKKwkJcHJpbnRrKEtF
Uk5fSU5GTyBMSVJDX0RSSVZFUl9OQU1FCisJCSAgICAgICAiOiBzZXQgZGVmYXVsdCBpcnEgMHgl
eFxuIiwKKwkJICAgICAgIGlycSk7CisJCWl0ODdfd3JpdGUoSVQ4N19DSVJfSVJRLCBpcnEpOwor
CX0KKwllbHNlCisJCWlycSA9IGl0ODdfaXJxOworCisJeworCQl1bnNpZ25lZCBsb25nIGh3X2Zs
YWdzOworCisJCXNwaW5fbG9ja19pcnFzYXZlKCZoYXJkd2FyZV9sb2NrLCBod19mbGFncyk7CisJ
CS8qIHJlc2V0ICovCisJCW91dGIoSVQ4N19DSVJfSUVSX1JFU0VULCBpbytJVDg3X0NJUl9JRVIp
OworCQkvKiBmaWZvIGNsZWFyICovCisJCW91dGIoSVQ4N19DSVJfVENSMV9GSUZPQ0xSIHwKKwkJ
ICAgICAvKgkgICAgIElUODdfQ0lSX1RDUjFfSUxFIHwgKi8KKwkJICAgICBJVDg3X0NJUl9UQ1Ix
X1RYUkxFIHwKKwkJICAgICBJVDg3X0NJUl9UQ1IxX1RYRU5ERiwgaW8rSVQ4N19DSVJfVENSMSk7
CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhhcmR3YXJlX2xvY2ssIGh3X2ZsYWdzKTsKKwl9
CisKKwkvKiBnZXQgSS9PIHBvcnQgYWNjZXNzIGFuZCBJUlEgbGluZSAqLworCXJldHZhbCA9IHJl
cXVlc3RfcmVnaW9uKGlvLCA4LCBMSVJDX0RSSVZFUl9OQU1FKTsKKworCWlmICghcmV0dmFsKSB7
CisJCXByaW50ayhLRVJOX0VSUiBMSVJDX0RSSVZFUl9OQU1FCisJCSAgICAgICAiOiBVbmFibGUg
dG8gcmVzZXJ2ZSBJTyByZWdpb24gZm9yIExJUkMgSVQ4Ny4gUG9ydCAweCUuNHggYWxyZWFkeSBp
biB1c2UuXG4iLAorCQkgICAgICAgaW8pOworCQkvKiBMZWF2aW5nIE1CIFBuUCBNb2RlICovCisJ
CWl0ODdfd3JpdGUoSVQ4N19DRkdDVFJMLCAweDIpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKwor
CS8qIGFjdGl2YXRlIENJUi1EZXZpY2UgKi8KKwlpdDg3X3dyaXRlKElUODdfQ0lSX0FDVCwgMHgx
KTsKKworCS8qIExlYXZpbmcgTUIgUG5QIE1vZGUgKi8KKwlpdDg3X3dyaXRlKElUODdfQ0ZHQ1RS
TCwgMHgyKTsKKworCXJldHZhbCA9IHJlcXVlc3RfaXJxKGlycSwgaXQ4N19pbnRlcnJ1cHQsIDAg
LypTQV9JTlRFUlJVUFQqLywKKwkJCSAgICAgTElSQ19EUklWRVJfTkFNRSwgTlVMTCk7CisJaWYg
KHJldHZhbCA8IDApIHsKKwkJcHJpbnRrKEtFUk5fRVJSIExJUkNfRFJJVkVSX05BTUUKKwkJICAg
ICAgICI6IElSUSAlZCBhbHJlYWR5IGluIHVzZS5cbiIsCisJCSAgICAgICBpcnEpOworCQlyZXR1
cm4gcmV0dmFsOworCX0KKworCXByaW50ayhLRVJOX0lORk8gTElSQ19EUklWRVJfTkFNRQorCSAg
ICAgICAiOiBJL08gcG9ydCAweCUuNHgsIElSUSAlZC5cbiIsCisJICAgICAgIGlvLAorCSAgICAg
ICBpcnEpOworCisJcmVxdWVzdF9yZWdpb24oaW8sIDgsIExJUkNfRFJJVkVSX05BTUUpOworCWlu
aXRfdGltZXIoJnRpbWVybGlzdCk7CisJdGltZXJsaXN0LmZ1bmN0aW9uID0gaXQ4N190aW1lb3V0
OworCXRpbWVybGlzdC5kYXRhID0gMHhhYmFkY2FmZTsKKworCXJldHVybiAwOworfQorCisKK3N0
YXRpYyB2b2lkIGRyb3BfcG9ydCh2b2lkKQoreworLyoKKyAgICAgICAgdW5zaWduZWQgY2hhciBp
bml0X2J5dGVzWzRdID0ge0lUODdfSU5JVH07CisKKyAgICAgICAgLyAqIEVudGVyIE1CIFBuUCBN
b2RlICogLworICAgICAgICBvdXRiKGluaXRfYnl0ZXNbMF0sIElUODdfQURSUE9SVCk7CisgICAg
ICAgIG91dGIoaW5pdF9ieXRlc1sxXSwgSVQ4N19BRFJQT1JUKTsKKyAgICAgICAgb3V0Yihpbml0
X2J5dGVzWzJdLCBJVDg3X0FEUlBPUlQpOworICAgICAgICBvdXRiKGluaXRfYnl0ZXNbM10sIElU
ODdfQURSUE9SVCk7CisKKyAgICAgICAgLyAqIGRlYWN0aXZhdGUgQ0lSLURldmljZSAqIC8KKyAg
ICAgICAgaXQ4N193cml0ZShJVDg3X0NJUl9BQ1QsIDB4MCk7CisKKyAgICAgICAgLyAqIExlYXZp
bmcgTUIgUG5QIE1vZGUgKiAvCisgICAgICAgIGl0ODdfd3JpdGUoSVQ4N19DRkdDVFJMLCAweDIp
OworKi8KKworCWRlbF90aW1lcl9zeW5jKCZ0aW1lcmxpc3QpOworCWZyZWVfaXJxKGlycSwgTlVM
TCk7CisJcmVsZWFzZV9yZWdpb24oaW8sIDgpOworfQorCisKK2ludCBpbml0X2xpcmNfaXQ4Nyh2
b2lkKQoreworCWludCByZXR2YWw7CisKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZsaXJjX3JlYWRf
cXVldWUpOworCXJldHZhbCA9IGluaXRfcG9ydCgpOworCWlmIChyZXR2YWwgPCAwKQorCQlyZXR1
cm4gcmV0dmFsOworCWluaXRfaGFyZHdhcmUoKTsKKwlwcmludGsoS0VSTl9JTkZPIExJUkNfRFJJ
VkVSX05BTUUKKwkgICAgICAgIjogSW5zdGFsbGVkLlxuIik7CisJcmV0dXJuIDA7Cit9CisKKwor
TU9EVUxFX0FVVEhPUigiSGFucy1H/G50ZXIgTPx0a2UgVXBodWVzIik7CitNT0RVTEVfREVTQ1JJ
UFRJT04oIkxJUkMgZHJpdmVyIGZvciBJVEUgSVQ4NzEyL0lUODcwNSBDSVIgcG9ydCIpOworTU9E
VUxFX1BBUk0oaW8sICJpIik7CitNT0RVTEVfUEFSTV9ERVNDKGlvLAorCQkgIkkvTyBiYXNlIGFk
ZHJlc3MgKGRlZmF1bHQ6IDB4MzEwKSIpOworTU9EVUxFX1BBUk0oaXJxLCAiaSIpOworTU9EVUxF
X1BBUk1fREVTQyhpcnEsCisJCSAiSW50ZXJydXB0ICgxLDMtMTIpIChkZWZhdWx0OiA3KSIpOwor
TU9EVUxFX1BBUk0oaXQ4N19lbmFibGVfZGVtb2R1bGF0b3IsICJpIik7CitNT0RVTEVfUEFSTV9E
RVNDKGl0ODdfZW5hYmxlX2RlbW9kdWxhdG9yLAorCQkgIlJlY2VpdmVyIGRlbW9kdWxhdG9yIGVu
YWJsZS9kaXNhYmxlICgxLzApLCBkZWZhdWx0OiAwIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7
CisKK3N0YXRpYyBpbnQgX19pbml0IGxpcmNfaXQ4N19pbml0KHZvaWQpCit7CisJaW50IHJldHZh
bDsKKworCXJldHZhbD1pbml0X2NocmRldigpOworCWlmKHJldHZhbCA8IDApCisJCXJldHVybiBy
ZXR2YWw7CisJcmV0dmFsID0gaW5pdF9saXJjX2l0ODcoKTsKKwlpZiAocmV0dmFsKSB7CisJCWRy
b3BfY2hyZGV2KCk7CisJCXJldHVybiByZXR2YWw7CisJfQorCXJldHVybiAwOworfQorCisKK3N0
YXRpYyB2b2lkIF9fZXhpdCBsaXJjX2l0ODdfZXhpdCh2b2lkKQoreworCWRyb3BfaGFyZHdhcmUo
KTsKKwlkcm9wX2NocmRldigpOworCWRyb3BfcG9ydCgpOworCXByaW50ayhLRVJOX0lORk8gTElS
Q19EUklWRVJfTkFNRSAiOiBVbmluc3RhbGxlZC5cbiIpOworfQorCittb2R1bGVfaW5pdChsaXJj
X2l0ODdfaW5pdCk7Cittb2R1bGVfZXhpdChsaXJjX2l0ODdfZXhpdCk7CisKKy8qCisgKiBPdmVy
cmlkZXMgZm9yIEVtYWNzIHNvIHRoYXQgd2UgZm9sbG93IExpbnVzJ3MgdGFiYmluZyBzdHlsZS4K
KyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogTG9jYWwgdmFyaWFibGVzOgorICogYy1iYXNpYy1v
ZmZzZXQ6IDgKKyAqIEVuZDoKKyAqLwpkaWZmIC11ck4gbGludXgtMi42LjUub3JpZy9kcml2ZXJz
L2NoYXIvbGlyYy9saXJjX2l0ODcuaCBsaW51eC0yLjYuNS5uZXcvZHJpdmVycy9jaGFyL2xpcmMv
bGlyY19pdDg3LmgKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy9jaGFyL2xpcmMvbGlyY19p
dDg3LmgJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi41
Lm5ldy9kcml2ZXJzL2NoYXIvbGlyYy9saXJjX2l0ODcuaAkyMDA0LTA1LTA0IDAxOjIzOjU2LjI0
MDU2Mjc1MiArMDEwMApAQCAtMCwwICsxLDExNiBAQAorLyogbGlyY19pdDg3LmggKi8KKy8qIFNF
Q1RJT046IERlZmluaXRpb25zICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiogSVRFIElUODd4eCAqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIGJhc2VkIG9uIHRo
ZSBmb2xsb3dpbmcgZG9jdW1lbnRhdGlvbiBmcm9tIElURToKKyAgIGEpIElUODcxMkYgUHJlbGlt
aW5hcnkgQ0lSIFByb2dyYW1taW5nIEd1aWRlIFYwLjEKKyAgIGIpIElUODcwNUYgU2ltcGxlIExQ
QyBJL08gUHJlbGltaW5hcnkgU3BlY2lmaWN0aW9uIFYwLjMKKyAgIGMpIElUODcxMkYgRUMtTFBD
IEkvTyBQcmVsaW1pbmFyeSBTcGVjaWZpY2F0aW9uIFYwLjUKKyovCisKKy8qIElUODcxMi8wNSBQ
b3J0czogKi8KKyNkZWZpbmUgSVQ4N19BRFJQT1JUICAgICAgMHgyZQorI2RlZmluZSBJVDg3X0RB
VEFQT1JUICAgICAweDJmCisjZGVmaW5lIElUODdfSU5JVCAgICAgICAgIDB4ODcsIDB4MDEsIDB4
NTUsIDB4NTUKKworLyogYWx0ZXJuYXRlIFBvcnRzOiAqLworLyoKKyNkZWZpbmUgSVQ4N19BRFJQ
T1JUICAgICAgMHg0ZQorI2RlZmluZSBJVDg3X0RBVEFQT1JUICAgICAweDRmCisjZGVmaW5lIElU
ODdfSU5JVCAgICAgICAgIDB4ODcsIDB4MDEsIDB4NTUsIDB4YWEKKyAqLworCisvKiBJVDg3MTIv
MDUgUmVnaXN0ZXJzICovCisjZGVmaW5lIElUODdfQ0ZHQ1RSTCAgICAgIDB4MgorI2RlZmluZSBJ
VDg3X0xETiAgICAgICAgICAweDcKKyNkZWZpbmUgSVQ4N19DSElQX0lEMSAgICAgMHgyMAorI2Rl
ZmluZSBJVDg3X0NISVBfSUQyICAgICAweDIxCisjZGVmaW5lIElUODdfQ0ZHX1ZFUlNJT04gIDB4
MjIKKyNkZWZpbmUgSVQ4N19TV1NVU1BFTkQgICAgMHgyMworCisjZGVmaW5lIElUODcxMl9DSVJf
TEROICAgIDB4YQorI2RlZmluZSBJVDg3MDVfQ0lSX0xETiAgICAweDcKKworLyogQ0lSIENvbmZp
Z3VyYXRpb24gUmVnaXN0ZXJzOiAqLworI2RlZmluZSBJVDg3X0NJUl9BQ1QgICAgICAweDMwCisj
ZGVmaW5lIElUODdfQ0lSX0JBU0VfTVNCIDB4NjAKKyNkZWZpbmUgSVQ4N19DSVJfQkFTRV9MU0Ig
MHg2MQorI2RlZmluZSBJVDg3X0NJUl9JUlEgICAgICAweDcwCisjZGVmaW5lIElUODdfQ0lSX0NP
TkZJRyAgIDB4ZjAKKworLyogTGlzdCBvZiBJVDg3X0NJUiByZWdpc3RlcnM6IG9mZnNldCB0byBC
YXNlQWRkciAqLworI2RlZmluZSBJVDg3X0NJUl9EUiAgIDAKKyNkZWZpbmUgSVQ4N19DSVJfSUVS
ICAxCisjZGVmaW5lIElUODdfQ0lSX1JDUiAgMgorI2RlZmluZSBJVDg3X0NJUl9UQ1IxIDMKKyNk
ZWZpbmUgSVQ4N19DSVJfVENSMiA0CisjZGVmaW5lIElUODdfQ0lSX1RTUiAgNQorI2RlZmluZSBJ
VDg3X0NJUl9SU1IgIDYKKyNkZWZpbmUgSVQ4N19DSVJfQkRMUiA1CisjZGVmaW5lIElUODdfQ0lS
X0JESFIgNgorI2RlZmluZSBJVDg3X0NJUl9JSVIgIDcKKworLyogQml0IERlZmluaXRpb25lbiAq
LworLyogSUVSOiAqLworI2RlZmluZSBJVDg3X0NJUl9JRVJfVE1fRU4gICAweDgwCisjZGVmaW5l
IElUODdfQ0lSX0lFUl9SRVNFVkVEIDB4NDAKKyNkZWZpbmUgSVQ4N19DSVJfSUVSX1JFU0VUICAg
MHgyMAorI2RlZmluZSBJVDg3X0NJUl9JRVJfQlIgICAgICAweDEwCisjZGVmaW5lIElUODdfQ0lS
X0lFUl9JRUMgICAgIDB4OAorI2RlZmluZSBJVDg3X0NJUl9JRVJfUkZPSUUgICAweDQKKyNkZWZp
bmUgSVQ4N19DSVJfSUVSX1JEQUlFICAgMHgyCisjZGVmaW5lIElUODdfQ0lSX0lFUl9UTERMSUUg
IDB4MQorCisvKiBSQ1I6ICovCisjZGVmaW5lIElUODdfQ0lSX1JDUl9SRFdPUyAgMHg4MAorI2Rl
ZmluZSBJVDg3X0NJUl9SQ1JfSENGUyAgIDB4NDAKKyNkZWZpbmUgSVQ4N19DSVJfUkNSX1JYRU4g
ICAweDIwCisjZGVmaW5lIElUODdfQ0lSX1JDUl9SWEVORCAgMHgxMAorI2RlZmluZSBJVDg3X0NJ
Ul9SQ1JfUlhBQ1QgIDB4OAorI2RlZmluZSBJVDg3X0NJUl9SQ1JfUlhEQ1IgIDB4NworCisvKiBU
Q1IxOiAqLworI2RlZmluZSBJVDg3X0NJUl9UQ1IxX0ZJRk9DTFIgMHg4MAorI2RlZmluZSBJVDg3
X0NJUl9UQ1IxX0lMRSAgICAgMHg0MAorI2RlZmluZSBJVDg3X0NJUl9UQ1IxX0ZJRk9UTCAgMHgz
MAorI2RlZmluZSBJVDg3X0NJUl9UQ1IxX1RYUkxFICAgMHg4CisjZGVmaW5lIElUODdfQ0lSX1RD
UjFfVFhFTkRGICAweDQKKyNkZWZpbmUgSVQ4N19DSVJfVENSMV9UWE1QTSAgIDB4MworCisvKiBU
Q1IyOiAqLworI2RlZmluZSBJVDg3X0NJUl9UQ1IyX0NGUSAgIDB4ZjgKKyNkZWZpbmUgSVQ4N19D
SVJfVENSMl9UWE1QVyAweDcKKworLyogVFNSOiAqLworI2RlZmluZSBJVDg3X0NJUl9UU1JfUkVT
RVJWRUQgMHhjMAorI2RlZmluZSBJVDg3X0NJUl9UU1JfVFhGQkMgICAgMHgzZgorCisvKiBSU1I6
ICovCisjZGVmaW5lIElUODdfQ0lSX1JTUl9SWEZUTyAgICAweDgwCisjZGVmaW5lIElUODdfQ0lS
X1JTUl9SRVNFUlZFRCAweDQwCisjZGVmaW5lIElUODdfQ0lSX1JTUl9SWEZCQyAgICAweDNmCisK
Ky8qIElJUjogKi8KKyNkZWZpbmUgSVQ4N19DSVJfSUlSX1JFU0VSVkVEIDB4ZjgKKyNkZWZpbmUg
SVQ4N19DSVJfSUlSX0lJRCAgICAgIDB4NgorI2RlZmluZSBJVDg3X0NJUl9JSVJfSUlQICAgICAg
MHgxCisKKy8qIFRNOiAqLworI2RlZmluZSBJVDg3X0NJUl9UTV9JTF9TRUwgICAgMHg4MAorI2Rl
ZmluZSBJVDg3X0NJUl9UTV9SRVNFUlZFRCAgMHg0MAorI2RlZmluZSBJVDg3X0NJUl9UTV9UTV9S
RUcgICAgMHgzZgorCisjZGVmaW5lIElUODdfQ0lSX0ZJRk9fU0laRSAzMgorCisvKiBCYXVkcmF0
ZWRpdmlzb3IgZm9yIElUODc6IHBvd2VyIG9mIDI6IG9ubHkgMSwyLDQgb3IgOCkgKi8KKyNkZWZp
bmUgSVQ4N19DSVJfQkFVRFJBVEVfRElWSVNPUiAweDEKKyNkZWZpbmUgSVQ4N19DSVJfREVGQVVM
VF9JT0JBU0UgMHgzMTAKKyNkZWZpbmUgSVQ4N19DSVJfREVGQVVMVF9JUlEgICAgMHg3CisjZGVm
aW5lIElUODdfQ0lSX1NQQUNFIDB4MDAKKyNkZWZpbmUgSVQ4N19DSVJfUFVMU0UgMHhmZgorI2Rl
ZmluZSBJVDg3X0NJUl9GUkVRX01JTiAyNworI2RlZmluZSBJVDg3X0NJUl9GUkVRX01BWCA1OAor
I2RlZmluZSBUSU1FX0NPTlNUIChJVDg3X0NJUl9CQVVEUkFURV9ESVZJU09SICogODAwMDAwMHVs
IC8gMTE1MjAwdWwpCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogSVRFIElU
ODd4eCAqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLXVyTiBsaW51eC0yLjYuNS5vcmln
L2RyaXZlcnMvY2hhci9saXJjL2xpcmNfbWNldXNiLmMgbGludXgtMi42LjUubmV3L2RyaXZlcnMv
Y2hhci9saXJjL2xpcmNfbWNldXNiLmMKLS0tIGxpbnV4LTIuNi41Lm9yaWcvZHJpdmVycy9jaGFy
L2xpcmMvbGlyY19tY2V1c2IuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAor
KysgbGludXgtMi42LjUubmV3L2RyaXZlcnMvY2hhci9saXJjL2xpcmNfbWNldXNiLmMJMjAwNC0w
NS0wNCAwMToyMzo1Ni4yNjA1NTk3MTIgKzAxMDAKQEAgLTAsMCArMSwxNTMwIEBACisvKgorICog
VVNCIE1pY3Jvc29mdCBJUiBUcmFuc2NlaXZlciBkcml2ZXIgLSAwLjEKKyAqCisgKiBDb3B5cmln
aHQgKGMpIDIwMDMtMjAwNCBEYW4gQ29udGkgKGRjb250aUBhY20ud3d1LmVkdSkKKyAqCisgKiBU
aGlzIGRyaXZlciBpcyBiYXNlZCBvbiB0aGUgVVNCIHNrZWxldG9uIGRyaXZlciBwYWNrYWdlZCB3
aXRoIHRoZQorICoga2VybmVsLCBhbmQgdGhlIG5vdGljZSBmcm9tIHRoYXQgcGFja2FnZSBoYXMg
YmVlbiByZXRhaW5lZCBiZWxvdy4KKyAqCisgKiBUaGUgTWljcm9zb2Z0IElSIFRyYW5zY2VpdmVy
IGlzIGEgbmVhdCBsaXR0bGUgSVIgcmVjZWl2ZXIgd2l0aCB0d28KKyAqIGVtaXR0ZXJzIG9uIGl0
IGRlc2lnbmVkIGZvciBXaW5kb3dzIE1lZGlhIENlbnRlci4gVGhpcyBkcml2ZXIgbWlnaHQKKyAq
IHdvcmsgZm9yIGFsbCBtZWRpYSBjZW50ZXIgcmVtb3RlcywgYnV0IEkgaGF2ZSBvbmx5IHRlc3Rl
ZCBpdCB3aXRoCisgKiB0aGUgcGhpbGlwcyBtb2RlbC4gVGhlIGZpcnN0IHJldmlzaW9uIG9mIHRo
aXMgZHJpdmVyIG9ubHkgc3VwcG9ydHMKKyAqIHRoZSByZWNlaXZlIGZ1bmN0aW9uIC0gdGhlIHRy
YW5zbWl0IGZ1bmN0aW9uIHdpbGwgYmUgbXVjaCBtb3JlCisgKiB0cmlja3kgZHVlIHRvIHRoZSBu
YXR1cmUgb2YgdGhlIGhhcmR3YXJlLiBNaWNyb3NvZnQgY2hvc2UgdG8gYnVpbGQKKyAqIHRoaXMg
ZGV2aWNlIGluZXhwZW5zaXZlbHksIHRoZXJlZm9yZSBtYWtpbmcgaXQgZXh0cmEgZHVtYi4gIFRo
ZXJlCisgKiBpcyBubyBpbnRlcnJ1cHQgZW5kcG9pbnQgb24gdGhpcyBkZXZpY2U7IGFsbCB1c2Ig
dHJhZmZpYyBoYXBwZW5zCisgKiBvdmVyIHR3byBidWxrIGVuZHBvaW50cy4gQXMgYSByZXN1bHQg
b2YgdGhpcywgcG9sbCgpIGZvciB0aGlzCisgKiBkZXZpY2UgaXMgYW4gYWN0dWFsIGhhcmR3YXJl
IHBvbGwgKGluc3RlYWQgb2YgYSByZWNlaXZlIHF1ZXVlCisgKiBjaGVjaykgYW5kIGlzIHJhdGhl
ciBleHBlbnNpdmUuCisgKgorICogVGhpcyBkcml2ZXIgaXMgc3RydWN0dXJlZCBpbiB0aHJlZSBi
YXNpYyBsYXllcnMKKyAqICAtIGxvd2VyICAtIGludGVyZmFjZSB3aXRoIHRoZSB1c2IgZGV2aWNl
IGFuZCBtYW5hZ2UgdXNiIGRhdGEKKyAqICAtIG1pZGRsZSAtIGFwaSB0byBjb252ZXJ0IHVzYiBk
YXRhIGludG8gbW9kZTIgYW5kIHByb3ZpZGUgdGhpcyBpbgorICogICAgX3JlYWQgY2FsbHMKKyAq
ICAtIG1jZXVzYl8qIC0gbGludXggZHJpdmVyIGludGVyZmFjZQorICoKKyAqIFRoZSBrZXkgcm91
dGluZXMgYXJlIGFzIGZvbGxvd3M6CisgKiAgbXNpcl9mZXRjaF9tb3JlX2RhdGEgLSB0aGlzIHJl
YWRzIGluY29taW5nIGRhdGEsIHN0cmlwcyBvZmYgdGhlCisgKiAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFydCBjb2RlcyB0aGUgaXIgcmVjZWl2ZXIgcGxhY2VzIG9uIHRoZW0sCisgKiAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmQgZHVtcHMgaXQgaW4gYW4gKiBpbnRlcm5hbCBidWZmZXIK
KyAqICBtc2lyX2dlbmVyYXRlX21vZGUyICAtIHRoaXMgdGFrZXMgdGhlIGFib3ZlIGRhdGEsIGRl
cGFja2V0aXplcyBpdCwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBnZW5lcmF0ZXMg
bW9kZTIgZGF0YSB0byBmZWVkIG91dAorICogICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3Vn
aCByZWFkIGNhbGxzCisgKgorICoKKyAqIEFsbCB0cmFkZW1hcmtzIHByb3BlcnR5IG9mIHRoZWly
IHJlc3BlY3RpdmUgb3duZXJzLgorICoKKyAqIDIwMDNfMTFfMTEgLSBSZXN0cnVjdHVyZWQgdG8g
bWluaW1hbGl6ZSBjb2RlIGludGVycHJldGF0aW9uIGluIHRoZQorICogICAgICAgICAgICAgIGRy
aXZlci4gVGhlIG5vcm1hbCB1c2UgY2FzZSB3aWxsIGJlIHdpdGggbGlyYy4KKyAqCisgKiAyMDA0
XzAxXzAxIC0gUmVtb3ZlZCBhbGwgY29kZSBpbnRlcnByZXRhdGlvbi4gR2VuZXJhdGUgbW9kZTIg
ZGF0YQorICogICAgICAgICAgICAgIGZvciBwYXNzaW5nIG9mZiB0byBsaXJjLiBDbGVhbnVwCisg
KgorICogMjAwNF8wMV8wNCAtIFJlbW92ZWQgZGV2ZnMgaGFuZGxlLiBQdXQgaW4gYSB0ZW1wb3Jh
cnkgd29ya2Fyb3VuZAorICogICAgICAgICAgICAgIGZvciBhIGtub3duIGlzc3VlIHdoZXJlIHJl
cGVhdHMgZ2VuZXJhdGUgdHdvCisgKiAgICAgICAgICAgICAgc2VxdWVudGlhbCBzcGFjZXMgKiAo
bGFzdF93YXNfcmVwZWF0X2dhcCkKKyAqCisgKiBUT0RPCisgKiAgIC0gRml4IHVwIG1pbm9yIG51
bWJlciwgcmVnaXN0cmF0aW9uIG9mIG1ham9yL21pbm9yIHdpdGggdXNiIHN1YnN5c3RlbQorICog
ICAtIEZpeCB1cCByYW5kb20gRUlOVFIgYmVpbmcgc2VudAorICogICAtIEZpeCBwcm9ibGVtIHdo
ZXJlIHRoaXJkIGtleSBpbiBhIHJlcGVhdCBzZXF1ZW5jZSBpcyByYW5kb21seSB0cnVuY2F0ZWQK
KyAqCisgKi8KKy8qCisgKiBVU0IgU2tlbGV0b24gZHJpdmVyIC0gMC42CisgKgorICogQ29weXJp
Z2h0IChjKSAyMDAxIEdyZWcgS3JvYWgtSGFydG1hbiAoZ3JlZ0Brcm9haC5jb20pCisgKgorICoJ
VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICoJbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgYXMKKyAqCXB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKgl0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKgorICogVGhpcyBkcml2ZXIgaXMgdG8gYmUg
dXNlZCBhcyBhIHNrZWxldG9uIGRyaXZlciB0byBiZSBhYmxlIHRvIGNyZWF0ZSBhCisgKiBVU0Ig
ZHJpdmVyIHF1aWNrbHkuICBUaGUgZGVzaWduIG9mIGl0IGlzIGJhc2VkIG9uIHRoZSB1c2Itc2Vy
aWFsIGFuZAorICogZGMyeHggZHJpdmVycy4KKyAqCisgKiBUaGFua3MgdG8gT2xpdmVyIE5ldWt1
bSBhbmQgRGF2aWQgQnJvd25lbGwgZm9yIHRoZWlyIGhlbHAgaW4gZGVidWdnaW5nCisgKiB0aGlz
IGRyaXZlci4KKyAqCisgKiBUT0RPOgorICoJLSBmaXggdXJiLT5zdGF0dXMgcmFjZSBjb25kaXRp
b24gaW4gd3JpdGUgc2VxdWVuY2UKKyAqCS0gbW92ZSBtaW5vcl90YWJsZSB0byBhIGR5bmFtaWMg
bGlzdC4KKyAqCisgKiBIaXN0b3J5OgorICoKKyAqIDIwMDFfMTFfMDUgLSAwLjYgLSBmaXggbWlu
b3IgbG9ja2luZyBwcm9ibGVtIGluIHNrZWxfZGlzY29ubmVjdC4KKyAqCQkJVGhhbmtzIHRvIFBl
dGUgWmFpdGNldiBmb3IgdGhlIGZpeC4KKyAqIDIwMDFfMDlfMDQgLSAwLjUgLSBmaXggZGV2ZnMg
YnVnIGluIHNrZWxfZGlzY29ubmVjdC4gVGhhbmtzIHRvIHdpbSBkZWx2YXV4CisgKiAyMDAxXzA4
XzIxIC0gMC40IC0gbW9yZSBzbWFsbCBidWcgZml4ZXMuCisgKiAyMDAxXzA1XzI5IC0gMC4zIC0g
bW9yZSBidWcgZml4ZXMgYmFzZWQgb24gcmV2aWV3IGZyb20gbGludXgtdXNiLWRldmVsCisgKiAy
MDAxXzA1XzI0IC0gMC4yIC0gYnVnIGZpeGVzIGJhc2VkIG9uIHJldmlldyBmcm9tIGxpbnV4LXVz
Yi1kZXZlbCBwZW9wbGUKKyAqIDIwMDFfMDVfMDEgLSAwLjEgLSBmaXJzdCB2ZXJzaW9uCisgKgor
ICovCisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwu
aD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KKyNp
bmNsdWRlIDxsaW51eC9zaWduYWwuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1
ZGUgPGxpbnV4L3BvbGwuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGlu
dXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L2ZjbnRsLmg+CisjaW5jbHVkZSA8bGludXgvbW9k
dWxlLmg+CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC9saXN0
Lmg+CisjaW5jbHVkZSA8bGludXgvc21wX2xvY2suaD4KKyNpbmNsdWRlIDxsaW51eC91c2IuaD4K
KworI2lmZGVmIENPTkZJR19VU0JfREVCVUcKKwlzdGF0aWMgaW50IGRlYnVnID0gMTsKKyNlbHNl
CisJc3RhdGljIGludCBkZWJ1ZyA9IDE7CisjZW5kaWYKKworI2luY2x1ZGUgPGxpbnV4L2xpcmMu
aD4KKyNpbmNsdWRlICJkcml2ZXJzL2xpcmNfZGV2L2xpcmNfZGV2LmgiCisKKy8qIFZlcnNpb24g
SW5mb3JtYXRpb24gKi8KKyNkZWZpbmUgRFJJVkVSX1ZFUlNJT04gInYwLjEiCisjZGVmaW5lIERS
SVZFUl9BVVRIT1IgIkRhbiBDb250aSwgZGNvbnRpQGFjbS53d3UuZWR1IgorI2RlZmluZSBEUklW
RVJfREVTQyAiVVNCIE1pY3Jvc29mdCBJUiBUcmFuc2NlaXZlciBEcml2ZXIiCisKKy8qIE1vZHVs
ZSBwYXJhbWF0ZXJzICovCitNT0RVTEVfUEFSTShkZWJ1ZywgImkiKTsKK01PRFVMRV9QQVJNX0RF
U0MoZGVidWcsICJEZWJ1ZyBlbmFibGVkIG9yIG5vdCIpOworCisvKiBEZWZpbmUgdGhlc2UgdmFs
dWVzIHRvIG1hdGNoIHlvdXIgZGV2aWNlICovCisjZGVmaW5lIFVTQl9NQ0VVU0JfVkVORE9SX0lE
CTB4MDQ1ZQorI2RlZmluZSBVU0JfTUNFVVNCX1BST0RVQ1RfSUQJMHgwMDZkCisKKy8qIHRhYmxl
IG9mIGRldmljZXMgdGhhdCB3b3JrIHdpdGggdGhpcyBkcml2ZXIgKi8KK3N0YXRpYyBzdHJ1Y3Qg
dXNiX2RldmljZV9pZCBtY2V1c2JfdGFibGUgW10gPSB7CisJeyBVU0JfREVWSUNFKFVTQl9NQ0VV
U0JfVkVORE9SX0lELCBVU0JfTUNFVVNCX1BST0RVQ1RfSUQpIH0sCisJeyB9CQkJCQkvKiBUZXJt
aW5hdGluZyBlbnRyeSAqLworfTsKKworTU9EVUxFX0RFVklDRV9UQUJMRSAodXNiLCBtY2V1c2Jf
dGFibGUpOworCisvKiBYWFggVE9ETywgMjQ0IGlzIGxpa2VseSB1bnVzZWQgYnV0IG5vdCByZXNl
cnZlZCAqLworLyogR2V0IGEgbWlub3IgcmFuZ2UgZm9yIHlvdXIgZGV2aWNlcyBmcm9tIHRoZSB1
c2IgbWFpbnRhaW5lciAqLworI2RlZmluZSBVU0JfTUNFVVNCX01JTk9SX0JBU0UJMjQ0CisKKwor
Lyogd2UgY2FuIGhhdmUgdXAgdG8gdGhpcyBudW1iZXIgb2YgZGV2aWNlIHBsdWdnZWQgaW4gYXQg
b25jZSAqLworI2RlZmluZSBNQVhfREVWSUNFUwkJMTYKKworLyogU3RydWN0dXJlIHRvIGhvbGQg
YWxsIG9mIG91ciBkZXZpY2Ugc3BlY2lmaWMgc3R1ZmYgKi8KK3N0cnVjdCB1c2Jfc2tlbAkgICAg
IHsKKwkvKiBzYXZlIG9mZiB0aGUgdXNiIGRldmljZSBwb2ludGVyICovCisJc3RydWN0IHVzYl9k
ZXZpY2UgKgkgICAgdWRldjsKKwkvKiB0aGUgaW50ZXJmYWNlIGZvciB0aGlzIGRldmljZSAqLwor
CXN0cnVjdCB1c2JfaW50ZXJmYWNlICoJaW50ZXJmYWNlOworCS8qIHRoZSBzdGFydGluZyBtaW5v
ciBudW1iZXIgZm9yIHRoaXMgZGV2aWNlICovCisJdW5zaWduZWQgY2hhciAgIG1pbm9yOworCS8q
IHRoZSBudW1iZXIgb2YgcG9ydHMgdGhpcyBkZXZpY2UgaGFzICovCisJdW5zaWduZWQgY2hhciAg
IG51bV9wb3J0czsKKwkvKiBudW1iZXIgb2YgaW50ZXJydXB0IGluIGVuZHBvaW50cyB3ZSBoYXZl
ICovCisJY2hhciAgICAgICAgICAgIG51bV9pbnRlcnJ1cHRfaW47CisJLyogbnVtYmVyIG9mIGJ1
bGsgaW4gZW5kcG9pbnRzIHdlIGhhdmUgKi8KKwljaGFyICAgICAgICAgICAgbnVtX2J1bGtfaW47
CisJLyogbnVtYmVyIG9mIGJ1bGsgb3V0IGVuZHBvaW50cyB3ZSBoYXZlICovCisJY2hhciAgICAg
ICAgICAgIG51bV9idWxrX291dDsKKworCS8qIHRoZSBidWZmZXIgdG8gcmVjZWl2ZSBkYXRhICov
CisJdW5zaWduZWQgY2hhciAqICAgIGJ1bGtfaW5fYnVmZmVyOworCS8qIHRoZSBzaXplIG9mIHRo
ZSByZWNlaXZlIGJ1ZmZlciAqLworCWludCAgICAgICAgICAgICAgICBidWxrX2luX3NpemU7CisJ
LyogdGhlIGFkZHJlc3Mgb2YgdGhlIGJ1bGsgaW4gZW5kcG9pbnQgKi8KKwlfX3U4ICAgICAgICAg
ICAgICAgYnVsa19pbl9lbmRwb2ludEFkZHI7CisKKwkvKiB0aGUgYnVmZmVyIHRvIHNlbmQgZGF0
YSAqLworCXVuc2lnbmVkIGNoYXIgKiAgICBidWxrX291dF9idWZmZXI7CisJLyogdGhlIHNpemUg
b2YgdGhlIHNlbmQgYnVmZmVyICovCisJaW50CSAgICAgICAgICAgYnVsa19vdXRfc2l6ZTsKKwkv
KiB0aGUgdXJiIHVzZWQgdG8gc2VuZCBkYXRhICovCisJc3RydWN0IHVyYiAqICAgICAgIHdyaXRl
X3VyYjsKKwkvKiB0aGUgYWRkcmVzcyBvZiB0aGUgYnVsayBvdXQgZW5kcG9pbnQgKi8KKwlfX3U4
ICAgICAgICAgICAgICAgYnVsa19vdXRfZW5kcG9pbnRBZGRyOworCisJd2FpdF9xdWV1ZV9oZWFk
X3QgIHdhaXRfcTsgICAgICAvKiBmb3IgdGltZW91dHMgKi8KKwlpbnQgICAgICAgICAgICAgICAg
b3Blbl9jb3VudDsJLyogbnVtYmVyIG9mIHRpbWVzIHRoaXMgcG9ydAorCQkJCQkgKiBoYXMgYmVl
biBvcGVuZWQgKi8KKwlzdHJ1Y3Qgc2VtYXBob3JlICAgc2VtOwkJLyogbG9ja3MgdGhpcyBzdHJ1
Y3R1cmUgKi8KKworCXN0cnVjdCBsaXJjX3BsdWdpbiogcGx1Z2luOworCisJLyogVXNlZCBpbiBj
b252ZXJ0aW5nIHRvIG1vZGUyIGFuZCBzdG9yaW5nICovCisgICAgICAgIC8qIGJ1ZmZlciBmb3Ig
dGhlIG1vZGUyIGRhdGEsIHNpbmNlIGxpcmMgcmVhZHMgNGJ5dGVzICovCisJaW50ICAgIG1vZGUy
X2RhdGFbMjU2XTsKKwlpbnQgICAgbW9kZTJfaWR4OyAgICAgICAgICAgICAgIC8qIHJlYWQgaW5k
ZXggKi8KKwlpbnQgICAgbW9kZTJfY291bnQ7ICAgICAgICAgICAgIC8qIHdvcmRzIGF2YWlsYWJs
ZSAoaS5lLiB3cml0ZQorCQkJCQkgKiBpbmRleCkgKi8KKwlpbnQgICAgbW9kZTJfcGFydGlhbF9w
a3Rfc2l6ZTsKKwlpbnQgICAgbW9kZTJfb25jZTsKKworCS8qIFVzZWQgZm9yIHN0b3JpbmcgcHJl
cHJvY2Vzc2VkIHVzYiBkYXRhIGJlZm9yZSBjb252ZXJ0aW5nIHRvIG1vZGUyKi8KKwljaGFyICAg
dXNiX2RidWZmZXJbMTAyNF07CisJaW50ICAgIHVzYl9kc3RhcnQ7CisJaW50ICAgIHVzYl9kY291
bnQ7CisJaW50ICAgIHVzYl92YWxpZF9ieXRlc19pbl9idWxrX2J1ZmZlcjsKKworCS8qIFNldCB0
byAxIGlmIHRoZSBsYXN0IHZhbHVlIHdlIGFkanVzdGVkIHdhcyBhIHJlcGVhdCBnYXA7IHdlCisJ
ICogbmVlZCB0byBob2xkIHRoaXMgdmFsdWUgYXJvdW5kIHVudGlsIHdlIHByb2Nlc3MgYSBsZWFk
CisJICogc3BhY2Ugb24gdGhlIHJlcGVhdCBjb2RlLCBvdGhlcndpc2Ugd2UgcGFzcyBvZmYgdHdv
CisJICogc2VxdWVudGlhbCBzcGFjZXMgKi8KKwlpbnQgICAgbGFzdF93YXNfcmVwZWF0X2dhcDsK
K307CisKKy8qIGRyaXZlciBhcGkgKi8KK3N0YXRpYyBzc2l6ZV90IG1jZXVzYl9yZWFkCShzdHJ1
Y3QgZmlsZSAqZmlsZSwgY2hhciAqYnVmZmVyLAorCQkJCSBzaXplX3QgY291bnQsIGxvZmZfdCAq
cHBvcyk7CitzdGF0aWMgc3NpemVfdCBtY2V1c2Jfd3JpdGUJKHN0cnVjdCBmaWxlICpmaWxlLCBj
b25zdCBjaGFyICpidWZmZXIsCisJCQkJIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKTsKK3N0
YXRpYyB1bnNpZ25lZCBpbnQgbWNldXNiX3BvbGwgKHN0cnVjdCBmaWxlKiBmaWxlLCBwb2xsX3Rh
YmxlKiB3YWl0KTsKKworc3RhdGljIGludCBtY2V1c2Jfb3BlbgkJKHN0cnVjdCBpbm9kZSAqaW5v
ZGUsIHN0cnVjdCBmaWxlICpmaWxlKTsKK3N0YXRpYyBpbnQgbWNldXNiX3JlbGVhc2UJKHN0cnVj
dCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKTsKKworc3RhdGljIHZvaWQgKiBtY2V1
c2JfcHJvYmUJKHN0cnVjdCB1c2JfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZm51bSwKKwkJ
CQkgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKTsKK3N0YXRpYyB2b2lkICptY2V1c2Jf
ZGlzY29ubmVjdAkoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpOworCitzdGF0aWMgdm9pZCBt
Y2V1c2Jfd3JpdGV