public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* libgcj/1165: HTTP client code treats headers as body
@ 2000-12-20 12:20 francis
  0 siblings, 0 replies; 2+ messages in thread
From: francis @ 2000-12-20 12:20 UTC (permalink / raw)
  To: java-gnats

>Number:         1165
>Category:       libgcj
>Synopsis:       HTTP client code treats headers as body
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    warrenl
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 20 12:16:41 PST 2000
>Closed-Date:    Thu Aug 10 02:15:05 PDT 2000
>Last-Modified:  Thu Aug 10 02:16:02 PDT 2000
>Originator:     francis@ecal.com
>Release:        libgcj-2.95.2
>Organization:
>Environment:
RedHat 6.1
>Description:
If I open an HTTP connection, and read from the input
stream, I don't just get the body of the response; I
get the headers, too.  The only way around this is to
ask for the headers first, and then read from the stream.
>How-To-Repeat:
The attached tarfile contains a patch and a Java source
file (DemonstrateChunked.java).  Compile and run
DemonstrateChunked.java; it will make an HTTP request
and then print out what it reads from the input
stream; you will see the status line and headers before
the body of the resource.
>Fix:
Apply the patch included in the tarfile.
>Release-Note:

>Audit-Trail:

Formerly PR java.net/170


From: Bryce McKinlay <bryce@albatross.co.nz>
To: francis@ecal.com
Cc: java-gnats@sourceware.cygnus.com, warrenl@cygnus.com
Subject: Re: java.net/170: HTTP client code treats headers as body
Date: Fri, 10 Mar 2000 11:00:51 +1300

 Francis, in future could you provide a ChangeLog entry with your patches?
 Thanks. Otherwise, these look fine to me. What do you think, Warren?
 
   [ bryce ]
 
 

From: Bryce McKinlay <bryce@albatross.co.nz>
To: francis@ecal.com
Cc: java-gnats@sourceware.cygnus.com
Subject: Re: java.net/170: HTTP client code treats headers as body
Date: Fri, 10 Mar 2000 15:21:09 +1300

 Actually, the second part of the 170 patch is wrong, I think. The http status
 line is what is returned by getHeaderField(0), so it shouldn't be skipped.
 
 regards
 
   [ bryce ]
 
 
 @@ -247,6 +246,9 @@
      boolean gotnl = false;
      byte[] ch = new byte[1];
      ch[0] = (byte) '\n';
 +
 +    boolean isFirst=true;
 +
      while (true)
        {
   // Check for leftover byte from non-'\n' after a '\r'.
 @@ -266,6 +268,13 @@
         }
     }
   line = line + new String(buf, 0, i);
 +
 + if (isFirst) // skip the status line
 +     {
 +  isFirst=false;
 +  line="";
 +  continue;
 +     }
 

From: John Stracke <francis@ecal.com>
To: Bryce McKinlay <bryce@albatross.co.nz>
Cc: java-gnats@sourceware.cygnus.com
Subject: Re: java.net/170: HTTP client code treats headers as body
Date: Thu, 09 Mar 2000 21:45:58 -0500

 Bryce McKinlay wrote:
 
 > Actually, the second part of the 170 patch is wrong, I think. The http status
 > line is what is returned by getHeaderField(0), so it shouldn't be skipped.
 
 But it's not a header.  Hmm...ah, here we are: the status line is accessible
 through methods of java.net.HttpURLConnection: getResponseCode() and
 getResponseMessage()...though there's no method to get the protocol version.
 
 gcj doesn't currently implement getResponseCode() or getResponseMessage().  I'll
 write them tonight or tomorrow.
 
 --
 /===============================================================\
 |John Stracke    | http://www.ecal.com |My opinions are my own. |
 |Chief Scientist |==============================================|
 |eCal Corp.      |"This [OLE] isn't an API, this is a shaggy dog|
 |francis@ecal.com|story in C!" -- Unknown                       |
 \===============================================================/
 
 
 

From: John Stracke <francis@ecal.com>
To: Bryce McKinlay <bryce@albatross.co.nz>, java-gnats@sourceware.cygnus.com
Cc:  
Subject: Re: java.net/170: HTTP client code treats headers as body
Date: Thu, 09 Mar 2000 22:05:30 -0500

 John Stracke wrote:
 
 > gcj doesn't currently implement getResponseCode() or getResponseMessage().  I'll
 > write them tonight or tomorrow.
 
 Here's the updated patch:
 --- libgcj-2.95.1-orig/libjava/gnu/gcj/protocol/http/Connection.java Thu Apr 15
 17:33:38 1999
 +++ libgcj-2.95.1/libjava/gnu/gcj/protocol/http/Connection.java Thu Mar  9 21:58:05
 2000
 @@ -46,6 +46,18 @@
      requestProperties = (Hashtable) defRequestProperties.clone();
    }
 
 +  public int getResponseCode() throws IOException
 +  {
 +      getHttpHeaders();
 +      return responseCode;
 +  }
 +
 +  public String getResponseMessage() throws IOException
 +  {
 +      getHttpHeaders();
 +      return responseMessage;
 +  }
 +
    // Override method in URLConnection.
    public static void setDefaultRequestProperty(String key, String value)
    {
 @@ -94,7 +106,7 @@
      PrintWriter out = new PrintWriter(sock.getOutputStream());
 
      // Send request including any request properties that were set.
 -    out.print(getRequestMethod() + " " + url.getFile() + " HTTP/1.1\n");
 +    out.print(getRequestMethod() + " " + url.getFile() + " HTTP/1.0\n");
      out.print("Host: " + url.getHost() + ":" + port + "\n");
      Enumeration reqKeys = requestProperties.keys();
      Enumeration reqVals = requestProperties.elements();
 @@ -137,8 +149,7 @@
 
      if (! doInput)
        throw new ProtocolException("Can't open InputStream if doInput is false");
 -    if (bufferedIn == null)
 -      bufferedIn = new BufferedInputStream(sock.getInputStream());
 +    getHttpHeaders();
      return bufferedIn;
    }
 
 @@ -247,6 +258,9 @@
      boolean gotnl = false;
      byte[] ch = new byte[1];
      ch[0] = (byte) '\n';
 +
 +    boolean isFirst=true;
 +
      while (true)
        {
   // Check for leftover byte from non-'\n' after a '\r'.
 @@ -266,6 +280,25 @@
         }
     }
   line = line + new String(buf, 0, i);
 +
 + if (isFirst) // parse the status line
 +     {
 +  isFirst=false;
 +
 +  int space1=line.indexOf(' ');
 +  if (space1<0)
 +      continue;
 +
 +  int space2=line.indexOf(' ',space1+1);
 +  if (space2<0)
 +      continue;
 +
 +  String responseCodeStr=line.substring(space1+1,space2);
 +  responseCode=(new Integer(responseCodeStr)).intValue();
 +  responseMessage=line.substring(space2+1);
 +  line="";
 +  continue;
 +     }
 
   // A '\r' '\n' combo indicates the end of the header entry.
   // If it wasn't found, cycle back through the loop and append
 
 --
 /==============================================================\
 |John Stracke    | http://www.ecal.com |My opinions are my own.|
 |Chief Scientist |=============================================|
 |eCal Corp.      |Never underestimate the power of human       |
 |francis@ecal.com|stupidity. --I forget who                    |
 \==============================================================/
 
 
 

From: Bryce McKinlay <bryce@albatross.co.nz>
To: John Stracke <francis@ecal.com>, java-gnats@sourceware.cygnus.com
Cc:  
Subject: Re: java.net/170: HTTP client code treats headers as body
Date: Fri, 10 Mar 2000 16:09:52 +1300

 John Stracke wrote:
 
 > Bryce McKinlay wrote:
 >
 > > Actually, the second part of the 170 patch is wrong, I think. The http status
 > > line is what is returned by getHeaderField(0), so it shouldn't be skipped.
 >
 > But it's not a header.  Hmm...ah, here we are: the status line is accessible
 > through methods of java.net.HttpURLConnection: getResponseCode() and
 > getResponseMessage()...though there's no method to get the protocol version.
 
 Sure, its not *really* a header, but if you call getResponseField(0) on the JDK
 1.2.2, you'll get back the status line. We usually try to copy the JDK's behaviour
 in these situations, even if it isnt formally specified in the API documentation.
 
 >  gcj doesn't currently implement getResponseCode() or getResponseMessage().  I'll write them tonight or
 > tomorrow.
 >
 
 Cool. A couple of points: 1. Its probibly best to work on the latest version of
 libgcj (I noticed your patches said 2.95.1 on them). There have been some changes
 to the URLConnection stuff since 2.95.1, and using cvs makes generating patches a
 lot easier anyway.  2. Significant changes require a copyrite assignment to be
 filled out (see http://sourceware.cygnus.com/java/contrib.html ). Best to contact
 Tom Tromey or Anthony Green about this as the procedure will be changing given the
 FSF/classpath merger.
 
 regards
 
   [ bryce ]
 
 

From: John Stracke <francis@ecal.com>
To: Bryce McKinlay <bryce@albatross.co.nz>, java-gnats@sourceware.cygnus.com
Cc:  
Subject: Re: java.net/170: HTTP client code treats headers as body
Date: Thu, 09 Mar 2000 22:07:01 -0500

 John Stracke wrote:
 
 > gcj doesn't currently implement getResponseCode() or
 > getResponseMessage().  I'll
 > write them tonight or tomorrow.
 >
 Oh, and here's the updated test program that prints the response
 code & message along with the headers:
 
 import java.net.*;
 import java.io.*;
 
 public class DemonstrateChunked {
     public static void main(String args[])
     {
  URL url;
 
  try {
      url=new
 URL(" http://impp.research.ecal.com/demonstrate.php3 ");
  } catch (java.net.MalformedURLException malf) {
      System.err.println("Malformed URL: "+malf.getMessage());
      return;
  }
 
  DataInputStream in;
 
  try {
      URLConnection conn=url.openConnection();
 
      if (conn instanceof HttpURLConnection)
   {
       HttpURLConnection httpConn=(HttpURLConnection)conn;
       int status=httpConn.getResponseCode();
       String statusStr=httpConn.getResponseMessage();
       System.out.println("status=="+status);
       System.out.println("statusStr=="+statusStr);
   }
      else
   System.out.println("(Not an HttpURLConnection)");
 
      InputStream _in=conn.getInputStream();
      in=new DataInputStream(_in);
  } catch (IOException io) {
      System.err.println("Can't fetch URL: "+io.getMessage());
      return;
  }
 
  String line;
  try {
      while ((line=in.readLine())!=null)
   System.out.println(line);
  } catch (IOException io) {
      System.out.println("Can't read line from URL:
 "+io.getMessage());
      return;
  }
     }
 };
 
 
 --
 /==============================================================\
 |John Stracke    | http://www.ecal.com |My opinions are my own.|
 |Chief Scientist |=============================================|
 |eCal Corp.      |They prayed for their fates to be quick,     |
 |francis@ecal.com|painless, and, ideally, someone else's.      |
 \==============================================================/
 
 
 

From: Bryce McKinlay <bryce@albatross.co.nz>
To: John Stracke <francis@ecal.com>, java-gnats@sourceware.cygnus.com
Cc:  
Subject: Re: java.net/170: HTTP client code treats headers as body
Date: Fri, 10 Mar 2000 16:25:38 +1300

 John Stracke wrote:
 
 > +  public int getResponseCode() throws IOException
 > +  {
 > +      getHttpHeaders();
 > +      return responseCode;
 > +  }
 
 For efficiency we should change all the getHttpHeaders() calls to:
 
 if (! gotHeaders)
   getHttpHeaders();
 
 and remove the gotHeaders check from getHttpHeaders(). This avoids the overhead of the
 extra method call in the common case.
 
 > +  responseCode=(new Integer(responseCodeStr)).intValue();
 
 Integer.parseInt(responseCodeStr); would be more efficient here.
 
 regards
 
   [ bryce ]
 
 
 

From: Warren Levy <warrenl@cygnus.com>
To: Bryce McKinlay <bryce@albatross.co.nz>, John Stracke <francis@ecal.com>
Cc: java-gnats@sourceware.cygnus.com
Subject: Re: java.net/170: HTTP client code treats headers as body
Date: Fri, 10 Mar 2000 02:20:44 -0800 (PST)

 On Fri, 10 Mar 2000, Bryce McKinlay wrote:
 
 > Francis, in future could you provide a ChangeLog entry with your patches?
 > Thanks. Otherwise, these look fine to me. What do you think, Warren?
 
 Sorry, I've been in the middle of something else today and have only been
 able to give this and java.net/169 a quick glance.  I'll check them out on
 Friday and let you know if I see any further changes needed.
 
 Thanks for finding/fixing these!
 --warrenl
 

From: John Stracke <francis@ecal.com>
To: Bryce McKinlay <bryce@albatross.co.nz>
Cc: java-gnats@sourceware.cygnus.com
Subject: Re: java.net/170: HTTP client code treats headers as body
Date: Fri, 10 Mar 2000 09:15:00 -0500

 Bryce McKinlay wrote:
 
 > Sure, its not *really* a header, but if you call getResponseField(0) on the JDK
 > 1.2.2, you'll get back the status line.
 
 Huh.  OK, then.  I'm on my way to work now; I'll make the changes when I can.
 
 > We usually try to copy the JDK's behaviour
 > in these situations, even if it isnt formally specified in the API documentation.
 
 Right, makes sense.
 
 --
 /==============================================================\
 |John Stracke    | http://www.ecal.com |My opinions are my own.|
 |Chief Scientist |=============================================|
 |eCal Corp.      |This space intentionally left blank.         |
 |francis@ecal.com|                                             |
 \==============================================================/
 
 
 
 
 
State-Changed-From-To: open->closed
State-Changed-By: bryce
State-Changed-When: Thu Aug 10 02:15:05 2000
State-Changed-Why:
    Fix checked in to cvs:
    http://sources.redhat.com/ml/java-patches/2000-q3/msg00096.html

From: bryce@albatross.co.nz
To: francis@ecal.com, java-gnats@sourceware.cygnus.com, warrenl@cygnus.com
Cc:  
Subject: Re: java.net/170
Date: 10 Aug 2000 09:15:05 -0000

 Synopsis: HTTP client code treats headers as body
 
 State-Changed-From-To: open->closed
 State-Changed-By: bryce
 State-Changed-When: Thu Aug 10 02:15:05 2000
 State-Changed-Why:
     Fix checked in to cvs:
     http://sources.redhat.com/ml/java-patches/2000-q3/msg00096.html
 
 http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view&pr=170&database=java
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-tar; name="headers.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="headers.tar.gz"

H4sICJX0xzgAA2hlYWRlcnMudGFyAO1WbW/bNhDOV+lXXP0l8mzrxbKt2IGBdMmGBmjQYt0+ZcFA
S5TFRiYFikoWFPnvO1LyS1q02YZ2wwY+Hyz6jrx77kg91AXdCF4rSRQ9Lxp+SzP/PbkjR18TYRSG
s8nkKEQks+1zap6IaDINj8IknEXJLBmPcRxNY3RD+FVZfAZNrYgEOMol4SmrPzvvOf9/FGxTCalA
77nPqfK/O3UPTUxoi1s1q5KlkJakruHikyMDH1xAdLOwoQofd4JlsCGMe++UZHwNRK7r65u+mfrB
dX756TU0ssTojpIP2qIdaFlyeg/o9XqFUtUiCJBQ5UtaUyLTwqcpKf1UbIJsz8Oviiru9U9d5xFS
otICvF1FV6TMhdzQDEP+8HtKK8UER2Jl3t8mffdQK7rxqZR+hVRVyb3ebpmmsoDeQK/w11Rd0bom
a+r1dTq9WlLVSK5zYykXRJFLXjUKi6ZkA4x/VCBGOxec09TQSHG4xJp9UVG+t3vb2IehfmN8qedr
Egf23Vx06859xMDDZU8ac/lm3wUmvtiDc8KPFeRUr+u6gAfi2R50+10yTk+f1H5fsJKC52nPknHc
U5K9xjHGebHkTVn2XcfpiIhG7Yjo+X+hhsOlXQ06kyEEuRSbP1+M/vvoPp66//Z7+q1QYGOorEeV
buw3yvGc/ifjaaf/Wv7RH8VxEln9/ycwGo3wvVit0/ejsT+f+tFISLYO0KQFNFjzJkBfUEmhRCrK
QEtysBcq87Hg/Fw08LKSEE0hShZxvIhPIJrP5+5gMHga/W8EvtLbM4coXkxPFmEEYzwy7tkZjKI4
GZ7AQD8SODtzwbytwHLwXkAmjAa2tw1CFVLcg9bHt13GnYJsNUJL8BPBxUhdGGA15KSsqb5jRtss
qybPqaTZJYflElr9GrXpDl0m6/c7w16Za5HefiLmmGCgI6D9FbbkVft+apGHvTYdxDd2FCrTkvEk
Gc5gMJ7MhnPTEsNFiJISDmuheIl0TCFduNWDotc3gJra0jT/o5vOmxbX4Q16PG3uw/Gv/BjZtfy2
UVn9I5O1WirZUO2EA6HXtt0O4DeCEwRwXtD0FvBqhZLmStxRaZK2uswFH+ksQHKFDoIp5bHfljab
mdJmJ8MoNrU5bdxHM9K/Rt+XrcwPTDntTaQ3agjhEFjf0Hf05nW8+4Cc6ltW4Qmh5tOlqU0EnNay
HjjOtsauc2gxN1ivZ8Z4JyvGTfVOR6gt9aWhb9qGF/1mJfCKzhheYbQ22SjPQORm2MowWvC29NvV
lzkwBfekNnewaHg2hPQhxb6uCHZQH+hmXZjVpRAVEIxGKjzD2f/2srKwsLCwsLCwsLCwsLCwsLCw
sLCwsLCwsLCwsPgi/gAFPIQeACgAAA==


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

* Re: libgcj/1165: HTTP client code treats headers as body
@ 2000-12-20 13:51 John Stracke
  0 siblings, 0 replies; 2+ messages in thread
From: John Stracke @ 2000-12-20 13:51 UTC (permalink / raw)
  To: warrenl; +Cc: gcc-prs

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

From: John Stracke <francis@ecal.com>
To: gcc-gnats@gcc.gnu.org, warrenl@gcc.gnu.org
Cc:  
Subject: Re: libgcj/1165: HTTP client code treats headers as body
Date: Wed, 20 Dec 2000 15:36:02 -0500

 gcc-gnats@gcc.gnu.org wrote:
 
 > Thank you very much for your problem report.
 > It has the internal identification `libgcj/1165'.
 > The individual assigned to look at your
 > report is: warrenl.
 
 Um...I think I filed this report back in March (with the ID
 java.net/170), and submitted a fix shortly thereafter.  I got
 notice in August that java.net/170 had been closed out because it
 was fixed.
 
 --
 /==============================================================\
 |John Stracke    | http://www.ecal.com |My opinions are my own.|
 |Chief Scientist |=============================================|
 |eCal Corp.      |If jumping off a bridge was "the industry    |
 |francis@ecal.com|standard", would you do it?                  |
 \==============================================================/
 
 
 
>From andyj@mc.com Wed Dec 20 14:16:00 2000
From: andyj@mc.com
To: gcc-gnats@gcc.gnu.org
Subject: c++/1482: va_start generates call to memcpy
Date: Wed, 20 Dec 2000 14:16:00 -0000
Message-id: <20001220220735.3757.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01264.html
Content-length: 980

>Number:         1482
>Category:       c++
>Synopsis:       va_start generates call to memcpy
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 20 14:16:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     E. Andrew Johnson
>Release:        g++-2.95.2
>Organization:
>Environment:
target=powerpc with Altivec 2.95.2 patches
>Description:
The expansion of va_start includes a call to _builtin_memcpy.  When compiling with the gcc-2.95.2 C compiler, this generates the inline expansion of the code.  When compiling with the gcc-2.95.2 C++ compiler, it generates an external call to memcpy.  The problem is that the type.align for "va_list ap" is set to 1, whereas it is
set to 8 (1 byte) in C.  Why does it behave differently
with the C++ compiler?
>How-To-Repeat:
gcc -O2 -c tstdarg.ippc
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
>From bryce@albatross.co.nz Wed Dec 20 14:36:00 2000
From: Bryce McKinlay <bryce@albatross.co.nz>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c++/1101
Date: Wed, 20 Dec 2000 14:36:00 -0000
Message-id: <20001220223602.14574.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01265.html
Content-length: 559

The following reply was made to PR c++/1101; it has been noted by GNATS.

From: Bryce McKinlay <bryce@albatross.co.nz>
To: Neil Bliss <yoda@integratus.com>, gcc-gnats@gcc.gnu.org
Cc:  
Subject: Re: c++/1101
Date: Thu, 21 Dec 2000 11:29:12 +1300

 Neil Bliss wrote:
 
 > Hmm, it still bombs out with the same error:
 >
 > [yoda@tortuga1 test]$ ../libjava/configure --with-threading=posix --disable-new-gxx-abi --prefix=/home/yoda
 
 You need to configure all of GCC, including the C++ compiler, with --disable-new-gxx-abi, not just libjava.
 
   [ bryce ]
 
 
>From yoda@integratus.com Wed Dec 20 14:36:00 2000
From: Neil Bliss <yoda@integratus.com>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c++/1101
Date: Wed, 20 Dec 2000 14:36:00 -0000
Message-id: <20001220223602.14586.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01266.html
Content-length: 770

The following reply was made to PR c++/1101; it has been noted by GNATS.

From: Neil Bliss <yoda@integratus.com>
To: Bryce McKinlay <bryce@albatross.co.nz>
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c++/1101
Date: Wed, 20 Dec 2000 14:31:37 -0800

 ok, sorry for the density.  I'll give it a shot.
 
 On Thu, Dec 21, 2000 at 11:29:12AM +1300, Bryce McKinlay wrote:
 > Neil Bliss wrote:
 > 
 > > Hmm, it still bombs out with the same error:
 > >
 > > [yoda@tortuga1 test]$ ../libjava/configure --with-threading=posix --disable-new-gxx-abi --prefix=/home/yoda
 > 
 > You need to configure all of GCC, including the C++ compiler, with --disable-new-gxx-abi, not just libjava.
 > 
 >   [ bryce ]
 > 
 > 
 
 -- 
 Neil Bliss - Integratus Customer Support
 	Yow!  I am having fun!!
>From favorov@sensi.org Wed Dec 20 14:56:00 2000
From: favorov@sensi.org
To: gcc-gnats@gcc.gnu.org
Subject: c++/1483: c++ reports "internal compiler error" on "new" oprerator when -syntax-only is on
Date: Wed, 20 Dec 2000 14:56:00 -0000
Message-id: <20001220224747.18378.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01267.html
Content-length: 14813

>Number:         1483
>Category:       c++
>Synopsis:       c++ reports "internal compiler error" on "new" oprerator when -syntax-only is on
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 20 14:56:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Alexander Favorov
>Release:        gcc version 2.95.2 19991024 (release)
>Organization:
>Environment:
FreeBsd 4.0 RELEASE
>Description:
c++ reports "internal compiler error" on "new" 
oprerator when -syntax-only is on and there are no 
compilation errors.
>How-To-Repeat:
start the command line from test.cmdline 
compiling the file test.cpp
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-tar; name="testerror.tar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="testerror.tar"

dGVzdC5jbWRsaW5lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMDY0NCAAICAxNzUx
IAAgICAgIDAgACAgICAgICAgIDcwICA3MjIwMzE3MDExICAxMjMxNQAgMAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZhdm9yb3YAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABn
KysgLXggYysrIC0tc3ludGF4LW9ubHkgLXBlZGFudGljIC1zYXZlLXRlbXBzIHRlc3QuY3BwCgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRl
c3QuY3BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMDA2NDQgACAgMTc1MSAA
ICAgICAwIAAgICAgICAgIDE2NiAgNzIyMDMxNjA3NiAgMTE1MjQAIDAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABmYXZvcm92AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAHdoZWVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY2xh
c3MgQQp7CnB1YmxpYzoKCWludCB1OwoJQShpbnQgdik6dSh2KXt9Owp9OwoKaW50IG1haW4oKQp7
CglBICogcHRyQTsKCXB0ckEgPSBuZXcgQSgxKTsKCWRlbGV0ZShwdHJBKTsKCXJldHVybiAwOwp9
CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXN0
LmcrK3ZlcnNpb24AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTAwNjQ0IAAgIDE3NTEgACAg
ICAgMCAAICAgICAgICAgMTcgIDcyMjAzMTcwMzMgIDEyNjcxACAwAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAZmF2b3JvdgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAB3aGVlbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGcrKyAt
diB2ZXJzaW9uCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGVzdC5p
aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMDY0NCAAICAxNzUxIAAgICAg
IDAgACAgICAgICAgMjA1ICA3MjIwMzE2NzI0ICAxMTMzNQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGZhdm9yb3YAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAd2hlZWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIDEgInRl
c3QuY3BwIgpjbGFzcyBBCnsKcHVibGljOgoJaW50IHU7CglBKGludCB2KTp1KHYpe307Cn07Cgpp
bnQgbWFpbigpCnsKCUEgKiBwdHJBOwoJcHRyQSA9IG5ldyBBKDEpOwoJZGVsZXRlKHB0ckEpOwoJ
cmV0dXJuIDA7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
>From sebor@roguewave.com Wed Dec 20 15:26:00 2000
From: sebor@roguewave.com
To: gcc-gnats@gcc.gnu.org
Subject: c++/1484: ICE referencing a template function with -fno-honor-std
Date: Wed, 20 Dec 2000 15:26:00 -0000
Message-id: <20001220231800.28087.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01268.html
Content-length: 1246

>Number:         1484
>Category:       c++
>Synopsis:       ICE referencing a template function with -fno-honor-std
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 20 15:26:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     sebor@roguewave.com
>Release:        2.97 20001113
>Organization:
>Environment:

>Description:
This gives an ICE with a recent snapshot of 2.97 (20001113)
and just an error with 2.95.2. The error disappears when
namespace std is not involved (both compilers).

#define N std

namespace N {
    template <class T> T foo ();
}


template <class T>
struct C
{
    C () { N::foo<int>(); }
};

C<int> c;

>How-To-Repeat:
gcc -c test.cpp -fno-honor-std   
test.cpp: In constructor `C<T>::C() [with T = int]':
test.cpp:16:   instantiated from here
test.cpp:13: `foo' undeclared in 
   namespace `std'
test.cpp:13: Internal error #980519.
test.cpp:13: Internal compiler error in 
   build_member_call, at cp/init.c:1481
   Please submit a full bug report.
   See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
>From tmuller@yahoo.com Wed Dec 20 18:16:00 2000
From: tmuller@yahoo.com
To: gcc-gnats@gcc.gnu.org
Subject: c/1485: Internal compiler error in print_rtl_and_abort
Date: Wed, 20 Dec 2000 18:16:00 -0000
Message-id: <20001221020747.4706.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01269.html
Content-length: 1493

>Number:         1485
>Category:       c
>Synopsis:       Internal compiler error in print_rtl_and_abort
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 20 18:16:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Troy
>Release:        gcc version 2.97 20001218
>Organization:
>Environment:
gcc version 2.97 20001218
Solaris 2.6
>Description:
During compiling of openssl with gcc version 2.97 20001218, I encountered the following error:

make[2]: Entering directory `/camaro/u/ssh/openssl-0.9.6/ssl'
gcc -I../crypto -I../include -fPIC -DTHREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN
_H -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W -DULTRASP
ARC -DMD5_ASM   -c ssl_ciph.c -o ssl_ciph.o
ssl_ciph.c: In function `SSL_CIPHER_description':
ssl_ciph.c:987: Internal compiler error in print_rtl_and_abort, at flow.c:6343
Please submit a full bug report.
 See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
make[2]: *** [ssl_ciph.o] Error 1
make[2]: Leaving directory `/camaro/u/ssh/openssl-0.9.6/ssl'
make[1]: *** [all] Error 1
make[1]: Leaving directory `/camaro/u/ssh/openssl-0.9.6'
make: *** [top] Error 2
bash-2.02#


>How-To-Repeat:
1) Using a bootstrapped gcc version 2.97 20001218
2) cd openssl-0.9.6
3) ./configure --prefix=/usr/local
4) make
>Fix:
none
>Release-Note:
>Audit-Trail:
>Unformatted:
>From none@i-dont-want-email.no-email Wed Dec 20 18:56:00 2000
From: none@i-dont-want-email.no-email
To: gcc-gnats@gcc.gnu.org
Subject: c++/1486: dosen't take good code ICE 122, 
Date: Wed, 20 Dec 2000 18:56:00 -0000
Message-id: <20001221025330.13686.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01270.html
Content-length: 1172

>Number:         1486
>Category:       c++
>Synopsis:       dosen't take good code ICE 122,
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Dec 20 18:56:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     none@i-dont-want-email.no-email
>Release:        2.96
>Organization:
>Environment:
RedHat 686	
>Description:
just look at small program it's like 10 lines.  Gives ICE 122.
>How-To-Repeat:

>Fix:

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

I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQp7CglzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3Rk
OjpzdHJpbmc+IG1hcDsKCW1hcFsiSGVsbG8sICJdID0gIndvcmxkISI7CgoJdHlwZWRlZiBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+OjppdGVyYXRvciBNSTsKCWlmKChNSSBpID0g
bWFwLmZpbmQoIkhlbGxvLCAiKSkgIT0gbWFwLmVuZCgpKSAgCgkJc3RkOjpjb3V0PDxpLT5zZWNv
bmQ8PCdcbic7CQp9Cg==
>From stef@mort.level5.net Thu Dec 21 01:56:00 2000
From: Stefan Morrell <stef@mort.level5.net>
To: tromey@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: libgcj/1125: A different prims.cc compile issue
Date: Thu, 21 Dec 2000 01:56:00 -0000
Message-id: <20001221095600.2970.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01271.html
Content-length: 982

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

From: Stefan Morrell <stef@mort.level5.net>
To: gcc-gnats@gcc.gnu.org, tromey@gcc.gnu.org
Cc:  
Subject: Re: libgcj/1125: A different prims.cc compile issue
Date: Thu, 21 Dec 2000 09:46:41 +0000

 On Wed, Dec 20, 2000 at 08:06:20PM -0000, gcc-gnats@gcc.gnu.org wrote:
 > Thank you very much for your problem report.
 > It has the internal identification `libgcj/1125'.
 > The individual assigned to look at your
 > report is: tromey. 
 > 
 > >Category:       libgcj
 > >Responsible:    tromey
 > >Synopsis:       A different prims.cc compile issue
 > >Arrival-Date:   Wed Dec 20 12:06:20 PST 2000
 
 I posted this error so long ago now that I can't remember when and it was 
 resolved then.
 
 Thanks
 
 Stef
 -- 
 Stefan Morrell			| Still swearing at NT
 Sysadmin Troll			| Still struggling with UNIX
 +44-(0)1924-507300 (W)		| Still enjoying it... must be mad!
 stef@mort.level5.net		| stef@level5.net 
>From okumura@ztv.ne.jp Thu Dec 21 05:16:00 2000
From: Haruhiko Okumura <okumura@ztv.ne.jp>
To: gcc-gnats@gcc.gnu.org
Subject: c/1487: CVS gcc can't compile
Date: Thu, 21 Dec 2000 05:16:00 -0000
Message-id: <200012211305.WAA01993@dhcp183-004.ztv.ne.jp>
X-SW-Source: 2000-q4/msg01272.html
Content-length: 1933

>Number:         1487
>Category:       c
>Synopsis:       CVS gcc can't compile
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 21 05:16:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Haruhiko Okumura
>Release:        2.97 20001129 (experimental)
>Organization:
Matsusaka University
>Environment:
System: Linux dhcp183-004.ztv.ne.jp 2.2.15 #1 Thu May 4 17:46:50 JST 2000 i686 unknown
Architecture: i686

host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc/configure --enable-shared --enable-languages=c++,f77,java : (reconfigured) 
>Description:

while building CVS gcc as of today:

./xgcc -B./ -B/usr/local/i686-pc-linux-gnu/bin/ -isystem /usr/local/i686-pc-linux-gnu/include -O2   -DIN_GCC    -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include  -fPIC -g1  -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -I. -I. -I../../gcc/gcc -I../../gcc/gcc/. -I../../gcc/gcc/config -I../../gcc/gcc/../include  -fexceptions -DL_eh -c ../../gcc/gcc/libgcc2.c -o libgcc/./_eh.o
../../gcc/gcc/libgcc2.c: In function `__sjthrow':
../../gcc/gcc/libgcc2.c:3515: Internal compiler error in distribute_notes, at combine.c:12572
Please submit a full bug report.
 See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
make[3]: *** [libgcc/./_eh.o] Error 1
make[3]: Leaving directory `/opt/local/src/gccobj/gcc'
make[2]: *** [libgcc.a] Error 2
make[2]: Leaving directory `/opt/local/src/gccobj/gcc'
make[1]: *** [stage_a] Error 2
make[1]: Leaving directory `/opt/local/src/gccobj/gcc'
make: *** [bootstrap] Error 2

I tried it with gcc 2.97, egcs 1.1.2, gcc 2.97 with -V2.95.2, but the results are the same.

>How-To-Repeat:
	make bootstrap
>Fix:
	don't know
>Release-Note:
>Audit-Trail:
>Unformatted:
>From jon.connell@arm.com Thu Dec 21 06:06:00 2000
From: jon.connell@arm.com
To: gcc-gnats@gcc.gnu.org
Cc: michael.williams@arm.com, richard.earnshaw@arm.com
Subject: c++/1488: No C++ warning option to guard against bogus return types for C linkage
Date: Thu, 21 Dec 2000 06:06:00 -0000
Message-id: <20001221140232.11860.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01273.html
Content-length: 2364

>Number:         1488
>Category:       c++
>Synopsis:       No C++ warning option to guard against bogus return types for C linkage
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 21 06:06:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     jon.connell@arm.com
>Release:        gcc version 2.95.1
>Organization:
>Environment:
RedHat 6.2, Kernel 2.2.17-6, glibc 2.1.3
>Description:
When returning or passing parameters to/from a C++ function
that is declared to have C linkage, non-C datatypes should
be flagged with a warning to avoid errors.
>How-To-Repeat:
Pass the attached script to bash.

Whilst the programmer could have easily chosen a typedef
for bool in C which matched the C++ implementation on the
host system, the choice of bool for a return type of a
C++ function with C linkage was probably an error and ought
to raise a warning.
>Fix:

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

Y2F0ID4gYm9vbC5jcHAgPDxFT0YKZXh0ZXJuICJDIiBib29sIGYxKHVuc2lnbmVkIGludCAqYSwg
dW5zaWduZWQgaW50KiBiKQp7CiAgKmEgPSAxMDA7CiAgKmIgPSAyMDA7CiAgcmV0dXJuIGZhbHNl
Owp9CkVPRgoKY2F0ID5ib29sLmMgPDxFT0YKI2luY2x1ZGUgPHN0ZGlvLmg+CiAKdHlwZWRlZiBl
bnVtIHtmYWxzZSwgdHJ1ZX0gYm9vbDsKZXh0ZXJuIGJvb2wgZjEodW5zaWduZWQgaW50ICphLCB1
bnNpZ25lZCBpbnQgKmIpOwogCmludCBtYWluKHZvaWQpCnsKICB1bnNpZ25lZCBpbnQgYTsKICB1
bnNpZ25lZCBpbnQgYjsKICBib29sIGMgPSBmMSgmYSwgJmIpOwogIHByaW50ZigiYT0lZCwgYj0l
ZCwgYz0lZFxuIiwgYSwgYiwgYyk7CiAgcmV0dXJuIDA7Cn0KRU9GCgojIFVzZSBldmVyeSB3YXJu
aW5nIGluIHRoZSBib29rLgp3YXJuPSItV2FsbCAtVyAtV3RyYWRpdGlvbmFsIC1XdW5kZWYgLVdz
aGFkb3cgLVdwb2ludGVyLWFyaXRoIC1XYmFkLWZ1bmN0aW9uLWNhc3QgLVdjYXN0LXF1YWwgLVdj
YXN0LWFsaWduIC1Xd3JpdGUtc3RyaW5ncyAtV2NvbnZlcnNpb24gLVdzaWduLWNvbXBhcmUgLVdh
Z2dyZWdhdGUtcmV0dXJuIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVdtaXNzaW5nLXByb3RvdHlwZXMg
LVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAtV21pc3Npbmctbm9yZXR1cm4gLVdyZWR1bmRhbnQtZGVj
bHMgLVduZXN0ZWQtZXh0ZXJucyAtV2lubGluZSAtV2xvbmctbG9uZyAtV2Vycm9yIgoKZysrIC1h
bnNpIC1wZWRhbnRpYyAtYyAkd2FybiBib29sLmNwcApnY2MgLWFuc2kgLXBlZGFudGljIC1vIGJv
b2wgYm9vbC5jIGJvb2wubwoKZWNobyBFeHBlY3QgYT0xMDAsIGI9MjAwLCBjPTAKLi9ib29sCg==
>From jsm28@cam.ac.uk Thu Dec 21 06:36:00 2000
From: "Joseph S. Myers" <jsm28@cam.ac.uk>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c++/1488: No C++ warning option to guard against bogus returntypes for C linkage
Date: Thu, 21 Dec 2000 06:36:00 -0000
Message-id: <20001221143600.28631.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01274.html
Content-length: 1324

The following reply was made to PR c++/1488; it has been noted by GNATS.

From: "Joseph S. Myers" <jsm28@cam.ac.uk>
To: <jon.connell@arm.com>
Cc: <gcc-gnats@gcc.gnu.org>,  <michael.williams@arm.com>, 
     <richard.earnshaw@arm.com>,  <gcc-bugs@gcc.gnu.org>
Subject: Re: c++/1488: No C++ warning option to guard against bogus return
 types for C linkage
Date: Thu, 21 Dec 2000 14:28:24 +0000 (GMT)

 On 21 Dec 2000 jon.connell@arm.com wrote:
 
 > When returning or passing parameters to/from a C++ function
 > that is declared to have C linkage, non-C datatypes should
 > be flagged with a warning to avoid errors.
 > >How-To-Repeat:
 > Pass the attached script to bash.
 >
 > Whilst the programmer could have easily chosen a typedef
 > for bool in C which matched the C++ implementation on the
 > host system, the choice of bool for a return type of a
 > C++ function with C linkage was probably an error and ought
 > to raise a warning.
 
 In the case of bool, this is no longer a problem with CVS GCC and the
 current C standard: ISO C now includes the boolean type _Bool, which is
 compatible with that used for C++ (at least for the new ABI); if you
 include <stdbool.h> with CVS GCC (for the bool typedef) instead of
 defining your own typedef, you get the expected results.
 
 -- 
 Joseph S. Myers
 jsm28@cam.ac.uk
 
>From fsl@citiz.net Thu Dec 21 07:56:00 2000
From: fsl@citiz.net
To: gcc-gnats@gcc.gnu.org
Subject: c/1489: gcc's invaild option -mno-486
Date: Thu, 21 Dec 2000 07:56:00 -0000
Message-id: <20001221154749.14065.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01275.html
Content-length: 2184

>Number:         1489
>Category:       c
>Synopsis:       gcc's invaild option -mno-486
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          mistaken
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 21 07:56:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     gyc
>Release:        unknown-1.0
>Organization:
>Environment:

>Description:
RedHat 5.x
Kernel 2.2.17

gcc can't compile with -mno-486 :
	gcc -mno-486 cfile
output:
	cc1: Invalid option `no-486'

gcc version
root@gyc#~>gcc --version
2.95.2

first is mozilla
Mozilla(Netscape 5)
root@gyc#/usr/local/src/mozilla>make 
...
gcc -o Linux2.2.17_x86_DBG.OBJ/nsinstall.o -c -DXP_UNIX -g -ansi -Wall -pipe -DLINUX -Dlinux -DLINUX1_2 -mno-486 -Di386 -D_POSIX_SOURCE -D_BSD_SOURCE -DSW_THREADS -DNEED_ENDIAN_H -DNEED_GETOPT_H -DNEED_IOCTL_H -DUSE_NODL_TABS -DHAVE_SIGNED_CHAR -DNEED_SYS_TIME_H -DHAVE_SYS_BITYPES_H -DNEED_UINT_T -DNEED_TIME_R -DMITSHM -D_XOPEN_SOURCE -D_PR_LOCAL_THREADS_ONLY -DHAVE_STRERROR  -DDEBUG -UNDEBUG -DDEBUG_root -DTRACING -DNSPR20 -DNETSCAPE -DOSTYPE=\"Linux2.2\" -DMOZILLA_CLIENT -DLAYERS -DUNIX_LDAP -DNSPR -DMOCHA -DUNIX_ASYNC_DNS -DDEVELOPER_DEBUG   -I../include   -I/usr/X11R6/include -I../dist/Linux2.2.17_x86_DBG.OBJ/include   nsinstall.c
cc1: Invalid option `no-486'

now a test source code
My "HELLO" code
root@gyc#~/c-code>cat <<EOF > hello.c
> #include <stdio.h>
> void main (void) { printf("Hello World\n"); }
> EOF
root@gyc#~/c-code>ls
.  ..  hello.c
root@gyc#~/c-code>gcc -mno-486 hello.c -o hello
cc1: Invalid option `no-486'
hello.c: In function `main':
hello.c:2: warning: return type of `main' is not `int'
root@gyc#~/c-code>ls
.  ..  hello.c


now the test source code in http://www.codesourcery.com/gcc-compile.shtml

GCC Output


These are the results of processing your source code with the following command:

      gcc -mno-486 [input] 


Exit code: 256

Messages:

      cc1: Invalid option `no-486'
      /tmp/@31596.7.c: In function `main':
      /tmp/@31596.7.c:2: warning: return type of `main' is not `int'
>How-To-Repeat:
gcc -mno-486 files
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
>From fsl@citiz.net Thu Dec 21 07:56:00 2000
From: fsl@citiz.net
To: gcc-gnats@gcc.gnu.org
Subject: c/1490: gcc's invaild option : -mno-486
Date: Thu, 21 Dec 2000 07:56:00 -0000
Message-id: <20001221155500.17320.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01276.html
Content-length: 2220

>Number:         1490
>Category:       c
>Synopsis:       gcc's invaild option : -mno-486
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          mistaken
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 21 07:56:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     gyc
>Release:        2.95.2
>Organization:
>Environment:
i586
RedHat 5.1
Kernel 2.2.17
>Description:
RedHat 5.x
Kernel 2.2.17

gcc can't compile with -mno-486 :
	gcc -mno-486 cfile
output:
	cc1: Invalid option `no-486'

gcc version
root@gyc#~>gcc --version
2.95.2

first is mozilla
Mozilla(Netscape 5)
root@gyc#/usr/local/src/mozilla>make 
...
gcc -o Linux2.2.17_x86_DBG.OBJ/nsinstall.o -c -DXP_UNIX -g -ansi -Wall -pipe -DLINUX -Dlinux -DLINUX1_2 -mno-486 -Di386 -D_POSIX_SOURCE -D_BSD_SOURCE -DSW_THREADS -DNEED_ENDIAN_H -DNEED_GETOPT_H -DNEED_IOCTL_H -DUSE_NODL_TABS -DHAVE_SIGNED_CHAR -DNEED_SYS_TIME_H -DHAVE_SYS_BITYPES_H -DNEED_UINT_T -DNEED_TIME_R -DMITSHM -D_XOPEN_SOURCE -D_PR_LOCAL_THREADS_ONLY -DHAVE_STRERROR  -DDEBUG -UNDEBUG -DDEBUG_root -DTRACING -DNSPR20 -DNETSCAPE -DOSTYPE=\"Linux2.2\" -DMOZILLA_CLIENT -DLAYERS -DUNIX_LDAP -DNSPR -DMOCHA -DUNIX_ASYNC_DNS -DDEVELOPER_DEBUG   -I../include   -I/usr/X11R6/include -I../dist/Linux2.2.17_x86_DBG.OBJ/include   nsinstall.c
cc1: Invalid option `no-486'

now a test source code
My "HELLO" code
root@gyc#~/c-code>cat <<EOF > hello.c
> #include <stdio.h>
> void main (void) { printf("Hello World\n"); }
> EOF
root@gyc#~/c-code>ls
.  ..  hello.c
root@gyc#~/c-code>gcc -mno-486 hello.c -o hello
cc1: Invalid option `no-486'
hello.c: In function `main':
hello.c:2: warning: return type of `main' is not `int'
root@gyc#~/c-code>ls
.  ..  hello.c


now the test source code in http://www.codesourcery.com/gcc-compile.shtml

GCC Output


These are the results of processing your source code with the following command:

      gcc -mno-486 [input] 


Exit code: 256

Messages:

      cc1: Invalid option `no-486'
      /tmp/@31596.7.c: In function `main':
      /tmp/@31596.7.c:2: warning: return type of `main' is not `int'
>How-To-Repeat:
      gcc -mno-486 [input] 
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
>From cfernandez@myalert.com Thu Dec 21 08:46:00 2000
From: cfernandez@myalert.com
To: gcc-gnats@gcc.gnu.org
Subject: c++/1491: Stupid syntax error causes a compiler internal error
Date: Thu, 21 Dec 2000 08:46:00 -0000
Message-id: <20001221164125.30366.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01277.html
Content-length: 1130

>Number:         1491
>Category:       c++
>Synopsis:       Stupid syntax error causes a compiler internal error
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 21 08:46:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     qt
>Release:        unknown-1.0
>Organization:
>Environment:
linux
>Description:
A small error in a file causes a compiler internal error. 
>How-To-Repeat:
Just compile with
cc -o qt qt.cc
qt.cc is a very small file that recreates the problem. It uses no include files.
>Fix:
Correct the syntax error in qt.cc works around the problem.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="qt.cc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="qt.cc"

CmludCBtYWluICgpCnsKCWNoYXIgbGluZVsyMDBdOwoJY2hhciAqc3Q9c3RyY2hyIChsaW5lLCdc
cicpOwogICAgICAgIGlmIChzdD09TlVMTCkKICAgICAgICAJKnN0PXN0cmNociAobGluZSwnXG4n
KTsKICAgICAgIAlpZiAoc3QhPT1OVUxMKQogICAgICAgICpzdD0wOwp9Cgo=
>From jsm28@cam.ac.uk Thu Dec 21 09:46:00 2000
From: Joseph Myers <jsm28@cam.ac.uk>
To: gcc-gnats@gcc.gnu.org
Cc: jsm28@cam.ac.uk
Subject: other/1492: gccbug security
Date: Thu, 21 Dec 2000 09:46:00 -0000
Message-id: <E1499gz-00044s-00@jsm28.trin.cam.ac.uk>
X-SW-Source: 2000-q4/msg01278.html
Content-length: 1204

>Number:         1492
>Category:       other
>Synopsis:       gccbug security
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 21 09:46:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Joseph S. Myers
>Release:        2.97 20001221 (experimental)
>Organization:
none
>Environment:
System: Linux decomino 2.2.18 #1 Thu Dec 14 19:30:45 UTC 2000 i686 unknown
Architecture: i686

	
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc-cvs/configure --prefix=/opt/gcc/snapshot --disable-shared --enable-threads=posix --with-system-zlib
>Description:

The gccbug script handles temporary files insecurely: it uses
predictable names (depending only on the pid) in /tmp, if TMPDIR is
not set, and will follow symlinks when overwriting them.

>How-To-Repeat:

Standard /tmp exploits: as a hostile user, create symlinks named after
possible pids pointing to files writable by a user who runs gccbug.

>Fix:

Patch to be sent shortly; this PR is a test of the modified gccbug.
>Release-Note:
>Audit-Trail:
>Unformatted:
>From Franz.Sirl-kernel@lauterbach.com Thu Dec 21 11:36:00 2000
From: Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c++/1482: va_start generates call to memcpy
Date: Thu, 21 Dec 2000 11:36:00 -0000
Message-id: <20001221193601.22765.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01279.html
Content-length: 3145

The following reply was made to PR c++/1482; it has been noted by GNATS.

From: Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
To: andyj@mc.com
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c++/1482: va_start generates call to memcpy
Date: Thu, 21 Dec 2000 20:30:28 +0100

 --=====================_31675899==_
 Content-Type: text/plain; charset="us-ascii"; format=flowed
 
 At 23:07 2000-12-20, andyj@mc.com wrote:
 
 > >Number:         1482
 > >Category:       c++
 > >Synopsis:       va_start generates call to memcpy
 > >Confidential:   no
 > >Severity:       serious
 > >Priority:       high
 > >Responsible:    unassigned
 > >State:          open
 > >Class:          sw-bug
 > >Submitter-Id:   net
 > >Arrival-Date:   Wed Dec 20 14:16:00 PST 2000
 > >Closed-Date:
 > >Last-Modified:
 > >Originator:     E. Andrew Johnson
 > >Release:        g++-2.95.2
 > >Organization:
 > >Environment:
 >target=powerpc with Altivec 2.95.2 patches
 > >Description:
 >The expansion of va_start includes a call to _builtin_memcpy.  When 
 >compiling with the gcc-2.95.2 C compiler, this generates the inline 
 >expansion of the code.  When compiling with the gcc-2.95.2 C++ compiler, 
 >it generates an external call to memcpy.  The problem is that the 
 >type.align for "va_list ap" is set to 1, whereas it is
 >set to 8 (1 byte) in C.  Why does it behave differently
 >with the C++ compiler?
 
 Nobody knows :-). This was fixed a few days after gcc-2.95 came out, Bernd 
 Schmidt and others commonized the tree node handling with C/C++ and thus 
 fixed the bug. For gcc-2.95.2 you can try the appended patch which copies 
 the void_type_node TYPE_ALIGN handling from c-decl.c to cp/decl.c.
 
 Franz.
 
          * decl.c (init_decl_processing): Align void_type_node to 
 BITS_PER_UNIT as in C.
 
 
 --=====================_31675899==_
 Content-Type: application/octet-stream; name="cplus-void_type_node-align.patch"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename="cplus-void_type_node-align.patch"
 
 SW5kZXg6IGdjYy9jcC9kZWNsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9nY2MvZWdjcy9n
 Y2MvY3AvZGVjbC5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM1OC40LjEzCmRpZmYgLXUgLXAg
 LXIxLjM1OC40LjEzIGRlY2wuYwotLS0gZ2NjL2NwL2RlY2wuYwkyMDAwLzA2LzEwIDAwOjA2OjQy
 CTEuMzU4LjQuMTMKKysrIGdjYy9jcC9kZWNsLmMJMjAwMC8xMi8yMSAxODo0Mjo1MwpAQCAtNjQ3
 Myw2ICs2NDczLDkgQEAgaW5pdF9kZWNsX3Byb2Nlc3NpbmcgKCkKICAgdm9pZF90eXBlX25vZGUg
 PSBtYWtlX25vZGUgKFZPSURfVFlQRSk7CiAgIHJlY29yZF9idWlsdGluX3R5cGUgKFJJRF9WT0lE
 LCBOVUxMX1BUUiwgdm9pZF90eXBlX25vZGUpOwogICBsYXlvdXRfdHlwZSAodm9pZF90eXBlX25v
 ZGUpOyAvKiBVc2VzIGludGVnZXJfemVyb19ub2RlLiAgKi8KKyAgLyogV2UgYXJlIG5vdCBnb2lu
 ZyB0byBoYXZlIHJlYWwgdHlwZXMgaW4gQyB3aXRoIGxlc3MgdGhhbiBieXRlIGFsaWdubWVudCwK
 KyAgICAgc28gd2UgbWlnaHQgYXMgd2VsbCBub3QgaGF2ZSBhbnkgdHlwZXMgdGhhdCBjbGFpbSB0
 byBoYXZlIGl0LiAgKi8KKyAgVFlQRV9BTElHTiAodm9pZF90eXBlX25vZGUpID0gQklUU19QRVJf
 VU5JVDsKICAgdm9pZF9saXN0X25vZGUgPSBidWlsZF90cmVlX2xpc3QgKE5VTExfVFJFRSwgdm9p
 ZF90eXBlX25vZGUpOwogICBUUkVFX1BBUk1MSVNUICh2b2lkX2xpc3Rfbm9kZSkgPSAxOwogCg==
 --=====================_31675899==_--
 
>From john@ndr.com Thu Dec 21 12:36:00 2000
From: John Griffin <john@ndr.com>
To: tromey@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: libgcj/1430: Writing on OutputStream of bad Socket kills app with "Broken pipe"
Date: Thu, 21 Dec 2000 12:36:00 -0000
Message-id: <20001221203600.12601.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01280.html
Content-length: 1056

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

From: John Griffin <john@ndr.com>
To: gcc-gnats@gcc.gnu.org, tromey@gcc.gnu.org
Cc:  
Subject: Re: libgcj/1430: Writing on OutputStream of bad Socket kills app with "Broken pipe"
Date: Thu, 21 Dec 2000 15:29:43 -0500 (EST)

 In reference to libgcj/1430 and 1425, I don't know what in the world 
 happened, but either our sendmail or yours went nolstagic.  I sent and 
 you responded and fixed these well more than a year ago.
 
 Anyway, if it's my end, accept apologies for the annoyance and ignore 
 these reports.
 
 
 John C. Griffin, 
 Ned Davis Research, Inc.
 
 On 20 Dec 2000 gcc-gnats@gcc.gnu.org wrote:
 
 > Thank you very much for your problem report.
 > It has the internal identification `libgcj/1430'.
 > The individual assigned to look at your
 > report is: tromey. 
 > 
 > >Category:       libgcj
 > >Responsible:    tromey
 > >Synopsis:       Writing on OutputStream of bad Socket kills app with "Broken pipe"
 > >Arrival-Date:   Wed Dec 20 12:19:46 PST 2000
 > 
>From jsm28@cam.ac.uk Thu Dec 21 12:46:00 2000
From: Joseph Myers <jsm28@cam.ac.uk>
To: gcc-gnats@gcc.gnu.org
Cc: jsm28@cam.ac.uk
Subject: other/1494: Residual EGCS references in comments
Date: Thu, 21 Dec 2000 12:46:00 -0000
Message-id: <E149CZh-0006Xx-00@jsm28.trin.cam.ac.uk>
X-SW-Source: 2000-q4/msg01282.html
Content-length: 2051

>Number:         1494
>Category:       other
>Synopsis:       Residual EGCS references in comments
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          doc-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 21 12:46:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Joseph S. Myers
>Release:        2.97 20001218 (experimental)
>Organization:
none
>Environment:
System: Linux decomino 2.2.18 #1 Thu Dec 14 19:30:45 UTC 2000 i686 unknown
Architecture: i686

	
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc-cvs/configure --prefix=/opt/gcc/snapshot --disable-shared --enable-threads=posix --with-system-zlib
>Description:

The following references to EGCS remain in comments in GCC (after
<URL: http://gcc.gnu.org/ml/gcc-patches/2000-12/msg01092.html >) which
it would be desirable to update to describe current GCC instead of
obsolete EGCS.

gcc/config/alpha/openbsd.h:   dwarf unwind information. egcs doesn't try too hard to check internal
gcc/config/alpha/openbsd.h:   Check alpha/alpha.h, alpha/osf.h for it when egcs is upgraded.  */
gcc/config/i370/i370.md:;; Basically, using clobber in egcs-1.1.1 will ruin ability to optimize around
gcc/config/i386/openbsd.h:   dwarf unwind information. egcs doesn't try too hard to check internal
gcc/config/m68k/openbsd.h:   dwarf unwind information. egcs doesn't try too hard to check internal
gcc/config/m68k/x-mot3300:# With egcs-1.1.2, this also happens for f/expr.o and f/stb.o
gcc/config/ns32k/ns32k.h:   2.8 but was not picked up by egcs (at least egcs 1.0). Having all
gcc/config/sparc/openbsd.h:   dwarf unwind information. egcs doesn't try too hard to check internal

>How-To-Repeat:

Find references to EGCS in comments, which aren't helpful in telling
you what current GCC might do and may potentially confuse about the
currency of EGCS.

>Fix:

Change the comments listed above to describe current GCC.
>Release-Note:
>Audit-Trail:
>Unformatted:
>From jsm28@cam.ac.uk Thu Dec 21 12:46:00 2000
From: Joseph Myers <jsm28@cam.ac.uk>
To: gcc-gnats@gcc.gnu.org
Cc: jsm28@cam.ac.uk
Subject: other/1493: Residual EGCS references in user documentation
Date: Thu, 21 Dec 2000 12:46:00 -0000
Message-id: <E149CX2-0006W9-00@jsm28.trin.cam.ac.uk>
X-SW-Source: 2000-q4/msg01281.html
Content-length: 2374

>Number:         1493
>Category:       other
>Synopsis:       Residual EGCS references in user documentation
>Confidential:   no
>Severity:       non-critical
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          doc-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 21 12:46:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Joseph S. Myers
>Release:        2.97 20001218 (experimental)
>Organization:
none
>Environment:
System: Linux decomino 2.2.18 #1 Thu Dec 14 19:30:45 UTC 2000 i686 unknown
Architecture: i686

	
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc-cvs/configure --prefix=/opt/gcc/snapshot --disable-shared --enable-threads=posix --with-system-zlib
>Description:

The following non-historical references to EGCS remain in GCC in what
may be considered user-visible documentation (after
<URL: http://gcc.gnu.org/ml/gcc-patches/2000-12/msg01094.html >), and
really ought to be fixed.


libio/ NEWS:*** Major changes in libio for egcs:
libstdc++/ NEWS:*** Noteworthy changes in libstdc++ for EGCS

If the old libstdc++ remains in GCC for GCC 3.0, then these files need
something added at the top to clearly state their relation to GCC and
the obsolescence of the old libstdc++.


libstdc++-v3/docs/html/17_intro/BADNAMES:For egcs:

The list needs either

* to be marked as a historical list relating to an obsolete compiler
  version, namely such-and-such an EGCS version; or

* (preferred) to be updated to relate to GCC 3.0, and to be marked as
  relating to GCC 3.0 rather than EGCS.


libffi/README:Libffi has been tested with the egcs 1.0.2 gcc compiler. Chances are
libffi/README:EGCS 1.0.1 (and probably other versions of EGCS/GCC) also has a
libffi/README:only single-precision, but EGCS stores single-precision arguments as

These references need to be updated to relate to non-ancient GCC
versions.  Especially, the latter two describe a problem with EGCS
1.0.1 as something current; if the problem is fixed, it should be
clearly listed as a historical note if retained; if not, it should say
something like "all GCC versions from at least EGCS 1.0.1 through to
GCC 3.0".

>How-To-Repeat:

Find references to this mysterious "EGCS" thing as if it were
something current in the documentation.

>Fix:

See above.
>Release-Note:
>Audit-Trail:
>Unformatted:
>From gilles.rajaobelina@wanadoo.fr Thu Dec 21 14:36:00 2000
From: gilles.rajaobelina@wanadoo.fr
To: gcc-gnats@gcc.gnu.org
Subject: c/1495: Internal compiler error in distribute_notes, at combine.c:12572
Date: Thu, 21 Dec 2000 14:36:00 -0000
Message-id: <20001221223018.20817.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01283.html
Content-length: 26545

>Number:         1495
>Category:       c
>Synopsis:       Internal compiler error in distribute_notes, at combine.c:12572
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 21 14:36:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Gilles-Claude Rajaobelina
>Release:        unknown-1.0
>Organization:
>Environment:
GNU C version 2.97 20001221 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 2.95.2 19991024 (release).
>Description:
./cc1 -fpreprocessed toto.i.c -dumpbase toto.c -g1 -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -version -fPIC -fexceptions -o toto.s
GNU C version 2.97 20001221 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 2.95.2 19991024 (release).
options passed:  -fpreprocessed -g1 -O2 -W -Wall -Wwrite-strings
 -Wstrict-prototypes -Wmissing-prototypes -fPIC -fexceptions
options enabled:  -fdefer-pop -foptimize-sibling-calls -fcse-follow-jumps
 -fcse-skip-blocks -fexpensive-optimizations -fthread-jumps
 -fstrength-reduce -fpeephole -fforce-mem -ffunction-cse -finline
 -fkeep-static-consts -fcaller-saves -fpcc-struct-return -fgcse
 -frerun-cse-after-loop -frerun-loop-opt -fdelete-null-pointer-checks
 -fschedule-insns2 -fsched-interblock -fsched-spec -fbranch-count-reg -fPIC
 -fexceptions -fnew-exceptions -freorder-blocks -fcommon -fgnu-linker
 -fregmove -foptimize-register-move -fargument-alias -fstrict-aliasing
 -fident -fpeephole2 -fmath-errno -m80387 -mhard-float -mno-soft-float
 -mieee-fp -mfp-ret-in-387
 vprintf getchar getc_unlocked getchar_unlocked putchar fputc_unlocked putc_unlocked putchar_unlocked feof_unlocked ferror_unlocked __strcpy_small __strcspn_c1 __strcspn_c2 __strcspn_c3 __strspn_c1 __strspn_c2 __strspn_c3 __strpbrk_c2 __strpbrk_c3 __strtok_r_1c __strsep_1c __strsep_2c __strsep_3c __strsep_g strtod strtol strtoul strtoq strtouq strtoll strtoull atof atoi atol atoll __gthread_active_p __gthread_mutex_lock __gthread_mutex_trylock __gthread_mutex_unlock __default_terminate __terminate __throw_type_match __empty __get_eh_context __get_eh_info init_reg_size_table eh_context_initialize eh_context_static __eh_alloc __eh_free __get_dynamic_handler_chain __sjthrow
toto.i.c: In function `__sjthrow':
toto.i.c:3217: Internal compiler error in distribute_notes, at combine.c:12572
Please submit a full bug report.
 See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
>How-To-Repeat:

>Fix:

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

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
>From neil@gcc.gnu.org Thu Dec 21 23:06:00 2000
From: neil@gcc.gnu.org
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c++/1076
Date: Thu, 21 Dec 2000 23:06:00 -0000
Message-id: <20001222070600.21350.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01284.html
Content-length: 599

The following reply was made to PR c++/1076; it has been noted by GNATS.

From: neil@gcc.gnu.org
To: teg@redhat.com, gcc-gnats@gcc.gnu.org, jwe@bevo.che.wisc.edu,
  nobody@gcc.gnu.org, sullivan@mathcom.com
Cc:  
Subject: Re: c++/1076
Date: 22 Dec 2000 07:05:20 -0000

 Synopsis: g++ 2.96 formatting doubles outputs nulls
 
 State-Changed-From-To: open->closed
 State-Changed-By: neil
 State-Changed-When: Thu Dec 21 23:05:20 2000
 State-Changed-Why:
     Fixed in CVS.
     http://gcc.gnu.org/ml/gcc-bugs/2000-12/msg00486.html
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1076&database=gcc
>From neil@gcc.gnu.org Thu Dec 21 23:16:00 2000
From: neil@gcc.gnu.org
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c/1489
Date: Thu, 21 Dec 2000 23:16:00 -0000
Message-id: <20001222071600.22990.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01285.html
Content-length: 481

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

From: neil@gcc.gnu.org
To: fsl@citiz.net, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org
Cc:  
Subject: Re: c/1489
Date: 22 Dec 2000 07:07:56 -0000

 Synopsis: gcc's invaild option -mno-486
 
 State-Changed-From-To: open->closed
 State-Changed-By: neil
 State-Changed-When: Thu Dec 21 23:07:56 2000
 State-Changed-Why:
     Duplicate of 1490
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1489&database=gcc
>From murali@mpi-softtech.com Fri Dec 22 03:56:00 2000
From: murali@mpi-softtech.com
To: gcc-gnats@gcc.gnu.org
Cc: admin@mpi-softtech.com
Subject: c/1496: gcc 2.95.2 results in runtime segmentation fault
Date: Fri, 22 Dec 2000 03:56:00 -0000
Message-id: <20001222115503.23557.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01286.html
Content-length: 929

>Number:         1496
>Category:       c
>Synopsis:       gcc 2.95.2 results in runtime segmentation fault
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Dec 22 03:56:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     murali@mpi-softtech.com
>Release:        gcc version 2.95.2 19991024 (release)
>Organization:
>Environment:
sparc-sun-solaris2.7/2.95.2
>Description:
There is only one executable line in the code below. 
I used gcc test.c to compile i.e. no options. When I run,
I get a segmentation fault.

a.out
Segmentation Fault (core dumped)
>How-To-Repeat:
#include "stdio.h"

int main(void)
{
  int* a;
  int* b;

  *b = 3 ;

  return 0;
}
>Fix:
I tried to insert a line
int c;
between the two pointer declarations. Then, it works.
>Release-Note:
>Audit-Trail:
>Unformatted:
>From steger@mvtec.com Fri Dec 22 04:56:00 2000
From: steger@mvtec.com
To: gcc-gnats@gcc.gnu.org
Subject: c++/1497: Exceptions thrown in a shared library cannot be caught under Linux
Date: Fri, 22 Dec 2000 04:56:00 -0000
Message-id: <20001222125407.7342.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01287.html
Content-length: 10742

>Number:         1497
>Category:       c++
>Synopsis:       Exceptions thrown in a shared library cannot be caught under Linux
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Dec 22 04:56:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Carsten Steger
>Release:        gcc-2.95
>Organization:
>Environment:
SUSE Linux 7.0
Linux 2.2.16 #1 Wed Aug 2 20:22:26 GMT 2000 i686 unknown 
gcc version 2.95.2 19991024 (release): i486-suse-linux
>Description:
Exceptions thrown in a shared library or thrown in a
function in the program which are called from the shared
library cannot be caught in the program that uses the
shared library under Linux 2.2.

>How-To-Repeat:
Compile the attached program and shared library using the
supplied makefile, add the directory in which the program
and shared library reside (or .) to LD_LIBRARY_PATH, and
execute the program.

>Fix:

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

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
n3z6F07/B2sN69IAGAEA
>From pfeifer@dbai.tuwien.acdot@ Fri Dec 22 06:46:00 2000
From: pfeifer@dbai.tuwien.ac dot@(Gerald Pfeifer)
To: gcc-gnats@gcc.gnu.org
Subject: c++/1498: Internal compiler error in pop_binding, at cp/decl.c:1179
Date: Fri, 22 Dec 2000 06:46:00 -0000
Message-id: <200012221441.PAA12244@nunki.dbai.tuwien.ac.at>
X-SW-Source: 2000-q4/msg01288.html
Content-length: 1340

>Number:         1498
>Category:       c++
>Synopsis:       Internal compiler error in pop_binding, at cp/decl.c:1179
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-illegal-code
>Submitter-Id:   net
>Arrival-Date:   Fri Dec 22 06:46:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Gerald Pfeifer
>Release:        2.97 20001222 (experimental)
>Organization:
>Environment:
System: SunOS nunki 5.8 Generic_108528-04 sun4u sparc SUNW,Ultra-60
Architecture: sun4

	
host: sparc-sun-solaris2.8
build: sparc-sun-solaris2.8
target: sparc-sun-solaris2.8
configured with: /sw/test/gcc/gcc/configure --prefix=/sw/test/gcc/SunOS --enable-languages=c,c++,objc,java
>Description:
	When compiling the example below (w/o any options) g++ correctly
	diagnoses the problem and then crashes:

	x.cc:15: semicolon missing after declaration of `MG::STACK'
	x.cc:15: parse error at end of input
	x.cc:15: Internal compiler error in pop_binding, at cp/decl.c:1179

-------- cut --------
namespace MG {

class STACK
    {
public:
    class ELEMENT
        {
    public:
        unsigned short  value;
        };

    STACK() : data()
        { }
}
-------- cut --------
	
>How-To-Repeat:
	g++ check.C
>Fix:
	
>Release-Note:
>Audit-Trail:
>Unformatted:
>From vincent_radivoniuk@mail.schneider.fr Fri Dec 22 06:56:00 2000
From: vincent_radivoniuk@mail.schneider.fr
To: gcc-gnats@gcc.gnu.org
Cc: vincent_radivoniuk@mail.schneider.fr, orvoen@free.fr
Subject: c/1499: bad assembly code with use of inline functions
Date: Fri, 22 Dec 2000 06:56:00 -0000
Message-id: <20001222144728.4529.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01290.html
Content-length: 1045

>Number:         1499
>Category:       c
>Synopsis:       bad assembly code with use of inline functions
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Fri Dec 22 06:56:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Vincent RADIVONIUK
>Release:        2.95.2 19991024
>Organization:
>Environment:
gcc is used as a cross-compiler this way :
host   : intel pentium III under windows 98
target : hitachi h8/300
>Description:
using the command xgcc -c -mh -O2 -save-temps bug.c
i receive this output
     bug.s: Assembler messages :
     bug.s:34: Warning: operand #0xbebc200 out of range.

The assembler code is wrong if the function is inline and right if not (see assembly file). 
>How-To-Repeat:
built your cross compiler whith options
   --host=i386-cygwin32 --target=h8300hms
use the command xgcc -c -mh -O2 -save-temps bug.c
on the C source 
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
>From vincent_radivoniuk@mail.schneider.fr Fri Dec 22 06:56:00 2000
From: vincent_radivoniuk@mail.schneider.fr
To: gcc-gnats@gcc.gnu.org
Cc: vincent_radivoniuk@mail.schneider.fr, orvoen@free.fr
Subject: c/1500: bad assembly code with use of inline functions (added forgotten ZIP file)
Date: Fri, 22 Dec 2000 06:56:00 -0000
Message-id: <20001222144932.6763.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01289.html
Content-length: 2608

>Number:         1500
>Category:       c
>Synopsis:       bad assembly code with use of inline functions (added forgotten ZIP file)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Fri Dec 22 06:56:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Vincent RADIVONIUK
>Release:        2.95.2 19991024
>Organization:
>Environment:
gcc is used as a cross-compiler this way :
host   : intel pentium III under windows 98
target : hitachi h8/300
>Description:
using the command xgcc -c -mh -O2 -save-temps bug.c
i receive this output
     bug.s: Assembler messages :
     bug.s:34: Warning: operand #0xbebc200 out of range.

The assembler code is wrong if the function is inline and right if not (see assembly file). 
>How-To-Repeat:
built your cross compiler whith options
   --host=i386-cygwin32 --target=h8300hms
use the command xgcc -c -mh -O2 -save-temps bug.c
on the C source 
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-zip-compressed; name="bug.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bug.zip"

UEsDBBQAAgAIAG56limGLSEvPgEAAA8DAAAFAAAAYnVnLnO1Ud9PwjAQfu6S/Q8nvMLsRjKJexFR
hIQMEo2vpGx1qxntcu348d/bbQYT0EhM7Mvd933X9ru7iDyNxzBRCCbnMBWGJbmA6fB6QKnrROT+
cCRHG44iYTA3KTCZwviQyUrDc1WWCk1djLzgTHOY9H0Lob8IXMd1iJcP7Wt5nb2JgpPOusq8pFNj
zRMjlATP8L2pCVaITIJfp1mh1qyA1cPs1Q9X8eJlFs9n8aPrnDK3trqsdO4VhGNowUZtm/ym1+AI
uqPl0vKp2O61twP0rUAbIV6sWq1U5fE+Gv2DFxRZbn228bd/G7wjXds8pT30jxXdgH6e1gd510ju
zhu90NQOlcysqSZeaurLAlJCSASDANbCaNCqwoSDKjnWWxYSGPhhqyHPhDYc4eqsu+C7OQd/nXM7
ipOF/++2uUxd5wNQSwMEFAACAAgAIXyWKTqLvbvQAAAA4gEAAAUAAABidWcuabWQvQrCMBCA5xb6
DseJkEgpbQUHxU2HgtRFXEPVUAMxhdg/Ed/dpK0KTi4e4SDJ3XcfN4II8FDlwRE913OFKmGV7KMZ
S7e7JN0k6ZrIQuXQTmPfft6iGYW75zr2Umey4gvbByac7HqBupBZKSQHgidRt9eggXHs83GIc1xq
JF0LnWOIxCCpj+bNMuligGheVlq90Q8zynMZE0oKxRmDj+HPepb7X8V+cVrk55LUhTj1DuYMpd8r
7aRpFJqYxDb7U5vthIfzwjXaFH1w37RfUU9QSwMEFAACAAgAy3CWKbDHie/JAAAA1QEAAAUAAABi
dWcuY7WQTwvCIBTAzxP8DiIMNCS2BTtsdKvDINYlusogWYI5cJsV0XdP15/BTrv0kAfqe7/340Eg
dYc2xTFOebk/FOWuKLdENbpGt1XC/Oc9Til6QBD4i61UL3IIIEAugqq9INuoqpNKIIJP0t7a5RWF
CRNhhDO8NpgMLTTDESYOSRl2b55J8w/EiK43+od+ulEQcC61klpwjkbD2Xqe+19FOCzOyPrcEdvI
09vBnU/pdKWDNI0jF4vEZ7by2U94Bl/c1biiETelzUW9AFBLAQIUABQAAgAIAG56limGLSEvPgEA
AA8DAAAFAAAAAAAAAAEAIAC2gQAAAABidWcuc1BLAQIUABQAAgAIACF8lik6i7270AAAAOIBAAAF
AAAAAAAAAAEAIAC2gWEBAABidWcuaVBLAQIUABQAAgAIAMtwlimwx4nvyQAAANUBAAAFAAAAAAAA
AAEAIAC2gVQCAABidWcuY1BLBQYAAAAAAwADAJkAAABAAwAAAAA=
>From neil@gcc.gnu.org Fri Dec 22 07:36:00 2000
From: neil@gcc.gnu.org
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c/1496
Date: Fri, 22 Dec 2000 07:36:00 -0000
Message-id: <20001222153601.15391.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01292.html
Content-length: 597

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

From: neil@gcc.gnu.org
To: admin@mpi-softtech.com, gcc-gnats@gcc.gnu.org, murali@mpi-softtech.com,
  nobody@gcc.gnu.org
Cc:  
Subject: Re: c/1496
Date: 22 Dec 2000 15:32:12 -0000

 Synopsis: gcc 2.95.2 results in runtime segmentation fault
 
 State-Changed-From-To: open->closed
 State-Changed-By: neil
 State-Changed-When: Fri Dec 22 07:32:12 2000
 State-Changed-Why:
     This is not a bug; it is a bug in your code.  You have
     not initialised b.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1496&database=gcc
>From neil@gcc.gnu.org Fri Dec 22 07:36:00 2000
From: neil@gcc.gnu.org
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c/1499
Date: Fri, 22 Dec 2000 07:36:00 -0000
Message-id: <20001222153601.15396.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01291.html
Content-length: 541

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

From: neil@gcc.gnu.org
To: orvoen@free.fr, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org,
  vincent_radivoniuk@mail.schneider.fr
Cc:  
Subject: Re: c/1499
Date: 22 Dec 2000 15:34:34 -0000

 Synopsis: bad assembly code with use of inline functions
 
 State-Changed-From-To: open->closed
 State-Changed-By: neil
 State-Changed-When: Fri Dec 22 07:34:33 2000
 State-Changed-Why:
     Duplicate of #1500.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1499&database=gcc
>From jsm28@cam.ac.uk Fri Dec 22 07:56:00 2000
From: Joseph Myers <jsm28@cam.ac.uk>
To: gcc-gnats@gcc.gnu.org
Cc: jsm28@cam.ac.uk
Subject: c/1501: Complex conjugation ICE
Date: Fri, 22 Dec 2000 07:56:00 -0000
Message-id: <E149UVv-0000kz-00@jsm28.trin.cam.ac.uk>
X-SW-Source: 2000-q4/msg01293.html
Content-length: 1202

>Number:         1501
>Category:       c
>Synopsis:       Complex conjugation ICE
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Fri Dec 22 07:56:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Joseph S. Myers
>Release:        2.97 20001222 (experimental)
>Organization:
none
>Environment:
System: Linux decomino 2.2.18 #1 Thu Dec 14 19:30:45 UTC 2000 i686 unknown
Architecture: i686

	
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc-cvs/configure --prefix=/opt/gcc/snapshot --disable-shared --enable-threads=posix --with-system-zlib
>Description:

Complex conjugation of a constant causes an ICE.

>How-To-Repeat:

$ cat t.c
double __complex__
f (void)
{
  return ~(1.0 + 2.0i);
}
$ gcc -c t.c
t.c: In function `f':
t.c:4: Tree check: expected class 'e', have 'c' (complex_cst)
t.c:4: Internal compiler error in fold, at fold-const.c:5282
Please submit a full bug report.
 See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.

>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
>From jsm28@cam.ac.uk Fri Dec 22 12:46:00 2000
From: Joseph Myers <jsm28@cam.ac.uk>
To: gcc-gnats@gcc.gnu.org
Cc: jsm28@cam.ac.uk
Subject: other/1502: Nonexistent -W options not diagnosed
Date: Fri, 22 Dec 2000 12:46:00 -0000
Message-id: <E149YwT-0002Fg-00@jsm28.trin.cam.ac.uk>
X-SW-Source: 2000-q4/msg01294.html
Content-length: 1324

>Number:         1502
>Category:       other
>Synopsis:       Nonexistent -W options not diagnosed
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          accepts-illegal
>Submitter-Id:   net
>Arrival-Date:   Fri Dec 22 12:46:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Joseph S. Myers
>Release:        2.97 20001222 (experimental)
>Organization:
none
>Environment:
System: Linux decomino 2.2.18 #1 Thu Dec 14 19:30:45 UTC 2000 i686 unknown
Architecture: i686

	
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc-cvs/configure --prefix=/opt/gcc/snapshot --disable-shared --enable-threads=posix --with-system-zlib
>Description:

GCC, for both C and C++, fails to give any diagnostic when a
non-existent -W option is used.

GCC 2.95.2 gave proper diagnostics for such nonsense options.

>How-To-Repeat:

gcc -c -Wnonexistent-option t.c
gcc -c -Wnonexistent-option t.C

(for any t.c, t.C, e.g. empty).

>Fix:

I suspect cpp_handle_option is to blame for returning 1 here for any
option starting -W, whether recognised or not.  This makes
c_decode_option / lang_decode_option return 1 even if they didn't
understand and consume any arguments.
>Release-Note:
>Audit-Trail:
>Unformatted:
>From vic@qbius.com Fri Dec 22 17:46:00 2000
From: vic@qbius.com
To: gcc-gnats@gcc.gnu.org
Subject: c++/1503: Internal Compiler Error compiling omniORB3.0.2 on Alpha-Linux
Date: Fri, 22 Dec 2000 17:46:00 -0000
Message-id: <20001223013940.1572.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01295.html
Content-length: 62862

>Number:         1503
>Category:       c++
>Synopsis:       Internal Compiler Error compiling omniORB3.0.2 on Alpha-Linux
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Fri Dec 22 17:46:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     vic@qbius.com
>Release:        2.95.2
>Organization:
>Environment:
Linux 2.2.14 #3 SMP Wed Jul 5 13:08:28 CDT 2000 alpha unknown
>Description:
Internal Compiler Error compiling code which passes through on numerous other systems.
>How-To-Repeat:
.ii file included. Repeatable if issue:
g++ -c -O2 -Wall -Wno-unused -o strand.o strand.ii
>Fix:
If you do not use -O2 it comiles.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="gcc.2.95.2.ICE.tar.bz2"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="gcc.2.95.2.ICE.tar.bz2"

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
ZZXCyNodrJaZst+vMn0RlXKeFxgRcM5kLuC1cEMaUat09XlLGaDi92macXTjRXWFWHuKFU4y6QFO
hNQYKdLr7e+2ngUNAhzmCk7jim7uC64urrupG13bnzmLHNad16W6xVy6pvLkmlZe61ua5ugao0RS
TydzZQBSNXmt9LeRRlK5E1UC6kkidtshVKhtobGgcuFOzVGZrQahvJuUlWMrKarGNVzN8+a97lLL
Ma/HuXLza8LPXX4970UHzc67rvs9Tw5qUrnd7RmmNaRjnLcpSZjIq6sZUtwz173rkm2abc7Knzo4
RO7GV1IDKKiuiNiZQqyS34GxyEYMZTRyjNdsas063MGkoS1imbJhqJrX4aenJJNuqfLmy67tQuBq
7LNXVkkY5crq4ppdrlukljZ1Lnu7oru3Vcu6Xte/d9Xz4+drpzSaKLdPXuYmrznm6V5vKe/K987k
8vi+a4d7l7rSMvDB1FMyb3dT2V2051GSmUlHRUldzt6rUaxv9n+O+xFR/rw4bTJZj902v8+Ci8GH
70bk2bTOXTlXAmFvzaQpDDXK0lsK2aYmy201X4MXVUbUGraiULRFVJRDY2ok0W1C1YNUbbIlGCrS
a1Ua229JVTJQKUQNpUClVmIIogkJqGI/Q3Fmj11pNX1zNYYYaYDSSqVhmAtobWBhjnSvNraKQ2gP
0fizy37I5XOH9dw/Pg9VRQlO1Prrn5LFMpeNu3gXl712093l5G2K2LzXNsYj27tja6c39mrmo22K
xok+cdGzTUas7rVzURWifP2/V4avaKQrM20NZa8uttl2g0y5VEJUNi3K5aS1fxLfGq81JqrgZFDQ
vudufq8MDch4S5FUoEEVRtC/f65tiRpSYLCVGKLMfjOjUm2RlRqKk1u7oSNzbcq+NyyW6W5jVjRY
oktYxtRaosZN5W3KitblkqNjWiooqxsWsZCv0uWLf4CrmMJpXrww/ohDtLs+j6dCHbCdJR5Q2Yo5
VHPBy1Jlfu+zSGpKBu3EMk3IT7ZfC83jvh1xJYk1LlywwgiRoe/Amc6wxepOPzGxBtEyFBQJMg0x
k/oma1uA2cXTdaE6GrfFRaaRNGimBWKKDGA9/u/yXb3uSP/YKlQgxjGMYxjHJJ++Y+LLqvgaL6+t
8azjUkoqru7LeYnKbayRl8M++47wzWzM1optsbHHTyi6vwMv0wvWuNYw8lwocYcMDi2qZDjIXcoY
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
i1v/8XckU4UJC/EKffA=
>From green@gcc.gnu.org Sat Dec 23 12:16:00 2000
From: green@gcc.gnu.org
To: apbianco@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: java/1159
Date: Sat, 23 Dec 2000 12:16:00 -0000
Message-id: <20001223201600.23108.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01296.html
Content-length: 1188

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

From: green@gcc.gnu.org
To: apbianco@gcc.gnu.org, bryce@albatross.co.nz, gcc-gnats@gcc.gnu.org
Cc:  
Subject: Re: java/1159
Date: 23 Dec 2000 20:09:32 -0000

 Synopsis: Source parser miscompiles loops when using "-O"
 
 State-Changed-From-To: open->analyzed
 State-Changed-By: green
 State-Changed-When: Sat Dec 23 12:09:32 2000
 State-Changed-Why:
     You can work around this bug by compiling with -fno-defer-pop.
     
     The defer-pop docs say:
     Always pop the arguments to each function call as soon as that function
     returns.  For machines which must pop arguments after a function call,
     the compiler normally lets arguments accumulate on the stack for several
     function calls and pops them all at once.
     
     
     Compare "gcj -O0 -fdefer-pops -S Loop.java" with
     "gcj -O0 -fno-defer-pops -S Loop.java".
     If you look at the asm code for the method calls within 
     our loop, you'll see that we're popping the stack twice (once after each function call, and the second time at the end of the loop)!
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1159&database=gcc
>From gerald@gcc.gnu.org Sat Dec 23 16:56:00 2000
From: gerald@gcc.gnu.org
To: bkoz@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: web/1024
Date: Sat, 23 Dec 2000 16:56:00 -0000
Message-id: <20001224005600.24322.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01297.html
Content-length: 749

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

From: gerald@gcc.gnu.org
To: bkoz@gcc.gnu.org, gcc-gnats@gcc.gnu.org, gerald@gcc.gnu.org,
  jsm28@cam.ac.uk
Cc:  
Subject: Re: web/1024
Date: 24 Dec 2000 00:51:43 -0000

 Synopsis: libstdc++ web pages reference sources.redhat.com mirror list
 
 Responsible-Changed-From-To: gerald->bkoz
 Responsible-Changed-By: gerald
 Responsible-Changed-When: Sat Dec 23 16:51:43 2000
 Responsible-Changed-Why:
     Ben is responsible for libstdc++ snapshots. Over to him.
 State-Changed-From-To: open->analyzed
 State-Changed-By: gerald
 State-Changed-When: Sat Dec 23 16:51:43 2000
 State-Changed-Why:
     Agreed.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1024&database=gcc
>From gerald@gcc.gnu.org Sat Dec 23 17:06:00 2000
From: gerald@gcc.gnu.org
To: gerald@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: web/1022
Date: Sat, 23 Dec 2000 17:06:00 -0000
Message-id: <20001224010600.25084.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01298.html
Content-length: 620

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

From: gerald@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org, gerald@gcc.gnu.org, jsm28@cam.ac.uk
Cc:  
Subject: Re: web/1022
Date: 24 Dec 2000 01:04:35 -0000

 Synopsis: libstdc++ list archives references to sources.redhat.com
 
 State-Changed-From-To: analyzed->feedback
 State-Changed-By: gerald
 State-Changed-When: Sat Dec 23 17:04:35 2000
 State-Changed-Why:
     I now tried to fix this by myself. Can you please check whether
     it is okay now? If not, what's still broken?
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1022&database=gcc
>From gerald@gcc.gnu.org Sat Dec 23 17:26:00 2000
From: gerald@gcc.gnu.org
To: gerald@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: web/830
Date: Sat, 23 Dec 2000 17:26:00 -0000
Message-id: <20001224012600.26495.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01300.html
Content-length: 1000

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

From: gerald@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org, gerald@gcc.gnu.org, jsm28@cam.ac.uk
Cc:  
Subject: Re: web/830
Date: 24 Dec 2000 01:24:07 -0000

 Synopsis: gnatsweb creates PRs with bogus version information
 
 State-Changed-From-To: analyzed->closed
 State-Changed-By: gerald
 State-Changed-When: Sat Dec 23 17:24:07 2000
 State-Changed-Why:
     Not everything has a proper version -- just consider the web
     pages. Parts of GCC which are released independently as well,
     like libstdc++ have a different version schema.
     
     So, given that we now recommend using gccbug anyway (which in
     part was triggered by this very PR), I don't think we should
     start hacking gnatsweb in such an extremely specific manner.
     
     That said, I have, however, made all other changes suggested
     in this PR (specifically to gnats.html).
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=830&database=gcc
>From jsm28@cam.ac.uk Sat Dec 23 17:26:00 2000
From: "Joseph S. Myers" <jsm28@cam.ac.uk>
To: gerald@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: web/1022
Date: Sat, 23 Dec 2000 17:26:00 -0000
Message-id: <20001224012600.26490.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01299.html
Content-length: 1083

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

From: "Joseph S. Myers" <jsm28@cam.ac.uk>
To: gerald@gcc.gnu.org
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: web/1022
Date: Sun, 24 Dec 2000 01:16:27 +0000 (GMT)

 On 24 Dec 2000 gerald@gcc.gnu.org wrote:
 
 > Synopsis: libstdc++ list archives references to sources.redhat.com
 
 >     I now tried to fix this by myself. Can you please check whether
 >     it is okay now? If not, what's still broken?
 
 The links to mbox archives are OK, but
 http://gcc.gnu.org/ml/libstdc++/2000-12/ still says "This is the mail
 archive of the libstdc++@sources.redhat.com mailing list" as does the most
 recent individual message in the archive.  It should be clear whether it
 is indeed fixed when more messages arrive at the list - new messages ought
 to have at the top of the HTML version "This is the mail archive of the
 libstdc++@gcc.gnu.org ..." (regardless of to which address they were
 sent), as should all indexes (date/subject/author/thread) of current and
 new months.
 
 -- 
 Joseph S. Myers
 jsm28@cam.ac.uk
 
>From gerald@gcc.gnu.org Sat Dec 23 17:36:00 2000
From: gerald@gcc.gnu.org
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: web/665
Date: Sat, 23 Dec 2000 17:36:00 -0000
Message-id: <20001224013600.28447.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01301.html
Content-length: 838

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

From: gerald@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org, gerald@gcc.gnu.org, jsm28@cam.ac.uk,
  nobody@gcc.gnu.org
Cc:  
Subject: Re: web/665
Date: 24 Dec 2000 01:26:54 -0000

 Synopsis: gcc list archives for Jan 1999 still broken
 
 Responsible-Changed-From-To: gerald->unassigned
 Responsible-Changed-By: gerald
 Responsible-Changed-When: Sat Dec 23 17:26:53 2000
 Responsible-Changed-Why:
     I have contacted overseers at least two times concerning this,
     probably more often, w/o any response. Apart from that, I cannot
     do anything. :-(
 State-Changed-From-To: open->analyzed
 State-Changed-By: gerald
 State-Changed-When: Sat Dec 23 17:26:53 2000
 State-Changed-Why:
     Confirmed.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=665&database=gcc
>From zome@iname.com Sat Dec 23 19:56:00 2000
From: zome@iname.com
To: gcc-gnats@gcc.gnu.org
Subject: c/1504: Segmentation fault
Date: Sat, 23 Dec 2000 19:56:00 -0000
Message-id: <20001224034927.10255.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01302.html
Content-length: 293405

>Number:         1504
>Category:       c
>Synopsis:       Segmentation fault
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Dec 23 19:56:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     zome@iname.com
>Release:        gcc version 2.96 20000731 (Red Hat Linux 7.0)
>Organization:
>Environment:
RedHat 7.0. Out of the box
>Description:
gcc -fPIC  -I../../Pax -I/usr/include/python1.5 -I/usr/local/include -g -O2 -I/usr/include/python1.5 -I/usr/include/python1.5 -DHAVE_CONFIG_H -c ./curveobject.c

./curveobject.c: In function `add_bezier_rect':
./curveobject.c:781: Internal error: Segmentation fault.
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
make: *** [curveobject.o] Error 1
>How-To-Repeat:
Try to compile Sketch, the vector drawing program.
http://sketch.sourceforge.net/
>Fix:

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

IyAxICIuL2N1cnZlb2JqZWN0LmMiCiMgMjIgIi4vY3VydmVvYmplY3QuYyIKIyAyOCAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMg
MzExICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDI4ICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKCgoKCgoKCgoKCgoKCiMgNjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyA1NCAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwpleHRlcm4gZG91YmxlIGFjb3MgKCBkb3Vi
bGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3MgKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3Vi
bGUgYXNpbiAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fYXNpbiAoIGRvdWJsZSBfX3gp
OwoKZXh0ZXJuIGRvdWJsZSBhdGFuICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFu
ICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGF0YW4yICggZG91YmxlIF9feSwgZG91Ymxl
IF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFuMiAoIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpOwoK
CmV4dGVybiBkb3VibGUgY29zICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19jb3MgKCBk
b3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgc2luICggZG91YmxlIF9feCk7IGV4dGVybiBkb3Vi
bGUgX19zaW4gKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgdGFuICggZG91YmxlIF9feCk7
IGV4dGVybiBkb3VibGUgX190YW4gKCBkb3VibGUgX194KTsKCiMgNzggIi91c3IvaW5jbHVkZS9i
aXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgY29zaCAoIGRvdWJsZSBfX3gpOyBleHRl
cm4gZG91YmxlIF9fY29zaCAoIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGRvdWJsZSBzaW5oICggZG91
YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zaW5oICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91
YmxlIHRhbmggKCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX3RhbmggKCBkb3VibGUgX194
KTsKCgoKZXh0ZXJuIGRvdWJsZSBhY29zaCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9f
YWNvc2ggKCBkb3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgYXNpbmggKCBkb3VibGUgX194KTsg
ZXh0ZXJuIGRvdWJsZSBfX2FzaW5oICggZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGF0YW5o
ICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoIGRvdWJsZSBfX3gpOwoKCgoK
CmV4dGVybiBkb3VibGUgZXhwICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19leHAgKCBk
b3VibGUgX194KTsKCiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRl
cm4gZG91YmxlIGZyZXhwICggZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KTsgZXh0ZXJuIGRv
dWJsZSBfX2ZyZXhwICggZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KTsKCgpleHRlcm4gZG91
YmxlIGxkZXhwICggZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpOyBleHRlcm4gZG91YmxlIF9f
bGRleHAgKCBkb3VibGUgX194LCBpbnQgX19leHBvbmVudCk7CgoKZXh0ZXJuIGRvdWJsZSBsb2cg
KCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2xvZyAoIGRvdWJsZSBfX3gpOwoKCmV4dGVy
biBkb3VibGUgbG9nMTAgKCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzEwICggZG91
YmxlIF9feCk7CgoKZXh0ZXJuIGRvdWJsZSBtb2RmICggZG91YmxlIF9feCwgZG91YmxlICpfX2lw
dHIpOyBleHRlcm4gZG91YmxlIF9fbW9kZiAoIGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKTsK
CgoKZXh0ZXJuIGRvdWJsZSBleHBtMSAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fZXhw
bTEgKCBkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGxvZzFwICggZG91YmxlIF9feCk7IGV4
dGVybiBkb3VibGUgX19sb2cxcCAoIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBkb3VibGUgbG9nYiAo
IGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fbG9nYiAoIGRvdWJsZSBfX3gpOwojIDE0MyAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBwb3cgKCBkb3Vi
bGUgX194LCBkb3VibGUgX195KTsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAoIGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpOwoKCmV4dGVybiBkb3VibGUgc3FydCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91
YmxlIF9fc3FydCAoIGRvdWJsZSBfX3gpOwoKCgpleHRlcm4gZG91YmxlIGh5cG90ICggZG91Ymxl
IF9feCwgZG91YmxlIF9feSk7IGV4dGVybiBkb3VibGUgX19oeXBvdCAoIGRvdWJsZSBfX3gsIGRv
dWJsZSBfX3kpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjYnJ0ICggZG91YmxlIF9feCk7IGV4dGVybiBk
b3VibGUgX19jYnJ0ICggZG91YmxlIF9feCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoIGRv
dWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fY2VpbCAoIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBk
b3VibGUgZmFicyAoIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGRvdWJsZSBfX2ZhYnMgKCBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGRvdWJsZSBmbG9vciAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9f
Zmxvb3IgKCBkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGZtb2QgKCBkb3VibGUgX194LCBk
b3VibGUgX195KTsgZXh0ZXJuIGRvdWJsZSBfX2Ztb2QgKCBkb3VibGUgX194LCBkb3VibGUgX195
KTsKCgoKCmV4dGVybiBpbnQgX19pc2luZiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlIChkb3VibGUgX192YWx1ZSkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZiAoZG91YmxlIF9f
dmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZSAo
ZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVy
biBkb3VibGUgaW5mbmFuIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OyBleHRlcm4gZG91YmxlIF9faW5mbmFuIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZHJlbSAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
OyBleHRlcm4gZG91YmxlIF9fZHJlbSAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOwoKCgpleHRl
cm4gZG91YmxlIHNpZ25pZmljYW5kICggZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zaWdu
aWZpY2FuZCAoIGRvdWJsZSBfX3gpOwoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbiAoIGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRv
dWJsZSBfX2NvcHlzaWduICggZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0
ZXJuIGludCBfX2lzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgpleHRlcm4gaW50IGlzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgajAgKCBkb3VibGUpOyBleHRlcm4gZG91Ymxl
IF9fajAgKCBkb3VibGUpOwpleHRlcm4gZG91YmxlIGoxICggZG91YmxlKTsgZXh0ZXJuIGRvdWJs
ZSBfX2oxICggZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpOyBleHRlcm4g
ZG91YmxlIF9fam4gKGludCwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5MCAoIGRvdWJsZSk7IGV4
dGVybiBkb3VibGUgX195MCAoIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgeTEgKCBkb3VibGUpOyBl
eHRlcm4gZG91YmxlIF9feTEgKCBkb3VibGUpOwpleHRlcm4gZG91YmxlIHluIChpbnQsIGRvdWJs
ZSk7IGV4dGVybiBkb3VibGUgX195biAoaW50LCBkb3VibGUpOwoKCgoKCmV4dGVybiBkb3VibGUg
ZXJmICggZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZiAoIGRvdWJsZSk7CmV4dGVybiBkb3Vi
bGUgZXJmYyAoIGRvdWJsZSk7IGV4dGVybiBkb3VibGUgX19lcmZjICggZG91YmxlKTsKZXh0ZXJu
IGRvdWJsZSBsZ2FtbWEgKCBkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hICggZG91Ymxl
KTsKIyAyNDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUg
Z2FtbWEgKCBkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fZ2FtbWEgKCBkb3VibGUpOwoKCgoKCgpl
eHRlcm4gZG91YmxlIGxnYW1tYV9yICggZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApOyBleHRlcm4g
ZG91YmxlIF9fbGdhbW1hX3IgKCBkb3VibGUsIGludCAqX19zaWduZ2FtcCk7CgoKCgoKCmV4dGVy
biBkb3VibGUgcmludCAoIGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fcmludCAoIGRvdWJs
ZSBfX3gpOwoKCmV4dGVybiBkb3VibGUgbmV4dGFmdGVyICggZG91YmxlIF9feCwgZG91YmxlIF9f
eSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dGFmdGVy
ICggZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgoKCmV4dGVybiBkb3VibGUgcmVtYWluZGVyICggZG91YmxlIF9feCwgZG91YmxlIF9feSk7IGV4
dGVybiBkb3VibGUgX19yZW1haW5kZXIgKCBkb3VibGUgX194LCBkb3VibGUgX195KTsKCgoKZXh0
ZXJuIGRvdWJsZSBzY2FsYiAoIGRvdWJsZSBfX3gsIGRvdWJsZSBfX24pOyBleHRlcm4gZG91Ymxl
IF9fc2NhbGIgKCBkb3VibGUgX194LCBkb3VibGUgX19uKTsKCgoKCmV4dGVybiBkb3VibGUgc2Nh
bGJuICggZG91YmxlIF9feCwgaW50IF9fbik7IGV4dGVybiBkb3VibGUgX19zY2FsYm4gKCBkb3Vi
bGUgX194LCBpbnQgX19uKTsKCgoKZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlIF9feCk7IGV4dGVy
biBpbnQgX19pbG9nYiAoZG91YmxlIF9feCk7CiMgNjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIg
MwojIDgzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21h
dGhjYWxscy5oIiAxIDMKZXh0ZXJuIGZsb2F0IGFjb3NmICggZmxvYXQgX194KTsgZXh0ZXJuIGZs
b2F0IF9fYWNvc2YgKCBmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGFzaW5mICggZmxvYXQgX194
KTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGF0YW5m
ICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXRhbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJu
IGZsb2F0IGF0YW4yZiAoIGZsb2F0IF9feSwgZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXRh
bjJmICggZmxvYXQgX195LCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBjb3NmICggZmxvYXQg
X194KTsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoIGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgc2lu
ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NpbmYgKCBmbG9hdCBfX3gpOwoKZXh0ZXJu
IGZsb2F0IHRhbmYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX190YW5mICggZmxvYXQgX194
KTsKCiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBj
b3NoZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2Nvc2hmICggZmxvYXQgX194KTsKCmV4
dGVybiBmbG9hdCBzaW5oZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NpbmhmICggZmxv
YXQgX194KTsKCmV4dGVybiBmbG9hdCB0YW5oZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBf
X3RhbmhmICggZmxvYXQgX194KTsKCgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoIGZsb2F0IF9feCk7
IGV4dGVybiBmbG9hdCBfX2Fjb3NoZiAoIGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgYXNpbmhm
ICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmICggZmxvYXQgX194KTsKCmV4dGVy
biBmbG9hdCBhdGFuaGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19hdGFuaGYgKCBmbG9h
dCBfX3gpOwoKCgoKCmV4dGVybiBmbG9hdCBleHBmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0
IF9fZXhwZiAoIGZsb2F0IF9feCk7CgojIDEwNiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxz
LmgiIDMKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoIGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50KTsg
ZXh0ZXJuIGZsb2F0IF9fZnJleHBmICggZmxvYXQgX194LCBpbnQgKl9fZXhwb25lbnQpOwoKCmV4
dGVybiBmbG9hdCBsZGV4cGYgKCBmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KTsgZXh0ZXJuIGZs
b2F0IF9fbGRleHBmICggZmxvYXQgX194LCBpbnQgX19leHBvbmVudCk7CgoKZXh0ZXJuIGZsb2F0
IGxvZ2YgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19sb2dmICggZmxvYXQgX194KTsKCgpl
eHRlcm4gZmxvYXQgbG9nMTBmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fbG9nMTBmICgg
ZmxvYXQgX194KTsKCgpleHRlcm4gZmxvYXQgbW9kZmYgKCBmbG9hdCBfX3gsIGZsb2F0ICpfX2lw
dHIpOyBleHRlcm4gZmxvYXQgX19tb2RmZiAoIGZsb2F0IF9feCwgZmxvYXQgKl9faXB0cik7CgoK
CmV4dGVybiBmbG9hdCBleHBtMWYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19leHBtMWYg
KCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBsb2cxcGYgKCBmbG9hdCBfX3gpOyBleHRlcm4g
ZmxvYXQgX19sb2cxcGYgKCBmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBsb2diZiAoIGZsb2F0
IF9feCk7IGV4dGVybiBmbG9hdCBfX2xvZ2JmICggZmxvYXQgX194KTsKIyAxNDMgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBwb3dmICggZmxvYXQgX194LCBm
bG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19wb3dmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOwoK
CmV4dGVybiBmbG9hdCBzcXJ0ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NxcnRmICgg
ZmxvYXQgX194KTsKCgoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAoIGZsb2F0IF9feCwgZmxvYXQgX195
KTsgZXh0ZXJuIGZsb2F0IF9faHlwb3RmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOwoKCgoKZXh0
ZXJuIGZsb2F0IGNicnRmICggZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fY2JydGYgKCBmbG9h
dCBfX3gpOwoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxv
YXQgX19jZWlsZiAoIGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGZhYnNmICggZmxvYXQgX194
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZhYnNmICggZmxv
YXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZsb29y
ZiAoIGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2Zsb29yZiAoIGZsb2F0IF9feCk7CgoKZXh0
ZXJuIGZsb2F0IGZtb2RmICggZmxvYXQgX194LCBmbG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19m
bW9kZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsKCgoKCmV4dGVybiBpbnQgX19pc2luZmYgKGZs
b2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9f
ZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK
ZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVybiBmbG9hdCBpbmZuYW5mIChpbnQgX19lcnJvcikg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19pbmZuYW5mIChpbnQg
X19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBkcmVt
ZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsgZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKCBmbG9hdCBf
X3gsIGZsb2F0IF9feSk7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKCBmbG9hdCBfX3gp
OyBleHRlcm4gZmxvYXQgX19zaWduaWZpY2FuZGYgKCBmbG9hdCBfX3gpOwoKCgoKZXh0ZXJuIGZs
b2F0IGNvcHlzaWduZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoIGZsb2F0IF9feCwgZmxvYXQgX195
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMjE3ICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoY2FsbHMuaCIgMwpleHRlcm4gaW50IF9faXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5mIChmbG9hdCBfX3ZhbHVl
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGowZiAoIGZsb2F0
KTsgZXh0ZXJuIGZsb2F0IF9fajBmICggZmxvYXQpOwpleHRlcm4gZmxvYXQgajFmICggZmxvYXQp
OyBleHRlcm4gZmxvYXQgX19qMWYgKCBmbG9hdCk7CmV4dGVybiBmbG9hdCBqbmYgKGludCwgZmxv
YXQpOyBleHRlcm4gZmxvYXQgX19qbmYgKGludCwgZmxvYXQpOwpleHRlcm4gZmxvYXQgeTBmICgg
ZmxvYXQpOyBleHRlcm4gZmxvYXQgX195MGYgKCBmbG9hdCk7CmV4dGVybiBmbG9hdCB5MWYgKCBm
bG9hdCk7IGV4dGVybiBmbG9hdCBfX3kxZiAoIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHluZiAoaW50
LCBmbG9hdCk7IGV4dGVybiBmbG9hdCBfX3luZiAoaW50LCBmbG9hdCk7CgoKCgoKZXh0ZXJuIGZs
b2F0IGVyZmYgKCBmbG9hdCk7IGV4dGVybiBmbG9hdCBfX2VyZmYgKCBmbG9hdCk7CmV4dGVybiBm
bG9hdCBlcmZjZiAoIGZsb2F0KTsgZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKCBmbG9hdCk7CmV4dGVy
biBmbG9hdCBsZ2FtbWFmICggZmxvYXQpOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmICggZmxvYXQp
OwojIDI0NiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGdh
bW1hZiAoIGZsb2F0KTsgZXh0ZXJuIGZsb2F0IF9fZ2FtbWFmICggZmxvYXQpOwoKCgoKCgpleHRl
cm4gZmxvYXQgbGdhbW1hZl9yICggZmxvYXQsIGludCAqX19zaWduZ2FtcCk7IGV4dGVybiBmbG9h
dCBfX2xnYW1tYWZfciAoIGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApOwoKCgoKCgpleHRlcm4gZmxv
YXQgcmludGYgKCBmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19yaW50ZiAoIGZsb2F0IF9feCk7
CgoKZXh0ZXJuIGZsb2F0IG5leHRhZnRlcmYgKCBmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uZXh0YWZ0ZXJmICggZmxvYXQg
X194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4g
ZmxvYXQgcmVtYWluZGVyZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsgZXh0ZXJuIGZsb2F0IF9f
cmVtYWluZGVyZiAoIGZsb2F0IF9feCwgZmxvYXQgX195KTsKCgoKZXh0ZXJuIGZsb2F0IHNjYWxi
ZiAoIGZsb2F0IF9feCwgZmxvYXQgX19uKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmICggZmxvYXQg
X194LCBmbG9hdCBfX24pOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibmYgKCBmbG9hdCBfX3gsIGlu
dCBfX24pOyBleHRlcm4gZmxvYXQgX19zY2FsYm5mICggZmxvYXQgX194LCBpbnQgX19uKTsKCgoK
ZXh0ZXJuIGludCBpbG9nYmYgKGZsb2F0IF9feCk7IGV4dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0
IF9feCk7CiMgODMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDEwMCAiL3Vzci9pbmNsdWRl
L21hdGguaCIgMwojIDU0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCmV4dGVy
biBsb25nIGRvdWJsZSBhY29zbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2Fjb3NsICggbG9uZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAo
IGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5sICggbG9uZyBkb3Vi
bGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFubCAoIGxvbmcgZG91YmxlIF9feCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sICggbG9uZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25n
IGRvdWJsZSBhdGFuMmwgKCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2F0YW4ybCAoIGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194
KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2Nvc2wgKCBsb25nIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNpbmwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sICggbG9u
ZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5sICggbG9uZyBkb3VibGUgX194
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFubCAoIGxvbmcgZG91YmxlIF9feCk7CgojIDc4ICIv
dXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgY29zaGwg
KCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NobCAoIGxvbmcgZG91
YmxlIF9feCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2luaGwgKCBsb25nIGRvdWJsZSBfX3gpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19zaW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9u
ZyBkb3VibGUgdGFuaGwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX190
YW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwgKCBs
b25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zaGwgKCBsb25nIGRvdWJs
ZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5obCAoIGxvbmcgZG91YmxlIF9feCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2FzaW5obCAoIGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9u
ZyBkb3VibGUgYXRhbmhsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
YXRhbmhsICggbG9uZyBkb3VibGUgX194KTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbCAo
IGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cGwgKCBsb25nIGRvdWJs
ZSBfX3gpOwoKIyAxMDYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBs
b25nIGRvdWJsZSBmcmV4cGwgKCBsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2ZyZXhwbCAoIGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9u
ZW50KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsICggbG9uZyBkb3VibGUgX194LCBpbnQg
X19leHBvbmVudCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xkZXhwbCAoIGxvbmcgZG91YmxlIF9f
eCwgaW50IF9fZXhwb25lbnQpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2dsICggbG9uZyBkb3Vi
bGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAoIGxvbmcgZG91YmxlIF9feCk7CgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2xvZzEwbCAoIGxvbmcgZG91YmxlIF9feCk7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IG1vZGZsICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbW9kZmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIp
OwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbTFsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fZXhwbTFsICggbG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBk
b3VibGUgbG9nMXBsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9n
MXBsICggbG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKCBsb25n
IGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dibCAoIGxvbmcgZG91YmxlIF9f
eCk7CiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gbG9uZyBk
b3VibGUgcG93bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fcG93bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsKCgpl
eHRlcm4gbG9uZyBkb3VibGUgc3FydGwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19zcXJ0bCAoIGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBo
eXBvdGwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2h5cG90bCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsKCgoKCmV4
dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAoIGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2NicnRsICggbG9uZyBkb3VibGUgX194KTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IGNlaWxsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2VpbGwgKCBs
b25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmYWJzbCAoIGxvbmcgZG91Ymxl
IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19m
YWJzbCAoIGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBmbG9vcmwgKCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19mbG9vcmwgKCBsb25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBm
bW9kbCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fZm1vZGwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7CgoKCgpleHRl
cm4gaW50IF9faXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmZsIChsb25nIGRv
dWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBm
aW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgaW5mbmFubCAoaW50IF9fZXJyb3IpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9faW5mbmFubCAoaW50IF9f
ZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUg
ZHJlbWwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2RyZW1sICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpOwoKCgpleHRl
cm4gbG9uZyBkb3VibGUgc2lnbmlmaWNhbmRsICggbG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsICggbG9uZyBkb3VibGUgX194KTsKCgoKCmV4dGVybiBs
b25nIGRvdWJsZSBjb3B5c2lnbmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3B5c2ln
bmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJu
IGludCBfX2lzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBqMGwgKCBsb25nIGRv
dWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2owbCAoIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxv
bmcgZG91YmxlIGoxbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajFsICgg
bG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgam5sIChpbnQsIGxvbmcgZG91YmxlKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fam5sIChpbnQsIGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcg
ZG91YmxlIHkwbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsICggbG9u
ZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgeTFsICggbG9uZyBkb3VibGUpOyBleHRlcm4g
bG9uZyBkb3VibGUgX195MWwgKCBsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSB5bmwg
KGludCwgbG9uZyBkb3VibGUpOyBleHRlcm4gbG9uZyBkb3VibGUgX195bmwgKGludCwgbG9uZyBk
b3VibGUpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBlcmZsICggbG9uZyBkb3VibGUpOyBleHRl
cm4gbG9uZyBkb3VibGUgX19lcmZsICggbG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUg
ZXJmY2wgKCBsb25nIGRvdWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmNsICggbG9uZyBk
b3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbCAoIGxvbmcgZG91YmxlKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fbGdhbW1hbCAoIGxvbmcgZG91YmxlKTsKIyAyNDYgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBnYW1tYWwgKCBsb25nIGRv
dWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2dhbW1hbCAoIGxvbmcgZG91YmxlKTsKCgoKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWxfciAoIGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdh
bXApOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZ2FtbWFsX3IgKCBsb25nIGRvdWJsZSwgaW50ICpf
X3NpZ25nYW1wKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJpbnRsICggbG9uZyBkb3VibGUg
X194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmludGwgKCBsb25nIGRvdWJsZSBfX3gpOwoKCmV4
dGVybiBsb25nIGRvdWJsZSBuZXh0YWZ0ZXJsICggbG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
bmV4dGFmdGVybCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJlbWFpbmRlcmwgKCBs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Jl
bWFpbmRlcmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7CgoKCmV4dGVybiBs
b25nIGRvdWJsZSBzY2FsYmwgKCBsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbik7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibCAoIGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X19uKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYm5sICggbG9uZyBkb3VibGUgX194LCBp
bnQgX19uKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJubCAoIGxvbmcgZG91YmxlIF9feCwg
aW50IF9fbik7CgoKCmV4dGVybiBpbnQgaWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4g
aW50IF9faWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpOwojIDEwMCAiL3Vzci9pbmNsdWRlL21hdGgu
aCIgMiAzCiMgMTEzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBpbnQgc2lnbmdhbTsK
IyAyMzYgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKdHlwZWRlZiBlbnVtCnsKICBfSUVFRV8gPSAt
MSwKICBfU1ZJRF8sCiAgX1hPUEVOXywKICBfUE9TSVhfLAogIF9JU09DXwp9IF9MSUJfVkVSU0lP
Tl9UWVBFOwoKCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsKIyAyNjEg
Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDMKc3RydWN0IGV4Y2VwdGlvbgoKICB7CiAgICBpbnQgdHlw
ZTsKICAgIGNoYXIgKm5hbWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAg
ZG91YmxlIHJldHZhbDsKICB9OwoKCgoKZXh0ZXJuIGludCBtYXRoZXJyIChzdHJ1Y3QgZXhjZXB0
aW9uICpfX2V4Yyk7CiMgMjkwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgNzkgIi91c3IvbGli
L2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2Zsb2F0LmgiIDEgMwp1bmlv
biBfX2NvbnZlcnRfbG9uZ19kb3VibGUgewogIHVuc2lnbmVkIF9fY29udmVydF9sb25nX2RvdWJs
ZV9pWzRdOwogIGxvbmcgZG91YmxlIF9fY29udmVydF9sb25nX2RvdWJsZV9kOwp9OwojIDI5MCAi
L3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgMzQ5ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMg
MjgxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDEgMwpleHRlcm4gX19pbmxpbmUg
ZG91YmxlIF9fc2duIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3Vi
bGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0x
LjApOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0KTsgZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IF9fc2duZiAoZmxvYXQgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDog
KF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBf
X3NnbmwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2dubCAo
bG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/
IDEuMCA6IC0xLjApOyB9CgoKCiMgNDY2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0
YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYXRhbjJmIChmbG9hdCBfX3ks
IGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6
ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUg
YXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192
YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsg
fQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwg
bG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChf
X3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJs
ZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5c
dCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAo
X195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxv
YXQgZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5c
dCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAo
X195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5c
dCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkg
OiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQoj
IDQ4MSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBk
b3VibGUgc3FydCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJl
dHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgc3FydGYgKGZsb2F0IF9feCkg
eyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDog
Ij10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChf
X3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1
bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgoKZXh0ZXJuIF9faW5saW5lIGRv
dWJsZSBmYWJzIChkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyAoX194KTsgfQpl
eHRlcm4gX19pbmxpbmUgZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgeyByZXR1cm4gX19idWlsdGlu
X2ZhYnNmIChfX3gpOyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmYWJzbCAobG9uZyBk
b3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2wgKF9feCk7IH0KZXh0ZXJuIF9faW5s
aW5lIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19idWls
dGluX2ZhYnNsIChfX3gpOyB9CiMgNTA3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGRv
dWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIg
KF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0
ZXJuIF9faW5saW5lIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19y
ZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3Vs
dCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lu
bGluZSBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10
IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQoK
ZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlKTsgZXh0ZXJu
IF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlIF9feCkgeyBfX2V4dGVu
c2lvbl9fIHVuaW9uIHsgbG9uZyBkb3VibGUgX194bGQ7IHVuc2lnbmVkIGludCBfX3hpWzNdOyB9
IF9fbiA9IHsgX194bGQ6IF9feCB9OyBfX24uX194aVsyXSA9IChfX24uX194aVsyXSAmIDB4ODAw
MCkgfCAweDNmZmY7IF9fbi5fX3hpWzFdID0gMHg4MDAwMDAwMDsgX19uLl9feGlbMF0gPSAwOyBy
ZXR1cm4gX19uLl9feGxkOyB9CiMgNTE4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDMKIyA1MzMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxp
bmUgZG91YmxlIGZsb29yIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1t
IiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3Zv
bGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAo
ImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxl
ICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9f
aW5saW5lIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
dmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5z
aWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDog
Ij1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBf
X3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGls
ZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJu
IF9faW5saW5lIGxvbmcgZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7
IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwg
MHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsg
X19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkp
OyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9f
dmFsdWU7IH0KIyA1NDQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4g
X19pbmxpbmUgZG91YmxlIGNlaWwgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1
bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIg
OiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0
aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxl
IHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUw
IiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19h
c20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192
b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9f
Y3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYp
IHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXAp
KTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJu
IF9fdmFsdWU7IH0KIyA1NTUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwoKCgoK
CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpsZGV4cCAoZG91YmxlIF9feCwgaW50IF9feSkKewog
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2Fs
ZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgobG9uZyBkb3VibGUpIF9feSkp
OyByZXR1cm4gX192YWx1ZTsKfQoKCgojIDU4MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGlu
ZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICog
MS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNl
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEz
NTYyMzczMDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9f
dmFsdWUpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQx
NDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19h
c20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQi
IChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfQojIDU5
NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3Vi
bGUgYXNpbmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJz
bCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kg
KyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRlcm4gX19pbmxpbmUg
ZmxvYXQgYXNpbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19m
YWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBf
X3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRlcm4gX19pbmxp
bmUgbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChf
X3NxcnRsIChfX3kgKiBfX3kgKyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsg
fQoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgeyByZXR1cm4g
bG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9
IGV4dGVybiBfX2lubGluZSBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgeyByZXR1cm4gbG9nbCAo
X194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4g
bG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9
CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuaCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAoLShf
X3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfSBleHRlcm4gX19pbmxp
bmUgZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0g
X19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAg
KyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGF0
YW5obCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFi
c2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195
KSkgKiBfX3NnbjFsIChfX3gpOyB9CgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGh5cG90IChk
b3VibGUgX194LCBkb3VibGUgX195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kg
KiBfX3kpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBoeXBvdGYgKGZsb2F0IF9feCwgZmxvYXQg
X195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSB7IHJldHVybiBfX3NxcnRsIChfX3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9CgpleHRlcm4g
X19pbmxpbmUgZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194
KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2diZiAoZmxvYXQg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5r
KSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4g
X19pbmxpbmUgbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUp
IDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0KCgoKCgoKCiMgNjkzICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBkcmVtIChkb3Vi
bGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBp
bnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3Rz
dwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChf
X2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1
ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7
IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0
IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9f
eCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJl
Z2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAi
anAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCks
ICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQojIDcwNiAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKX19maW5pdGUgKGRvdWJs
ZSBfX3gpCnsKICByZXR1cm4gKF9fZXh0ZW5zaW9uX18KICAgICAgICAgICgoKCgodW5pb24geyBk
b3VibGUgX19kOyBpbnQgX19pWzJdOyB9KSB7X19kOiBfX3h9KS5fX2lbMV0KICAgICAgICAgICAg
IHwgMHg4MDBmZmZmZnUpICsgMSkgPj4gMzEpKTsKfQoKCiMgMzQ5ICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAyIDMKIyA0MDkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAyMiAiLi9jdXJ2ZW9iamVj
dC5jIiAyCgoKIyAzOSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMQoKIyA1OCAi
L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIKIyAyOSAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDEgMwoKCgoKCiMgMTk5ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIu
OTYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyAz
NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiMgNDMgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKdHlwZWRlZiBfX2J1
aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyAzOSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDIgMwoKCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwoKCnR5cGVkZWYgdW5z
aWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9u
ZzsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFk
X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7
CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGlu
dCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVk
ZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7
CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90Owpf
X2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoK
dHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7
CnR5cGVkZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRl
ZiBfX3VfbG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191
X2ludCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRf
dCBfX2xvZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0
eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsK
dHlwZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFs
WzJdOwogIH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIg
Kl9fY2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYg
bG9uZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRl
ZiBpbnQgX19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgaW50IF9fZmRfbWFzazsKCgojIDEwOSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMwp0eXBlZGVmIHN0cnVjdAogIHsKCgoKCgoKICAgIF9fZmRfbWFzayBfX2Zkc19iaXRz
WzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwoKCiAgfSBfX2ZkX3NldDsKCgp0eXBl
ZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90
OwoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBf
X2Jsa2NudF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9s
b25nIF9fZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5
cGVkZWYgX191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNu
dDY0X3Q7CgoKdHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90
IF9fb2ZmNjRfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgoKIyAyNCAiL3Vzci9pbmNsdWRl
L2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5o
IiAxIDMKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgc2NoZWRfcHJpb3JpdHk7CiAg
fTsKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBf
cHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7
Cgp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rl
c2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19z
Y2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9f
aW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQg
X19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6
ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVh
ZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhy
ZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRf
Y29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5
cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0
aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRf
ZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7
CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50
IHB0aHJlYWRfb25jZV90OwoKCiMgMTQwICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMu
aCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKCiMgMTY2ICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyA0MSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoK
CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKCiMgNTggIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMKIyAxNSAiL3Vzci9pbmNs
dWRlL19HX2NvbmZpZy5oIiAxIDMKIyAyODcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQt
bGludXgvMi45Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90
OwojIDMxMiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8yLjk2L2luY2x1ZGUv
c3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1
ZGUvX0dfY29uZmlnLmgiIDIgMwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyA0
NiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDYyICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg
Mwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3Qg
X193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMg
MjUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19v
ZmZfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBz
dHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zw
b3M2NF90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAyOSAiL3Vzci9pbmNs
dWRlL2djb252LmgiIDEgMwojIDQ2ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgMjkgIi91
c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCgoKCgoKCmVudW0KewogIF9fR0NPTlZfT0sgPSAwLAog
IF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05WX05PTUVNLAoKICBfX0dD
T05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAgX19HQ09OVl9JTExFR0FM
X0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19HQ09OVl9JTExFR0FMX0RF
U0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgplbnVtCnsKICBfX0dDT05W
X0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JTID0gMHgwMDAyCn07CgoK
CnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9f
Z2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRl
ZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwgc3RydWN0IF9fZ2Nv
bnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6ZV90ICosIGludCwgaW50KTsKCgp0eXBlZGVm
IGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwp0eXBlZGVm
IHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwoKCgp0eXBl
ZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICos
IHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNp
Z25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1
bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRl
eHRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
KiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfcXVlcnlf
ZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqKiosCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252
X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRlZiB2b2lkICgq
X19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252X3RyYW5zX2Rh
dGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252X3RyYW5zX2Nv
bnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19lbmRfZmN0IF9f
dHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0
YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3QgX19nY29udl9s
b2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsK
CiAgaW50IF9fY291bnRlcjsKCiAgX19jb25zdCBjaGFyICpfX2Zyb21fbmFtZTsKICBfX2NvbnN0
IGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0X2Zj
dCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgoKCiAgaW50IF9fbWlu
X25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsKICBpbnQgX19taW5fbmVlZGVk
X3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0ZWZ1bDsKCiAgdm9pZCAq
X19kYXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewogIHVuc2lnbmVkIGNoYXIg
Kl9fb3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoKCgogIGludCBfX2ZsYWdz
OwoKCgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQgX19pbnRlcm5hbF91c2U7
CgogIF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwoKCgogIHN0
cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5cGVkZWYgc3RydWN0IF9f
Z2NvbnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2djb252X3N0ZXAgKl9f
c3RlcHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhWzBd
Owp9ICpfX2djb252X3Q7CgojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBl
ZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAg
c3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9f
ZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2lu
dDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0
eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fU0lfXykpKTsKCiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MiAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMKIyAxNTcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBf
SU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CgoKCgoKCgoKCnR5cGVkZWYgdm9pZCBfSU9fbG9j
a190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7
CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTAgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRf
b2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9u
b2NvbnYKfTsKCiMgMjYyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX0ZJTEUg
ewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVh
ZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBj
aGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1
Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNo
YXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9f
bWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmls
ZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVk
IHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIg
X3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwNiAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQgKl9fcGFkMTsKICB2
b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAo
aW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklM
RSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJ
TEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18y
XzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsK
IyAzNDUgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVh
ZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpOwoKCgoK
CgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29raWUsIF9fY29u
c3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19v
ZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9p
ZCAqX19jb29raWUpOwoKCiMgMzk3ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50
IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKTsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAq
KTsKZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpOwpleHRlcm4gd2ludF90
IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKik7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19G
SUxFICopOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpOwoK
IyA0MjcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19G
SUxFICpfX2ZwKTsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnAp
OwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAqX19mcCk7CmV4dGVybiBpbnQgX0lPX2Zl
cnJvciAoX0lPX0ZJTEUgKl9fZnApOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9f
RklMRSAqX19mcCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKik7
CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKik7CmV4dGVybiBpbnQgX0lP
X2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKik7CgojIDQ1MyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBj
aGFyICogX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qs
IGludCAqX19yZXN0cmljdCk7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19y
ZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAg
IF9fZ251Y192YV9saXN0KTsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwg
aW50LCBfX3NzaXplX3QpOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9p
ZCAqLCBzaXplX3QpOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwg
X19vZmY2NF90LCBpbnQsIGludCk7CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19G
SUxFICosIF9fb2ZmNjRfdCwgaW50KTsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVh
IChfSU9fRklMRSAqKTsKCiMgNTggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKdHlwZWRl
ZiBfR19mcG9zX3QgZnBvc190OwojIDExMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKZXh0
ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJy
OwoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKTsKCmV4
dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3
KTsKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKTsKIyAxNDIgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcyk7CgoKCgpleHRlcm4gY2hh
ciAqdG1wbmFtX3IgKGNoYXIgKl9fcyk7CiMgMTU5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpf
X3BmeCkKIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9z
ZSAoRklMRSAqX19zdHJlYW0pOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKTsK
CgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKIyAxODIgIi91
c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbW9kZXMpOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKTsKIyAyMTIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxF
ICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpOwojIDIzNSAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKTsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAg
ICAgICAgICAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKTsKCgoKCmV4dGVybiB2b2lkIHNl
dGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1
ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplKTsKCgpleHRlcm4gdm9pZCBz
ZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSk7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAq
X19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKTsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKOwoKZXh0
ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19h
cmcpOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90
IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLikKIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAz
LCA0KSkpOwoKZXh0ZXJuIGludCBfX3ZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNp
emVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKIF9fYXR0cmlidXRlX18gKChf
X2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcp
CiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKIyAzMDkg
Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCAuLi4pOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLik7CgojIDMzNSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGlu
dCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFt
KTsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3Vu
bG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9p
ZCk7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CgoKCgpl
eHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgcHV0
YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9f
Yyk7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0
cmVhbSk7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3Ry
ZWFtKTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKTsKCgoKCgpleHRlcm4g
aW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKTsKCgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJ
TEUgKl9fc3RyZWFtKTsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmljdCBf
X3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCjsKCiMgNDAxICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKTsKCgojIDQyNSAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmcHV0cyAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKOwoKCgoKCgoKCmV4dGVy
biBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jl
c3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCmV4dGVybiBzaXplX3QgZndyaXRlIChf
X2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcyk7CgoKCmV4dGVybiBz
aXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3Np
emUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0pOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2
b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSk7CgoKCgpl
eHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3do
ZW5jZSk7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKTsKCmV4dGVybiB2
b2lkIHJld2luZCAoRklMRSAqX19zdHJlYW0pOwoKCgoKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2Zm
X3Q7CiMgNDk1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRwb3MgKEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKOwoKZXh0
ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKTsK
IyA1MzEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxF
ICpfX3N0cmVhbSk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKTsKCmV4dGVybiBp
bnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9j
a2VkIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwoKCgoK
ZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcyk7CgoKCgpleHRlcm4gaW50IHN5
c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CiMgNTYy
ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJl
YW0pOwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKCgoK
CgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBj
aGFyICpfX21vZGVzKTsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pOwoKCgoK
CmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpOwojIDYwOSAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSk7CgoKCmV4dGVy
biBpbnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSk7CgoKZXh0ZXJuIHZvaWQgZnVubG9j
a2ZpbGUgKEZJTEUgKl9fc3RyZWFtKTsKIyA2MzEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMg
MzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwpleHRlcm4gX19pbmxpbmUgaW50CnZw
cmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19h
cmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJnKTsKfQoKCmV4dGVy
biBfX2lubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4p
Owp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsK
ICByZXR1cm4gKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8g
X191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIr
Kyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICBy
ZXR1cm4gKChzdGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBf
X3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRy
KyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1
cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmcHV0
Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJl
YW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVy
ZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikg
KCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9f
aW5saW5lIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJl
dHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRl
X2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1
bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0K
CgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1
cm4gKCgoc3Rkb3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkg
PyBfX292ZXJmbG93IChzdGRvdXQsICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQg
Y2hhcikgKCooc3Rkb3V0KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQojIDExMCAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CmZlb2ZfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgx
MCkgIT0gMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAq
X19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsK
fQojIDYzMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCiMgNTggIi91c3IvaW5jbHVkZS9w
eXRob24xLjUvUHl0aG9uLmgiIDIKCiMgMjggIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCgoK
CgoKCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X24pOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAq
X19zcmMsIHNpemVfdCBfX24pCjsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19y
ZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAg
ICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCjsKCgoKCmV4dGVybiB2b2lkICptZW1z
ZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCBtZW1jbXAg
KF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2
b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCiMgNzcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyY3B5IChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQo7
CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p
OwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCjsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3Qg
Y2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFy
ICpfX3MyLCBzaXplX3QgX19uKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpf
X3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pOwoKIyAxMjAgIi91c3IvaW5jbHVkZS9zdHJpbmcu
aCIgMwpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4g
Y2hhciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKIyAxNjcgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2Nv
bnN0IGNoYXIgKl9fcmVqZWN0KQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0
KQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19j
b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFj
aywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
IyAxODkgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RydG9rIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCjsKCgoK
ZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKTsKCmV4dGVybiBj
aGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
c2F2ZV9wdHIpOwojIDIyMCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qg
c3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7Cgoj
IDIzMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50
IF9fZXJybnVtKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBj
aGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKTsKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGlu
dCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxlbik7CgoKCgpleHRlcm4gdm9p
ZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pOwoKCgpleHRlcm4gdm9pZCBiY29weSAo
X19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKTsKCgpleHRlcm4g
dm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKTsKCgpleHRlcm4gaW50IGJjbXAgKF9f
Y29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIg
KnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCgpleHRlcm4gaW50IF9fZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoY29u
c3QpKTsKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
CgojIDI3NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBpbnQgX19zdHJjYXNlY21w
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwg
X19jb25zdCBjaGFyICpfX3MyKQogX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGludCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIs
IHNpemVfdCBfX24pCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyAzMDAgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBf
X3N0cmluZ3AsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2RlbGltKTsKIyAzNjMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgojIDUzICIvdXNyL2lu
Y2x1ZGUvYml0cy9zdHJpbmcyLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEg
MwojIDUzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwojIDM3MSAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiB2b2lkICpfX3Jhd21lbWNociAoY29uc3Qgdm9p
ZCAqX19zLCBpbnQgX19jKTsKIyAzOTUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjcHlfc21hbGwgKGNoYXIgKiwgX191aW50MTZfdCwg
X191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQz
Ml90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RyY3B5
X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8y
LCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50MzJfdCBfX3NyYzBf
NCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikK
ewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAg
ICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAqX191ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRj
aCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+
X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0g
X19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3UtPl9fdXNpID0gX19z
cmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAg
ICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgX191LT5f
X3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkg
PSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7
CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBf
X3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAgYnJlYWs7CiAgICBj
YXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAg
ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3Vj
ID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3Jj
MF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAg
X191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIGJyZWFrOwogICAgfQogIHJldHVybiBfX2Rlc3Q7
Cn0KIyA4NzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg
c2l6ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpOwpl
eHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNo
YXIgX19yZWplY3QpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChf
X3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsr
X19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9f
c3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxp
bmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3Qx
LCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hp
bGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQog
ICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1bHQ7CiAg
cmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMyAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9f
aW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVq
ZWN0MSwgY2hhciBfX3JlamVjdDIsCiAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDMpCnsKICBy
ZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdc
MCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0
XSAhPSBfX3JlamVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICArK19fcmVz
dWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDkyNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAzCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19y
ZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsrX19y
ZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ry
c3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNp
emVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFy
IF9fYWNjZXB0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChf
X3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MikK
ICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6
ZV90IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNj
ZXB0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAg
cmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0g
X19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCiAgICAgICAgIHx8IF9fc1tf
X3Jlc3VsdF0gPT0gX19hY2NlcHQzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7
Cn0KIyA5ODIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg
Y2hhciAqX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVy
biBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBf
X2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9f
cyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1cm4g
Kl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFy
IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19h
Y2NlcHQyLCBjaGFyIF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJr
X2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyLAog
ICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQzKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYg
Kl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIKICAgICAgICAgJiYgKl9fcyAh
PSBfX2FjY2VwdDMpCiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICop
MCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0KIyAxMDQzICIvdXNyL2luY2x1ZGUvYml0cy9z
dHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9f
cywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApCnsKICBj
aGFyICpfX3Jlc3VsdDsKICBpZiAoX19zID09ICgodm9pZCAqKTApKQogICAgX19zID0gKl9fbmV4
dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXApCiAgICArK19fczsKICBpZiAoKl9fcyA9PSAnXDAn
KQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBlbHNlCiAgICB7CiAgICAgIF9fcmVzdWx0
ID0gX19zOwogICAgICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19zZXApCiAgICAg
ICAgKytfX3M7CiAgICAgIGlmICgqX19zID09ICdcMCcpCiAgICAgICAgKl9fbmV4dHAgPSBfX3M7
CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAqX19zID0gJ1wwJzsKICAgICAgICAgICpf
X25leHRwID0gX19zICsgMTsKICAgICAgICB9CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMg
MTA5MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFy
ICpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGlu
ZSBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpCnsKICByZWdp
c3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTAp
KQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVq
ZWN0KQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRl
bnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoX19yZWplY3QpID09
ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9fcmVqZWN0KSA6IHN0cmNo
ciAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikwKSkKICAgICAgKigqX19zKSsr
ID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwogIHJldHVybiBfX3Jl
dHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBj
aGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsK
ICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9p
ZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09
IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QyKQogICAgKigqX19zKSsrID0gJ1ww
JzsKICBlbHNlCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAg
ICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYgKl9fY3AgIT0gX19yZWplY3QxICYmICpfX2NwICE9
IF9fcmVqZWN0MikKICAgICAgICArK19fY3A7CiAgICAgIGlmICgqX19jcCAhPSAnXDAnKQogICAg
ICAgIHsKICAgICAgICAgICpfX3MgPSBfX2NwOwogICAgICAgICAgKigqX19zKSsrID0gJ1wwJzsK
ICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICAqX19zID0gKCh2b2lkICopMCk7CiAgICB9CiAg
cmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfM2MgKGNo
YXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBjaGFy
ICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0
MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAg
aWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikw
KTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3Qy
CiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDMpCiAgICAqKCpfX3MpKysgPSAnXDAnOwog
IGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3
aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9fY3AgIT0gX19y
ZWplY3QyCiAgICAgICAgICAgICAmJiAqX19jcCAhPSBfX3JlamVjdDMpCiAgICAgICAgKytfX2Nw
OwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAgICAqX19zID0gX19j
cDsKICAgICAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAg
ICAgKl9fcyA9ICgodm9pZCAqKTApOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJu
IF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19y
ZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9f
Y29uc3QgY2hhciAqX19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7
CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICgodm9pZCAqKTApOwog
IGlmICgoKl9fcyA9IF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
X19yZWplY3QpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKF9fcmVqZWN0KSA9PSAxKSA/
ICgoX19hMCA9ICgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzBdLCBfX2EwID09ICdcMCcp
ID8gKCh2b2lkICopMCkgOiAoKF9fYTEgPSAoKF9fY29uc3QgY2hhciAqKSAoX19yZWplY3QpKVsx
XSwgX19hMSA9PSAnXDAnKSA/IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
X19hMCkgJiYgKF9fYTApID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWws
IF9fYTApIDogc3RyY2hyIChfX3JldHZhbCwgX19hMCkpKSA6ICgoX19hMiA9ICgoX19jb25zdCBj
aGFyICopIChfX3JlamVjdCkpWzJdLCBfX2EyID09ICdcMCcpID8gX19zdHJwYnJrX2MyIChfX3Jl
dHZhbCwgX19hMCwgX19hMSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbM10gPT0g
J1wwJyA/IF9fc3RycGJya19jMyAoX19yZXR2YWwsIF9fYTAsIF9fYTEsIF9fYTIpIDogc3RycGJy
ayAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSkgOiBzdHJwYnJrIChfX3JldHZhbCwgX19yZWplY3Qp
KTsgfSkpICE9ICgodm9pZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19y
ZXR2YWw7Cn0KIyAxMTg3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKIyAzNCAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKCiMgNTI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFs
bG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19z
aXplKQogX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyA4NDYgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwojIDExODcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCgoKCgpl
eHRlcm4gY2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcpIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7CiMgMTIxMCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAz
CmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBf
X24pCiBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDM2NiAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAyIDMKCgoKIyA1OSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyAzMiAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwoKCgoKCiMgMjYgIi91c3IvaW5jbHVkZS9i
aXRzL2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMKIyAy
NiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRz
L2Vycm5vLmgiIDMKZXh0ZXJuIGludCBlcnJubzsKCgpleHRlcm4gaW50ICpfX2Vycm5vX2xvY2F0
aW9uICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgojIDM3ICIvdXNyL2luY2x1
ZGUvZXJybm8uaCIgMiAzCiMgNTkgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzCiMgNjAgIi91c3Iv
aW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCgojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDEgMwoKIyA5NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYgc3RydWN0CiAg
ewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0
CiAgewogICAgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgaW50IHJlbTsKICB9IGxkaXZfdDsKIyAx
MzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21i
X2N1cl9tYXggKHZvaWQpOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hhciAqX19u
cHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgYXRvaSAoX19jb25z
dCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGxvbmcg
aW50IGF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBj
aGFyICpfX25wdHIpCiBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGRvdWJs
ZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cik7CgojIDE2MyAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzCmV4dGVybiBsb25nIGludCBzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19iYXNlKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCjsKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKOwoKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25n
IGxvbmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQg
X19iYXNlKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3Ry
dG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSkKOwojIDI1MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBkb3VibGUgX19z
dHJ0b2RfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQg
X19ncm91cCkKOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQo7CmV4dGVybiBsb25nIGRvdWJsZSBf
X3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19ncm91cCk7
CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IF9fYmFzZSwgaW50IF9fZ3JvdXApOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0
b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YmFzZSwgaW50IF9fZ3JvdXApOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGlu
dCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YmFzZSwgaW50IF9fZ3JvdXApOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25n
IGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCjsKIyAyOTQgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlCnN0cnRvZCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsK
ICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVy
biBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICBy
ZXR1cm4gX19zdHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0K
ZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBp
bnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0
ciwgX19iYXNlLCAwKTsKfQoKIyAzMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpfX2V4dGVu
c2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg
aW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg
bG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVy
biBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoK
Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5l
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jh
c2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i
YXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpf
X25wdHIpCnsKICByZXR1cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSk7
Cn0KZXh0ZXJuIF9faW5saW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJl
dHVybiAoaW50KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0K
ZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAg
cmV0dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQoKCl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3Qg
Y2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopICgodm9p
ZCAqKTApLCAxMCk7Cn0KIyAzODUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hh
ciAqbDY0YSAobG9uZyBpbnQgX19uKTsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoX19jb25zdCBj
aGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgojIDI4ICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDEgMwoKCgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVm
IF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xv
bmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVf
cXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IGxvZmZf
dDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwojIDU4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoK
CgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190
OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwojIDk2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoK
CnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90
Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMg
MTI3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyA3MSAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMSAzCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKIyA4MiAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKCiMgOTMgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKCiMgMTI3ICIvdXNyL2luY2x1ZGUv
c3lzL3R5cGVzLmgiIDIgMwojIDE0MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCgoKCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50
IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKIyAxODQgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1FJX18pKSk7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0hJX18pKSk7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1NJX18pKSk7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX0RJX18pKSk7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVu
c2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7
Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3Jk
X18pKSk7CgoKCgojIDIxMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMzIgIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwoKCgojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdz
ZXQuaCIgMSAzCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QK
ICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNp
Z25lZCBsb25nIGludCkpKV07CiAgfSBfX3NpZ3NldF90OwoKIyAzNSAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMiAzCgoKCgojIDEwNSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCnN0cnVj
dCB0aW1lc3BlYwogIHsKICAgIGxvbmcgaW50IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7
CiAgfTsKCiMgMzkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgoKCgoKc3RydWN0
IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKCnR5cGVkZWYgX19mZF9zZXQg
ZmRfc2V0OwoKCiMgNzQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKZXh0ZXJuIGludCBz
ZWxlY3QgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAg
ICAgICAgICAgICAgIF9fZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAgICAgICAg
ICAgICAgICBfX2ZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCk7CgojIDkyICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAzCiMgMjEwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
MwoKCgojIDIyNCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19ibGtjbnRf
dCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRl
ZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMwojIDM5MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKZXh0ZXJuIGludDMy
X3QgcmFuZG9tICh2b2lkKTsKCgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19z
ZWVkKTsKCgoKCgpleHRlcm4gY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBj
aGFyICpfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxl
bik7CgoKCmV4dGVybiBjaGFyICpzZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1Zik7CgoKCgoKCgpz
dHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0
cjsKICAgIGludDMyX3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2Rl
ZzsKICAgIGludCByYW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBp
bnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAg
ICAgICAgICAgICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7CgpleHRlcm4gaW50
IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1
Zik7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpf
X3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0
YXRlbGVuLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVz
dHJpY3QgX19idWYpOwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9f
c3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmKTsKCgoKCgpleHRlcm4gaW50IHJhbmQgKHZvaWQpOwoKZXh0ZXJuIHZvaWQg
c3JhbmQgKHVuc2lnbmVkIGludCBfX3NlZWQpOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWdu
ZWQgaW50ICpfX3NlZWQpOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKTsKZXh0
ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSk7CgoKZXh0
ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpOwpleHRlcm4gbG9uZyBpbnQgbnJhbmQ0OCAodW5z
aWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pOwoKCmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2
b2lkKTsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp
WzNdKTsKCgpleHRlcm4gdm9pZCBzcmFuZDQ4IChsb25nIGludCBfX3NlZWR2YWwpOwpleHRlcm4g
dW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZb
M10pOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSk7
CgoKc3RydWN0IGRyYW5kNDhfZGF0YQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB4WzNdOwog
ICAgdW5zaWduZWQgc2hvcnQgaW50IGFbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsKICAg
IHVuc2lnbmVkIHNob3J0IGludCBvbGRfeFszXTsKICAgIGludCBpbml0OwogIH07CgoKCmV4dGVy
biBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVy
LAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KTsKZXh0
ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCk7CgoKZXh0
ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7
CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCk7
CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl
c3VsdCk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz
XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl
c3VsdCk7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCjsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVk
IHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fYnVmZmVyKTsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9y
dCBpbnQgX19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2Rh
dGEgKl9fYnVmZmVyKTsKIyA1MzUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9p
ZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChf
X21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cik7CgoKCmV4dGVybiB2
b2lkIGNmcmVlICh2b2lkICpfX3B0cik7CgoKCgojIDI2ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgi
IDEgMwoKCgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSk7CgoKCgoKIyA1
NDYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChz
aXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDU2MCAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAo
dm9pZCkpOwoKCgoKZXh0ZXJuIGludCBfX29uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19z
dGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcpCjsKZXh0ZXJuIGludCBvbl9leGl0ICh2
b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQo7
CgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3JldHVybl9fKSk7CgojIDU4OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFy
ICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJl
X2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpOwoKCgoKCmV4dGVybiBpbnQgcHV0ZW52IChj
aGFyICpfX3N0cmluZyk7CgoKCgoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19u
YW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCjsKCgpleHRlcm4gdm9p
ZCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpOwoKCgoKCgpleHRlcm4gaW50IGNsZWFy
ZW52ICh2b2lkKTsKIyA2MjQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAq
bWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKTsKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFy
ICpfX3RlbXBsYXRlKTsKIyA2NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hh
ciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSk7CgoKCgpleHRlcm4gaW50IHN5c3RlbSAoX19j
b25zdCBjaGFyICpfX2NvbW1hbmQpOwoKCiMgNjYyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCk7CgoKCgoK
CnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9fY29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZv
aWQgKik7CgoKCgoKCgoKZXh0ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXks
IF9fY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbm1l
bWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gdm9p
ZCBxc29ydCAodm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAg
ICAgICAgICAgICAgICAgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgpleHRlcm4gaW50IGFi
cyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQg
bGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNzAwICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGlu
dCBfX2Rlbm9tKQogX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxk
aXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CiMgNzE4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIg
KmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2Rl
Y3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbik7CgoKCgpleHRl
cm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKTsK
CgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFy
ICpfX2J1Zik7CgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGlu
dCAqX19yZXN0cmljdCBfX3NpZ24pOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9f
dmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbik7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9u
ZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1Zik7CgoKCgoKZXh0ZXJu
IGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hh
ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbik7CmV4
dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24s
IGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4p
OwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
CiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0
cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwg
c2l6ZV90IF9fbGVuKTsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQs
IGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0
cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKTsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25z
dCBjaGFyICpfX3MsIHNpemVfdCBfX24pOwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpf
X3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgc2l6ZV90IF9fbik7CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywgd2No
YXJfdCBfX3djaGFyKTsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0
cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3MsIHNpemVfdCBfX24pOwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19y
ZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCjsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAo
X19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKTsKIyA4NDAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MwpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0p
OwoKCgoKCiMgNjIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCgoKCgoKCgoK
IyAxMTQgIi91c3IvaW5jbHVkZS9weXRob24xLjUvb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qg
X29iamVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90
eXBlOwp9IFB5T2JqZWN0OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7
IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9iX3NpemU7Cn0gUHlWYXJPYmplY3Q7
CiMgMTM5ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamVjdC5oIgp0eXBlZGVmIFB5T2JqZWN0
ICogKCp1bmFyeWZ1bmMpIChQeU9iamVjdCAqKTsKdHlwZWRlZiBQeU9iamVjdCAqICgqYmluYXJ5
ZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIFB5T2JqZWN0ICogKCp0ZXJu
YXJ5ZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIGlu
dCAoKmlucXVpcnkpIChQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpjb2VyY2lvbikgKFB5T2Jq
ZWN0ICoqLCBQeU9iamVjdCAqKik7CnR5cGVkZWYgUHlPYmplY3QgKigqaW50YXJnZnVuYykgKFB5
T2JqZWN0ICosIGludCk7CnR5cGVkZWYgUHlPYmplY3QgKigqaW50aW50YXJnZnVuYykgKFB5T2Jq
ZWN0ICosIGludCwgaW50KTsKdHlwZWRlZiBpbnQoKmludG9iamFyZ3Byb2MpIChQeU9iamVjdCAq
LCBpbnQsIFB5T2JqZWN0ICopOwp0eXBlZGVmIGludCgqaW50aW50b2JqYXJncHJvYykgKFB5T2Jq
ZWN0ICosIGludCwgaW50LCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQoKm9iam9iamFyZ3Byb2Mp
IChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpnZXRy
ZWFkYnVmZmVycHJvYykgKFB5T2JqZWN0ICosIGludCwgdm9pZCAqKik7CnR5cGVkZWYgaW50ICgq
Z2V0d3JpdGVidWZmZXJwcm9jKSAoUHlPYmplY3QgKiwgaW50LCB2b2lkICoqKTsKdHlwZWRlZiBp
bnQgKCpnZXRzZWdjb3VudHByb2MpIChQeU9iamVjdCAqLCBpbnQgKik7CnR5cGVkZWYgaW50ICgq
Z2V0Y2hhcmJ1ZmZlcnByb2MpIChQeU9iamVjdCAqLCBpbnQsIGNvbnN0IGNoYXIgKiopOwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGJpbmFyeWZ1bmMgbmJfYWRkOwogICAgICAgIGJpbmFyeWZ1
bmMgbmJfc3VidHJhY3Q7CiAgICAgICAgYmluYXJ5ZnVuYyBuYl9tdWx0aXBseTsKICAgICAgICBi
aW5hcnlmdW5jIG5iX2RpdmlkZTsKICAgICAgICBiaW5hcnlmdW5jIG5iX3JlbWFpbmRlcjsKICAg
ICAgICBiaW5hcnlmdW5jIG5iX2Rpdm1vZDsKICAgICAgICB0ZXJuYXJ5ZnVuYyBuYl9wb3dlcjsK
ICAgICAgICB1bmFyeWZ1bmMgbmJfbmVnYXRpdmU7CiAgICAgICAgdW5hcnlmdW5jIG5iX3Bvc2l0
aXZlOwogICAgICAgIHVuYXJ5ZnVuYyBuYl9hYnNvbHV0ZTsKICAgICAgICBpbnF1aXJ5IG5iX25v
bnplcm87CiAgICAgICAgdW5hcnlmdW5jIG5iX2ludmVydDsKICAgICAgICBiaW5hcnlmdW5jIG5i
X2xzaGlmdDsKICAgICAgICBiaW5hcnlmdW5jIG5iX3JzaGlmdDsKICAgICAgICBiaW5hcnlmdW5j
IG5iX2FuZDsKICAgICAgICBiaW5hcnlmdW5jIG5iX3hvcjsKICAgICAgICBiaW5hcnlmdW5jIG5i
X29yOwogICAgICAgIGNvZXJjaW9uIG5iX2NvZXJjZTsKICAgICAgICB1bmFyeWZ1bmMgbmJfaW50
OwogICAgICAgIHVuYXJ5ZnVuYyBuYl9sb25nOwogICAgICAgIHVuYXJ5ZnVuYyBuYl9mbG9hdDsK
ICAgICAgICB1bmFyeWZ1bmMgbmJfb2N0OwogICAgICAgIHVuYXJ5ZnVuYyBuYl9oZXg7Cn0gUHlO
dW1iZXJNZXRob2RzOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlucXVpcnkgc3FfbGVuZ3Ro
OwogICAgICAgIGJpbmFyeWZ1bmMgc3FfY29uY2F0OwogICAgICAgIGludGFyZ2Z1bmMgc3FfcmVw
ZWF0OwogICAgICAgIGludGFyZ2Z1bmMgc3FfaXRlbTsKICAgICAgICBpbnRpbnRhcmdmdW5jIHNx
X3NsaWNlOwogICAgICAgIGludG9iamFyZ3Byb2Mgc3FfYXNzX2l0ZW07CiAgICAgICAgaW50aW50
b2JqYXJncHJvYyBzcV9hc3Nfc2xpY2U7Cn0gUHlTZXF1ZW5jZU1ldGhvZHM7Cgp0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgaW5xdWlyeSBtcF9sZW5ndGg7CiAgICAgICAgYmluYXJ5ZnVuYyBtcF9z
dWJzY3JpcHQ7CiAgICAgICAgb2Jqb2JqYXJncHJvYyBtcF9hc3Nfc3Vic2NyaXB0Owp9IFB5TWFw
cGluZ01ldGhvZHM7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgZ2V0cmVhZGJ1ZmZlcnByb2Mg
YmZfZ2V0cmVhZGJ1ZmZlcjsKICAgICAgICBnZXR3cml0ZWJ1ZmZlcnByb2MgYmZfZ2V0d3JpdGVi
dWZmZXI7CiAgICAgICAgZ2V0c2VnY291bnRwcm9jIGJmX2dldHNlZ2NvdW50OwogICAgICAgIGdl
dGNoYXJidWZmZXJwcm9jIGJmX2dldGNoYXJidWZmZXI7Cn0gUHlCdWZmZXJQcm9jczsKCgp0eXBl
ZGVmIHZvaWQgKCpkZXN0cnVjdG9yKSAoUHlPYmplY3QgKik7CnR5cGVkZWYgaW50ICgqcHJpbnRm
dW5jKSAoUHlPYmplY3QgKiwgRklMRSAqLCBpbnQpOwp0eXBlZGVmIFB5T2JqZWN0ICooKmdldGF0
dHJmdW5jKSAoUHlPYmplY3QgKiwgY2hhciAqKTsKdHlwZWRlZiBQeU9iamVjdCAqKCpnZXRhdHRy
b2Z1bmMpIChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBpbnQgKCpzZXRhdHRyZnVu
YykgKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKik7CnR5cGVkZWYgaW50ICgqc2V0YXR0
cm9mdW5jKSAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CnR5cGVkZWYgaW50
ICgqY21wZnVuYykgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwp0eXBlZGVmIFB5T2JqZWN0ICoo
KnJlcHJmdW5jKSAoUHlPYmplY3QgKik7CnR5cGVkZWYgbG9uZyAoKmhhc2hmdW5jKSAoUHlPYmpl
Y3QgKik7Cgp0eXBlZGVmIHN0cnVjdCBfdHlwZW9iamVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNu
dDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOyBpbnQgb2Jfc2l6ZTsKICAgICAgICBjaGFy
ICp0cF9uYW1lOwogICAgICAgIGludCB0cF9iYXNpY3NpemUsIHRwX2l0ZW1zaXplOwoKCgogICAg
ICAgIGRlc3RydWN0b3IgdHBfZGVhbGxvYzsKICAgICAgICBwcmludGZ1bmMgdHBfcHJpbnQ7CiAg
ICAgICAgZ2V0YXR0cmZ1bmMgdHBfZ2V0YXR0cjsKICAgICAgICBzZXRhdHRyZnVuYyB0cF9zZXRh
dHRyOwogICAgICAgIGNtcGZ1bmMgdHBfY29tcGFyZTsKICAgICAgICByZXByZnVuYyB0cF9yZXBy
OwoKCgogICAgICAgIFB5TnVtYmVyTWV0aG9kcyAqdHBfYXNfbnVtYmVyOwogICAgICAgIFB5U2Vx
dWVuY2VNZXRob2RzICp0cF9hc19zZXF1ZW5jZTsKICAgICAgICBQeU1hcHBpbmdNZXRob2RzICp0
cF9hc19tYXBwaW5nOwoKCgogICAgICAgIGhhc2hmdW5jIHRwX2hhc2g7CiAgICAgICAgdGVybmFy
eWZ1bmMgdHBfY2FsbDsKICAgICAgICByZXByZnVuYyB0cF9zdHI7CiAgICAgICAgZ2V0YXR0cm9m
dW5jIHRwX2dldGF0dHJvOwogICAgICAgIHNldGF0dHJvZnVuYyB0cF9zZXRhdHRybzsKCgogICAg
ICAgIFB5QnVmZmVyUHJvY3MgKnRwX2FzX2J1ZmZlcjsKCgogICAgICAgIGxvbmcgdHBfZmxhZ3M7
CgogICAgICAgIGNoYXIgKnRwX2RvYzsKCgogICAgICAgIGxvbmcgdHBfeHh4NTsKICAgICAgICBs
b25nIHRwX3h4eDY7CiAgICAgICAgbG9uZyB0cF94eHg3OwogICAgICAgIGxvbmcgdHBfeHh4ODsK
CgoKCgoKCgp9IFB5VHlwZU9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUeXBlX1R5cGU7
CgoKCgpleHRlcm4gaW50IFB5T2JqZWN0X1ByaW50IChQeU9iamVjdCAqLCBGSUxFICosIGludCk7
CmV4dGVybiBQeU9iamVjdCAqIFB5T2JqZWN0X1JlcHIgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlP
YmplY3QgKiBQeU9iamVjdF9TdHIgKFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5T2JqZWN0X0Nv
bXBhcmUgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeU9iamVj
dF9HZXRBdHRyU3RyaW5nIChQeU9iamVjdCAqLCBjaGFyICopOwpleHRlcm4gaW50IFB5T2JqZWN0
X1NldEF0dHJTdHJpbmcgKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKik7CmV4dGVybiBp
bnQgUHlPYmplY3RfSGFzQXR0clN0cmluZyAoUHlPYmplY3QgKiwgY2hhciAqKTsKZXh0ZXJuIFB5
T2JqZWN0ICogUHlPYmplY3RfR2V0QXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVy
biBpbnQgUHlPYmplY3RfU2V0QXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3Qg
Kik7CmV4dGVybiBpbnQgUHlPYmplY3RfSGFzQXR0ciAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7
CmV4dGVybiBsb25nIFB5T2JqZWN0X0hhc2ggKFB5T2JqZWN0ICopOwpleHRlcm4gaW50IFB5T2Jq
ZWN0X0lzVHJ1ZSAoUHlPYmplY3QgKik7CmV4dGVybiBpbnQgUHlPYmplY3RfTm90IChQeU9iamVj
dCAqKTsKZXh0ZXJuIGludCBQeUNhbGxhYmxlX0NoZWNrIChQeU9iamVjdCAqKTsKZXh0ZXJuIGlu
dCBQeU51bWJlcl9Db2VyY2UgKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CmV4dGVybiBpbnQg
UHlOdW1iZXJfQ29lcmNlRXggKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CgoKZXh0ZXJuIGlu
dCBQeV9SZXByRW50ZXIgKFB5T2JqZWN0ICopOwpleHRlcm4gdm9pZCBQeV9SZXByTGVhdmUgKFB5
T2JqZWN0ICopOwoKCiMgNDM0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamVjdC5oIgpleHRl
cm4gUHlPYmplY3QgX1B5X05vbmVTdHJ1Y3Q7CgojIDcxICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41
L1B5dGhvbi5oIiAyCgojIDU4ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L29iamltcGwuaCIgMQpl
eHRlcm4gUHlPYmplY3QgKiBfUHlPYmplY3RfTmV3IChQeVR5cGVPYmplY3QgKik7CmV4dGVybiBQ
eVZhck9iamVjdCAqIF9QeU9iamVjdF9OZXdWYXIgKFB5VHlwZU9iamVjdCAqLCBpbnQpOwoKIyA3
MiAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgMzggIi91c3IvaW5jbHVk
ZS9weXRob24xLjUvcHlkZWJ1Zy5oIiAxCmV4dGVybiBpbnQgUHlfRGVidWdGbGFnOwpleHRlcm4g
aW50IFB5X1ZlcmJvc2VGbGFnOwpleHRlcm4gaW50IFB5X0ludGVyYWN0aXZlRmxhZzsKZXh0ZXJu
IGludCBQeV9PcHRpbWl6ZUZsYWc7CmV4dGVybiBpbnQgUHlfTm9TaXRlRmxhZzsKZXh0ZXJuIGlu
dCBQeV9Vc2VDbGFzc0V4Y2VwdGlvbnNGbGFnOwpleHRlcm4gaW50IFB5X0Zyb3plbkZsYWc7CmV4
dGVybiBpbnQgUHlfVGFiY2hlY2tGbGFnOwoKdm9pZCBQeV9GYXRhbEVycm9yIChjaGFyICopOwoK
IyA3NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNTUgIi91c3IvaW5j
bHVkZS9weXRob24xLjUvaW50b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlu
dCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBsb25nIG9i
X2l2YWw7Cn0gUHlJbnRPYmplY3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFB5SW50X1R5cGU7CgoK
CmV4dGVybiBQeU9iamVjdCAqIFB5SW50X0Zyb21Mb25nIChsb25nKTsKZXh0ZXJuIGxvbmcgUHlJ
bnRfQXNMb25nIChQeU9iamVjdCAqKTsKZXh0ZXJuIGxvbmcgUHlJbnRfR2V0TWF4ICh2b2lkKTsK
IyA4MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9pbnRvYmplY3QuaCIKZXh0ZXJuIFB5SW50T2Jq
ZWN0IF9QeV9aZXJvU3RydWN0LCBfUHlfVHJ1ZVN0cnVjdDsKCiMgOTQgIi91c3IvaW5jbHVkZS9w
eXRob24xLjUvaW50b2JqZWN0LmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIFB5T1Nfc3RydG91bCAo
Y2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4gbG9uZyBQeU9TX3N0cnRvbCAoY2hhciAqLCBj
aGFyICoqLCBpbnQpOwoKIyA3NiAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9sb25nb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1
Y3QgX2xvbmdvYmplY3QgUHlMb25nT2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUxvbmdf
VHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlMb25nX0Zyb21Mb25nIChsb25nKTsKZXh0ZXJu
IFB5T2JqZWN0ICogUHlMb25nX0Zyb21VbnNpZ25lZExvbmcgKHVuc2lnbmVkIGxvbmcpOwpleHRl
cm4gUHlPYmplY3QgKiBQeUxvbmdfRnJvbURvdWJsZSAoZG91YmxlKTsKZXh0ZXJuIGxvbmcgUHlM
b25nX0FzTG9uZyAoUHlPYmplY3QgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFB5TG9uZ19Bc1Vu
c2lnbmVkTG9uZyAoUHlPYmplY3QgKik7CmV4dGVybiBkb3VibGUgUHlMb25nX0FzRG91YmxlIChQ
eU9iamVjdCAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlMb25nX0Zyb21Wb2lkUHRyICh2b2lkICop
OwpleHRlcm4gdm9pZCAqIFB5TG9uZ19Bc1ZvaWRQdHIgKFB5T2JqZWN0ICopOwoKCgoKCiMgMTIg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2xpbWl0cy5o
IiAxIDMKIyA4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVk
ZS9zeXNsaW1pdHMuaCIgMSAzCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxp
bnV4LzIuOTYvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVkZS9saW1pdHMu
aCIgMSAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEgMwojIDM3ICIv
dXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMSAzCiMgMTI3ICIvdXNyL2luY2x1ZGUvYml0
cy9wb3NpeDFfbGltLmgiIDIgMwojIDMxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoK
IyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGludXgvMi45Ni9pbmNsdWRlL2xp
bWl0cy5oIiAyIDMKIyA4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYv
aW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCiMgMTIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRo
YXQtbGludXgvMi45Ni9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyA1OSAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9sb25nb2JqZWN0LmgiIDIKIyA3OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9sb25n
b2JqZWN0LmgiCmV4dGVybiBQeU9iamVjdCAqIFB5TG9uZ19Gcm9tTG9uZ0xvbmcgKGxvbmcgbG9u
Zyk7CmV4dGVybiBQeU9iamVjdCAqIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyAodW5zaWdu
ZWQgbG9uZyBsb25nKTsKZXh0ZXJuIGxvbmcgbG9uZyBQeUxvbmdfQXNMb25nTG9uZyAoUHlPYmpl
Y3QgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgUHlMb25nX0FzVW5zaWduZWRMb25nTG9u
ZyAoUHlPYmplY3QgKik7CgoKUHlPYmplY3QgKiBQeUxvbmdfRnJvbVN0cmluZyAoY2hhciAqLCBj
aGFyICoqLCBpbnQpOwoKIyA3NyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyA0NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9mbG9hdG9iamVjdC5oIiAxCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBpbnQgb2JfcmVmY250OyBzdHJ1Y3QgX3R5cGVvYmplY3QgKm9iX3R5cGU7
CiAgICAgICAgZG91YmxlIG9iX2Z2YWw7Cn0gUHlGbG9hdE9iamVjdDsKCmV4dGVybiBQeVR5cGVP
YmplY3QgUHlGbG9hdF9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUZsb2F0X0Zyb21Eb3Vi
bGUgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgUHlGbG9hdF9Bc0RvdWJsZSAoUHlPYmplY3QgKik7
CgoKIyA3OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgOSAiL3Vzci9p
bmNsdWRlL3B5dGhvbjEuNS9jb21wbGV4b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICBk
b3VibGUgcmVhbDsKICAgZG91YmxlIGltYWc7Cn0gUHlfY29tcGxleDsKCgoKCgoKCgoKCmV4dGVy
biBQeV9jb21wbGV4IF9QeV9jX3N1bSAoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CmV4dGVybiBQ
eV9jb21wbGV4IF9QeV9jX2RpZmYgKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwpleHRlcm4gUHlf
Y29tcGxleCBfUHlfY19uZWcgKFB5X2NvbXBsZXgpOwpleHRlcm4gUHlfY29tcGxleCBfUHlfY19w
cm9kIChQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKZXh0ZXJuIFB5X2NvbXBsZXggX1B5X2NfcXVv
dCAoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CmV4dGVybiBQeV9jb21wbGV4IF9QeV9jX3BvdyAo
UHlfY29tcGxleCwgUHlfY29tcGxleCk7CiMgMzggIi91c3IvaW5jbHVkZS9weXRob24xLjUvY29t
cGxleG9iamVjdC5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3Ry
dWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgICAgIFB5X2NvbXBsZXggY3ZhbDsKfSBQeUNv
bXBsZXhPYmplY3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFB5Q29tcGxleF9UeXBlOwoKCgpleHRl
cm4gUHlPYmplY3QgKiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4IChQeV9jb21wbGV4KTsKZXh0ZXJu
IFB5T2JqZWN0ICogUHlDb21wbGV4X0Zyb21Eb3VibGVzIChkb3VibGUgcmVhbCwgZG91YmxlIGlt
YWcpOwoKZXh0ZXJuIGRvdWJsZSBQeUNvbXBsZXhfUmVhbEFzRG91YmxlIChQeU9iamVjdCAqb3Ap
OwpleHRlcm4gZG91YmxlIFB5Q29tcGxleF9JbWFnQXNEb3VibGUgKFB5T2JqZWN0ICpvcCk7CmV4
dGVybiBQeV9jb21wbGV4IFB5Q29tcGxleF9Bc0NDb21wbGV4IChQeU9iamVjdCAqb3ApOwoKIyA4
MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNDIgIi91c3IvaW5jbHVk
ZS9weXRob24xLjUvcmFuZ2VvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5UmFuZ2Vf
VHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlSYW5nZV9OZXcgKGxvbmcsIGxvbmcsIGxvbmcs
IGludCk7CiMgODIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgNjkgIi91
c3IvaW5jbHVkZS9weXRob24xLjUvc3RyaW5nb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9i
X3NpemU7CgogICAgICAgIGxvbmcgb2Jfc2hhc2g7CgoKICAgICAgICBQeU9iamVjdCAqb2Jfc2lu
dGVybmVkOwoKICAgICAgICBjaGFyIG9iX3N2YWxbMV07Cn0gUHlTdHJpbmdPYmplY3Q7CgpleHRl
cm4gUHlUeXBlT2JqZWN0IFB5U3RyaW5nX1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5U3Ry
aW5nX0Zyb21TdHJpbmdBbmRTaXplIChjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBQeU9iamVj
dCAqIFB5U3RyaW5nX0Zyb21TdHJpbmcgKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgUHlTdHJp
bmdfU2l6ZSAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlTdHJpbmdfQXNTdHJpbmcgKFB5
T2JqZWN0ICopOwpleHRlcm4gdm9pZCBQeVN0cmluZ19Db25jYXQgKFB5T2JqZWN0ICoqLCBQeU9i
amVjdCAqKTsKZXh0ZXJuIHZvaWQgUHlTdHJpbmdfQ29uY2F0QW5kRGVsIChQeU9iamVjdCAqKiwg
UHlPYmplY3QgKik7CmV4dGVybiBpbnQgX1B5U3RyaW5nX1Jlc2l6ZSAoUHlPYmplY3QgKiosIGlu
dCk7CmV4dGVybiBQeU9iamVjdCAqIFB5U3RyaW5nX0Zvcm1hdCAoUHlPYmplY3QgKiwgUHlPYmpl
Y3QgKik7CgoKZXh0ZXJuIHZvaWQgUHlTdHJpbmdfSW50ZXJuSW5QbGFjZSAoUHlPYmplY3QgKiop
OwpleHRlcm4gUHlPYmplY3QgKiBQeVN0cmluZ19JbnRlcm5Gcm9tU3RyaW5nIChjb25zdCBjaGFy
ICopOwojIDgzICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgojIDQzICIvdXNy
L2luY2x1ZGUvcHl0aG9uMS41L2J1ZmZlcm9iamVjdC5oIiAxCmV4dGVybiBQeVR5cGVPYmplY3Qg
UHlCdWZmZXJfVHlwZTsKCgoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUJ1ZmZlcl9Gcm9tT2JqZWN0
IChQeU9iamVjdCAqYmFzZSwgaW50IG9mZnNldCwgaW50IHNpemUpOwpleHRlcm4gUHlPYmplY3Qg
KiBQeUJ1ZmZlcl9Gcm9tUmVhZFdyaXRlT2JqZWN0IChQeU9iamVjdCAqYmFzZSwgaW50IG9mZnNl
dCwgaW50IHNpemUpOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlCdWZmZXJfRnJvbU1lbW9yeSAodm9p
ZCAqcHRyLCBpbnQgc2l6ZSk7CmV4dGVybiBQeU9iamVjdCAqIFB5QnVmZmVyX0Zyb21SZWFkV3Jp
dGVNZW1vcnkgKHZvaWQgKnB0ciwgaW50IHNpemUpOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlCdWZm
ZXJfTmV3IChpbnQgc2l6ZSk7CgojIDg0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5o
IiAyCgojIDU0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L3R1cGxlb2JqZWN0LmgiIDEKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2Jf
dHlwZTsgaW50IG9iX3NpemU7CiAgICAgICAgUHlPYmplY3QgKm9iX2l0ZW1bMV07Cn0gUHlUdXBs
ZU9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUdXBsZV9UeXBlOwoKCgpleHRlcm4gUHlP
YmplY3QgKiBQeVR1cGxlX05ldyAoaW50IHNpemUpOwpleHRlcm4gaW50IFB5VHVwbGVfU2l6ZSAo
UHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5VHVwbGVfR2V0SXRlbSAoUHlPYmplY3Qg
KiwgaW50KTsKZXh0ZXJuIGludCBQeVR1cGxlX1NldEl0ZW0gKFB5T2JqZWN0ICosIGludCwgUHlP
YmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5VHVwbGVfR2V0U2xpY2UgKFB5T2JqZWN0ICos
IGludCwgaW50KTsKZXh0ZXJuIGludCBfUHlUdXBsZV9SZXNpemUgKFB5T2JqZWN0ICoqLCBpbnQs
IGludCk7CgoKIyA4NSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA1NCAi
L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9saXN0b2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsgaW50IG9i
X3NpemU7CiAgICAgICAgUHlPYmplY3QgKipvYl9pdGVtOwp9IFB5TGlzdE9iamVjdDsKCmV4dGVy
biBQeVR5cGVPYmplY3QgUHlMaXN0X1R5cGU7CgoKCmV4dGVybiBQeU9iamVjdCAqIFB5TGlzdF9O
ZXcgKGludCBzaXplKTsKZXh0ZXJuIGludCBQeUxpc3RfU2l6ZSAoUHlPYmplY3QgKik7CmV4dGVy
biBQeU9iamVjdCAqIFB5TGlzdF9HZXRJdGVtIChQeU9iamVjdCAqLCBpbnQpOwpleHRlcm4gaW50
IFB5TGlzdF9TZXRJdGVtIChQeU9iamVjdCAqLCBpbnQsIFB5T2JqZWN0ICopOwpleHRlcm4gaW50
IFB5TGlzdF9JbnNlcnQgKFB5T2JqZWN0ICosIGludCwgUHlPYmplY3QgKik7CmV4dGVybiBpbnQg
UHlMaXN0X0FwcGVuZCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAq
IFB5TGlzdF9HZXRTbGljZSAoUHlPYmplY3QgKiwgaW50LCBpbnQpOwpleHRlcm4gaW50IFB5TGlz
dF9TZXRTbGljZSAoUHlPYmplY3QgKiwgaW50LCBpbnQsIFB5T2JqZWN0ICopOwpleHRlcm4gaW50
IFB5TGlzdF9Tb3J0IChQeU9iamVjdCAqKTsKZXh0ZXJuIGludCBQeUxpc3RfUmV2ZXJzZSAoUHlP
YmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5TGlzdF9Bc1R1cGxlIChQeU9iamVjdCAqKTsK
CgojIDg2ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgojIDQwICIvdXNyL2lu
Y2x1ZGUvcHl0aG9uMS41L2RpY3RvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5RGlj
dF9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeURpY3RfTmV3ICh2b2lkKTsKZXh0ZXJuIFB5
T2JqZWN0ICogUHlEaWN0X0dldEl0ZW0gKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CmV4
dGVybiBpbnQgUHlEaWN0X1NldEl0ZW0gKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlP
YmplY3QgKml0ZW0pOwpleHRlcm4gaW50IFB5RGljdF9EZWxJdGVtIChQeU9iamVjdCAqbXAsIFB5
T2JqZWN0ICprZXkpOwpleHRlcm4gdm9pZCBQeURpY3RfQ2xlYXIgKFB5T2JqZWN0ICptcCk7CmV4
dGVybiBpbnQgUHlEaWN0X05leHQKICAgICAgICAoUHlPYmplY3QgKm1wLCBpbnQgKnBvcywgUHlP
YmplY3QgKiprZXksIFB5T2JqZWN0ICoqdmFsdWUpOwpleHRlcm4gUHlPYmplY3QgKiBQeURpY3Rf
S2V5cyAoUHlPYmplY3QgKm1wKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlEaWN0X1ZhbHVlcyAoUHlP
YmplY3QgKm1wKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlEaWN0X0l0ZW1zIChQeU9iamVjdCAqbXAp
OwpleHRlcm4gaW50IFB5RGljdF9TaXplIChQeU9iamVjdCAqbXApOwoKZXh0ZXJuIFB5T2JqZWN0
ICogUHlEaWN0X0dldEl0ZW1TdHJpbmcgKFB5T2JqZWN0ICpkcCwgY2hhciAqa2V5KTsKZXh0ZXJu
IGludCBQeURpY3RfU2V0SXRlbVN0cmluZyAoUHlPYmplY3QgKmRwLCBjaGFyICprZXksIFB5T2Jq
ZWN0ICppdGVtKTsKZXh0ZXJuIGludCBQeURpY3RfRGVsSXRlbVN0cmluZyAoUHlPYmplY3QgKmRw
LCBjaGFyICprZXkpOwoKIyA4NyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoK
IyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9tZXRob2RvYmplY3QuaCIgMQpleHRlcm4gUHlU
eXBlT2JqZWN0IFB5Q0Z1bmN0aW9uX1R5cGU7CgoKCnR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVu
Y3Rpb24pIChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKdHlwZWRlZiBQeU9iamVjdCAqKCpQeUNG
dW5jdGlvbldpdGhLZXl3b3JkcykKICAgICAgICAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlP
YmplY3QgKik7CgpleHRlcm4gUHlDRnVuY3Rpb24gUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24gKFB5
T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUNGdW5jdGlvbl9HZXRTZWxmIChQeU9iamVj
dCAqKTsKZXh0ZXJuIGludCBQeUNGdW5jdGlvbl9HZXRGbGFncyAoUHlPYmplY3QgKik7CgoKCgoK
CgoKCgpzdHJ1Y3QgUHlNZXRob2REZWYgewogICAgICAgIGNoYXIgKm1sX25hbWU7CiAgICAgICAg
UHlDRnVuY3Rpb24gbWxfbWV0aDsKICAgICAgICBpbnQgbWxfZmxhZ3M7CiAgICAgICAgY2hhciAq
bWxfZG9jOwp9Owp0eXBlZGVmIHN0cnVjdCBQeU1ldGhvZERlZiBQeU1ldGhvZERlZjsKCmV4dGVy
biBQeU9iamVjdCAqIFB5X0ZpbmRNZXRob2QKICAgICAgICAoUHlNZXRob2REZWZbXSwgUHlPYmpl
Y3QgKiwgY2hhciAqKTsKCmV4dGVybiBQeU9iamVjdCAqIFB5Q0Z1bmN0aW9uX05ldwogICAgICAg
IChQeU1ldGhvZERlZiAqLCBQeU9iamVjdCAqKTsKCgoKCgp0eXBlZGVmIHN0cnVjdCBQeU1ldGhv
ZENoYWluIHsKICAgICAgICBQeU1ldGhvZERlZiAqbWV0aG9kczsKICAgICAgICBzdHJ1Y3QgUHlN
ZXRob2RDaGFpbiAqbGluazsKfSBQeU1ldGhvZENoYWluOwoKZXh0ZXJuIFB5T2JqZWN0ICogUHlf
RmluZE1ldGhvZEluQ2hhaW4KICAgICAgICAoUHlNZXRob2RDaGFpbiAqLCBQeU9iamVjdCAqLCBj
aGFyICopOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBf
dHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBQeU1ldGhvZERlZiAqbV9tbDsKICAgICAgICBQ
eU9iamVjdCAqbV9zZWxmOwp9IFB5Q0Z1bmN0aW9uT2JqZWN0OwoKIyA4OCAiL3Vzci9pbmNsdWRl
L3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9tb2R1
bGVvYmplY3QuaCIgMQpleHRlcm4gUHlUeXBlT2JqZWN0IFB5TW9kdWxlX1R5cGU7CgoKCmV4dGVy
biBQeU9iamVjdCAqIFB5TW9kdWxlX05ldyAoY2hhciAqKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlN
b2R1bGVfR2V0RGljdCAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlNb2R1bGVfR2V0TmFt
ZSAoUHlPYmplY3QgKik7CmV4dGVybiBjaGFyICogUHlNb2R1bGVfR2V0RmlsZW5hbWUgKFB5T2Jq
ZWN0ICopOwpleHRlcm4gdm9pZCBfUHlNb2R1bGVfQ2xlYXIgKFB5T2JqZWN0ICopOwoKIyA4OSAi
L3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9mdW5jb2JqZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9y
ZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsKICAgICAgICBQeU9iamVjdCAqZnVu
Y19jb2RlOwogICAgICAgIFB5T2JqZWN0ICpmdW5jX2dsb2JhbHM7CiAgICAgICAgUHlPYmplY3Qg
KmZ1bmNfZGVmYXVsdHM7CiAgICAgICAgUHlPYmplY3QgKmZ1bmNfZG9jOwogICAgICAgIFB5T2Jq
ZWN0ICpmdW5jX25hbWU7Cn0gUHlGdW5jdGlvbk9iamVjdDsKCmV4dGVybiBQeVR5cGVPYmplY3Qg
UHlGdW5jdGlvbl9UeXBlOwoKCgpleHRlcm4gUHlPYmplY3QgKiBQeUZ1bmN0aW9uX05ldyAoUHlP
YmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0Q29k
ZSAoUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0R2xvYmFscyAo
UHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RnVuY3Rpb25fR2V0RGVmYXVsdHMgKFB5
T2JqZWN0ICopOwpleHRlcm4gaW50IFB5RnVuY3Rpb25fU2V0RGVmYXVsdHMgKFB5T2JqZWN0ICos
IFB5T2JqZWN0ICopOwoKCgojIDkwICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAy
CgojIDQyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0LmgiIDEKdHlwZWRlZiBz
dHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlw
ZTsKICAgICAgICBQeU9iamVjdCAqY2xfYmFzZXM7CiAgICAgICAgUHlPYmplY3QgKmNsX2RpY3Q7
CiAgICAgICAgUHlPYmplY3QgKmNsX25hbWU7CgogICAgICAgIFB5T2JqZWN0ICpjbF9nZXRhdHRy
OwogICAgICAgIFB5T2JqZWN0ICpjbF9zZXRhdHRyOwogICAgICAgIFB5T2JqZWN0ICpjbF9kZWxh
dHRyOwp9IFB5Q2xhc3NPYmplY3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3Jl
ZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgICAgIFB5Q2xhc3NPYmplY3Qg
KmluX2NsYXNzOwogICAgICAgIFB5T2JqZWN0ICppbl9kaWN0Owp9IFB5SW5zdGFuY2VPYmplY3Q7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2Jq
ZWN0ICpvYl90eXBlOwogICAgICAgIFB5T2JqZWN0ICppbV9mdW5jOwogICAgICAgIFB5T2JqZWN0
ICppbV9zZWxmOwogICAgICAgIFB5T2JqZWN0ICppbV9jbGFzczsKfSBQeU1ldGhvZE9iamVjdDsK
CmV4dGVybiBQeVR5cGVPYmplY3QgUHlDbGFzc19UeXBlLCBQeUluc3RhbmNlX1R5cGUsIFB5TWV0
aG9kX1R5cGU7CgoKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlDbGFzc19OZXcgKFB5T2JqZWN0ICos
IFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUluc3RhbmNlX05l
dyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CmV4dGVybiBQeU9iamVjdCAq
IFB5TWV0aG9kX05ldyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CgpleHRl
cm4gUHlPYmplY3QgKiBQeU1ldGhvZF9GdW5jdGlvbiAoUHlPYmplY3QgKik7CmV4dGVybiBQeU9i
amVjdCAqIFB5TWV0aG9kX1NlbGYgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeU1l
dGhvZF9DbGFzcyAoUHlPYmplY3QgKik7CgoKCgoKCgoKCgpleHRlcm4gaW50IFB5Q2xhc3NfSXNT
dWJjbGFzcyAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CgpleHRlcm4gUHlPYmplY3QgKiBQeUlu
c3RhbmNlX0RvQmluT3AKCgogICAgICAgIChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAojIDk0ICIv
dXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0LmgiCiAgICAgICAgICAgICAgICAgIGNo
YXIgKiwgY2hhciAqLAojIDk0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NsYXNzb2JqZWN0Lmgi
CiAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICogKCopIChQeU9iamVjdCAqLCBQeU9iamVjdCAq
KSApOwoKIyA5MSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vz
ci9pbmNsdWRlL3B5dGhvbjEuNS9maWxlb2JqZWN0LmgiIDEKZXh0ZXJuIFB5VHlwZU9iamVjdCBQ
eUZpbGVfVHlwZTsKCgoKZXh0ZXJuIFB5T2JqZWN0ICogUHlGaWxlX0Zyb21TdHJpbmcgKGNoYXIg
KiwgY2hhciAqKTsKZXh0ZXJuIHZvaWQgUHlGaWxlX1NldEJ1ZlNpemUgKFB5T2JqZWN0ICosIGlu
dCk7CmV4dGVybiBQeU9iamVjdCAqIFB5RmlsZV9Gcm9tRmlsZQogICAgICAgIChGSUxFICosIGNo
YXIgKiwgY2hhciAqLCBpbnQgKCopKEZJTEUgKikpOwpleHRlcm4gRklMRSAqIFB5RmlsZV9Bc0Zp
bGUgKFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUZpbGVfTmFtZSAoUHlPYmplY3Qg
Kik7CmV4dGVybiBQeU9iamVjdCAqIFB5RmlsZV9HZXRMaW5lIChQeU9iamVjdCAqLCBpbnQpOwpl
eHRlcm4gaW50IFB5RmlsZV9Xcml0ZU9iamVjdCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgaW50
KTsKZXh0ZXJuIGludCBQeUZpbGVfU29mdFNwYWNlIChQeU9iamVjdCAqLCBpbnQpOwpleHRlcm4g
aW50IFB5RmlsZV9Xcml0ZVN0cmluZyAoY2hhciAqLCBQeU9iamVjdCAqKTsKCiMgOTIgIi91c3Iv
aW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgNDcgIi91c3IvaW5jbHVkZS9weXRob24x
LjUvY29iamVjdC5oIiAxCmV4dGVybiBQeVR5cGVPYmplY3QgUHlDT2JqZWN0X1R5cGU7CgojIDU3
ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2NvYmplY3QuaCIKZXh0ZXJuIFB5T2JqZWN0ICoKUHlD
T2JqZWN0X0Zyb21Wb2lkUHRyICh2b2lkICpjb2JqLCB2b2lkICgqZGVzdHJ1Y3QpKHZvaWQqKSk7
CgoKCgoKCgpleHRlcm4gUHlPYmplY3QgKgpQeUNPYmplY3RfRnJvbVZvaWRQdHJBbmREZXNjICh2
b2lkICpjb2JqLCB2b2lkICpkZXNjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2b2lkICgqZGVzdHJ1Y3QpKHZvaWQqLHZvaWQqKSk7CgoKZXh0ZXJuIHZvaWQgKgpQeUNP
YmplY3RfQXNWb2lkUHRyIChQeU9iamVjdCAqKTsKCgpleHRlcm4gdm9pZCAqClB5Q09iamVjdF9H
ZXREZXNjIChQeU9iamVjdCAqKTsKCgpleHRlcm4gdm9pZCAqClB5Q09iamVjdF9JbXBvcnQgKGNo
YXIgKm1vZHVsZV9uYW1lLCBjaGFyICpjb2JqZWN0X25hbWUpOwoKIyA5MyAiL3Vzci9pbmNsdWRl
L3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS90cmFj
ZWJhY2suaCIgMQpzdHJ1Y3QgX2ZyYW1lOwoKaW50IFB5VHJhY2VCYWNrX0hlcmUgKHN0cnVjdCBf
ZnJhbWUgKik7ClB5T2JqZWN0ICogUHlUcmFjZUJhY2tfRmV0Y2ggKHZvaWQpOwppbnQgUHlUcmFj
ZUJhY2tfU3RvcmUgKFB5T2JqZWN0ICopOwppbnQgUHlUcmFjZUJhY2tfUHJpbnQgKFB5T2JqZWN0
ICosIFB5T2JqZWN0ICopOwoKCmV4dGVybiBQeVR5cGVPYmplY3QgUHlUcmFjZUJhY2tfVHlwZTsK
IyA5NCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyA5ICIvdXNyL2luY2x1
ZGUvcHl0aG9uMS41L3NsaWNlb2JqZWN0LmgiIDEKZXh0ZXJuIFB5T2JqZWN0IF9QeV9FbGxpcHNp
c09iamVjdDsKCiMgMjIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvc2xpY2VvYmplY3QuaCIKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAq
b2JfdHlwZTsKICAgICAgICBQeU9iamVjdCAqc3RhcnQsICpzdG9wLCAqc3RlcDsKfSBQeVNsaWNl
T2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVNsaWNlX1R5cGU7CgoKClB5T2JqZWN0ICog
UHlTbGljZV9OZXcgKAogICAgICAgIFB5T2JqZWN0KiBzdGFydCwgUHlPYmplY3QqIHN0b3AsIFB5
T2JqZWN0KiBzdGVwKTsKaW50IFB5U2xpY2VfR2V0SW5kaWNlcyAoCiAgICAgICAgUHlTbGljZU9i
amVjdCAqciwgaW50IGxlbmd0aCwgaW50ICpzdGFydCwgaW50ICpzdG9wLCBpbnQgKnN0ZXApOwoK
IyA5NSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKCiMgNDAgIi91c3IvaW5j
bHVkZS9weXRob24xLjUvcHllcnJvcnMuaCIgMQp2b2lkIFB5RXJyX1NldE5vbmUgKFB5T2JqZWN0
ICopOwp2b2lkIFB5RXJyX1NldE9iamVjdCAoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CnZvaWQg
UHlFcnJfU2V0U3RyaW5nIChQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOwpQeU9iamVjdCAqIFB5
RXJyX09jY3VycmVkICh2b2lkKTsKdm9pZCBQeUVycl9DbGVhciAodm9pZCk7CnZvaWQgUHlFcnJf
RmV0Y2ggKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKiwgUHlPYmplY3QgKiopOwp2b2lkIFB5RXJy
X1Jlc3RvcmUgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwoKCmludCBQeUVy
cl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwppbnQgUHlF
cnJfRXhjZXB0aW9uTWF0Y2hlcyAoUHlPYmplY3QgKik7CnZvaWQgUHlFcnJfTm9ybWFsaXplRXhj
ZXB0aW9uIChQeU9iamVjdCoqLCBQeU9iamVjdCoqLCBQeU9iamVjdCoqKTsKCgoKCmV4dGVybiBQ
eU9iamVjdCAqIFB5RXhjX0V4Y2VwdGlvbjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfU3RhbmRh
cmRFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfQXJpdGhtZXRpY0Vycm9yOwpleHRlcm4g
UHlPYmplY3QgKiBQeUV4Y19Mb29rdXBFcnJvcjsKCmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0Fz
c2VydGlvbkVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19BdHRyaWJ1dGVFcnJvcjsKZXh0
ZXJuIFB5T2JqZWN0ICogUHlFeGNfRU9GRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0Zs
b2F0aW5nUG9pbnRFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfRW52aXJvbm1lbnRFcnJv
cjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfSU9FcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlF
eGNfT1NFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfSW1wb3J0RXJyb3I7CmV4dGVybiBQ
eU9iamVjdCAqIFB5RXhjX0luZGV4RXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX0tleUVy
cm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19LZXlib2FyZEludGVycnVwdDsKZXh0ZXJuIFB5
T2JqZWN0ICogUHlFeGNfTWVtb3J5RXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX05hbWVF
cnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfT3ZlcmZsb3dFcnJvcjsKZXh0ZXJuIFB5T2Jq
ZWN0ICogUHlFeGNfUnVudGltZUVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19Ob3RJbXBs
ZW1lbnRlZEVycm9yOwpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19TeW50YXhFcnJvcjsKZXh0ZXJu
IFB5T2JqZWN0ICogUHlFeGNfU3lzdGVtRXJyb3I7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX1N5
c3RlbUV4aXQ7CmV4dGVybiBQeU9iamVjdCAqIFB5RXhjX1R5cGVFcnJvcjsKZXh0ZXJuIFB5T2Jq
ZWN0ICogUHlFeGNfVmFsdWVFcnJvcjsKZXh0ZXJuIFB5T2JqZWN0ICogUHlFeGNfWmVyb0Rpdmlz
aW9uRXJyb3I7CgpleHRlcm4gUHlPYmplY3QgKiBQeUV4Y19NZW1vcnlFcnJvckluc3Q7CgoKCgpl
eHRlcm4gaW50IFB5RXJyX0JhZEFyZ3VtZW50ICh2b2lkKTsKZXh0ZXJuIFB5T2JqZWN0ICogUHlF
cnJfTm9NZW1vcnkgKHZvaWQpOwpleHRlcm4gUHlPYmplY3QgKiBQeUVycl9TZXRGcm9tRXJybm8g
KFB5T2JqZWN0ICopOwpleHRlcm4gUHlPYmplY3QgKiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmls
ZW5hbWUgKFB5T2JqZWN0ICosIGNoYXIgKik7CmV4dGVybiBQeU9iamVjdCAqIFB5RXJyX0Zvcm1h
dCAoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJuIHZvaWQgUHlFcnJfQmFk
SW50ZXJuYWxDYWxsICh2b2lkKTsKCgpQeU9iamVjdCAqIFB5RXJyX05ld0V4Y2VwdGlvbiAoY2hh
ciAqbmFtZSwgUHlPYmplY3QgKmJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFB5T2JqZWN0ICpkaWN0KTsKCgpleHRlcm4gaW50IFB5RXJyX0NoZWNrU2lnbmFscyAo
dm9pZCk7CmV4dGVybiB2b2lkIFB5RXJyX1NldEludGVycnVwdCAodm9pZCk7CgoKIyA5NyAiL3Vz
ci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIgMgoKIyAxMDkgIi91c3IvaW5jbHVkZS9weXRo
b24xLjUvbXltYWxsb2MuaCIgMQpleHRlcm4gdm9pZCAqIFB5X01hbGxvYyAoc2l6ZV90KTsKZXh0
ZXJuIHZvaWQgKiBQeV9SZWFsbG9jICh2b2lkICosIHNpemVfdCk7CmV4dGVybiB2b2lkIFB5X0Zy
ZWUgKHZvaWQgKik7CgoKZXh0ZXJuIHZvaWQgKiBQeU1lbV9NYWxsb2MgKHNpemVfdCk7CmV4dGVy
biB2b2lkICogUHlNZW1fUmVhbGxvYyAodm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCBQeU1l
bV9GcmVlICh2b2lkICopOwoKIyA5OCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIg
MgoKCiMgNDMgIi91c3IvaW5jbHVkZS9weXRob24xLjUvcHlzdGF0ZS5oIiAxCnN0cnVjdCBfdHM7
CnN0cnVjdCBfaXM7Cgp0eXBlZGVmIHN0cnVjdCBfaXMgewoKICAgICAgICBzdHJ1Y3QgX2lzICpu
ZXh0OwogICAgICAgIHN0cnVjdCBfdHMgKnRzdGF0ZV9oZWFkOwoKICAgICAgICBQeU9iamVjdCAq
bW9kdWxlczsKICAgICAgICBQeU9iamVjdCAqc3lzZGljdDsKICAgICAgICBQeU9iamVjdCAqYnVp
bHRpbnM7CgogICAgICAgIGludCBjaGVja2ludGVydmFsOwoKfSBQeUludGVycHJldGVyU3RhdGU7
CgoKCgpzdHJ1Y3QgX2ZyYW1lOwoKdHlwZWRlZiBzdHJ1Y3QgX3RzIHsKCiAgICAgICAgc3RydWN0
IF90cyAqbmV4dDsKICAgICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKCiAgICAgICAg
c3RydWN0IF9mcmFtZSAqZnJhbWU7CiAgICAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aDsKICAgICAg
ICBpbnQgdGlja2VyOwogICAgICAgIGludCB0cmFjaW5nOwoKICAgICAgICBQeU9iamVjdCAqc3lz
X3Byb2ZpbGVmdW5jOwogICAgICAgIFB5T2JqZWN0ICpzeXNfdHJhY2VmdW5jOwoKICAgICAgICBQ
eU9iamVjdCAqY3VyZXhjX3R5cGU7CiAgICAgICAgUHlPYmplY3QgKmN1cmV4Y192YWx1ZTsKICAg
ICAgICBQeU9iamVjdCAqY3VyZXhjX3RyYWNlYmFjazsKCiAgICAgICAgUHlPYmplY3QgKmV4Y190
eXBlOwogICAgICAgIFB5T2JqZWN0ICpleGNfdmFsdWU7CiAgICAgICAgUHlPYmplY3QgKmV4Y190
cmFjZWJhY2s7CgogICAgICAgIFB5T2JqZWN0ICpkaWN0OwoKCgp9IFB5VGhyZWFkU3RhdGU7CgoK
UHlJbnRlcnByZXRlclN0YXRlICogUHlJbnRlcnByZXRlclN0YXRlX05ldyAodm9pZCk7CnZvaWQg
UHlJbnRlcnByZXRlclN0YXRlX0NsZWFyIChQeUludGVycHJldGVyU3RhdGUgKik7CnZvaWQgUHlJ
bnRlcnByZXRlclN0YXRlX0RlbGV0ZSAoUHlJbnRlcnByZXRlclN0YXRlICopOwoKUHlUaHJlYWRT
dGF0ZSAqIFB5VGhyZWFkU3RhdGVfTmV3IChQeUludGVycHJldGVyU3RhdGUgKik7CnZvaWQgUHlU
aHJlYWRTdGF0ZV9DbGVhciAoUHlUaHJlYWRTdGF0ZSAqKTsKdm9pZCBQeVRocmVhZFN0YXRlX0Rl
bGV0ZSAoUHlUaHJlYWRTdGF0ZSAqKTsKClB5VGhyZWFkU3RhdGUgKiBQeVRocmVhZFN0YXRlX0dl
dCAodm9pZCk7ClB5VGhyZWFkU3RhdGUgKiBQeVRocmVhZFN0YXRlX1N3YXAgKFB5VGhyZWFkU3Rh
dGUgKik7ClB5T2JqZWN0ICogUHlUaHJlYWRTdGF0ZV9HZXREaWN0ICh2b2lkKTsKCgoKCmV4dGVy
biBQeVRocmVhZFN0YXRlICogX1B5VGhyZWFkU3RhdGVfQ3VycmVudDsKCiMgMTAwICIvdXNyL2lu
Y2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgoKIyA0MyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEu
NS9tb2RzdXBwb3J0LmgiIDEKIyAxMTAgIi91c3IvbGliL2djYy1saWIvaTM4Ni1yZWRoYXQtbGlu
dXgvMi45Ni9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9s
aXN0OwojIDQzICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L21vZHN1cHBvcnQuaCIgMgoKZXh0ZXJu
IGludCBQeUFyZ19QYXJzZSAoUHlPYmplY3QgKiwgY2hhciAqLCAuLi4pOwpleHRlcm4gaW50IFB5
QXJnX1BhcnNlVHVwbGUgKFB5T2JqZWN0ICosIGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBQeUFy
Z19QYXJzZVR1cGxlQW5kS2V5d29yZHMgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIGNoYXIgKios
IC4uLik7CmV4dGVybiBQeU9iamVjdCAqIFB5X0J1aWxkVmFsdWUgKGNoYXIgKiwgLi4uKTsKCiMg
NjEgIi91c3IvaW5jbHVkZS9weXRob24xLjUvbW9kc3VwcG9ydC5oIgpleHRlcm4gaW50IFB5QXJn
X1ZhUGFyc2UgKFB5T2JqZWN0ICosIGNoYXIgKiwgdmFfbGlzdCk7CmV4dGVybiBQeU9iamVjdCAq
IFB5X1ZhQnVpbGRWYWx1ZSAoY2hhciAqLCB2YV9saXN0KTsKCiMgMTEyICIvdXNyL2luY2x1ZGUv
cHl0aG9uMS41L21vZHN1cHBvcnQuaCIKZXh0ZXJuIFB5T2JqZWN0ICogUHlfSW5pdE1vZHVsZTQg
KGNoYXIgKiwgUHlNZXRob2REZWYgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqLCBQeU9iamVjdCAqLCBpbnQpOwojIDEyMiAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9tb2RzdXBwb3J0LmgiCmV4dGVybiBjaGFyICogX1B5X1BhY2thZ2VDb250ZXh0OwoK
IyAxMDIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgNDAgIi91c3IvaW5j
bHVkZS9weXRob24xLjUvY2V2YWwuaCIgMQpQeU9iamVjdCAqIFB5RXZhbF9DYWxsT2JqZWN0V2l0
aEtleXdvcmRzCiAgICAgICAgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwoK
CgpQeU9iamVjdCAqIFB5RXZhbF9DYWxsT2JqZWN0IChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsK
CgoKCgoKUHlPYmplY3QgKiBQeUV2YWxfQ2FsbEZ1bmN0aW9uIChQeU9iamVjdCAqb2JqLCBjaGFy
ICpmb3JtYXQsIC4uLik7ClB5T2JqZWN0ICogUHlFdmFsX0NhbGxNZXRob2QgKFB5T2JqZWN0ICpv
YmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbWV0aG9kbmFt
ZSwgY2hhciAqZm9ybWF0LCAuLi4pOwoKCgoKCgpQeU9iamVjdCAqIFB5RXZhbF9HZXRCdWlsdGlu
cyAodm9pZCk7ClB5T2JqZWN0ICogUHlFdmFsX0dldEdsb2JhbHMgKHZvaWQpOwpQeU9iamVjdCAq
IFB5RXZhbF9HZXRMb2NhbHMgKHZvaWQpOwpQeU9iamVjdCAqIFB5RXZhbF9HZXRPd25lciAodm9p
ZCk7ClB5T2JqZWN0ICogUHlFdmFsX0dldEZyYW1lICh2b2lkKTsKaW50IFB5RXZhbF9HZXRSZXN0
cmljdGVkICh2b2lkKTsKCmludCBQeV9GbHVzaExpbmUgKHZvaWQpOwoKaW50IFB5X0FkZFBlbmRp
bmdDYWxsIChpbnQgKCpmdW5jKSAodm9pZCAqKSwgdm9pZCAqYXJnKTsKaW50IFB5X01ha2VQZW5k
aW5nQ2FsbHMgKHZvaWQpOwojIDExOSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9jZXZhbC5oIgpl
eHRlcm4gUHlUaHJlYWRTdGF0ZSAqIFB5RXZhbF9TYXZlVGhyZWFkICh2b2lkKTsKZXh0ZXJuIHZv
aWQgUHlFdmFsX1Jlc3RvcmVUaHJlYWQgKFB5VGhyZWFkU3RhdGUgKik7CgoKCmV4dGVybiB2b2lk
IFB5RXZhbF9Jbml0VGhyZWFkcyAodm9pZCk7CmV4dGVybiB2b2lkIFB5RXZhbF9BY3F1aXJlTG9j
ayAodm9pZCk7CmV4dGVybiB2b2lkIFB5RXZhbF9SZWxlYXNlTG9jayAodm9pZCk7CmV4dGVybiB2
b2lkIFB5RXZhbF9BY3F1aXJlVGhyZWFkIChQeVRocmVhZFN0YXRlICp0c3RhdGUpOwpleHRlcm4g
dm9pZCBQeUV2YWxfUmVsZWFzZVRocmVhZCAoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKCiMgMTAz
ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgojIDQwICIvdXNyL2luY2x1ZGUv
cHl0aG9uMS41L3B5dGhvbnJ1bi5oIiAxCnZvaWQgUHlfU2V0UHJvZ3JhbU5hbWUgKGNoYXIgKik7
CmNoYXIgKiBQeV9HZXRQcm9ncmFtTmFtZSAodm9pZCk7Cgp2b2lkIFB5X1NldFB5dGhvbkhvbWUg
KGNoYXIgKik7CmNoYXIgKiBQeV9HZXRQeXRob25Ib21lICh2b2lkKTsKCnZvaWQgUHlfSW5pdGlh
bGl6ZSAodm9pZCk7CnZvaWQgUHlfRmluYWxpemUgKHZvaWQpOwppbnQgUHlfSXNJbml0aWFsaXpl
ZCAodm9pZCk7ClB5VGhyZWFkU3RhdGUgKiBQeV9OZXdJbnRlcnByZXRlciAodm9pZCk7CnZvaWQg
UHlfRW5kSW50ZXJwcmV0ZXIgKFB5VGhyZWFkU3RhdGUgKik7CgppbnQgUHlSdW5fQW55RmlsZSAo
RklMRSAqLCBjaGFyICopOwoKaW50IFB5UnVuX1NpbXBsZVN0cmluZyAoY2hhciAqKTsKaW50IFB5
UnVuX1NpbXBsZUZpbGUgKEZJTEUgKiwgY2hhciAqKTsKaW50IFB5UnVuX0ludGVyYWN0aXZlT25l
IChGSUxFICosIGNoYXIgKik7CmludCBQeVJ1bl9JbnRlcmFjdGl2ZUxvb3AgKEZJTEUgKiwgY2hh
ciAqKTsKCnN0cnVjdCBfbm9kZSAqIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nIChjaGFyICos
IGludCk7CnN0cnVjdCBfbm9kZSAqIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZSAoRklMRSAqLCBj
aGFyICosIGludCk7CgpQeU9iamVjdCAqIFB5UnVuX1N0cmluZyAoY2hhciAqLCBpbnQsIFB5T2Jq
ZWN0ICosIFB5T2JqZWN0ICopOwpQeU9iamVjdCAqIFB5UnVuX0ZpbGUgKEZJTEUgKiwgY2hhciAq
LCBpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwoKUHlPYmplY3QgKiBQeV9Db21waWxlU3Ry
aW5nIChjaGFyICosIGNoYXIgKiwgaW50KTsKCnZvaWQgUHlFcnJfUHJpbnQgKHZvaWQpOwp2b2lk
IFB5RXJyX1ByaW50RXggKGludCk7CgppbnQgUHlfQXRFeGl0ICh2b2lkICgqZnVuYykgKHZvaWQp
KTsKCnZvaWQgUHlfRXhpdCAoaW50KTsKCmludCBQeV9GZElzSW50ZXJhY3RpdmUgKEZJTEUgKiwg
Y2hhciAqKTsKCgpjaGFyICogUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoICh2b2lkKTsKY2hhciAqIFB5
X0dldFByZWZpeCAodm9pZCk7CmNoYXIgKiBQeV9HZXRFeGVjUHJlZml4ICh2b2lkKTsKY2hhciAq
IFB5X0dldFBhdGggKHZvaWQpOwoKCmNvbnN0IGNoYXIgKiBQeV9HZXRWZXJzaW9uICh2b2lkKTsK
Y29uc3QgY2hhciAqIFB5X0dldFBsYXRmb3JtICh2b2lkKTsKY29uc3QgY2hhciAqIFB5X0dldENv
cHlyaWdodCAodm9pZCk7CmNvbnN0IGNoYXIgKiBQeV9HZXRDb21waWxlciAodm9pZCk7CmNvbnN0
IGNoYXIgKiBQeV9HZXRCdWlsZEluZm8gKHZvaWQpOwoKCgpQeU9iamVjdCAqIF9QeUJ1aWx0aW5f
SW5pdF8xICh2b2lkKTsKdm9pZCBfUHlCdWlsdGluX0luaXRfMiAoUHlPYmplY3QgKik7ClB5T2Jq
ZWN0ICogX1B5U3lzX0luaXQgKHZvaWQpOwp2b2lkIF9QeUltcG9ydF9Jbml0ICh2b2lkKTsKCgp2
b2lkIF9QeUltcG9ydF9GaW5pICh2b2lkKTsKdm9pZCBfUHlCdWlsdGluX0ZpbmlfMSAodm9pZCk7
CnZvaWQgX1B5QnVpbHRpbl9GaW5pXzIgKHZvaWQpOwp2b2lkIFB5TWV0aG9kX0ZpbmkgKHZvaWQp
Owp2b2lkIFB5RnJhbWVfRmluaSAodm9pZCk7CnZvaWQgUHlDRnVuY3Rpb25fRmluaSAodm9pZCk7
CnZvaWQgUHlUdXBsZV9GaW5pICh2b2lkKTsKdm9pZCBQeVN0cmluZ19GaW5pICh2b2lkKTsKdm9p
ZCBQeUludF9GaW5pICh2b2lkKTsKdm9pZCBQeUZsb2F0X0ZpbmkgKHZvaWQpOwp2b2lkIFB5T1Nf
RmluaUludGVycnVwdHMgKHZvaWQpOwoKCmNoYXIgKiBQeU9TX1JlYWRsaW5lIChjaGFyICopOwpl
eHRlcm4gaW50ICgqUHlPU19JbnB1dEhvb2spICh2b2lkKTsKZXh0ZXJuIGNoYXIgKigqUHlPU19S
ZWFkbGluZUZ1bmN0aW9uUG9pbnRlcikgKGNoYXIgKik7CgojIDEwNCAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9QeXRob24uaCIgMgoKIyA0MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9zeXNtb2R1
bGUuaCIgMQpQeU9iamVjdCAqIFB5U3lzX0dldE9iamVjdCAoY2hhciAqKTsKaW50IFB5U3lzX1Nl
dE9iamVjdCAoY2hhciAqLCBQeU9iamVjdCAqKTsKRklMRSAqIFB5U3lzX0dldEZpbGUgKGNoYXIg
KiwgRklMRSAqKTsKdm9pZCBQeVN5c19TZXRBcmd2IChpbnQsIGNoYXIgKiopOwp2b2lkIFB5U3lz
X1NldFBhdGggKGNoYXIgKik7CgoKdm9pZCBQeVN5c19Xcml0ZVN0ZG91dChjb25zdCBjaGFyICpm
b3JtYXQsIC4uLik7CnZvaWQgUHlTeXNfV3JpdGVTdGRlcnIoY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pOwoKCgoKCgpleHRlcm4gUHlPYmplY3QgKiBfUHlTeXNfVHJhY2VGdW5jLCAqX1B5U3lzX1By
b2ZpbGVGdW5jOwpleHRlcm4gaW50IF9QeVN5c19DaGVja0ludGVydmFsOwoKIyAxMDUgIi91c3Iv
aW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIKCiMgMzggIi91c3IvaW5jbHVkZS9weXRob24x
LjUvaW50cmNoZWNrLmgiIDEKZXh0ZXJuIGludCBQeU9TX0ludGVycnVwdE9jY3VycmVkICh2b2lk
KTsKZXh0ZXJuIHZvaWQgUHlPU19Jbml0SW50ZXJydXB0cyAodm9pZCk7CnZvaWQgUHlPU19BZnRl
ckZvcmsgKHZvaWQpOwoKIyAxMDYgIi91c3IvaW5jbHVkZS9weXRob24xLjUvUHl0aG9uLmgiIDIK
CiMgNDAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvaW1wb3J0LmgiIDEKbG9uZyBQeUltcG9ydF9H
ZXRNYWdpY051bWJlciAodm9pZCk7ClB5T2JqZWN0ICogUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUg
KGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpjbyk7ClB5T2JqZWN0ICogUHlJbXBvcnRfRXhlY0NvZGVN
b2R1bGVFeCAoCiAgICAgICAgY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvLCBjaGFyICpwYXRobmFt
ZSk7ClB5T2JqZWN0ICogUHlJbXBvcnRfR2V0TW9kdWxlRGljdCAodm9pZCk7ClB5T2JqZWN0ICog
UHlJbXBvcnRfQWRkTW9kdWxlIChjaGFyICpuYW1lKTsKUHlPYmplY3QgKiBQeUltcG9ydF9JbXBv
cnRNb2R1bGUgKGNoYXIgKm5hbWUpOwpQeU9iamVjdCAqIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4
ICgKICAgICAgICBjaGFyICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2Fs
cywgUHlPYmplY3QgKmZyb21saXN0KTsKUHlPYmplY3QgKiBQeUltcG9ydF9JbXBvcnQgKFB5T2Jq
ZWN0ICpuYW1lKTsKUHlPYmplY3QgKiBQeUltcG9ydF9SZWxvYWRNb2R1bGUgKFB5T2JqZWN0ICpt
KTsKdm9pZCBQeUltcG9ydF9DbGVhbnVwICh2b2lkKTsKaW50IFB5SW1wb3J0X0ltcG9ydEZyb3pl
bk1vZHVsZSAoY2hhciAqKTsKCmV4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0ZpbmRFeHRlbnNp
b24gKGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIFB5T2JqZWN0ICpfUHlJbXBvcnRfRml4dXBFeHRl
bnNpb24gKGNoYXIgKiwgY2hhciAqKTsKCnN0cnVjdCBfaW5pdHRhYiB7CiAgICAgICAgY2hhciAq
bmFtZTsKICAgICAgICB2b2lkICgqaW5pdGZ1bmMpKCk7Cn07CgpleHRlcm4gc3RydWN0IF9pbml0
dGFiICogUHlJbXBvcnRfSW5pdHRhYjsKCmV4dGVybiBpbnQgUHlJbXBvcnRfQXBwZW5kSW5pdHRh
YiAoY2hhciAqbmFtZSwgdm9pZCAoKmluaXRmdW5jKSgpKTsKZXh0ZXJuIGludCBQeUltcG9ydF9F
eHRlbmRJbml0dGFiIChzdHJ1Y3QgX2luaXR0YWIgKm5ld3RhYik7CgpzdHJ1Y3QgX2Zyb3plbiB7
CiAgICAgICAgY2hhciAqbmFtZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICpjb2RlOwogICAgICAg
IGludCBzaXplOwp9OwoKCgoKZXh0ZXJuIHN0cnVjdCBfZnJvemVuICogUHlJbXBvcnRfRnJvemVu
TW9kdWxlczsKCiMgMTA3ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L1B5dGhvbi5oIiAyCgoKIyAy
NTcgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIgMQogICAgIGludCBQeU9iamVj
dF9DbXAgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yLCBpbnQgKnJlc3VsdCk7CiMgMzA1ICIv
dXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5Q2FsbGFibGVfQ2hl
Y2sgKFB5T2JqZWN0ICpvKTsKIyAzMTcgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3Qu
aCIKICAgICBQeU9iamVjdCAqIFB5T2JqZWN0X0NhbGxPYmplY3QgKFB5T2JqZWN0ICpjYWxsYWJs
ZV9vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5
T2JqZWN0ICphcmdzKTsKIyAzMzAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIK
ICAgICBQeU9iamVjdCAqIFB5T2JqZWN0X0NhbGxGdW5jdGlvbiAoUHlPYmplY3QgKmNhbGxhYmxl
X29iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICpmb3JtYXQsIC4uLik7CiMgMzQ0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0
LmgiCiAgICAgUHlPYmplY3QgKiBQeU9iamVjdF9DYWxsTWV0aG9kIChQeU9iamVjdCAqbywgY2hh
ciAqbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Zm9ybWF0LCAuLi4pOwojIDM5NyAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgog
ICAgIFB5T2JqZWN0ICogUHlPYmplY3RfVHlwZSAoUHlPYmplY3QgKm8pOwoKCgoKCgoKICAgICBp
bnQgUHlPYmplY3RfTGVuZ3RoIChQeU9iamVjdCAqbyk7CiMgNDE1ICIvdXNyL2luY2x1ZGUvcHl0
aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU9iamVjdF9HZXRJdGVtIChQeU9i
amVjdCAqbywgUHlPYmplY3QgKmtleSk7CiMgNDI0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fi
c3RyYWN0LmgiCiAgICAgaW50IFB5T2JqZWN0X1NldEl0ZW0gKFB5T2JqZWN0ICpvLCBQeU9iamVj
dCAqa2V5LCBQeU9iamVjdCAqdik7CgoKCgoKCgogICAgIGludCBQeU9iamVjdF9EZWxJdGVtIChQ
eU9iamVjdCAqbywgUHlPYmplY3QgKmtleSk7CiMgNDQyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41
L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5TnVtYmVyX0NoZWNrIChQeU9iamVjdCAqbyk7CiMgNDUy
ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51
bWJlcl9BZGQgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIyA0NjEgIi91c3IvaW5jbHVk
ZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX1N1YnRyYWN0
IChQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNDcwICIvdXNyL2luY2x1ZGUvcHl0aG9u
MS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9NdWx0aXBseSAoUHlPYmpl
Y3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDQ4MCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0
cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlOdW1iZXJfRGl2aWRlIChQeU9iamVjdCAqbzEsIFB5
T2JqZWN0ICpvMik7CiMgNDg5ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAg
ICAgUHlPYmplY3QgKiBQeU51bWJlcl9SZW1haW5kZXIgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3Qg
Km8yKTsKIyA0OTkgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9i
amVjdCAqIFB5TnVtYmVyX0Rpdm1vZCAoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOwojIDUw
OSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlO
dW1iZXJfUG93ZXIgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yLCBQeU9iamVjdCAqbzMpOwoj
IDUxOCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICog
UHlOdW1iZXJfTmVnYXRpdmUgKFB5T2JqZWN0ICpvKTsKCgoKCgoKCiAgICAgUHlPYmplY3QgKiBQ
eU51bWJlcl9Qb3NpdGl2ZSAoUHlPYmplY3QgKm8pOwoKCgoKCgoKICAgICBQeU9iamVjdCAqIFB5
TnVtYmVyX0Fic29sdXRlIChQeU9iamVjdCAqbyk7CgoKCgoKCgogICAgIFB5T2JqZWN0ICogUHlO
dW1iZXJfSW52ZXJ0IChQeU9iamVjdCAqbyk7CiMgNTUyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41
L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9Mc2hpZnQgKFB5T2JqZWN0ICpv
MSwgUHlPYmplY3QgKm8yKTsKIyA1NjIgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3Qu
aCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX1JzaGlmdCAoUHlPYmplY3QgKm8xLCBQeU9iamVj
dCAqbzIpOwojIDU3MSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIFB5
T2JqZWN0ICogUHlOdW1iZXJfQW5kIChQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNTgx
ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51
bWJlcl9Yb3IgKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIyA1OTEgIi91c3IvaW5jbHVk
ZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX09yIChQeU9i
amVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CiMgNjE5ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fi
c3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQeU51bWJlcl9JbnQgKFB5T2JqZWN0ICpvKTsKIyA2
MjggIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5
TnVtYmVyX0xvbmcgKFB5T2JqZWN0ICpvKTsKIyA2MzcgIi91c3IvaW5jbHVkZS9weXRob24xLjUv
YWJzdHJhY3QuaCIKICAgICBQeU9iamVjdCAqIFB5TnVtYmVyX0Zsb2F0IChQeU9iamVjdCAqbyk7
CiMgNjQ4ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5U2Vx
dWVuY2VfQ2hlY2sgKFB5T2JqZWN0ICpvKTsKIyA2NTggIi91c3IvaW5jbHVkZS9weXRob24xLjUv
YWJzdHJhY3QuaCIKICAgICBpbnQgUHlTZXF1ZW5jZV9MZW5ndGggKFB5T2JqZWN0ICpvKTsKCgoK
CgoKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfQ29uY2F0IChQeU9iamVjdCAqbzEsIFB5T2Jq
ZWN0ICpvMik7CiMgNjc0ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAg
UHlPYmplY3QgKiBQeVNlcXVlbmNlX1JlcGVhdCAoUHlPYmplY3QgKm8sIGludCBjb3VudCk7CiMg
NjgzICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgUHlPYmplY3QgKiBQ
eVNlcXVlbmNlX0dldEl0ZW0gKFB5T2JqZWN0ICpvLCBpbnQgaSk7CgoKCgoKCgogICAgIFB5T2Jq
ZWN0ICogUHlTZXF1ZW5jZV9HZXRTbGljZSAoUHlPYmplY3QgKm8sIGludCBpMSwgaW50IGkyKTsK
IyA3MDAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlTZXF1
ZW5jZV9TZXRJdGVtIChQeU9iamVjdCAqbywgaW50IGksIFB5T2JqZWN0ICp2KTsKIyA3MDkgIi91
c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlTZXF1ZW5jZV9EZWxJ
dGVtIChQeU9iamVjdCAqbywgaW50IGkpOwoKCgoKCgoKICAgICBpbnQgUHlTZXF1ZW5jZV9TZXRT
bGljZSAoUHlPYmplY3QgKm8sIGludCBpMSwgaW50IGkyLCBQeU9iamVjdCAqdik7CgoKCgoKCgog
ICAgIGludCBQeVNlcXVlbmNlX0RlbFNsaWNlIChQeU9iamVjdCAqbywgaW50IGkxLCBpbnQgaTIp
OwoKCgoKCgoKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfVHVwbGUgKFB5T2JqZWN0ICpvKTsK
CgoKCgoKICAgICBQeU9iamVjdCAqIFB5U2VxdWVuY2VfTGlzdCAoUHlPYmplY3QgKm8pOwoKCgoK
CgogICAgIGludCBQeVNlcXVlbmNlX0NvdW50IChQeU9iamVjdCAqbywgUHlPYmplY3QgKnZhbHVl
KTsKIyA3NTYgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlT
ZXF1ZW5jZV9Db250YWlucyAoUHlPYmplY3QgKm8sIFB5T2JqZWN0ICp2YWx1ZSk7CgoKCiAgICAg
aW50IFB5U2VxdWVuY2VfSW4gKFB5T2JqZWN0ICpvLCBQeU9iamVjdCAqdmFsdWUpOwoKCiMgNzcx
ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L2Fic3RyYWN0LmgiCiAgICAgaW50IFB5U2VxdWVuY2Vf
SW5kZXggKFB5T2JqZWN0ICpvLCBQeU9iamVjdCAqdmFsdWUpOwojIDc4MSAiL3Vzci9pbmNsdWRl
L3B5dGhvbjEuNS9hYnN0cmFjdC5oIgogICAgIGludCBQeU1hcHBpbmdfQ2hlY2sgKFB5T2JqZWN0
ICpvKTsKIyA3OTAgIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQg
UHlNYXBwaW5nX0xlbmd0aCAoUHlPYmplY3QgKm8pOwojIDgwNiAiL3Vzci9pbmNsdWRlL3B5dGhv
bjEuNS9hYnN0cmFjdC5oIgojIDgxOCAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5o
IgogICAgIGludCBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nIChQeU9iamVjdCAqbywgY2hhciAqa2V5
KTsKIyA4MjggIi91c3IvaW5jbHVkZS9weXRob24xLjUvYWJzdHJhY3QuaCIKICAgICBpbnQgUHlN
YXBwaW5nX0hhc0tleSAoUHlPYmplY3QgKm8sIFB5T2JqZWN0ICprZXkpOwojIDg0NyAiL3Vzci9p
bmNsdWRlL3B5dGhvbjEuNS9hYnN0cmFjdC5oIgojIDg3MSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEu
NS9hYnN0cmFjdC5oIgogICAgIFB5T2JqZWN0ICogUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcgKFB5
T2JqZWN0ICpvLCBjaGFyICprZXkpOwoKCgoKCgoKICAgICBpbnQgUHlNYXBwaW5nX1NldEl0ZW1T
dHJpbmcgKFB5T2JqZWN0ICpvLCBjaGFyICprZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUpOwojIDg4OSAiL3Vzci9pbmNsdWRlL3B5
dGhvbjEuNS9hYnN0cmFjdC5oIgojIDEwOSAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24u
aCIgMgojIDEyMiAiL3Vzci9pbmNsdWRlL3B5dGhvbjEuNS9QeXRob24uaCIKIyAyNCAiLi9jdXJ2
ZW9iamVjdC5jIiAyCgojIDQyICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L3N0cnVjdG1lbWJlci5o
IiAxCiMgMTQ3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtcmVkaGF0LWxpbnV4LzIuOTYvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyA0MiAiL3Vzci9pbmNsdWRl
L3B5dGhvbjEuNS9zdHJ1Y3RtZW1iZXIuaCIgMgojIDYwICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41
L3N0cnVjdG1lbWJlci5oIgpzdHJ1Y3QgbWVtYmVybGlzdCB7CiAgICAgICAgY2hhciAqbmFtZTsK
ICAgICAgICBpbnQgdHlwZTsKICAgICAgICBpbnQgb2Zmc2V0OwogICAgICAgIGludCByZWFkb25s
eTsKfTsKCgojIDk1ICIvdXNyL2luY2x1ZGUvcHl0aG9uMS41L3N0cnVjdG1lbWJlci5oIgpQeU9i
amVjdCAqIFB5TWVtYmVyX0dldCAoY2hhciAqLCBzdHJ1Y3QgbWVtYmVybGlzdCAqLCBjaGFyICop
OwppbnQgUHlNZW1iZXJfU2V0IChjaGFyICosIHN0cnVjdCBtZW1iZXJsaXN0ICosIGNoYXIgKiwg
UHlPYmplY3QgKik7CgojIDI1ICIuL2N1cnZlb2JqZWN0LmMiIDIKCgojIDU4ICIvdXNyL2luY2x1
ZGUvYXNzZXJ0LmgiIDEgMwoKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9mYWlsIChfX2NvbnN0IGNo
YXIgKl9fYXNzZXJ0aW9uLCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQog
X19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCmV4dGVybiB2b2lkIF9fYXNzZXJ0X3Bl
cnJvcl9mYWlsIChpbnQgX19lcnJudW0sIF9fY29uc3QgY2hhciAqX19maWxlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fbGluZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikKIF9fYXR0cmli
dXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiB2b2lkIF9fYXNzZXJ0IChjb25zdCBj
aGFyICpfX2Fzc2VydGlvbiwgY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19saW5lKQogX19hdHRy
aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiMgMjcgIi4vY3VydmVvYmplY3QuYyIgMgoKCiMg
MjYgInNrcG9pbnQuaCIgMQp0eXBlZGVmIGZsb2F0IFNLQ29vcmQ7CgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgU0tD
b29yZCB4LCB5Owp9IFNLUG9pbnRPYmplY3Q7CgpleHRlcm4gUHlUeXBlT2JqZWN0IFNLUG9pbnRU
eXBlOwoKCgpQeU9iamVjdCAqIFNLUG9pbnRfRnJvbVhZKFNLQ29vcmQgeCwgU0tDb29yZCB5KTsK
CmludCBza3BvaW50X2V4dHJhY3RfeHkoUHlPYmplY3QgKiBzZXF1ZW5jZSwgZG91YmxlICogeCwg
ZG91YmxlICogeSk7CgpQeU9iamVjdCAqIHNrcG9pbnRfYWxsb2NhdGVkKFB5T2JqZWN0ICogc2Vs
ZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3QgKiBTS1BvaW50X1B5UG9sYXIoUHlPYmplY3Qg
KiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIFNLUG9pbnRfUHlQb2ludChQeU9i
amVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7CgoKCiMgMjkgIi4vY3VydmVvYmplY3QuYyIg
MgoKIyAyNSAic2tyZWN0LmgiIDEKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IG9iX3JlZmNudDsg
c3RydWN0IF90eXBlb2JqZWN0ICpvYl90eXBlOwogICAgU0tDb29yZCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b207Cn0gU0tSZWN0T2JqZWN0OwoKZXh0ZXJuIFB5VHlwZU9iamVjdCBTS1JlY3RUeXBl
OwoKCmV4dGVybiBTS1JlY3RPYmplY3QgKiBTS1JlY3RfSW5maW5pdHlSZWN0OwpleHRlcm4gU0tS
ZWN0T2JqZWN0ICogU0tSZWN0X0VtcHR5UmVjdDsKClB5T2JqZWN0ICogU0tSZWN0X0Zyb21Eb3Vi
bGUoZG91YmxlIGxlZnQsIGRvdWJsZSB0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlIHJpZ2h0LCBkb3VibGUgYm90dG9tKTsKCmludCBTS1JlY3RfQ29udGFpbnNYWShTS1Jl
Y3RPYmplY3QgKiBzZWxmLCBkb3VibGUgeCwgZG91YmxlIHkpOwoKCmludCBTS1JlY3RfQWRkWFko
U0tSZWN0T2JqZWN0ICogc2VsZiwgZG91YmxlIHgsIGRvdWJsZSB5KTsKaW50IFNLUmVjdF9BZGRY
KFNLUmVjdE9iamVjdCAqIHNlbGYsIGRvdWJsZSB4KTsKaW50IFNLUmVjdF9BZGRZKFNLUmVjdE9i
amVjdCAqIHNlbGYsIGRvdWJsZSB5KTsKCgoKUHlPYmplY3QgKiBza3JlY3RfYWxsb2NhdGVkKFB5
T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3QgKiBza3JlY3RfUG9pbnRz
VG9SZWN0KFB5T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3QgKiBza3Jl
Y3RfaW50ZXJzZWN0KFB5T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKUHlPYmplY3Qg
KiBza3JlY3RfdW5pb25yZWN0cyhQeU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7ClB5
T2JqZWN0ICogc2tyZWN0X3NrcmVjdChQeU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7
CgoKCiMgMzAgIi4vY3VydmVvYmplY3QuYyIgMgoKIyAyNSAic2t0cmFmby5oIiAxCnR5cGVkZWYg
c3RydWN0IHsKICAgIGludCBvYl9yZWZjbnQ7IHN0cnVjdCBfdHlwZW9iamVjdCAqb2JfdHlwZTsK
ICAgIGRvdWJsZSBtMTEsIG0yMSwgbTEyLCBtMjIsIHYxLCB2MjsKfSBTS1RyYWZvT2JqZWN0OwoK
ZXh0ZXJuIFB5VHlwZU9iamVjdCBTS1RyYWZvVHlwZTsKCgoKUHlPYmplY3QgKiBTS1RyYWZvX0Zy
b21Eb3VibGUoZG91YmxlIG0xMSwgZG91YmxlIG0yMSwgZG91YmxlIG0xMiwgZG91YmxlIG0yMiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHYxLCBkb3VibGUgdjIpOwoKdm9p
ZCBTS1RyYWZvX1RyYW5zZm9ybVhZKFB5T2JqZWN0ICogdHJhZm8sIGRvdWJsZSB4LCBkb3VibGUg
eSwKICAgICAgICAgICAgICAgICAgICAgICAgIFNLQ29vcmQgKiBvdXRfeCwgU0tDb29yZCAqIG91
dF95KTsKCnZvaWQgU0tUcmFmb19EVHJhbnNmb3JtWFkoUHlPYmplY3QgKiB0cmFmbywgZG91Ymxl
IHgsIGRvdWJsZSB5LAogICAgICAgICAgICAgICAgICAgICAgICAgIFNLQ29vcmQgKiBvdXRfeCwg
U0tDb29yZCAqIG91dF95KTsKCmV4dGVybiBQeU9iamVjdCAqIFNLVHJhZm9fRXhjU2luZ3VsYXI7
CgpQeU9iamVjdCAqIHNrdHJhZm9fcm90YXRpb24oUHlPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAq
IGFyZ3MpOwpQeU9iamVjdCAqIHNrdHJhZm9fdHJhbnNsYXRpb24oUHlPYmplY3QgKiBzZWxmLCBQ
eU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIHNrdHJhZm9fc2NhbGUoUHlPYmplY3QgKiBzZWxm
LCBQeU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIHNrdHJhZm9fc2t0cmFmbyhQeU9iamVjdCAq
IHNlbGYsIFB5T2JqZWN0ICogYXJncyk7ClB5T2JqZWN0ICogc2t0cmFmb19hbGxvY2F0ZWQoUHlP
YmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwoKCiMgMzEgIi4vY3VydmVvYmplY3QuYyIg
MgoKIyAyOSAiY3VydmVvYmplY3QuaCIgMQp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyIHR5cGU7
CiAgICBjaGFyIGNvbnQ7CiAgICBjaGFyIHNlbGVjdGVkOwogICAgU0tDb29yZCB4MSwgeTEsIHgy
LCB5MjsKCiAgICBTS0Nvb3JkIHgsIHk7Cn0gQ3VydmVTZWdtZW50OwoKIyA2MSAiY3VydmVvYmpl
Y3QuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IG9iX3JlZmNudDsgc3RydWN0IF90eXBlb2Jq
ZWN0ICpvYl90eXBlOwogICAgaW50IGxlbjsKICAgIGludCBhbGxvY2F0ZWQ7CiAgICBDdXJ2ZVNl
Z21lbnQgKiBzZWdtZW50czsKICAgIGNoYXIgY2xvc2VkOwp9IFNLQ3VydmVPYmplY3Q7CgoKCmV4
dGVybiBQeVR5cGVPYmplY3QgU0tDdXJ2ZVR5cGU7CgoKCgpQeU9iamVjdCAqIFNLQ3VydmVfTmV3
KGludCBsZW4pOwoKaW50IFNLQ3VydmVfQXBwZW5kU2VnbWVudChTS0N1cnZlT2JqZWN0ICogc2Vs
ZiwgQ3VydmVTZWdtZW50ICogc2VnbWVudCk7CmludCBTS0N1cnZlX0FwcGVuZExpbmUoU0tDdXJ2
ZU9iamVjdCAqIHNlbGYsIGRvdWJsZSB4LCBkb3VibGUgeSwKICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgY29udGludWl0eSk7CmludCBTS0N1cnZlX0FwcGVuZEJlemllcihTS0N1cnZlT2JqZWN0
ICogc2VsZiwgZG91YmxlIHgxLCBkb3VibGUgeTEsCiAgICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgeDIsIGRvdWJsZSB5MiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB4LCBk
b3VibGUgeSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb250aW51aXR5KTsKaW50IFNL
Q3VydmVfQ2xvc2VQYXRoKFNLQ3VydmVPYmplY3QgKiBzZWxmKTsKaW50IFNLQ3VydmVfVGVzdFRy
YW5zZm9ybWVkKFNLQ3VydmVPYmplY3QgKiBzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUHlPYmplY3QgKiB0cmFmbywgaW50IHRlc3RfeCwgaW50IHRlc3RfeSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBjbG9zZWQpOwppbnQgU0tDdXJ2ZV9UcmFuc2Zvcm0oU0tDdXJ2
ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogdHJhZm8pOwoKCgoKUHlPYmplY3QgKiBfU0tDdXJ2
ZV9OdW1BbGxvY2F0ZWQoUHlPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwppbnQgX1NL
Q3VydmVfSW5pdEN1cnZlT2JqZWN0KHZvaWQpOwoKCgoKCgojIDMyICIuL2N1cnZlb2JqZWN0LmMi
IDIKCiMgMjIgImN1cnZlZHJhdy5oIiAxClB5T2JqZWN0ICogU0tDdXJ2ZV9QeURyYXdUcmFuc2Zv
cm1lZChTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKTsKClB5T2JqZWN0ICog
U0tDdXJ2ZV9QeURyYXdNdWx0aXBhdGgoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7
CgpQeU9iamVjdCAqIFNLQ3VydmVfUHlNdWx0aXBhdGhSZWdpb24oUHlPYmplY3QqIHNlbGYsIFB5
T2JqZWN0ICogYXJncyk7CgoKCiMgMzMgIi4vY3VydmVvYmplY3QuYyIgMgoKIyA1ICJjdXJ2ZWxv
dy5oIiAxCiMgNTIgIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAxIDMKIyA2NyAiL3Vzci9pbmNs
dWRlL1gxMS9YLmgiIDEgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWElEOwoKCgp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgTWFzazsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEF0b207Cgp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgVmlzdWFsSUQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBUaW1lOwojIDk3
ICIvdXNyL2luY2x1ZGUvWDExL1guaCIgMwp0eXBlZGVmIFhJRCBXaW5kb3c7CnR5cGVkZWYgWElE
IERyYXdhYmxlOwoKCnR5cGVkZWYgWElEIEZvbnQ7Cgp0eXBlZGVmIFhJRCBQaXhtYXA7CnR5cGVk
ZWYgWElEIEN1cnNvcjsKdHlwZWRlZiBYSUQgQ29sb3JtYXA7CnR5cGVkZWYgWElEIEdDb250ZXh0
Owp0eXBlZGVmIFhJRCBLZXlTeW07Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgS2V5Q29kZTsKCgoK
CgojIDUyICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMiAzCgoKCgojIDY5ICIvdXNyL2luY2x1
ZGUvWDExL1hsaWIuaCIgMwojIDg2ICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMwp0eXBlZGVm
IGNoYXIgKlhQb2ludGVyOwoKIyAxNTggIi91c3IvaW5jbHVkZS9YMTEvWGxpYi5oIiAzCnR5cGVk
ZWYgc3RydWN0IF9YRXh0RGF0YSB7CiAgICAgICAgaW50IG51bWJlcjsKICAgICAgICBzdHJ1Y3Qg
X1hFeHREYXRhICpuZXh0OwogICAgICAgIGludCAoKmZyZWVfcHJpdmF0ZSkoCgogICAgICAgIHN0
cnVjdCBfWEV4dERhdGEgKmV4dGVuc2lvbgoKICAgICAgICApOwogICAgICAgIFhQb2ludGVyIHBy
aXZhdGVfZGF0YTsKfSBYRXh0RGF0YTsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQg
ZXh0ZW5zaW9uOwogICAgICAgIGludCBtYWpvcl9vcGNvZGU7CiAgICAgICAgaW50IGZpcnN0X2V2
ZW50OwogICAgICAgIGludCBmaXJzdF9lcnJvcjsKfSBYRXh0Q29kZXM7CgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgaW50IGRlcHRoOwogICAgaW50IGJpdHNfcGVyX3BpeGVsOwogICAgaW50IHNj
YW5saW5lX3BhZDsKfSBYUGl4bWFwRm9ybWF0VmFsdWVzOwoKCgoKCnR5cGVkZWYgc3RydWN0IHsK
ICAgICAgICBpbnQgZnVuY3Rpb247CiAgICAgICAgdW5zaWduZWQgbG9uZyBwbGFuZV9tYXNrOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZm9yZWdyb3VuZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJh
Y2tncm91bmQ7CiAgICAgICAgaW50IGxpbmVfd2lkdGg7CiAgICAgICAgaW50IGxpbmVfc3R5bGU7
CiAgICAgICAgaW50IGNhcF9zdHlsZTsKCiAgICAgICAgaW50IGpvaW5fc3R5bGU7CiAgICAgICAg
aW50IGZpbGxfc3R5bGU7CgogICAgICAgIGludCBmaWxsX3J1bGU7CiAgICAgICAgaW50IGFyY19t
b2RlOwogICAgICAgIFBpeG1hcCB0aWxlOwogICAgICAgIFBpeG1hcCBzdGlwcGxlOwogICAgICAg
IGludCB0c194X29yaWdpbjsKICAgICAgICBpbnQgdHNfeV9vcmlnaW47CiAgICAgICAgRm9udCBm
b250OwogICAgICAgIGludCBzdWJ3aW5kb3dfbW9kZTsKICAgICAgICBpbnQgZ3JhcGhpY3NfZXhw
b3N1cmVzOwogICAgICAgIGludCBjbGlwX3hfb3JpZ2luOwogICAgICAgIGludCBjbGlwX3lfb3Jp
Z2luOwogICAgICAgIFBpeG1hcCBjbGlwX21hc2s7CiAgICAgICAgaW50IGRhc2hfb2Zmc2V0Owog
ICAgICAgIGNoYXIgZGFzaGVzOwp9IFhHQ1ZhbHVlczsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX1hH
QwoKCgoKCgoKKkdDOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFhFeHREYXRhICpleHRf
ZGF0YTsKICAgICAgICBWaXN1YWxJRCB2aXN1YWxpZDsKCgoKICAgICAgICBpbnQgY2xhc3M7Cgog
ICAgICAgIHVuc2lnbmVkIGxvbmcgcmVkX21hc2ssIGdyZWVuX21hc2ssIGJsdWVfbWFzazsKICAg
ICAgICBpbnQgYml0c19wZXJfcmdiOwogICAgICAgIGludCBtYXBfZW50cmllczsKfSBWaXN1YWw7
CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGRlcHRoOwogICAgICAgIGludCBudmlz
dWFsczsKICAgICAgICBWaXN1YWwgKnZpc3VhbHM7Cn0gRGVwdGg7CgoKCgoKCgpzdHJ1Y3QgX1hE
aXNwbGF5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFhFeHREYXRhICpleHRfZGF0YTsKICAg
ICAgICBzdHJ1Y3QgX1hEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyByb290OwogICAg
ICAgIGludCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBtd2lkdGgsIG1oZWlnaHQ7CiAgICAg
ICAgaW50IG5kZXB0aHM7CiAgICAgICAgRGVwdGggKmRlcHRoczsKICAgICAgICBpbnQgcm9vdF9k
ZXB0aDsKICAgICAgICBWaXN1YWwgKnJvb3RfdmlzdWFsOwogICAgICAgIEdDIGRlZmF1bHRfZ2M7
CiAgICAgICAgQ29sb3JtYXAgY21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHdoaXRlX3BpeGVs
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYmxhY2tfcGl4ZWw7CiAgICAgICAgaW50IG1heF9tYXBz
LCBtaW5fbWFwczsKICAgICAgICBpbnQgYmFja2luZ19zdG9yZTsKICAgICAgICBpbnQgc2F2ZV91
bmRlcnM7CiAgICAgICAgbG9uZyByb290X2lucHV0X21hc2s7Cn0gU2NyZWVuOwoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIFhFeHREYXRhICpleHRfZGF0YTsKICAgICAgICBpbnQgZGVwdGg7
CiAgICAgICAgaW50IGJpdHNfcGVyX3BpeGVsOwogICAgICAgIGludCBzY2FubGluZV9wYWQ7Cn0g
U2NyZWVuRm9ybWF0OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgUGl4bWFwIGJhY2tncm91bmRf
cGl4bWFwOwogICAgdW5zaWduZWQgbG9uZyBiYWNrZ3JvdW5kX3BpeGVsOwogICAgUGl4bWFwIGJv
cmRlcl9waXhtYXA7CiAgICB1bnNpZ25lZCBsb25nIGJvcmRlcl9waXhlbDsKICAgIGludCBiaXRf
Z3Jhdml0eTsKICAgIGludCB3aW5fZ3Jhdml0eTsKICAgIGludCBiYWNraW5nX3N0b3JlOwogICAg
dW5zaWduZWQgbG9uZyBiYWNraW5nX3BsYW5lczsKICAgIHVuc2lnbmVkIGxvbmcgYmFja2luZ19w
aXhlbDsKICAgIGludCBzYXZlX3VuZGVyOwogICAgbG9uZyBldmVudF9tYXNrOwogICAgbG9uZyBk
b19ub3RfcHJvcGFnYXRlX21hc2s7CiAgICBpbnQgb3ZlcnJpZGVfcmVkaXJlY3Q7CiAgICBDb2xv
cm1hcCBjb2xvcm1hcDsKICAgIEN1cnNvciBjdXJzb3I7Cn0gWFNldFdpbmRvd0F0dHJpYnV0ZXM7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgeCwgeTsKICAgIGludCB3aWR0aCwgaGVpZ2h0Owog
ICAgaW50IGJvcmRlcl93aWR0aDsKICAgIGludCBkZXB0aDsKICAgIFZpc3VhbCAqdmlzdWFsOwog
ICAgV2luZG93IHJvb3Q7CgoKCiAgICBpbnQgY2xhc3M7CgogICAgaW50IGJpdF9ncmF2aXR5Owog
ICAgaW50IHdpbl9ncmF2aXR5OwogICAgaW50IGJhY2tpbmdfc3RvcmU7CiAgICB1bnNpZ25lZCBs
b25nIGJhY2tpbmdfcGxhbmVzOwogICAgdW5zaWduZWQgbG9uZyBiYWNraW5nX3BpeGVsOwogICAg
aW50IHNhdmVfdW5kZXI7CiAgICBDb2xvcm1hcCBjb2xvcm1hcDsKICAgIGludCBtYXBfaW5zdGFs
bGVkOwogICAgaW50IG1hcF9zdGF0ZTsKICAgIGxvbmcgYWxsX2V2ZW50X21hc2tzOwogICAgbG9u
ZyB5b3VyX2V2ZW50X21hc2s7CiAgICBsb25nIGRvX25vdF9wcm9wYWdhdGVfbWFzazsKICAgIGlu
dCBvdmVycmlkZV9yZWRpcmVjdDsKICAgIFNjcmVlbiAqc2NyZWVuOwp9IFhXaW5kb3dBdHRyaWJ1
dGVzOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBp
bnQgbGVuZ3RoOwogICAgICAgIGNoYXIgKmFkZHJlc3M7Cn0gWEhvc3RBZGRyZXNzOwoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgX1hJbWFnZSB7CiAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgIGludCB4b2Zm
c2V0OwogICAgaW50IGZvcm1hdDsKICAgIGNoYXIgKmRhdGE7CiAgICBpbnQgYnl0ZV9vcmRlcjsK
ICAgIGludCBiaXRtYXBfdW5pdDsKICAgIGludCBiaXRtYXBfYml0X29yZGVyOwogICAgaW50IGJp
dG1hcF9wYWQ7CiAgICBpbnQgZGVwdGg7CiAgICBpbnQgYnl0ZXNfcGVyX2xpbmU7CiAgICBpbnQg
Yml0c19wZXJfcGl4ZWw7CiAgICB1bnNpZ25lZCBsb25nIHJlZF9tYXNrOwogICAgdW5zaWduZWQg
bG9uZyBncmVlbl9tYXNrOwogICAgdW5zaWduZWQgbG9uZyBibHVlX21hc2s7CiAgICBYUG9pbnRl
ciBvYmRhdGE7CiAgICBzdHJ1Y3QgZnVuY3MgewoKICAgICAgICBzdHJ1Y3QgX1hJbWFnZSAqKCpj
cmVhdGVfaW1hZ2UpKAogICAgICAgICAgICAgICAgc3RydWN0IF9YRGlzcGxheSogLAogICAgICAg
ICAgICAgICAgVmlzdWFsKiAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAogICAgICAg
ICAgICAgICAgaW50ICwKICAgICAgICAgICAgICAgIGludCAsCiAgICAgICAgICAgICAgICBjaGFy
KiAsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgLAogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50ICwKICAgICAgICAgICAgICAgIGludCAsCiAgICAgICAgICAgICAgICBpbnQgKTsKICAg
ICAgICBpbnQgKCpkZXN0cm95X2ltYWdlKSAoc3RydWN0IF9YSW1hZ2UgKik7CiAgICAgICAgdW5z
aWduZWQgbG9uZyAoKmdldF9waXhlbCkgKHN0cnVjdCBfWEltYWdlICosIGludCwgaW50KTsKICAg
ICAgICBpbnQgKCpwdXRfcGl4ZWwpIChzdHJ1Y3QgX1hJbWFnZSAqLCBpbnQsIGludCwgdW5zaWdu
ZWQgbG9uZyk7CiAgICAgICAgc3RydWN0IF9YSW1hZ2UgKigqc3ViX2ltYWdlKShzdHJ1Y3QgX1hJ
bWFnZSAqLCBpbnQsIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOwogICAgICAgIGlu
dCAoKmFkZF9waXhlbCkgKHN0cnVjdCBfWEltYWdlICosIGxvbmcpOwojIDQwNCAiL3Vzci9pbmNs
dWRlL1gxMS9YbGliLmgiIDMKICAgICAgICB9IGY7Cn0gWEltYWdlOwoKCgoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgaW50IHgsIHk7CiAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgIGludCBib3JkZXJf
d2lkdGg7CiAgICBXaW5kb3cgc2libGluZzsKICAgIGludCBzdGFja19tb2RlOwp9IFhXaW5kb3dD
aGFuZ2VzOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgcGl4ZWw7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcmVkLCBncmVlbiwgYmx1ZTsKICAgICAgICBjaGFyIGZs
YWdzOwogICAgICAgIGNoYXIgcGFkOwp9IFhDb2xvcjsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgc2hvcnQgeDEsIHkxLCB4MiwgeTI7Cn0gWFNlZ21lbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICBzaG9ydCB4LCB5Owp9IFhQb2ludDsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHNob3J0IHgsIHk7
CiAgICB1bnNpZ25lZCBzaG9ydCB3aWR0aCwgaGVpZ2h0Owp9IFhSZWN0YW5nbGU7Cgp0eXBlZGVm
IHN0cnVjdCB7CiAgICBzaG9ydCB4LCB5OwogICAgdW5zaWduZWQgc2hvcnQgd2lkdGgsIGhlaWdo
dDsKICAgIHNob3J0IGFuZ2xlMSwgYW5nbGUyOwp9IFhBcmM7CgoKCgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgaW50IGtleV9jbGlja19wZXJjZW50OwogICAgICAgIGludCBiZWxsX3BlcmNlbnQ7
CiAgICAgICAgaW50IGJlbGxfcGl0Y2g7CiAgICAgICAgaW50IGJlbGxfZHVyYXRpb247CiAgICAg
ICAgaW50IGxlZDsKICAgICAgICBpbnQgbGVkX21vZGU7CiAgICAgICAgaW50IGtleTsKICAgICAg
ICBpbnQgYXV0b19yZXBlYXRfbW9kZTsKfSBYS2V5Ym9hcmRDb250cm9sOwoKCgp0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgaW50IGtleV9jbGlja19wZXJjZW50OwogICAgICAgIGludCBiZWxsX3Bl
cmNlbnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGJlbGxfcGl0Y2gsIGJlbGxfZHVyYXRpb247CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBsZWRfbWFzazsKICAgICAgICBpbnQgZ2xvYmFsX2F1dG9fcmVw
ZWF0OwogICAgICAgIGNoYXIgYXV0b19yZXBlYXRzWzMyXTsKfSBYS2V5Ym9hcmRTdGF0ZTsKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIFRpbWUgdGltZTsKICAgICAgICBzaG9ydCB4LCB5Owp9
IFhUaW1lQ29vcmQ7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgbWF4X2tleXBlcm1v
ZDsKICAgICAgICBLZXlDb2RlICptb2RpZmllcm1hcDsKfSBYTW9kaWZpZXJLZXltYXA7CgoKCgoK
CgoKdHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CgoKc3RydWN0IF9YUHJpdmF0ZTsK
c3RydWN0IF9Ycm1IYXNoQnVja2V0UmVjOwoKdHlwZWRlZiBzdHJ1Y3QKCgoKewogICAgICAgIFhF
eHREYXRhICpleHRfZGF0YTsKICAgICAgICBzdHJ1Y3QgX1hQcml2YXRlICpwcml2YXRlMTsKICAg
ICAgICBpbnQgZmQ7CiAgICAgICAgaW50IHByaXZhdGUyOwogICAgICAgIGludCBwcm90b19tYWpv
cl92ZXJzaW9uOwogICAgICAgIGludCBwcm90b19taW5vcl92ZXJzaW9uOwogICAgICAgIGNoYXIg
KnZlbmRvcjsKICAgICAgICBYSUQgcHJpdmF0ZTM7CiAgICAgICAgWElEIHByaXZhdGU0OwogICAg
ICAgIFhJRCBwcml2YXRlNTsKICAgICAgICBpbnQgcHJpdmF0ZTY7CiAgICAgICAgWElEICgqcmVz
b3VyY2VfYWxsb2MpKAoKICAgICAgICAgICAgICAgIHN0cnVjdCBfWERpc3BsYXkqCgogICAgICAg
ICk7CiAgICAgICAgaW50IGJ5dGVfb3JkZXI7CiAgICAgICAgaW50IGJpdG1hcF91bml0OwogICAg
ICAgIGludCBiaXRtYXBfcGFkOwogICAgICAgIGludCBiaXRtYXBfYml0X29yZGVyOwogICAgICAg
IGludCBuZm9ybWF0czsKICAgICAgICBTY3JlZW5Gb3JtYXQgKnBpeG1hcF9mb3JtYXQ7CiAgICAg
ICAgaW50IHByaXZhdGU4OwogICAgICAgIGludCByZWxlYXNlOwogICAgICAgIHN0cnVjdCBfWFBy
aXZhdGUgKnByaXZhdGU5LCAqcHJpdmF0ZTEwOwogICAgICAgIGludCBxbGVuOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgbGFzdF9yZXF1ZXN0X3JlYWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyByZXF1
ZXN0OwogICAgICAgIFhQb2ludGVyIHByaXZhdGUxMTsKICAgICAgICBYUG9pbnRlciBwcml2YXRl
MTI7CiAgICAgICAgWFBvaW50ZXIgcHJpdmF0ZTEzOwogICAgICAgIFhQb2ludGVyIHByaXZhdGUx
NDsKICAgICAgICB1bnNpZ25lZCBtYXhfcmVxdWVzdF9zaXplOwogICAgICAgIHN0cnVjdCBfWHJt
SGFzaEJ1Y2tldFJlYyAqZGI7CiAgICAgICAgaW50ICgqcHJpdmF0ZTE1KSgKCiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgX1hEaXNwbGF5KgoKICAgICAgICAgICAgICAgICk7CiAgICAgICAgY2hhciAq
ZGlzcGxheV9uYW1lOwogICAgICAgIGludCBkZWZhdWx0X3NjcmVlbjsKICAgICAgICBpbnQgbnNj
cmVlbnM7CiAgICAgICAgU2NyZWVuICpzY3JlZW5zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW90
aW9uX2J1ZmZlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIHByaXZhdGUxNjsKICAgICAgICBpbnQg
bWluX2tleWNvZGU7CiAgICAgICAgaW50IG1heF9rZXljb2RlOwogICAgICAgIFhQb2ludGVyIHBy
aXZhdGUxNzsKICAgICAgICBYUG9pbnRlciBwcml2YXRlMTg7CiAgICAgICAgaW50IHByaXZhdGUx
OTsKICAgICAgICBjaGFyICp4ZGVmYXVsdHM7Cgp9CgoKCipfWFByaXZEaXNwbGF5OwoKCgoKCgoK
CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5
OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgV2luZG93IHJvb3Q7CiAgICAgICAgV2lu
ZG93IHN1YndpbmRvdzsKICAgICAgICBUaW1lIHRpbWU7CiAgICAgICAgaW50IHgsIHk7CiAgICAg
ICAgaW50IHhfcm9vdCwgeV9yb290OwogICAgICAgIHVuc2lnbmVkIGludCBzdGF0ZTsKICAgICAg
ICB1bnNpZ25lZCBpbnQga2V5Y29kZTsKICAgICAgICBpbnQgc2FtZV9zY3JlZW47Cn0gWEtleUV2
ZW50Owp0eXBlZGVmIFhLZXlFdmVudCBYS2V5UHJlc3NlZEV2ZW50Owp0eXBlZGVmIFhLZXlFdmVu
dCBYS2V5UmVsZWFzZWRFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAg
ICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgV2lu
ZG93IHJvb3Q7CiAgICAgICAgV2luZG93IHN1YndpbmRvdzsKICAgICAgICBUaW1lIHRpbWU7CiAg
ICAgICAgaW50IHgsIHk7CiAgICAgICAgaW50IHhfcm9vdCwgeV9yb290OwogICAgICAgIHVuc2ln
bmVkIGludCBzdGF0ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYnV0dG9uOwogICAgICAgIGludCBz
YW1lX3NjcmVlbjsKfSBYQnV0dG9uRXZlbnQ7CnR5cGVkZWYgWEJ1dHRvbkV2ZW50IFhCdXR0b25Q
cmVzc2VkRXZlbnQ7CnR5cGVkZWYgWEJ1dHRvbkV2ZW50IFhCdXR0b25SZWxlYXNlZEV2ZW50OwoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
c2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7
CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBXaW5kb3cgcm9vdDsKICAgICAgICBXaW5k
b3cgc3Vid2luZG93OwogICAgICAgIFRpbWUgdGltZTsKICAgICAgICBpbnQgeCwgeTsKICAgICAg
ICBpbnQgeF9yb290LCB5X3Jvb3Q7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOwogICAgICAg
IGNoYXIgaXNfaGludDsKICAgICAgICBpbnQgc2FtZV9zY3JlZW47Cn0gWE1vdGlvbkV2ZW50Owp0
eXBlZGVmIFhNb3Rpb25FdmVudCBYUG9pbnRlck1vdmVkRXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAg
aW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cg
d2luZG93OwogICAgICAgIFdpbmRvdyByb290OwogICAgICAgIFdpbmRvdyBzdWJ3aW5kb3c7CiAg
ICAgICAgVGltZSB0aW1lOwogICAgICAgIGludCB4LCB5OwogICAgICAgIGludCB4X3Jvb3QsIHlf
cm9vdDsKICAgICAgICBpbnQgbW9kZTsKICAgICAgICBpbnQgZGV0YWlsOwoKCgoKICAgICAgICBp
bnQgc2FtZV9zY3JlZW47CiAgICAgICAgaW50IGZvY3VzOwogICAgICAgIHVuc2lnbmVkIGludCBz
dGF0ZTsKfSBYQ3Jvc3NpbmdFdmVudDsKdHlwZWRlZiBYQ3Jvc3NpbmdFdmVudCBYRW50ZXJXaW5k
b3dFdmVudDsKdHlwZWRlZiBYQ3Jvc3NpbmdFdmVudCBYTGVhdmVXaW5kb3dFdmVudDsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlh
bDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAg
ICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IG1vZGU7CiAgICAgICAgaW50IGRldGFpbDsK
CgoKCgp9IFhGb2N1c0NoYW5nZUV2ZW50Owp0eXBlZGVmIFhGb2N1c0NoYW5nZUV2ZW50IFhGb2N1
c0luRXZlbnQ7CnR5cGVkZWYgWEZvY3VzQ2hhbmdlRXZlbnQgWEZvY3VzT3V0RXZlbnQ7CgoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg
ICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBjaGFyIGtleV92ZWN0b3JbMzJdOwp9IFhLZXlt
YXBFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5
ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHgsIHk7CiAgICAg
ICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgaW50IGNvdW50Owp9IFhFeHBvc2VFdmVudDsK
CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5
OwogICAgICAgIERyYXdhYmxlIGRyYXdhYmxlOwogICAgICAgIGludCB4LCB5OwogICAgICAgIGlu
dCB3aWR0aCwgaGVpZ2h0OwogICAgICAgIGludCBjb3VudDsKICAgICAgICBpbnQgbWFqb3JfY29k
ZTsKICAgICAgICBpbnQgbWlub3JfY29kZTsKfSBYR3JhcGhpY3NFeHBvc2VFdmVudDsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlh
bDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAg
ICAgIERyYXdhYmxlIGRyYXdhYmxlOwogICAgICAgIGludCBtYWpvcl9jb2RlOwogICAgICAgIGlu
dCBtaW5vcl9jb2RlOwp9IFhOb0V4cG9zZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg
IGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5k
X2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsK
ICAgICAgICBpbnQgc3RhdGU7Cn0gWFZpc2liaWxpdHlFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsK
ICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBp
bnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBw
YXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBp
bnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9yZGVyX3dpZHRoOwogICAgICAgIGludCBv
dmVycmlkZV9yZWRpcmVjdDsKfSBYQ3JlYXRlV2luZG93RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAg
aW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cg
ZXZlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBYRGVzdHJveVdpbmRvd0V2ZW50OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vy
aWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAg
ICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IGZy
b21fY29uZmlndXJlOwp9IFhVbm1hcEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGlu
dCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2
ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAg
ICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IG92ZXJyaWRlX3JlZGlyZWN0Owp9IFhNYXBF
dmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpk
aXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBY
TWFwUmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAg
IERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3
aW5kb3c7CiAgICAgICAgV2luZG93IHBhcmVudDsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBp
bnQgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWFJlcGFyZW50RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAg
aW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cg
ZXZlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgeCwgeTsKICAgICAgICBp
bnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9yZGVyX3dpZHRoOwogICAgICAgIFdpbmRv
dyBhYm92ZTsKICAgICAgICBpbnQgb3ZlcnJpZGVfcmVkaXJlY3Q7Cn0gWENvbmZpZ3VyZUV2ZW50
OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3Bs
YXk7CiAgICAgICAgV2luZG93IGV2ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAg
aW50IHgsIHk7Cn0gWEdyYXZpdHlFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQg
dHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVu
dDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAg
ICAgaW50IHdpZHRoLCBoZWlnaHQ7Cn0gWFJlc2l6ZVJlcXVlc3RFdmVudDsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg
ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp
bmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgeCwgeTsKICAg
ICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICAgICBpbnQgYm9yZGVyX3dpZHRoOwogICAgICAg
IFdpbmRvdyBhYm92ZTsKICAgICAgICBpbnQgZGV0YWlsOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
dmFsdWVfbWFzazsKfSBYQ29uZmlndXJlUmVxdWVzdEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGlu
dCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IGV2
ZW50OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgaW50IHBsYWNlOwp9IFhDaXJjdWxh
dGVFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5
ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBwYXJlbnQ7CiAgICAgICAgV2luZG93IHdpbmRvdzsK
ICAgICAgICBpbnQgcGxhY2U7Cn0gWENpcmN1bGF0ZVJlcXVlc3RFdmVudDsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAg
ICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdp
bmRvdyB3aW5kb3c7CiAgICAgICAgQXRvbSBhdG9tOwogICAgICAgIFRpbWUgdGltZTsKICAgICAg
ICBpbnQgc3RhdGU7Cn0gWFByb3BlcnR5RXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAg
aW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRf
ZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxheTsKICAgICAgICBXaW5kb3cgd2luZG93Owog
ICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAgIFRpbWUgdGltZTsKfSBYU2VsZWN0aW9uQ2xl
YXJFdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAgICAgICBEaXNwbGF5
ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyBvd25lcjsKICAgICAgICBXaW5kb3cgcmVxdWVzdG9y
OwogICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAgICAgIEF0b20gdGFyZ2V0OwogICAgICAgIEF0
b20gcHJvcGVydHk7CiAgICAgICAgVGltZSB0aW1lOwp9IFhTZWxlY3Rpb25SZXF1ZXN0RXZlbnQ7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzZXJpYWw7CiAgICAgICAgaW50IHNlbmRfZXZlbnQ7CiAgICAgICAgRGlzcGxheSAqZGlzcGxh
eTsKICAgICAgICBXaW5kb3cgcmVxdWVzdG9yOwogICAgICAgIEF0b20gc2VsZWN0aW9uOwogICAg
ICAgIEF0b20gdGFyZ2V0OwogICAgICAgIEF0b20gcHJvcGVydHk7CiAgICAgICAgVGltZSB0aW1l
Owp9IFhTZWxlY3Rpb25FdmVudDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgdHlwZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKICAgICAgICBpbnQgc2VuZF9ldmVudDsKICAg
ICAgICBEaXNwbGF5ICpkaXNwbGF5OwogICAgICAgIFdpbmRvdyB3aW5kb3c7CiAgICAgICAgQ29s
b3JtYXAgY29sb3JtYXA7CgoKCiAgICAgICAgaW50IG5ldzsKCiAgICAgICAgaW50IHN0YXRlOwp9
IFhDb2xvcm1hcEV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAg
IERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBBdG9tIG1l
c3NhZ2VfdHlwZTsKICAgICAgICBpbnQgZm9ybWF0OwogICAgICAgIHVuaW9uIHsKICAgICAgICAg
ICAgICAgIGNoYXIgYlsyMF07CiAgICAgICAgICAgICAgICBzaG9ydCBzWzEwXTsKICAgICAgICAg
ICAgICAgIGxvbmcgbFs1XTsKICAgICAgICAgICAgICAgIH0gZGF0YTsKfSBYQ2xpZW50TWVzc2Fn
ZUV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3BsYXkg
KmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKICAgICAgICBpbnQgcmVxdWVzdDsKCiAg
ICAgICAgaW50IGZpcnN0X2tleWNvZGU7CiAgICAgICAgaW50IGNvdW50Owp9IFhNYXBwaW5nRXZl
bnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgRGlzcGxheSAq
ZGlzcGxheTsKICAgICAgICBYSUQgcmVzb3VyY2VpZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNl
cmlhbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGVycm9yX2NvZGU7CiAgICAgICAgdW5zaWduZWQg
Y2hhciByZXF1ZXN0X2NvZGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBtaW5vcl9jb2RlOwp9IFhF
cnJvckV2ZW50OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBlOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc2VyaWFsOwogICAgICAgIGludCBzZW5kX2V2ZW50OwogICAgICAgIERpc3Bs
YXkgKmRpc3BsYXk7CiAgICAgICAgV2luZG93IHdpbmRvdzsKfSBYQW55RXZlbnQ7CgoKCgoKdHlw
ZWRlZiB1bmlvbiBfWEV2ZW50IHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICBYQW55RXZlbnQg
eGFueTsKICAgICAgICBYS2V5RXZlbnQgeGtleTsKICAgICAgICBYQnV0dG9uRXZlbnQgeGJ1dHRv
bjsKICAgICAgICBYTW90aW9uRXZlbnQgeG1vdGlvbjsKICAgICAgICBYQ3Jvc3NpbmdFdmVudCB4
Y3Jvc3Npbmc7CiAgICAgICAgWEZvY3VzQ2hhbmdlRXZlbnQgeGZvY3VzOwogICAgICAgIFhFeHBv
c2VFdmVudCB4ZXhwb3NlOwogICAgICAgIFhHcmFwaGljc0V4cG9zZUV2ZW50IHhncmFwaGljc2V4
cG9zZTsKICAgICAgICBYTm9FeHBvc2VFdmVudCB4bm9leHBvc2U7CiAgICAgICAgWFZpc2liaWxp
dHlFdmVudCB4dmlzaWJpbGl0eTsKICAgICAgICBYQ3JlYXRlV2luZG93RXZlbnQgeGNyZWF0ZXdp
bmRvdzsKICAgICAgICBYRGVzdHJveVdpbmRvd0V2ZW50IHhkZXN0cm95d2luZG93OwogICAgICAg
IFhVbm1hcEV2ZW50IHh1bm1hcDsKICAgICAgICBYTWFwRXZlbnQgeG1hcDsKICAgICAgICBYTWFw
UmVxdWVzdEV2ZW50IHhtYXByZXF1ZXN0OwogICAgICAgIFhSZXBhcmVudEV2ZW50IHhyZXBhcmVu
dDsKICAgICAgICBYQ29uZmlndXJlRXZlbnQgeGNvbmZpZ3VyZTsKICAgICAgICBYR3Jhdml0eUV2
ZW50IHhncmF2aXR5OwogICAgICAgIFhSZXNpemVSZXF1ZXN0RXZlbnQgeHJlc2l6ZXJlcXVlc3Q7
CiAgICAgICAgWENvbmZpZ3VyZVJlcXVlc3RFdmVudCB4Y29uZmlndXJlcmVxdWVzdDsKICAgICAg
ICBYQ2lyY3VsYXRlRXZlbnQgeGNpcmN1bGF0ZTsKICAgICAgICBYQ2lyY3VsYXRlUmVxdWVzdEV2
ZW50IHhjaXJjdWxhdGVyZXF1ZXN0OwogICAgICAgIFhQcm9wZXJ0eUV2ZW50IHhwcm9wZXJ0eTsK
ICAgICAgICBYU2VsZWN0aW9uQ2xlYXJFdmVudCB4c2VsZWN0aW9uY2xlYXI7CiAgICAgICAgWFNl
bGVjdGlvblJlcXVlc3RFdmVudCB4c2VsZWN0aW9ucmVxdWVzdDsKICAgICAgICBYU2VsZWN0aW9u
RXZlbnQgeHNlbGVjdGlvbjsKICAgICAgICBYQ29sb3JtYXBFdmVudCB4Y29sb3JtYXA7CiAgICAg
ICAgWENsaWVudE1lc3NhZ2VFdmVudCB4Y2xpZW50OwogICAgICAgIFhNYXBwaW5nRXZlbnQgeG1h
cHBpbmc7CiAgICAgICAgWEVycm9yRXZlbnQgeGVycm9yOwogICAgICAgIFhLZXltYXBFdmVudCB4
a2V5bWFwOwogICAgICAgIGxvbmcgcGFkWzI0XTsKfSBYRXZlbnQ7CgoKCgoKCgp0eXBlZGVmIHN0
cnVjdCB7CiAgICBzaG9ydCBsYmVhcmluZzsKICAgIHNob3J0IHJiZWFyaW5nOwogICAgc2hvcnQg
d2lkdGg7CiAgICBzaG9ydCBhc2NlbnQ7CiAgICBzaG9ydCBkZXNjZW50OwogICAgdW5zaWduZWQg
c2hvcnQgYXR0cmlidXRlczsKfSBYQ2hhclN0cnVjdDsKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICBBdG9tIG5hbWU7CiAgICB1bnNpZ25lZCBsb25nIGNhcmQzMjsKfSBYRm9udFByb3A7Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBYRXh0RGF0YSAqZXh0X2RhdGE7CiAgICBGb250IGZpZDsKICAgIHVu
c2lnbmVkIGRpcmVjdGlvbjsKICAgIHVuc2lnbmVkIG1pbl9jaGFyX29yX2J5dGUyOwogICAgdW5z
aWduZWQgbWF4X2NoYXJfb3JfYnl0ZTI7CiAgICB1bnNpZ25lZCBtaW5fYnl0ZTE7CiAgICB1bnNp
Z25lZCBtYXhfYnl0ZTE7CiAgICBpbnQgYWxsX2NoYXJzX2V4aXN0OwogICAgdW5zaWduZWQgZGVm
YXVsdF9jaGFyOwogICAgaW50IG5fcHJvcGVydGllczsKICAgIFhGb250UHJvcCAqcHJvcGVydGll
czsKICAgIFhDaGFyU3RydWN0IG1pbl9ib3VuZHM7CiAgICBYQ2hhclN0cnVjdCBtYXhfYm91bmRz
OwogICAgWENoYXJTdHJ1Y3QgKnBlcl9jaGFyOwogICAgaW50IGFzY2VudDsKICAgIGludCBkZXNj
ZW50Owp9IFhGb250U3RydWN0OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgY2hhciAqY2hhcnM7
CiAgICBpbnQgbmNoYXJzOwogICAgaW50IGRlbHRhOwogICAgRm9udCBmb250Owp9IFhUZXh0SXRl
bTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2lnbmVkIGNoYXIgYnl0ZTE7CiAgICB1bnNpZ25l
ZCBjaGFyIGJ5dGUyOwp9IFhDaGFyMmI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYQ2hhcjJiICpj
aGFyczsKICAgIGludCBuY2hhcnM7CiAgICBpbnQgZGVsdGE7CiAgICBGb250IGZvbnQ7Cn0gWFRl
eHRJdGVtMTY7CgoKdHlwZWRlZiB1bmlvbiB7IERpc3BsYXkgKmRpc3BsYXk7CiAgICAgICAgICAg
ICAgICBHQyBnYzsKICAgICAgICAgICAgICAgIFZpc3VhbCAqdmlzdWFsOwogICAgICAgICAgICAg
ICAgU2NyZWVuICpzY3JlZW47CiAgICAgICAgICAgICAgICBTY3JlZW5Gb3JtYXQgKnBpeG1hcF9m
b3JtYXQ7CiAgICAgICAgICAgICAgICBYRm9udFN0cnVjdCAqZm9udDsgfSBYRURhdGFPYmplY3Q7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBYUmVjdGFuZ2xlIG1heF9pbmtfZXh0ZW50OwogICAgWFJl
Y3RhbmdsZSBtYXhfbG9naWNhbF9leHRlbnQ7Cn0gWEZvbnRTZXRFeHRlbnRzOwoKCgoKCnR5cGVk
ZWYgc3RydWN0IF9YT00gKlhPTTsKdHlwZWRlZiBzdHJ1Y3QgX1hPQyAqWE9DLCAqWEZvbnRTZXQ7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBjaGFyICpjaGFyczsKICAgIGludCBuY2hhcnM7CiAgICBp
bnQgZGVsdGE7CiAgICBYRm9udFNldCBmb250X3NldDsKfSBYbWJUZXh0SXRlbTsKCnR5cGVkZWYg
c3RydWN0IHsKICAgIHdjaGFyX3QgKmNoYXJzOwogICAgaW50IG5jaGFyczsKICAgIGludCBkZWx0
YTsKICAgIFhGb250U2V0IGZvbnRfc2V0Owp9IFh3Y1RleHRJdGVtOwoKIyAxMTA4ICIvdXNyL2lu
Y2x1ZGUvWDExL1hsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgY2hhcnNldF9jb3Vu
dDsKICAgIGNoYXIgKipjaGFyc2V0X2xpc3Q7Cn0gWE9NQ2hhclNldExpc3Q7Cgp0eXBlZGVmIGVu
dW0gewogICAgWE9NT3JpZW50YXRpb25fTFRSX1RUQiwKICAgIFhPTU9yaWVudGF0aW9uX1JUTF9U
VEIsCiAgICBYT01PcmllbnRhdGlvbl9UVEJfTFRSLAogICAgWE9NT3JpZW50YXRpb25fVFRCX1JU
TCwKICAgIFhPTU9yaWVudGF0aW9uX0NvbnRleHQKfSBYT3JpZW50YXRpb247Cgp0eXBlZGVmIHN0
cnVjdCB7CiAgICBpbnQgbnVtX29yaWVudGF0aW9uOwogICAgWE9yaWVudGF0aW9uICpvcmllbnRh
dGlvbjsKfSBYT01PcmllbnRhdGlvbjsKCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBudW1fZm9u
dDsKICAgIFhGb250U3RydWN0ICoqZm9udF9zdHJ1Y3RfbGlzdDsKICAgIGNoYXIgKipmb250X25h
bWVfbGlzdDsKfSBYT01Gb250SW5mbzsKCnR5cGVkZWYgc3RydWN0IF9YSU0gKlhJTTsKdHlwZWRl
ZiBzdHJ1Y3QgX1hJQyAqWElDOwoKdHlwZWRlZiB2b2lkICgqWElNUHJvYykoCgogICAgWElNLAog
ICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5cGVkZWYgaW50ICgqWElDUHJvYykoCgog
ICAgWElDLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5cGVkZWYgdm9pZCAoKlhJ
RFByb2MpKAoKICAgIERpc3BsYXkqLAogICAgWFBvaW50ZXIsCiAgICBYUG9pbnRlcgoKKTsKCnR5
cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1TdHlsZTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHVuc2ln
bmVkIHNob3J0IGNvdW50X3N0eWxlczsKICAgIFhJTVN0eWxlICpzdXBwb3J0ZWRfc3R5bGVzOwp9
IFhJTVN0eWxlczsKCiMgMTIyNyAiL3Vzci9pbmNsdWRlL1gxMS9YbGliLmgiIDMKdHlwZWRlZiB2
b2lkICpYVmFOZXN0ZWRMaXN0OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgWFBvaW50ZXIgY2xp
ZW50X2RhdGE7CiAgICBYSU1Qcm9jIGNhbGxiYWNrOwp9IFhJTUNhbGxiYWNrOwoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgWFBvaW50ZXIgY2xpZW50X2RhdGE7CiAgICBYSUNQcm9jIGNhbGxiYWNrOwp9
IFhJQ0NhbGxiYWNrOwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJTUZlZWRiYWNrOwoKIyAxMjU0
ICIvdXNyL2luY2x1ZGUvWDExL1hsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdCBfWElNVGV4dCB7CiAg
ICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiAgICBYSU1GZWVkYmFjayAqZmVlZGJhY2s7CiAgICBp
bnQgZW5jb2RpbmdfaXNfd2NoYXI7CiAgICB1bmlvbiB7CiAgICAgICAgY2hhciAqbXVsdGlfYnl0
ZTsKICAgICAgICB3Y2hhcl90ICp3aWRlX2NoYXI7CiAgICB9IHN0cmluZzsKfSBYSU1UZXh0OwoK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIFhJTVByZWVkaXRTdGF0ZTsKCgoKCgp0eXBlZGVmIHN0cnVj
dCBfWElNUHJlZWRpdFN0YXRlTm90aWZ5Q2FsbGJhY2tTdHJ1Y3QgewogICAgWElNUHJlZWRpdFN0
YXRlIHN0YXRlOwp9IFhJTVByZWVkaXRTdGF0ZU5vdGlmeUNhbGxiYWNrU3RydWN0OwoKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIFhJTVJlc2V0U3RhdGU7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
WElNU3RyaW5nQ29udmVyc2lvbkZlZWRiYWNrOwoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9YSU1T
dHJpbmdDb252ZXJzaW9uVGV4dCB7CiAgICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiAgICBYSU1T
dHJpbmdDb252ZXJzaW9uRmVlZGJhY2sgKmZlZWRiYWNrOwogICAgaW50IGVuY29kaW5nX2lzX3dj
aGFyOwogICAgdW5pb24gewogICAgICAgIGNoYXIgKm1iczsKICAgICAgICB3Y2hhcl90ICp3Y3M7
CiAgICB9IHN0cmluZzsKfSBYSU1TdHJpbmdDb252ZXJzaW9uVGV4dDsKCnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgWElNU3RyaW5nQ29udmVyc2lvblBvc2l0aW9uOwoKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBYSU1TdHJpbmdDb252ZXJzaW9uVHlwZTsKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBYSU1TdHJpbmdDb252ZXJzaW9uT3BlcmF0aW9uOwoKCgoKdHlwZWRlZiBlbnVtIHsKICAgIFhJ
TUZvcndhcmRDaGFyLCBYSU1CYWNrd2FyZENoYXIsCiAgICBYSU1Gb3J3YXJkV29yZCwgWElNQmFj
a3dhcmRXb3JkLAogICAgWElNQ2FyZXRVcCwgWElNQ2FyZXREb3duLAogICAgWElNTmV4dExpbmUs
IFhJTVByZXZpb3VzTGluZSwKICAgIFhJTUxpbmVTdGFydCwgWElNTGluZUVuZCwKICAgIFhJTUFi
c29sdXRlUG9zaXRpb24sCiAgICBYSU1Eb250Q2hhbmdlCn0gWElNQ2FyZXREaXJlY3Rpb247Cgp0
eXBlZGVmIHN0cnVjdCBfWElNU3RyaW5nQ29udmVyc2lvbkNhbGxiYWNrU3RydWN0IHsKICAgIFhJ
TVN0cmluZ0NvbnZlcnNpb25Qb3NpdGlvbiBwb3NpdGlvbjsKICAgIFhJTUNhcmV0RGlyZWN0aW9u
IGRpcmVjdGlvbjsKICAgIFhJTVN0cmluZ0NvbnZlcnNpb25PcGVyYXRpb24gb3BlcmF0aW9uOwog
ICAgdW5zaWduZWQgc2hvcnQgZmFjdG9yOwogICAgWElNU3RyaW5nQ29udmVyc2lvblRleHQgKnRl
eHQ7Cn0gWElNU3RyaW5nQ29udmVyc2lvbkNhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBzdHJ1Y3Qg
X1hJTVByZWVkaXREcmF3Q2FsbGJhY2tTdHJ1Y3QgewogICAgaW50IGNhcmV0OwogICAgaW50IGNo
Z19maXJzdDsKICAgIGludCBjaGdfbGVuZ3RoOwogICAgWElNVGV4dCAqdGV4dDsKfSBYSU1QcmVl
ZGl0RHJhd0NhbGxiYWNrU3RydWN0OwoKdHlwZWRlZiBlbnVtIHsKICAgIFhJTUlzSW52aXNpYmxl
LAogICAgWElNSXNQcmltYXJ5LAogICAgWElNSXNTZWNvbmRhcnkKfSBYSU1DYXJldFN0eWxlOwoK
dHlwZWRlZiBzdHJ1Y3QgX1hJTVByZWVkaXRDYXJldENhbGxiYWNrU3RydWN0IHsKICAgIGludCBw
b3NpdGlvbjsKICAgIFhJTUNhcmV0RGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgIFhJTUNhcmV0U3R5
bGUgc3R5bGU7Cn0gWElNUHJlZWRpdENhcmV0Q2FsbGJhY2tTdHJ1Y3Q7Cgp0eXBlZGVmIGVudW0g
ewogICAgWElNVGV4dFR5cGUsCiAgICBYSU1CaXRtYXBUeXBlCn0gWElNU3RhdHVzRGF0YVR5cGU7
Cgp0eXBlZGVmIHN0cnVjdCBfWElNU3RhdHVzRHJhd0NhbGxiYWNrU3RydWN0IHsKICAgIFhJTVN0
YXR1c0RhdGFUeXBlIHR5cGU7CiAgICB1bmlvbiB7CiAgICAgICAgWElNVGV4dCAqdGV4dDsKICAg
ICAgICBQaXhtYXAgYml0bWFwOwogICAgfSBkYXRhOwp9IFhJTVN0YXR1c0RyYXdDYWxsYmFja1N0
cnVjdDsKCnR5cGVkZWYgc3RydWN0IF9YSU1Ib3RLZXlUcmlnZ2VyIHsKICAgIEtleVN5bSBrZXlz
eW07CiAgICBpbnQgbW9kaWZpZXI7CiAgICBpbnQgbW9kaWZpZXJfbWFzazsKfSBYSU1Ib3RLZXlU
cmlnZ2VyOwoKdHlwZWRlZiBzdHJ1Y3QgX1hJTUhvdEtleVRyaWdnZXJzIHsKICAgIGludCBudW1f
aG90X2tleTsKICAgIFhJTUhvdEtleVRyaWdnZXIgKmtleTsKfSBYSU1Ib3RLZXlUcmlnZ2VyczsK
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSU1Ib3RLZXlTdGF0ZTsKCgoKCnR5cGVkZWYgc3RydWN0
IHsKICAgIHVuc2lnbmVkIHNob3J0IGNvdW50X3ZhbHVlczsKICAgIGNoYXIgKipzdXBwb3J0ZWRf
dmFsdWVzOwp9IFhJTVZhbHVlc0xpc3Q7CgoKCgoKCgpleHRlcm4gaW50IF9YZGVidWc7CgpleHRl
cm4gWEZvbnRTdHJ1Y3QgKlhMb2FkUXVlcnlGb250KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0
IGNoYXIqCgopOwoKZXh0ZXJuIFhGb250U3RydWN0ICpYUXVlcnlGb250KAoKICAgIERpc3BsYXkq
ICwKICAgIFhJRAoKKTsKCgpleHRlcm4gWFRpbWVDb29yZCAqWEdldE1vdGlvbkV2ZW50cygKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgVGltZSAsCiAgICBUaW1lICwKICAgIGludCoK
Cik7CgpleHRlcm4gWE1vZGlmaWVyS2V5bWFwICpYRGVsZXRlTW9kaWZpZXJtYXBFbnRyeSgKCiAg
ICBYTW9kaWZpZXJLZXltYXAqICwKCiAgICB1bnNpZ25lZCBpbnQgLAoKCgogICAgaW50CgopOwoK
ZXh0ZXJuIFhNb2RpZmllcktleW1hcCAqWEdldE1vZGlmaWVyTWFwcGluZygKCiAgICBEaXNwbGF5
KgoKKTsKCmV4dGVybiBYTW9kaWZpZXJLZXltYXAgKlhJbnNlcnRNb2RpZmllcm1hcEVudHJ5KAoK
ICAgIFhNb2RpZmllcktleW1hcCogLAoKICAgIHVuc2lnbmVkIGludCAsCgoKCiAgICBpbnQKCik7
CgpleHRlcm4gWE1vZGlmaWVyS2V5bWFwICpYTmV3TW9kaWZpZXJtYXAoCgogICAgaW50CgopOwoK
ZXh0ZXJuIFhJbWFnZSAqWENyZWF0ZUltYWdlKAoKICAgIERpc3BsYXkqICwKICAgIFZpc3VhbCog
LAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY2hhciogLAogICAg
dW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwpl
eHRlcm4gaW50IFhJbml0SW1hZ2UoCgogICAgWEltYWdlKgoKKTsKZXh0ZXJuIFhJbWFnZSAqWEdl
dEltYWdlKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIGludCAsCiAgICBpbnQg
LAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBsb25n
ICwKICAgIGludAoKKTsKZXh0ZXJuIFhJbWFnZSAqWEdldFN1YkltYWdlKAoKICAgIERpc3BsYXkq
ICwKICAgIERyYXdhYmxlICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwK
ICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIGludCAsCiAgICBYSW1h
Z2UqICwKICAgIGludCAsCiAgICBpbnQKCik7CgoKCgpleHRlcm4gRGlzcGxheSAqWE9wZW5EaXNw
bGF5KAoKICAgIGNvbnN0IGNoYXIqCgopOwoKZXh0ZXJuIHZvaWQgWHJtSW5pdGlhbGl6ZSgKCiAg
ICB2b2lkCgopOwoKZXh0ZXJuIGNoYXIgKlhGZXRjaEJ5dGVzKAoKICAgIERpc3BsYXkqICwKICAg
IGludCoKCik7CmV4dGVybiBjaGFyICpYRmV0Y2hCdWZmZXIoCgogICAgRGlzcGxheSogLAogICAg
aW50KiAsCiAgICBpbnQKCik7CmV4dGVybiBjaGFyICpYR2V0QXRvbU5hbWUoCgogICAgRGlzcGxh
eSogLAogICAgQXRvbQoKKTsKZXh0ZXJuIGludCBYR2V0QXRvbU5hbWVzKAoKICAgIERpc3BsYXkq
ICwKICAgIEF0b20qICwKICAgIGludCAsCiAgICBjaGFyKioKCik7CmV4dGVybiBjaGFyICpYR2V0
RGVmYXVsdCgKCiAgICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBjb25zdCBjaGFy
KgoKKTsKZXh0ZXJuIGNoYXIgKlhEaXNwbGF5TmFtZSgKCiAgICBjb25zdCBjaGFyKgoKKTsKZXh0
ZXJuIGNoYXIgKlhLZXlzeW1Ub1N0cmluZygKCiAgICBLZXlTeW0KCik7CgpleHRlcm4gaW50ICgq
WFN5bmNocm9uaXplKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKSkoCgogICAgRGlzcGxheSoK
Cik7CmV4dGVybiBpbnQgKCpYU2V0QWZ0ZXJGdW5jdGlvbigKCiAgICBEaXNwbGF5KiAsCiAgICBp
bnQgKCopICgKCiAgICAgICAgICAgICBEaXNwbGF5KgoKICAgICAgICAgICAgKQoKKSkoCgogICAg
RGlzcGxheSoKCik7CmV4dGVybiBBdG9tIFhJbnRlcm5BdG9tKAoKICAgIERpc3BsYXkqICwKICAg
IGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKZXh0ZXJuIGludCBYSW50ZXJuQXRvbXMoCgogICAg
RGlzcGxheSogLAogICAgY2hhcioqICwKICAgIGludCAsCiAgICBpbnQgLAogICAgQXRvbSoKCik7
CmV4dGVybiBDb2xvcm1hcCBYQ29weUNvbG9ybWFwQW5kRnJlZSgKCiAgICBEaXNwbGF5KiAsCiAg
ICBDb2xvcm1hcAoKKTsKZXh0ZXJuIENvbG9ybWFwIFhDcmVhdGVDb2xvcm1hcCgKCiAgICBEaXNw
bGF5KiAsCiAgICBXaW5kb3cgLAogICAgVmlzdWFsKiAsCiAgICBpbnQKCik7CmV4dGVybiBDdXJz
b3IgWENyZWF0ZVBpeG1hcEN1cnNvcigKCiAgICBEaXNwbGF5KiAsCiAgICBQaXhtYXAgLAogICAg
UGl4bWFwICwKICAgIFhDb2xvciogLAogICAgWENvbG9yKiAsCiAgICB1bnNpZ25lZCBpbnQgLAog
ICAgdW5zaWduZWQgaW50CgopOwpleHRlcm4gQ3Vyc29yIFhDcmVhdGVHbHlwaEN1cnNvcigKCiAg
ICBEaXNwbGF5KiAsCiAgICBGb250ICwKICAgIEZvbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAg
IHVuc2lnbmVkIGludCAsCiAgICBYQ29sb3IgY29uc3QgKiAsCiAgICBYQ29sb3IgY29uc3QgKgoK
KTsKZXh0ZXJuIEN1cnNvciBYQ3JlYXRlRm9udEN1cnNvcigKCiAgICBEaXNwbGF5KiAsCiAgICB1
bnNpZ25lZCBpbnQKCik7CmV4dGVybiBGb250IFhMb2FkRm9udCgKCiAgICBEaXNwbGF5KiAsCiAg
ICBjb25zdCBjaGFyKgoKKTsKZXh0ZXJuIEdDIFhDcmVhdGVHQygKCiAgICBEaXNwbGF5KiAsCiAg
ICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIFhHQ1ZhbHVlcyoKCik7CmV4dGVy
biBHQ29udGV4dCBYR0NvbnRleHRGcm9tR0MoCgogICAgR0MKCik7CmV4dGVybiB2b2lkIFhGbHVz
aEdDKAoKICAgIERpc3BsYXkqICwKICAgIEdDCgopOwpleHRlcm4gUGl4bWFwIFhDcmVhdGVQaXht
YXAoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgdW5zaWduZWQgaW50ICwKICAg
IHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CmV4dGVybiBQaXhtYXAgWENyZWF0
ZUJpdG1hcEZyb21EYXRhKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIGNvbnN0
IGNoYXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CmV4dGVybiBQ
aXhtYXAgWENyZWF0ZVBpeG1hcEZyb21CaXRtYXBEYXRhKAoKICAgIERpc3BsYXkqICwKICAgIERy
YXdhYmxlICwKICAgIGNoYXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQg
LAogICAgdW5zaWduZWQgbG9uZyAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIHVuc2lnbmVkIGlu
dAoKKTsKZXh0ZXJuIFdpbmRvdyBYQ3JlYXRlU2ltcGxlV2luZG93KAoKICAgIERpc3BsYXkqICwK
ICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1
bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAg
dW5zaWduZWQgbG9uZwoKKTsKZXh0ZXJuIFdpbmRvdyBYR2V0U2VsZWN0aW9uT3duZXIoCgogICAg
RGlzcGxheSogLAogICAgQXRvbQoKKTsKZXh0ZXJuIFdpbmRvdyBYQ3JlYXRlV2luZG93KAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAg
ICB1bnNpZ25lZCBpbnQgLAogICAgVmlzdWFsKiAsCiAgICB1bnNpZ25lZCBsb25nICwKICAgIFhT
ZXRXaW5kb3dBdHRyaWJ1dGVzKgoKKTsKZXh0ZXJuIENvbG9ybWFwICpYTGlzdEluc3RhbGxlZENv
bG9ybWFwcygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50KgoKKTsKZXh0ZXJu
IGNoYXIgKipYTGlzdEZvbnRzKAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAg
IGludCAsCiAgICBpbnQqCgopOwpleHRlcm4gY2hhciAqKlhMaXN0Rm9udHNXaXRoSW5mbygKCiAg
ICBEaXNwbGF5KiAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBY
Rm9udFN0cnVjdCoqCgopOwpleHRlcm4gY2hhciAqKlhHZXRGb250UGF0aCgKCiAgICBEaXNwbGF5
KiAsCiAgICBpbnQqCgopOwpleHRlcm4gY2hhciAqKlhMaXN0RXh0ZW5zaW9ucygKCiAgICBEaXNw
bGF5KiAsCiAgICBpbnQqCgopOwpleHRlcm4gQXRvbSAqWExpc3RQcm9wZXJ0aWVzKAoKICAgIERp
c3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQqCgopOwpleHRlcm4gWEhvc3RBZGRyZXNzICpY
TGlzdEhvc3RzKAoKICAgIERpc3BsYXkqICwKICAgIGludCogLAogICAgaW50KgoKKTsKZXh0ZXJu
IEtleVN5bSBYS2V5Y29kZVRvS2V5c3ltKAoKICAgIERpc3BsYXkqICwKCiAgICB1bnNpZ25lZCBp
bnQgLAoKCgogICAgaW50CgopOwpleHRlcm4gS2V5U3ltIFhMb29rdXBLZXlzeW0oCgogICAgWEtl
eUV2ZW50KiAsCiAgICBpbnQKCik7CmV4dGVybiBLZXlTeW0gKlhHZXRLZXlib2FyZE1hcHBpbmco
CgogICAgRGlzcGxheSogLAoKICAgIHVuc2lnbmVkIGludCAsCgoKCiAgICBpbnQgLAogICAgaW50
KgoKKTsKZXh0ZXJuIEtleVN5bSBYU3RyaW5nVG9LZXlzeW0oCgogICAgY29uc3QgY2hhcioKCik7
CmV4dGVybiBsb25nIFhNYXhSZXF1ZXN0U2l6ZSgKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIGxv
bmcgWEV4dGVuZGVkTWF4UmVxdWVzdFNpemUoCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBjaGFy
ICpYUmVzb3VyY2VNYW5hZ2VyU3RyaW5nKAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gY2hhciAq
WFNjcmVlblJlc291cmNlU3RyaW5nKAoKICAgICAgICBTY3JlZW4qCgopOwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBYRGlzcGxheU1vdGlvbkJ1ZmZlclNpemUoCgogICAgRGlzcGxheSoKCik7CmV4dGVy
biBWaXN1YWxJRCBYVmlzdWFsSURGcm9tVmlzdWFsKAoKICAgIFZpc3VhbCoKCik7CgoKCmV4dGVy
biBpbnQgWEluaXRUaHJlYWRzKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBYTG9ja0Rpc3Bs
YXkoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gdm9pZCBYVW5sb2NrRGlzcGxheSgKCiAgICBE
aXNwbGF5KgoKKTsKCgoKZXh0ZXJuIFhFeHRDb2RlcyAqWEluaXRFeHRlbnNpb24oCgogICAgRGlz
cGxheSogLAogICAgY29uc3QgY2hhcioKCik7CgpleHRlcm4gWEV4dENvZGVzICpYQWRkRXh0ZW5z
aW9uKAoKICAgIERpc3BsYXkqCgopOwpleHRlcm4gWEV4dERhdGEgKlhGaW5kT25FeHRlbnNpb25M
aXN0KAoKICAgIFhFeHREYXRhKiogLAogICAgaW50CgopOwpleHRlcm4gWEV4dERhdGEgKipYRUhl
YWRPZkV4dGVuc2lvbkxpc3QoCgogICAgWEVEYXRhT2JqZWN0CgopOwoKCmV4dGVybiBXaW5kb3cg
WFJvb3RXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwpleHRlcm4gV2luZG93IFhE
ZWZhdWx0Um9vdFdpbmRvdygKCiAgICBEaXNwbGF5KgoKKTsKZXh0ZXJuIFdpbmRvdyBYUm9vdFdp
bmRvd09mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CmV4dGVybiBWaXN1YWwgKlhEZWZhdWx0Vmlz
dWFsKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKZXh0ZXJuIFZpc3VhbCAqWERlZmF1bHRW
aXN1YWxPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwpleHRlcm4gR0MgWERlZmF1bHRHQygKCiAg
ICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiBHQyBYRGVmYXVsdEdDT2ZTY3JlZW4oCgog
ICAgU2NyZWVuKgoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWEJsYWNrUGl4ZWwoCgogICAgRGlz
cGxheSogLAogICAgaW50CgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYV2hpdGVQaXhlbCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhBbGxQbGFuZXMo
CgogICAgdm9pZAoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWEJsYWNrUGl4ZWxPZlNjcmVlbigK
CiAgICBTY3JlZW4qCgopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBYV2hpdGVQaXhlbE9mU2NyZWVu
KAoKICAgIFNjcmVlbioKCik7CmV4dGVybiB1bnNpZ25lZCBsb25nIFhOZXh0UmVxdWVzdCgKCiAg
ICBEaXNwbGF5KgoKKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgWExhc3RLbm93blJlcXVlc3RQcm9j
ZXNzZWQoCgogICAgRGlzcGxheSoKCik7CmV4dGVybiBjaGFyICpYU2VydmVyVmVuZG9yKAoKICAg
IERpc3BsYXkqCgopOwpleHRlcm4gY2hhciAqWERpc3BsYXlTdHJpbmcoCgogICAgRGlzcGxheSoK
Cik7CmV4dGVybiBDb2xvcm1hcCBYRGVmYXVsdENvbG9ybWFwKAoKICAgIERpc3BsYXkqICwKICAg
IGludAoKKTsKZXh0ZXJuIENvbG9ybWFwIFhEZWZhdWx0Q29sb3JtYXBPZlNjcmVlbigKCiAgICBT
Y3JlZW4qCgopOwpleHRlcm4gRGlzcGxheSAqWERpc3BsYXlPZlNjcmVlbigKCiAgICBTY3JlZW4q
CgopOwpleHRlcm4gU2NyZWVuICpYU2NyZWVuT2ZEaXNwbGF5KAoKICAgIERpc3BsYXkqICwKICAg
IGludAoKKTsKZXh0ZXJuIFNjcmVlbiAqWERlZmF1bHRTY3JlZW5PZkRpc3BsYXkoCgogICAgRGlz
cGxheSoKCik7CmV4dGVybiBsb25nIFhFdmVudE1hc2tPZlNjcmVlbigKCiAgICBTY3JlZW4qCgop
OwoKZXh0ZXJuIGludCBYU2NyZWVuTnVtYmVyT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCnR5
cGVkZWYgaW50ICgqWEVycm9ySGFuZGxlcikgKAoKICAgIERpc3BsYXkqICwKICAgIFhFcnJvckV2
ZW50KgoKKTsKCmV4dGVybiBYRXJyb3JIYW5kbGVyIFhTZXRFcnJvckhhbmRsZXIgKAoKICAgIFhF
cnJvckhhbmRsZXIKCik7CgoKdHlwZWRlZiBpbnQgKCpYSU9FcnJvckhhbmRsZXIpICgKCiAgICBE
aXNwbGF5KgoKKTsKCmV4dGVybiBYSU9FcnJvckhhbmRsZXIgWFNldElPRXJyb3JIYW5kbGVyICgK
CiAgICBYSU9FcnJvckhhbmRsZXIKCik7CgoKZXh0ZXJuIFhQaXhtYXBGb3JtYXRWYWx1ZXMgKlhM
aXN0UGl4bWFwRm9ybWF0cygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQqCgopOwpleHRlcm4gaW50
ICpYTGlzdERlcHRocygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgaW50KgoKKTsKCgoK
ZXh0ZXJuIGludCBYUmVjb25maWd1cmVXTVdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5k
b3cgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBYV2luZG93Q2hhbmdlcyoKCik7
CgpleHRlcm4gaW50IFhHZXRXTVByb3RvY29scygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgQXRvbSoqICwKICAgIGludCoKCik7CmV4dGVybiBpbnQgWFNldFdNUHJvdG9jb2xzKAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBBdG9tKiAsCiAgICBpbnQKCik7CmV4dGVy
biBpbnQgWEljb25pZnlXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGlu
dAoKKTsKZXh0ZXJuIGludCBYV2l0aGRyYXdXaW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2lu
ZG93ICwKICAgIGludAoKKTsKZXh0ZXJuIGludCBYR2V0Q29tbWFuZCgKCiAgICBEaXNwbGF5KiAs
CiAgICBXaW5kb3cgLAogICAgY2hhcioqKiAsCiAgICBpbnQqCgopOwpleHRlcm4gaW50IFhHZXRX
TUNvbG9ybWFwV2luZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgV2luZG93
KiogLAogICAgaW50KgoKKTsKZXh0ZXJuIGludCBYU2V0V01Db2xvcm1hcFdpbmRvd3MoCgogICAg
RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyogLAogICAgaW50CgopOwpleHRlcm4g
dm9pZCBYRnJlZVN0cmluZ0xpc3QoCgogICAgY2hhcioqCgopOwpleHRlcm4gaW50IFhTZXRUcmFu
c2llbnRGb3JIaW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cKCik7
CgoKCmV4dGVybiBpbnQgWEFjdGl2YXRlU2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSoKCik7Cgpl
eHRlcm4gaW50IFhBZGRIb3N0KAoKICAgIERpc3BsYXkqICwKICAgIFhIb3N0QWRkcmVzcyoKCik7
CgpleHRlcm4gaW50IFhBZGRIb3N0cygKCiAgICBEaXNwbGF5KiAsCiAgICBYSG9zdEFkZHJlc3Mq
ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEFkZFRvRXh0ZW5zaW9uTGlzdCgKCiAgICBzdHJ1
Y3QgX1hFeHREYXRhKiogLAogICAgWEV4dERhdGEqCgopOwoKZXh0ZXJuIGludCBYQWRkVG9TYXZl
U2V0KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWEFsbG9jQ29s
b3IoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgWENvbG9yKgoKKTsKCmV4dGVy
biBpbnQgWEFsbG9jQ29sb3JDZWxscygKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAg
ICBpbnQgLAogICAgdW5zaWduZWQgbG9uZyogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2ln
bmVkIGxvbmcqICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWEFsbG9jQ29sb3JQ
bGFuZXMoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgaW50ICwKICAgIHVuc2ln
bmVkIGxvbmcqICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1
bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBsb25nKiAsCiAgICB1bnNpZ25lZCBsb25nKgoK
KTsKCmV4dGVybiBpbnQgWEFsbG9jTmFtZWRDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xv
cm1hcCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBYQ29sb3IqICwKICAgIFhDb2xvcioKCik7Cgpl
eHRlcm4gaW50IFhBbGxvd0V2ZW50cygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgVGlt
ZQoKKTsKCmV4dGVybiBpbnQgWEF1dG9SZXBlYXRPZmYoCgogICAgRGlzcGxheSoKCik7CgpleHRl
cm4gaW50IFhBdXRvUmVwZWF0T24oCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhCZWxs
KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEJpdG1hcEJpdE9yZGVy
KAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYQml0bWFwUGFkKAoKICAgIERpc3BsYXkq
CgopOwoKZXh0ZXJuIGludCBYQml0bWFwVW5pdCgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBp
bnQgWENlbGxzT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWENoYW5nZUFj
dGl2ZVBvaW50ZXJHcmFiKAoKICAgIERpc3BsYXkqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBD
dXJzb3IgLAogICAgVGltZQoKKTsKCmV4dGVybiBpbnQgWENoYW5nZUdDKAoKICAgIERpc3BsYXkq
ICwKICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgWEdDVmFsdWVzKgoKKTsKCmV4dGVy
biBpbnQgWENoYW5nZUtleWJvYXJkQ29udHJvbCgKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25l
ZCBsb25nICwKICAgIFhLZXlib2FyZENvbnRyb2wqCgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlS2V5
Ym9hcmRNYXBwaW5nKAoKICAgIERpc3BsYXkqICwKICAgIGludCAsCiAgICBpbnQgLAogICAgS2V5
U3ltKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhDaGFuZ2VQb2ludGVyQ29udHJvbCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYQ2hhbmdlUHJvcGVydHkoCgogICAgRGlzcGxheSogLAogICAg
V2luZG93ICwKICAgIEF0b20gLAogICAgQXRvbSAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENoYW5nZVNhdmVT
ZXQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQg
WENoYW5nZVdpbmRvd0F0dHJpYnV0ZXMoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IHVuc2lnbmVkIGxvbmcgLAogICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMqCgopOwoKZXh0ZXJuIGlu
dCBYQ2hlY2tJZkV2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCogLAogICAgaW50ICgq
KSAoCgogICAgICAgICAgICAgICBEaXNwbGF5KiAsCiAgICAgICAgICAgICAgIFhFdmVudCogLAog
ICAgICAgICAgICAgICBYUG9pbnRlcgoKICAgICAgICAgICAgICkgLAogICAgWFBvaW50ZXIKCik7
CgpleHRlcm4gaW50IFhDaGVja01hc2tFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBsb25nICwK
ICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhDaGVja1R5cGVkRXZlbnQoCgogICAgRGlzcGxh
eSogLAogICAgaW50ICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhDaGVja1R5cGVkV2lu
ZG93RXZlbnQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBYRXZl
bnQqCgopOwoKZXh0ZXJuIGludCBYQ2hlY2tXaW5kb3dFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAg
ICBXaW5kb3cgLAogICAgbG9uZyAsCiAgICBYRXZlbnQqCgopOwoKZXh0ZXJuIGludCBYQ2lyY3Vs
YXRlU3Vid2luZG93cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYQ2lyY3VsYXRlU3Vid2luZG93c0Rvd24oCgogICAgRGlzcGxheSogLAogICAg
V2luZG93CgopOwoKZXh0ZXJuIGludCBYQ2lyY3VsYXRlU3Vid2luZG93c1VwKAoKICAgIERpc3Bs
YXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWENsZWFyQXJlYSgKCiAgICBEaXNwbGF5
KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAog
ICAgdW5zaWduZWQgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWENsZWFyV2luZG93KAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWENsb3NlRGlzcGxheSgK
CiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWENvbmZpZ3VyZVdpbmRvdygKCiAgICBEaXNw
bGF5KiAsCiAgICBXaW5kb3cgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFhXaW5kb3dDaGFuZ2Vz
KgoKKTsKCmV4dGVybiBpbnQgWENvbm5lY3Rpb25OdW1iZXIoCgogICAgRGlzcGxheSoKCik7Cgpl
eHRlcm4gaW50IFhDb252ZXJ0U2VsZWN0aW9uKAoKICAgIERpc3BsYXkqICwKICAgIEF0b20gLAog
ICAgQXRvbSAsCiAgICBBdG9tICwKICAgIFdpbmRvdyAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGlu
dCBYQ29weUFyZWEoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgRHJhd2FibGUg
LAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhDb3B5R0MoCgog
ICAgRGlzcGxheSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBHQwoKKTsKCmV4
dGVybiBpbnQgWENvcHlQbGFuZSgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBE
cmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAs
CiAgICB1bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBsb25n
CgopOwoKZXh0ZXJuIGludCBYRGVmYXVsdERlcHRoKAoKICAgIERpc3BsYXkqICwKICAgIGludAoK
KTsKCmV4dGVybiBpbnQgWERlZmF1bHREZXB0aE9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7Cgpl
eHRlcm4gaW50IFhEZWZhdWx0U2NyZWVuKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBY
RGVmaW5lQ3Vyc29yKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBDdXJzb3IKCik7
CgpleHRlcm4gaW50IFhEZWxldGVQcm9wZXJ0eSgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cg
LAogICAgQXRvbQoKKTsKCmV4dGVybiBpbnQgWERlc3Ryb3lXaW5kb3coCgogICAgRGlzcGxheSog
LAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYRGVzdHJveVN1YndpbmRvd3MoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYRG9lc0JhY2tpbmdTdG9yZSgKCiAg
ICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYRG9lc1NhdmVVbmRlcnMoCgogICAgU2NyZWVuKgoK
KTsKCmV4dGVybiBpbnQgWERpc2FibGVBY2Nlc3NDb250cm9sKAoKICAgIERpc3BsYXkqCgopOwoK
CmV4dGVybiBpbnQgWERpc3BsYXlDZWxscygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7Cgpl
eHRlcm4gaW50IFhEaXNwbGF5SGVpZ2h0KAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4
dGVybiBpbnQgWERpc3BsYXlIZWlnaHRNTSgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7Cgpl
eHRlcm4gaW50IFhEaXNwbGF5S2V5Y29kZXMoCgogICAgRGlzcGxheSogLAogICAgaW50KiAsCiAg
ICBpbnQqCgopOwoKZXh0ZXJuIGludCBYRGlzcGxheVBsYW5lcygKCiAgICBEaXNwbGF5KiAsCiAg
ICBpbnQKCik7CgpleHRlcm4gaW50IFhEaXNwbGF5V2lkdGgoCgogICAgRGlzcGxheSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRGlzcGxheVdpZHRoTU0oCgogICAgRGlzcGxheSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0FyYygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJs
ZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1
bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdBcmNz
KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhBcmMqICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdJbWFnZVN0cmluZygKCiAgICBEaXNwbGF5KiAsCiAg
ICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdJbWFnZVN0cmluZzE2KAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29u
c3QgWENoYXIyYiogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0xpbmUoCgogICAgRGlz
cGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBp
bnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd0xpbmVzKAoKICAgIERpc3BsYXkqICwK
ICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhQb2ludCogLAogICAgaW50ICwKICAgIGludAoK
KTsKCmV4dGVybiBpbnQgWERyYXdQb2ludCgKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAs
CiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRHJhd1BvaW50cygK
CiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYUG9pbnQqICwKICAg
IGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhEcmF3UmVjdGFuZ2xlKAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdSZWN0YW5n
bGVzKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhSZWN0YW5n
bGUqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWERyYXdTZWdtZW50cygKCiAgICBEaXNwbGF5
KiAsCiAgICBEcmF3YWJsZSAsCiAgICBHQyAsCiAgICBYU2VnbWVudCogLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYRHJhd1N0cmluZygKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAg
ICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsK
CmV4dGVybiBpbnQgWERyYXdTdHJpbmcxNigKCiAgICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAs
CiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIGNvbnN0IFhDaGFyMmIqICwKICAgIGlu
dAoKKTsKCmV4dGVybiBpbnQgWERyYXdUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl
ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWFRleHRJdGVtKiAsCiAgICBpbnQK
Cik7CgpleHRlcm4gaW50IFhEcmF3VGV4dDE2KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl
ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWFRleHRJdGVtMTYqICwKICAgIGlu
dAoKKTsKCmV4dGVybiBpbnQgWEVuYWJsZUFjY2Vzc0NvbnRyb2woCgogICAgRGlzcGxheSoKCik7
CgpleHRlcm4gaW50IFhFdmVudHNRdWV1ZWQoCgogICAgRGlzcGxheSogLAogICAgaW50CgopOwoK
ZXh0ZXJuIGludCBYRmV0Y2hOYW1lKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBj
aGFyKioKCik7CgpleHRlcm4gaW50IFhGaWxsQXJjKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdh
YmxlICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAg
IHVuc2lnbmVkIGludCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYRmlsbEFy
Y3MoCgogICAgRGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWEFyYyogLAog
ICAgaW50CgopOwoKZXh0ZXJuIGludCBYRmlsbFBvbHlnb24oCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgR0MgLAogICAgWFBvaW50KiAsCiAgICBpbnQgLAogICAgaW50ICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWEZpbGxSZWN0YW5nbGUoCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICB1bnNpZ25lZCBpbnQg
LAogICAgdW5zaWduZWQgaW50CgopOwoKZXh0ZXJuIGludCBYRmlsbFJlY3RhbmdsZXMoCgogICAg
RGlzcGxheSogLAogICAgRHJhd2FibGUgLAogICAgR0MgLAogICAgWFJlY3RhbmdsZSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYRmx1c2goCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50
IFhGb3JjZVNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4dGVybiBp
bnQgWEZyZWUoCgogICAgdm9pZCoKCik7CgpleHRlcm4gaW50IFhGcmVlQ29sb3JtYXAoCgogICAg
RGlzcGxheSogLAogICAgQ29sb3JtYXAKCik7CgpleHRlcm4gaW50IFhGcmVlQ29sb3JzKAoKICAg
IERpc3BsYXkqICwKICAgIENvbG9ybWFwICwKICAgIHVuc2lnbmVkIGxvbmcqICwKICAgIGludCAs
CiAgICB1bnNpZ25lZCBsb25nCgopOwoKZXh0ZXJuIGludCBYRnJlZUN1cnNvcigKCiAgICBEaXNw
bGF5KiAsCiAgICBDdXJzb3IKCik7CgpleHRlcm4gaW50IFhGcmVlRXh0ZW5zaW9uTGlzdCgKCiAg
ICBjaGFyKioKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udCgKCiAgICBEaXNwbGF5KiAsCiAgICBY
Rm9udFN0cnVjdCoKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udEluZm8oCgogICAgY2hhcioqICwK
ICAgIFhGb250U3RydWN0KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhGcmVlRm9udE5hbWVz
KAoKICAgIGNoYXIqKgoKKTsKCmV4dGVybiBpbnQgWEZyZWVGb250UGF0aCgKCiAgICBjaGFyKioK
Cik7CgpleHRlcm4gaW50IFhGcmVlR0MoCgogICAgRGlzcGxheSogLAogICAgR0MKCik7CgpleHRl
cm4gaW50IFhGcmVlTW9kaWZpZXJtYXAoCgogICAgWE1vZGlmaWVyS2V5bWFwKgoKKTsKCmV4dGVy
biBpbnQgWEZyZWVQaXhtYXAoCgogICAgRGlzcGxheSogLAogICAgUGl4bWFwCgopOwoKZXh0ZXJu
IGludCBYR2VvbWV0cnkoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQg
LAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBp
bnQqICwKICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdldEVycm9yRGF0YWJh
c2VUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQg
WEdldEVycm9yVGV4dCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQgLAogICAgY2hhciogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYR2V0Rm9udFByb3BlcnR5KAoKICAgIFhGb250U3RydWN0KiAs
CiAgICBBdG9tICwKICAgIHVuc2lnbmVkIGxvbmcqCgopOwoKZXh0ZXJuIGludCBYR2V0R0NWYWx1
ZXMoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBYR0NW
YWx1ZXMqCgopOwoKZXh0ZXJuIGludCBYR2V0R2VvbWV0cnkoCgogICAgRGlzcGxheSogLAogICAg
RHJhd2FibGUgLAogICAgV2luZG93KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgdW5zaWdu
ZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5z
aWduZWQgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdldEljb25OYW1lKAoKICAgIERpc3BsYXkqICwK
ICAgIFdpbmRvdyAsCiAgICBjaGFyKioKCik7CgpleHRlcm4gaW50IFhHZXRJbnB1dEZvY3VzKAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdl
dEtleWJvYXJkQ29udHJvbCgKCiAgICBEaXNwbGF5KiAsCiAgICBYS2V5Ym9hcmRTdGF0ZSoKCik7
CgpleHRlcm4gaW50IFhHZXRQb2ludGVyQ29udHJvbCgKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQq
ICwKICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWEdldFBvaW50ZXJNYXBwaW5n
KAoKICAgIERpc3BsYXkqICwKICAgIHVuc2lnbmVkIGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVy
biBpbnQgWEdldFNjcmVlblNhdmVyKAoKICAgIERpc3BsYXkqICwKICAgIGludCogLAogICAgaW50
KiAsCiAgICBpbnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhHZXRUcmFuc2llbnRGb3JI
aW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cqCgopOwoKZXh0ZXJu
IGludCBYR2V0V2luZG93UHJvcGVydHkoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IEF0b20gLAogICAgbG9uZyAsCiAgICBsb25nICwKICAgIGludCAsCiAgICBBdG9tICwKICAgIEF0
b20qICwKICAgIGludCogLAogICAgdW5zaWduZWQgbG9uZyogLAogICAgdW5zaWduZWQgbG9uZyog
LAogICAgdW5zaWduZWQgY2hhcioqCgopOwoKZXh0ZXJuIGludCBYR2V0V2luZG93QXR0cmlidXRl
cygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgWFdpbmRvd0F0dHJpYnV0ZXMqCgop
OwoKZXh0ZXJuIGludCBYR3JhYkJ1dHRvbigKCiAgICBEaXNwbGF5KiAsCiAgICB1bnNpZ25lZCBp
bnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgdW5zaWdu
ZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgV2luZG93ICwKICAgIEN1cnNvcgoKKTsK
CmV4dGVybiBpbnQgWEdyYWJLZXkoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIHVuc2ln
bmVkIGludCAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7Cgpl
eHRlcm4gaW50IFhHcmFiS2V5Ym9hcmQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAg
IGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFRpbWUKCik7CgpleHRlcm4gaW50IFhHcmFi
UG9pbnRlcigKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIHVuc2ln
bmVkIGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIFdpbmRvdyAsCiAgICBDdXJzb3IgLAog
ICAgVGltZQoKKTsKCmV4dGVybiBpbnQgWEdyYWJTZXJ2ZXIoCgogICAgRGlzcGxheSoKCik7Cgpl
eHRlcm4gaW50IFhIZWlnaHRNTU9mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50
IFhIZWlnaHRPZlNjcmVlbigKCiAgICBTY3JlZW4qCgopOwoKZXh0ZXJuIGludCBYSWZFdmVudCgK
CiAgICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqICwKICAgIGludCAoKikgKAoKICAgICAgICAgICAg
ICAgRGlzcGxheSogLAogICAgICAgICAgICAgICBYRXZlbnQqICwKICAgICAgICAgICAgICAgWFBv
aW50ZXIKCiAgICAgICAgICAgICApICwKICAgIFhQb2ludGVyCgopOwoKZXh0ZXJuIGludCBYSW1h
Z2VCeXRlT3JkZXIoCgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhJbnN0YWxsQ29sb3Jt
YXAoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAKCik7CgpleHRlcm4gS2V5Q29kZSBYS2V5
c3ltVG9LZXljb2RlKAoKICAgIERpc3BsYXkqICwKICAgIEtleVN5bQoKKTsKCmV4dGVybiBpbnQg
WEtpbGxDbGllbnQoCgogICAgRGlzcGxheSogLAogICAgWElECgopOwoKZXh0ZXJuIGludCBYTG9v
a3VwQ29sb3IoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgY29uc3QgY2hhciog
LAogICAgWENvbG9yKiAsCiAgICBYQ29sb3IqCgopOwoKZXh0ZXJuIGludCBYTG93ZXJXaW5kb3co
CgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYTWFwUmFpc2VkKAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWE1hcFN1YndpbmRvd3Mo
CgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYTWFwV2luZG93KAoK
ICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsKCmV4dGVybiBpbnQgWE1hc2tFdmVudCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBsb25nICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50IFhNYXhD
bWFwc09mU2NyZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhNaW5DbWFwc09mU2Ny
ZWVuKAoKICAgIFNjcmVlbioKCik7CgpleHRlcm4gaW50IFhNb3ZlUmVzaXplV2luZG93KAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVk
IGludCAsCiAgICB1bnNpZ25lZCBpbnQKCik7CgpleHRlcm4gaW50IFhNb3ZlV2luZG93KAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGlu
dCBYTmV4dEV2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCoKCik7CgpleHRlcm4gaW50
IFhOb09wKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYUGFyc2VDb2xvcigKCiAgICBE
aXNwbGF5KiAsCiAgICBDb2xvcm1hcCAsCiAgICBjb25zdCBjaGFyKiAsCiAgICBYQ29sb3IqCgop
OwoKZXh0ZXJuIGludCBYUGFyc2VHZW9tZXRyeSgKCiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQq
ICwKICAgIGludCogLAogICAgdW5zaWduZWQgaW50KiAsCiAgICB1bnNpZ25lZCBpbnQqCgopOwoK
ZXh0ZXJuIGludCBYUGVla0V2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFhFdmVudCoKCik7Cgpl
eHRlcm4gaW50IFhQZWVrSWZFdmVudCgKCiAgICBEaXNwbGF5KiAsCiAgICBYRXZlbnQqICwKICAg
IGludCAoKikgKAoKICAgICAgICAgICAgICAgRGlzcGxheSogLAogICAgICAgICAgICAgICBYRXZl
bnQqICwKICAgICAgICAgICAgICAgWFBvaW50ZXIKCiAgICAgICAgICAgICApICwKICAgIFhQb2lu
dGVyCgopOwoKZXh0ZXJuIGludCBYUGVuZGluZygKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBp
bnQgWFBsYW5lc09mU2NyZWVuKAoKICAgIFNjcmVlbioKCgopOwoKZXh0ZXJuIGludCBYUHJvdG9j
b2xSZXZpc2lvbigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFByb3RvY29sVmVyc2lv
bigKCiAgICBEaXNwbGF5KgoKKTsKCgpleHRlcm4gaW50IFhQdXRCYWNrRXZlbnQoCgogICAgRGlz
cGxheSogLAogICAgWEV2ZW50KgoKKTsKCmV4dGVybiBpbnQgWFB1dEltYWdlKAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIEdDICwKICAgIFhJbWFnZSogLAogICAgaW50ICwKICAg
IGludCAsCiAgICBpbnQgLAogICAgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25l
ZCBpbnQKCik7CgpleHRlcm4gaW50IFhRTGVuZ3RoKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJu
IGludCBYUXVlcnlCZXN0Q3Vyc29yKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAg
IHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50KiAsCiAg
ICB1bnNpZ25lZCBpbnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlCZXN0U2l6ZSgKCiAgICBEaXNw
bGF5KiAsCiAgICBpbnQgLAogICAgRHJhd2FibGUgLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVu
c2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQqICwKICAgIHVuc2lnbmVkIGludCoKCik7Cgpl
eHRlcm4gaW50IFhRdWVyeUJlc3RTdGlwcGxlKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl
ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50
KiAsCiAgICB1bnNpZ25lZCBpbnQqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlCZXN0VGlsZSgKCiAg
ICBEaXNwbGF5KiAsCiAgICBEcmF3YWJsZSAsCiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWdu
ZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgaW50KgoKKTsKCmV4dGVy
biBpbnQgWFF1ZXJ5Q29sb3IoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAgLAogICAgWENv
bG9yKgoKKTsKCmV4dGVybiBpbnQgWFF1ZXJ5Q29sb3JzKAoKICAgIERpc3BsYXkqICwKICAgIENv
bG9ybWFwICwKICAgIFhDb2xvciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYUXVlcnlFeHRl
bnNpb24oCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgaW50KiAsCiAgICBp
bnQqICwKICAgIGludCoKCik7CgpleHRlcm4gaW50IFhRdWVyeUtleW1hcCgKCiAgICBEaXNwbGF5
KiAsCiAgICBjaGFyIFszMl0KCik7CgpleHRlcm4gaW50IFhRdWVyeVBvaW50ZXIoCgogICAgRGlz
cGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyogLAogICAgV2luZG93KiAsCiAgICBpbnQq
ICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIHVuc2lnbmVkIGludCoKCik7
CgpleHRlcm4gaW50IFhRdWVyeVRleHRFeHRlbnRzKAoKICAgIERpc3BsYXkqICwKICAgIFhJRCAs
CiAgICBjb25zdCBjaGFyKiAsCiAgICBpbnQgLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGlu
dCogLAogICAgWENoYXJTdHJ1Y3QqCgopOwoKZXh0ZXJuIGludCBYUXVlcnlUZXh0RXh0ZW50czE2
KAoKICAgIERpc3BsYXkqICwKICAgIFhJRCAsCiAgICBjb25zdCBYQ2hhcjJiKiAsCiAgICBpbnQg
LAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgWENoYXJTdHJ1Y3QqCgopOwoK
ZXh0ZXJuIGludCBYUXVlcnlUcmVlKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBX
aW5kb3cqICwKICAgIFdpbmRvdyogLAogICAgV2luZG93KiogLAogICAgdW5zaWduZWQgaW50KgoK
KTsKCmV4dGVybiBpbnQgWFJhaXNlV2luZG93KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoK
KTsKCmV4dGVybiBpbnQgWFJlYWRCaXRtYXBGaWxlKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdh
YmxlICwKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQg
aW50KiAsCiAgICBQaXhtYXAqICwKICAgIGludCogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQg
WFJlYWRCaXRtYXBGaWxlRGF0YSgKCiAgICBjb25zdCBjaGFyKiAsCiAgICB1bnNpZ25lZCBpbnQq
ICwKICAgIHVuc2lnbmVkIGludCogLAogICAgdW5zaWduZWQgY2hhcioqICwKICAgIGludCogLAog
ICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWFJlYmluZEtleXN5bSgKCiAgICBEaXNwbGF5KiAsCiAg
ICBLZXlTeW0gLAogICAgS2V5U3ltKiAsCiAgICBpbnQgLAogICAgY29uc3QgdW5zaWduZWQgY2hh
ciogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYUmVjb2xvckN1cnNvcigKCiAgICBEaXNwbGF5
KiAsCiAgICBDdXJzb3IgLAogICAgWENvbG9yKiAsCiAgICBYQ29sb3IqCgopOwoKZXh0ZXJuIGlu
dCBYUmVmcmVzaEtleWJvYXJkTWFwcGluZygKCiAgICBYTWFwcGluZ0V2ZW50KgoKKTsKCmV4dGVy
biBpbnQgWFJlbW92ZUZyb21TYXZlU2V0KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdwoKKTsK
CmV4dGVybiBpbnQgWFJlbW92ZUhvc3QoCgogICAgRGlzcGxheSogLAogICAgWEhvc3RBZGRyZXNz
KgoKKTsKCmV4dGVybiBpbnQgWFJlbW92ZUhvc3RzKAoKICAgIERpc3BsYXkqICwKICAgIFhIb3N0
QWRkcmVzcyogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYUmVwYXJlbnRXaW5kb3coCgogICAg
RGlzcGxheSogLAogICAgV2luZG93ICwKICAgIFdpbmRvdyAsCiAgICBpbnQgLAogICAgaW50Cgop
OwoKZXh0ZXJuIGludCBYUmVzZXRTY3JlZW5TYXZlcigKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVy
biBpbnQgWFJlc2l6ZVdpbmRvdygKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgdW5z
aWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludAoKKTsKCmV4dGVybiBpbnQgWFJlc3RhY2tXaW5k
b3dzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyogLAogICAgaW50CgopOwoKZXh0ZXJuIGlu
dCBYUm90YXRlQnVmZmVycygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50
IFhSb3RhdGVXaW5kb3dQcm9wZXJ0aWVzKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAg
ICBBdG9tKiAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2NyZWVuQ291bnQo
CgogICAgRGlzcGxheSoKCik7CgpleHRlcm4gaW50IFhTZWxlY3RJbnB1dCgKCiAgICBEaXNwbGF5
KiAsCiAgICBXaW5kb3cgLAogICAgbG9uZwoKKTsKCmV4dGVybiBpbnQgWFNlbmRFdmVudCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGxvbmcgLAogICAgWEV2ZW50
KgoKKTsKCmV4dGVybiBpbnQgWFNldEFjY2Vzc0NvbnRyb2woCgogICAgRGlzcGxheSogLAogICAg
aW50CgopOwoKZXh0ZXJuIGludCBYU2V0QXJjTW9kZSgKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAs
CiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRCYWNrZ3JvdW5kKAoKICAgIERpc3BsYXkqICwK
ICAgIEdDICwKICAgIHVuc2lnbmVkIGxvbmcKCik7CgpleHRlcm4gaW50IFhTZXRDbGlwTWFzaygK
CiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50IFhTZXRD
bGlwT3JpZ2luKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQKCik7
CgpleHRlcm4gaW50IFhTZXRDbGlwUmVjdGFuZ2xlcygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAs
CiAgICBpbnQgLAogICAgaW50ICwKICAgIFhSZWN0YW5nbGUqICwKICAgIGludCAsCiAgICBpbnQK
Cik7CgpleHRlcm4gaW50IFhTZXRDbG9zZURvd25Nb2RlKAoKICAgIERpc3BsYXkqICwKICAgIGlu
dAoKKTsKCmV4dGVybiBpbnQgWFNldENvbW1hbmQoCgogICAgRGlzcGxheSogLAogICAgV2luZG93
ICwKICAgIGNoYXIqKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXREYXNoZXMoCgogICAg
RGlzcGxheSogLAogICAgR0MgLAogICAgaW50ICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoK
KTsKCmV4dGVybiBpbnQgWFNldEZpbGxSdWxlKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAg
IGludAoKKTsKCmV4dGVybiBpbnQgWFNldEZpbGxTdHlsZSgKCiAgICBEaXNwbGF5KiAsCiAgICBH
QyAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRGb250KAoKICAgIERpc3BsYXkqICwKICAg
IEdDICwKICAgIEZvbnQKCik7CgpleHRlcm4gaW50IFhTZXRGb250UGF0aCgKCiAgICBEaXNwbGF5
KiAsCiAgICBjaGFyKiogLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0Rm9yZWdyb3VuZCgK
CiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1bnNpZ25lZCBsb25nCgopOwoKZXh0ZXJuIGlu
dCBYU2V0RnVuY3Rpb24oCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAgaW50CgopOwoKZXh0
ZXJuIGludCBYU2V0R3JhcGhpY3NFeHBvc3VyZXMoCgogICAgRGlzcGxheSogLAogICAgR0MgLAog
ICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0SWNvbk5hbWUoCgogICAgRGlzcGxheSogLAogICAg
V2luZG93ICwKICAgIGNvbnN0IGNoYXIqCgopOwoKZXh0ZXJuIGludCBYU2V0SW5wdXRGb2N1cygK
CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIFRpbWUKCik7CgpleHRl
cm4gaW50IFhTZXRMaW5lQXR0cmlidXRlcygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICB1
bnNpZ25lZCBpbnQgLAogICAgaW50ICwKICAgIGludCAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50
IFhTZXRNb2RpZmllck1hcHBpbmcoCgogICAgRGlzcGxheSogLAogICAgWE1vZGlmaWVyS2V5bWFw
KgoKKTsKCmV4dGVybiBpbnQgWFNldFBsYW5lTWFzaygKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAs
CiAgICB1bnNpZ25lZCBsb25nCgopOwoKZXh0ZXJuIGludCBYU2V0UG9pbnRlck1hcHBpbmcoCgog
ICAgRGlzcGxheSogLAogICAgY29uc3QgdW5zaWduZWQgY2hhciogLAogICAgaW50CgopOwoKZXh0
ZXJuIGludCBYU2V0U2NyZWVuU2F2ZXIoCgogICAgRGlzcGxheSogLAogICAgaW50ICwKICAgIGlu
dCAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0U2VsZWN0aW9uT3duZXIo
CgogICAgRGlzcGxheSogLAogICAgQXRvbSAsCiAgICBXaW5kb3cgLAogICAgVGltZQoKKTsKCmV4
dGVybiBpbnQgWFNldFN0YXRlKAoKICAgIERpc3BsYXkqICwKICAgIEdDICwKICAgIHVuc2lnbmVk
IGxvbmcgLAogICAgdW5zaWduZWQgbG9uZyAsCiAgICBpbnQgLAogICAgdW5zaWduZWQgbG9uZwoK
KTsKCmV4dGVybiBpbnQgWFNldFN0aXBwbGUoCgogICAgRGlzcGxheSogLAogICAgR0MgLAogICAg
UGl4bWFwCgopOwoKZXh0ZXJuIGludCBYU2V0U3Vid2luZG93TW9kZSgKCiAgICBEaXNwbGF5KiAs
CiAgICBHQyAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50IFhTZXRUU09yaWdpbigKCiAgICBEaXNw
bGF5KiAsCiAgICBHQyAsCiAgICBpbnQgLAogICAgaW50CgopOwoKZXh0ZXJuIGludCBYU2V0VGls
ZSgKCiAgICBEaXNwbGF5KiAsCiAgICBHQyAsCiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50IFhT
ZXRXaW5kb3dCYWNrZ3JvdW5kKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICB1bnNp
Z25lZCBsb25nCgopOwoKZXh0ZXJuIGludCBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcCgKCiAg
ICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgUGl4bWFwCgopOwoKZXh0ZXJuIGludCBYU2V0
V2luZG93Qm9yZGVyKAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICB1bnNpZ25lZCBs
b25nCgopOwoKZXh0ZXJuIGludCBYU2V0V2luZG93Qm9yZGVyUGl4bWFwKAoKICAgIERpc3BsYXkq
ICwKICAgIFdpbmRvdyAsCiAgICBQaXhtYXAKCik7CgpleHRlcm4gaW50IFhTZXRXaW5kb3dCb3Jk
ZXJXaWR0aCgKCiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cgLAogICAgdW5zaWduZWQgaW50Cgop
OwoKZXh0ZXJuIGludCBYU2V0V2luZG93Q29sb3JtYXAoCgogICAgRGlzcGxheSogLAogICAgV2lu
ZG93ICwKICAgIENvbG9ybWFwCgopOwoKZXh0ZXJuIGludCBYU3RvcmVCdWZmZXIoCgogICAgRGlz
cGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBp
bnQgWFN0b3JlQnl0ZXMoCgogICAgRGlzcGxheSogLAogICAgY29uc3QgY2hhciogLAogICAgaW50
CgopOwoKZXh0ZXJuIGludCBYU3RvcmVDb2xvcigKCiAgICBEaXNwbGF5KiAsCiAgICBDb2xvcm1h
cCAsCiAgICBYQ29sb3IqCgopOwoKZXh0ZXJuIGludCBYU3RvcmVDb2xvcnMoCgogICAgRGlzcGxh
eSogLAogICAgQ29sb3JtYXAgLAogICAgWENvbG9yKiAsCiAgICBpbnQKCik7CgpleHRlcm4gaW50
IFhTdG9yZU5hbWUoCgogICAgRGlzcGxheSogLAogICAgV2luZG93ICwKICAgIGNvbnN0IGNoYXIq
CgopOwoKZXh0ZXJuIGludCBYU3RvcmVOYW1lZENvbG9yKAoKICAgIERpc3BsYXkqICwKICAgIENv
bG9ybWFwICwKICAgIGNvbnN0IGNoYXIqICwKICAgIHVuc2lnbmVkIGxvbmcgLAogICAgaW50Cgop
OwoKZXh0ZXJuIGludCBYU3luYygKCiAgICBEaXNwbGF5KiAsCiAgICBpbnQKCik7CgpleHRlcm4g
aW50IFhUZXh0RXh0ZW50cygKCiAgICBYRm9udFN0cnVjdCogLAogICAgY29uc3QgY2hhciogLAog
ICAgaW50ICwKICAgIGludCogLAogICAgaW50KiAsCiAgICBpbnQqICwKICAgIFhDaGFyU3RydWN0
KgoKKTsKCmV4dGVybiBpbnQgWFRleHRFeHRlbnRzMTYoCgogICAgWEZvbnRTdHJ1Y3QqICwKICAg
IGNvbnN0IFhDaGFyMmIqICwKICAgIGludCAsCiAgICBpbnQqICwKICAgIGludCogLAogICAgaW50
KiAsCiAgICBYQ2hhclN0cnVjdCoKCik7CgpleHRlcm4gaW50IFhUZXh0V2lkdGgoCgogICAgWEZv
bnRTdHJ1Y3QqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFRl
eHRXaWR0aDE2KAoKICAgIFhGb250U3RydWN0KiAsCiAgICBjb25zdCBYQ2hhcjJiKiAsCiAgICBp
bnQKCik7CgpleHRlcm4gaW50IFhUcmFuc2xhdGVDb29yZGluYXRlcygKCiAgICBEaXNwbGF5KiAs
CiAgICBXaW5kb3cgLAogICAgV2luZG93ICwKICAgIGludCAsCiAgICBpbnQgLAogICAgaW50KiAs
CiAgICBpbnQqICwKICAgIFdpbmRvdyoKCik7CgpleHRlcm4gaW50IFhVbmRlZmluZUN1cnNvcigK
CiAgICBEaXNwbGF5KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhVbmdyYWJCdXR0b24o
CgogICAgRGlzcGxheSogLAogICAgdW5zaWduZWQgaW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAg
ICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhVbmdyYWJLZXkoCgogICAgRGlzcGxheSogLAogICAg
aW50ICwKICAgIHVuc2lnbmVkIGludCAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFhVbmdy
YWJLZXlib2FyZCgKCiAgICBEaXNwbGF5KiAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGludCBYVW5n
cmFiUG9pbnRlcigKCiAgICBEaXNwbGF5KiAsCiAgICBUaW1lCgopOwoKZXh0ZXJuIGludCBYVW5n
cmFiU2VydmVyKAoKICAgIERpc3BsYXkqCgopOwoKZXh0ZXJuIGludCBYVW5pbnN0YWxsQ29sb3Jt
YXAoCgogICAgRGlzcGxheSogLAogICAgQ29sb3JtYXAKCik7CgpleHRlcm4gaW50IFhVbmxvYWRG
b250KAoKICAgIERpc3BsYXkqICwKICAgIEZvbnQKCik7CgpleHRlcm4gaW50IFhVbm1hcFN1Yndp
bmRvd3MoCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYVW5tYXBX
aW5kb3coCgogICAgRGlzcGxheSogLAogICAgV2luZG93CgopOwoKZXh0ZXJuIGludCBYVmVuZG9y
UmVsZWFzZSgKCiAgICBEaXNwbGF5KgoKKTsKCmV4dGVybiBpbnQgWFdhcnBQb2ludGVyKAoKICAg
IERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBXaW5kb3cgLAogICAgaW50ICwKICAgIGludCAs
CiAgICB1bnNpZ25lZCBpbnQgLAogICAgdW5zaWduZWQgaW50ICwKICAgIGludCAsCiAgICBpbnQK
Cik7CgpleHRlcm4gaW50IFhXaWR0aE1NT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVy
biBpbnQgWFdpZHRoT2ZTY3JlZW4oCgogICAgU2NyZWVuKgoKKTsKCmV4dGVybiBpbnQgWFdpbmRv
d0V2ZW50KAoKICAgIERpc3BsYXkqICwKICAgIFdpbmRvdyAsCiAgICBsb25nICwKICAgIFhFdmVu
dCoKCik7CgpleHRlcm4gaW50IFhXcml0ZUJpdG1hcEZpbGUoCgogICAgRGlzcGxheSogLAogICAg
Y29uc3QgY2hhciogLAogICAgUGl4bWFwICwKICAgIHVuc2lnbmVkIGludCAsCiAgICB1bnNpZ25l
ZCBpbnQgLAogICAgaW50ICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWFN1cHBvcnRzTG9jYWxl
KAoKICAgIHZvaWQKCik7CgpleHRlcm4gY2hhciAqWFNldExvY2FsZU1vZGlmaWVycygKCiAgICBj
b25zdCBjaGFyKgoKKTsKCmV4dGVybiBYT00gWE9wZW5PTSgKCiAgICBEaXNwbGF5KiAsCiAgICBz
dHJ1Y3QgX1hybUhhc2hCdWNrZXRSZWMqICwKICAgIGNvbnN0IGNoYXIqICwKICAgIGNvbnN0IGNo
YXIqCgopOwoKZXh0ZXJuIGludCBYQ2xvc2VPTSgKCiAgICBYT00KCik7CgpleHRlcm4gY2hhciAq
WFNldE9NVmFsdWVzKAoKICAgIFhPTSAsCiAgICAuLi4KCik7CgpleHRlcm4gY2hhciAqWEdldE9N
VmFsdWVzKAoKICAgIFhPTSAsCiAgICAuLi4KCik7CgpleHRlcm4gRGlzcGxheSAqWERpc3BsYXlP
Zk9NKAoKICAgIFhPTQoKKTsKCmV4dGVybiBjaGFyICpYTG9jYWxlT2ZPTSgKCiAgICBYT00KCik7
CgpleHRlcm4gWE9DIFhDcmVhdGVPQygKCiAgICBYT00gLAogICAgLi4uCgopOwoKZXh0ZXJuIHZv
aWQgWERlc3Ryb3lPQygKCiAgICBYT0MKCik7CgpleHRlcm4gWE9NIFhPTU9mT0MoCgogICAgWE9D
CgopOwoKZXh0ZXJuIGNoYXIgKlhTZXRPQ1ZhbHVlcygKCiAgICBYT0MgLAogICAgLi4uCgopOwoK
ZXh0ZXJuIGNoYXIgKlhHZXRPQ1ZhbHVlcygKCiAgICBYT0MgLAogICAgLi4uCgopOwoKZXh0ZXJu
IFhGb250U2V0IFhDcmVhdGVGb250U2V0KAoKICAgIERpc3BsYXkqICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGNoYXIqKiogLAogICAgaW50KiAsCiAgICBjaGFyKioKCik7CgpleHRlcm4gdm9pZCBY
RnJlZUZvbnRTZXQoCgogICAgRGlzcGxheSogLAogICAgWEZvbnRTZXQKCik7CgpleHRlcm4gaW50
IFhGb250c09mRm9udFNldCgKCiAgICBYRm9udFNldCAsCiAgICBYRm9udFN0cnVjdCoqKiAsCiAg
ICBjaGFyKioqCgopOwoKZXh0ZXJuIGNoYXIgKlhCYXNlRm9udE5hbWVMaXN0T2ZGb250U2V0KAoK
ICAgIFhGb250U2V0CgopOwoKZXh0ZXJuIGNoYXIgKlhMb2NhbGVPZkZvbnRTZXQoCgogICAgWEZv
bnRTZXQKCik7CgpleHRlcm4gaW50IFhDb250ZXh0RGVwZW5kZW50RHJhd2luZygKCiAgICBYRm9u
dFNldAoKKTsKCmV4dGVybiBpbnQgWERpcmVjdGlvbmFsRGVwZW5kZW50RHJhd2luZygKCiAgICBY
Rm9udFNldAoKKTsKCmV4dGVybiBpbnQgWENvbnRleHR1YWxEcmF3aW5nKAoKICAgIFhGb250U2V0
CgopOwoKZXh0ZXJuIFhGb250U2V0RXh0ZW50cyAqWEV4dGVudHNPZkZvbnRTZXQoCgogICAgWEZv
bnRTZXQKCik7CgpleHRlcm4gaW50IFhtYlRleHRFc2NhcGVtZW50KAoKICAgIFhGb250U2V0ICwK
ICAgIGNvbnN0IGNoYXIqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWHdjVGV4dEVzY2FwZW1l
bnQoCgogICAgWEZvbnRTZXQgLAogICAgY29uc3Qgd2NoYXJfdCogLAogICAgaW50CgopOwoKZXh0
ZXJuIGludCBYbWJUZXh0RXh0ZW50cygKCiAgICBYRm9udFNldCAsCiAgICBjb25zdCBjaGFyKiAs
CiAgICBpbnQgLAogICAgWFJlY3RhbmdsZSogLAogICAgWFJlY3RhbmdsZSoKCik7CgpleHRlcm4g
aW50IFh3Y1RleHRFeHRlbnRzKAoKICAgIFhGb250U2V0ICwKICAgIGNvbnN0IHdjaGFyX3QqICwK
ICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVybiBp
bnQgWG1iVGV4dFBlckNoYXJFeHRlbnRzKAoKICAgIFhGb250U2V0ICwKICAgIGNvbnN0IGNoYXIq
ICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBpbnQg
LAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKgoKKTsKCmV4dGVy
biBpbnQgWHdjVGV4dFBlckNoYXJFeHRlbnRzKAoKICAgIFhGb250U2V0ICwKICAgIGNvbnN0IHdj
aGFyX3QqICwKICAgIGludCAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAg
ICBpbnQgLAogICAgaW50KiAsCiAgICBYUmVjdGFuZ2xlKiAsCiAgICBYUmVjdGFuZ2xlKgoKKTsK
CmV4dGVybiB2b2lkIFhtYkRyYXdUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwK
ICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWG1iVGV4dEl0ZW0qICwKICAgIGludAoK
KTsKCmV4dGVybiB2b2lkIFh3Y0RyYXdUZXh0KAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxl
ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWHdjVGV4dEl0ZW0qICwKICAgIGlu
dAoKKTsKCmV4dGVybiB2b2lkIFhtYkRyYXdTdHJpbmcoCgogICAgRGlzcGxheSogLAogICAgRHJh
d2FibGUgLAogICAgWEZvbnRTZXQgLAogICAgR0MgLAogICAgaW50ICwKICAgIGludCAsCiAgICBj
b25zdCBjaGFyKiAsCiAgICBpbnQKCik7CgpleHRlcm4gdm9pZCBYd2NEcmF3U3RyaW5nKAoKICAg
IERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAgIFhGb250U2V0ICwKICAgIEdDICwKICAgIGlu
dCAsCiAgICBpbnQgLAogICAgY29uc3Qgd2NoYXJfdCogLAogICAgaW50CgopOwoKZXh0ZXJuIHZv
aWQgWG1iRHJhd0ltYWdlU3RyaW5nKAoKICAgIERpc3BsYXkqICwKICAgIERyYXdhYmxlICwKICAg
IFhGb250U2V0ICwKICAgIEdDICwKICAgIGludCAsCiAgICBpbnQgLAogICAgY29uc3QgY2hhciog
LAogICAgaW50CgopOwoKZXh0ZXJuIHZvaWQgWHdjRHJhd0ltYWdlU3RyaW5nKAoKICAgIERpc3Bs
YXkqICwKICAgIERyYXdhYmxlICwKICAgIFhGb250U2V0ICwKICAgIEdDICwKICAgIGludCAsCiAg
ICBpbnQgLAogICAgY29uc3Qgd2NoYXJfdCogLAogICAgaW50CgopOwoKZXh0ZXJuIFhJTSBYT3Bl
bklNKAoKICAgIERpc3BsYXkqICwKICAgIHN0cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYyogLAogICAg
Y2hhciogLAogICAgY2hhcioKCik7CgpleHRlcm4gaW50IFhDbG9zZUlNKAoKICAgIFhJTQoKKTsK
CmV4dGVybiBjaGFyICpYR2V0SU1WYWx1ZXMoCgogICAgWElNICwgLi4uCgopOwoKZXh0ZXJuIERp
c3BsYXkgKlhEaXNwbGF5T2ZJTSgKCiAgICBYSU0KCik7CgpleHRlcm4gY2hhciAqWExvY2FsZU9m
SU0oCgogICAgWElNCgopOwoKZXh0ZXJuIFhJQyBYQ3JlYXRlSUMoCgogICAgWElNICwgLi4uCgop
OwoKZXh0ZXJuIHZvaWQgWERlc3Ryb3lJQygKCiAgICBYSUMKCik7CgpleHRlcm4gdm9pZCBYU2V0
SUNGb2N1cygKCiAgICBYSUMKCik7CgpleHRlcm4gdm9pZCBYVW5zZXRJQ0ZvY3VzKAoKICAgIFhJ
QwoKKTsKCmV4dGVybiB3Y2hhcl90ICpYd2NSZXNldElDKAoKICAgIFhJQwoKKTsKCmV4dGVybiBj
aGFyICpYbWJSZXNldElDKAoKICAgIFhJQwoKKTsKCmV4dGVybiBjaGFyICpYU2V0SUNWYWx1ZXMo
CgogICAgWElDICwgLi4uCgopOwoKZXh0ZXJuIGNoYXIgKlhHZXRJQ1ZhbHVlcygKCiAgICBYSUMg
LCAuLi4KCik7CgpleHRlcm4gWElNIFhJTU9mSUMoCgogICAgWElDCgopOwoKZXh0ZXJuIGludCBY
RmlsdGVyRXZlbnQoCgogICAgWEV2ZW50KiAsCiAgICBXaW5kb3cKCik7CgpleHRlcm4gaW50IFht
Ykxvb2t1cFN0cmluZygKCiAgICBYSUMgLAogICAgWEtleVByZXNzZWRFdmVudCogLAogICAgY2hh
ciogLAogICAgaW50ICwKICAgIEtleVN5bSogLAogICAgaW50KgoKKTsKCmV4dGVybiBpbnQgWHdj
TG9va3VwU3RyaW5nKAoKICAgIFhJQyAsCiAgICBYS2V5UHJlc3NlZEV2ZW50KiAsCiAgICB3Y2hh
cl90KiAsCiAgICBpbnQgLAogICAgS2V5U3ltKiAsCiAgICBpbnQqCgopOwoKZXh0ZXJuIFhWYU5l
c3RlZExpc3QgWFZhQ3JlYXRlTmVzdGVkTGlzdCgKCiAgICBpbnQgLCAuLi4KCik7CgoKCmV4dGVy
biBpbnQgWFJlZ2lzdGVySU1JbnN0YW50aWF0ZUNhbGxiYWNrKAoKICAgIERpc3BsYXkqICwKICAg
IHN0cnVjdCBfWHJtSGFzaEJ1Y2tldFJlYyogLAogICAgY2hhciogLAogICAgY2hhciogLAogICAg
WElEUHJvYyAsCiAgICBYUG9pbnRlcgoKKTsKCmV4dGVybiBpbnQgWFVucmVnaXN0ZXJJTUluc3Rh
bnRpYXRlQ2FsbGJhY2soCgogICAgRGlzcGxheSogLAogICAgc3RydWN0IF9Ycm1IYXNoQnVja2V0
UmVjKiAsCiAgICBjaGFyKiAsCiAgICBjaGFyKiAsCiAgICBYSURQcm9jICwKICAgIFhQb2ludGVy
CgopOwoKdHlwZWRlZiB2b2lkICgqWENvbm5lY3Rpb25XYXRjaFByb2MpKAoKICAgIERpc3BsYXkq
ICwKICAgIFhQb2ludGVyICwKICAgIGludCAsCiAgICBpbnQgLAogICAgWFBvaW50ZXIqCgopOwoK
CmV4dGVybiBpbnQgWEludGVybmFsQ29ubmVjdGlvbk51bWJlcnMoCgogICAgRGlzcGxheSogLAog
ICAgaW50KiogLAogICAgaW50KgoKKTsKCmV4dGVybiB2b2lkIFhQcm9jZXNzSW50ZXJuYWxDb25u
ZWN0aW9uKAoKICAgIERpc3BsYXkqICwKICAgIGludAoKKTsKCmV4dGVybiBpbnQgWEFkZENvbm5l
Y3Rpb25XYXRjaCgKCiAgICBEaXNwbGF5KiAsCiAgICBYQ29ubmVjdGlvbldhdGNoUHJvYyAsCiAg
ICBYUG9pbnRlcgoKKTsKCmV4dGVybiB2b2lkIFhSZW1vdmVDb25uZWN0aW9uV2F0Y2goCgogICAg
RGlzcGxheSogLAogICAgWENvbm5lY3Rpb25XYXRjaFByb2MgLAogICAgWFBvaW50ZXIKCik7Cgpl
eHRlcm4gdm9pZCBYU2V0QXV0aG9yaXphdGlvbigKCiAgICBjaGFyICogLAogICAgaW50ICwKICAg
IGNoYXIgKiAsCiAgICBpbnQKCik7CgojIDUgImN1cnZlbG93LmgiIDIKCgoKCgppbnQgYmV6aWVy
X2ZpbGxfcG9pbnRzKFhQb2ludCAqIHBvaW50cywgaW50ICogeCwgaW50ICogeSk7CgppbnQgYmV6
aWVyX2hpdF9zZWdtZW50KGludCAqIHgsIGludCAqIHksIGludCBweCwgaW50IHB5KTsKaW50IGJl
emllcl9oaXRfbGluZShpbnQgc3gsIGludCBzeSwgaW50IGV4LCBpbnQgZXksIGludCBweCwgaW50
IHB5KTsKCgp2b2lkIGJlemllcl9wb2ludF9hdChkb3VibGUgKngsIGRvdWJsZSAqeSwgZG91Ymxl
IHQsCiAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqIHJlc3VsdF94LCBkb3VibGUgKiByZXN1
bHRfeSk7CnZvaWQgYmV6aWVyX3RhbmdlbnRfYXQoZG91YmxlICp4LCBkb3VibGUgKnksIGRvdWJs
ZSB0LAogICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqIHJlc3VsdF94LCBkb3VibGUgKiBy
ZXN1bHRfeSk7CgpleHRlcm4gaW50IGJlemllcl9iYXNpc1s0XVs0XTsKCiMgMzQgIi4vY3VydmVv
YmplY3QuYyIgMgoKIyAyNCAiY3VydmVtaXNjLmgiIDEKUHlPYmplY3QgKiBjdXJ2ZV9sb2NhbF9j
b29yZF9zeXN0ZW0oU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncyk7CgpQeU9i
amVjdCAqIGN1cnZlX2FyY19sZW5ndGhzKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAq
IGFyZ3MpOwoKUHlPYmplY3QgKiBTS0N1cnZlX05lYXJlc3RQb2ludFB5KFNLQ3VydmVPYmplY3Qg
KiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwpQeU9iamVjdCAqIFNLQ3VydmVfUG9pbnRBdFB5KFNL
Q3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpOwoKIyAzNSAiLi9jdXJ2ZW9iamVj
dC5jIiAyCiMgNTIgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIHZvaWQKaW5pdF9zZWdtZW50KEN1
cnZlU2VnbWVudCAqIHNlZ21lbnQsIGludCB0eXBlKQp7CiAgICBzZWdtZW50LT50eXBlID0gdHlw
ZTsKICAgIHNlZ21lbnQtPmNvbnQgPSAwOwogICAgc2VnbWVudC0+c2VsZWN0ZWQgPSAwOwogICAg
c2VnbWVudC0+eDEgPSBzZWdtZW50LT55MSA9IHNlZ21lbnQtPngyID0gc2VnbWVudC0+eTIgPSAw
LjA7CiAgICBzZWdtZW50LT54ID0gc2VnbWVudC0+eSA9IDAuMDsKfQoKCgoKCnN0YXRpYyB2b2lk
ClNLQ3VydmVfQWRqdXN0Q29udHJvbFBvaW50KFNLQ29vcmQgKiB4LCBTS0Nvb3JkICogeSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGN1cl94LCBkb3VibGUgY3VyX3ksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBub2RlX3gsIGRvdWJsZSBub2RlX3ksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBjb250KQp7CiAgICBzd2l0Y2ggKGNvbnQpCiAgICB7
CiAgICBjYXNlIDI6CiAgICAgICAgKnggPSAyICogbm9kZV94IC0gY3VyX3g7CiAgICAgICAgKnkg
PSAyICogbm9kZV95IC0gY3VyX3k7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAxOgogICAgewog
ICAgICAgIGRvdWJsZSBkeCA9IGN1cl94IC0gbm9kZV94OwogICAgICAgIGRvdWJsZSBkeSA9IGN1
cl95IC0gbm9kZV95OwogICAgICAgIGRvdWJsZSBsZW5ndGggPSBoeXBvdCgqeCAtIG5vZGVfeCwg
KnkgLSBub2RlX3kpOwogICAgICAgIGRvdWJsZSBjdXJfbGVuZ3RoID0gaHlwb3QoZHgsIGR5KTsK
ICAgICAgICBpZiAoY3VyX2xlbmd0aCA8IDAuMSkKICAgICAgICAgICAgY3VyX2xlbmd0aCA9IDAu
MTsKCiAgICAgICAgKnggPSBub2RlX3ggLSBsZW5ndGggKiBkeCAvIGN1cl9sZW5ndGg7CiAgICAg
ICAgKnkgPSBub2RlX3kgLSBsZW5ndGggKiBkeSAvIGN1cl9sZW5ndGg7CiAgICAgICAgYnJlYWs7
CiAgICB9CiAgICBkZWZhdWx0OgogICAgICAgIGJyZWFrOwogICAgfQp9CgoKCgoKCnN0YXRpYyBp
bnQgcGF0aHNfYWxsb2NhdGVkID0gMDsKClB5T2JqZWN0ICoKU0tDdXJ2ZV9OZXcoaW50IGxlbmd0
aCkKewogICAgU0tDdXJ2ZU9iamVjdCAqIHNlbGY7CiAgICBpbnQgaTsKCiAgICBzZWxmID0gKChT
S0N1cnZlT2JqZWN0ICopIF9QeU9iamVjdF9OZXcoJlNLQ3VydmVUeXBlKSk7CiAgICBpZiAoc2Vs
ZiA9PSAoKHZvaWQgKikwKSkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgbGVuZ3Ro
ID0gKChsZW5ndGgpPjAgPyAoKChsZW5ndGgpKyg5KS0xKS8oOSkpKig5KSA6ICg5KSk7CiAgICBz
ZWxmLT5sZW4gPSAwOwogICAgc2VsZi0+Y2xvc2VkID0gMDsKICAgIHNlbGYtPnNlZ21lbnRzID0g
bWFsbG9jKGxlbmd0aCAqIHNpemVvZihDdXJ2ZVNlZ21lbnQpKTsKICAgIGlmICghc2VsZi0+c2Vn
bWVudHMpCiAgICB7CiAgICAgICAgZnJlZShzZWxmKTsKICAgICAgICByZXR1cm4gUHlFcnJfTm9N
ZW1vcnkoKTsKICAgIH0KICAgIHNlbGYtPmFsbG9jYXRlZCA9IGxlbmd0aDsKCiAgICBmb3IgKGkg
PSAwOyBpIDwgc2VsZi0+YWxsb2NhdGVkOyBpKyspCiAgICB7CiAgICAgICAgaW5pdF9zZWdtZW50
KHNlbGYtPnNlZ21lbnRzICsgaSwgMik7CiAgICB9CgogICAgcGF0aHNfYWxsb2NhdGVkKys7Cgog
ICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Cn0KCgoKCgpzdGF0aWMgaW50CmNoZWNrX2luZGV4
KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKiBmdW5jbmFtZSkK
ewogICAgaWYgKGluZGV4IDwgMCkKICAgICAgICBpbmRleCA9IGluZGV4ICsgc2VsZi0+bGVuOwoK
ICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc2VsZi0+bGVuKQogICAgewogICAgICAgIGNo
YXIgbWVzc2FnZVsxMDAwXTsKICAgICAgICBzcHJpbnRmKG1lc3NhZ2UsICIlczogaW5kZXggb3V0
IG9mIHJhbmdlIiwgZnVuY25hbWUpOwogICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRl
eEVycm9yLCBtZXNzYWdlKTsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgcmV0dXJuIGlu
ZGV4Owp9CiMgMTY5ICIuL2N1cnZlb2JqZWN0LmMiCnN0YXRpYyB2b2lkCmN1cnZlX2NoZWNrX3N0
YXRlKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBpbnQgd2FybiwgY29uc3QgY2hhciAqIGZ1bmNuYW1l
KQp7Cn0KIyAxODEgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIGludApjdXJ2ZV9yZWFsbG9jKFNL
Q3VydmVPYmplY3QgKiBzZWxmLCBpbnQgbmV3X2xlbikKewogICAgbmV3X2xlbiA9ICgobmV3X2xl
bik+MCA/ICgoKG5ld19sZW4pKyg5KS0xKS8oOSkpKig5KSA6ICg5KSk7CiAgICBpZiAobmV3X2xl
biAhPSBzZWxmLT5hbGxvY2F0ZWQpCiAgICB7CiAgICAgICAgQ3VydmVTZWdtZW50ICogbmV3X3Nl
Z21lbnRzOwogICAgICAgIG5ld19zZWdtZW50cyA9IHJlYWxsb2Moc2VsZi0+c2VnbWVudHMsIG5l
d19sZW4gKiBzaXplb2YoQ3VydmVTZWdtZW50KSk7CiAgICAgICAgaWYgKCFuZXdfc2VnbWVudHMp
CiAgICAgICAgewogICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICB9CiAgICAgICAgc2VsZi0+c2VnbWVudHMgPSBuZXdfc2VnbWVudHM7CiAg
ICAgICAgc2VsZi0+YWxsb2NhdGVkID0gbmV3X2xlbjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoK
CgoKCgpzdGF0aWMgaW50CmN1cnZlX2dyb3coU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIGludCBncm93
KQp7CiAgICByZXR1cm4gY3VydmVfcmVhbGxvYyhzZWxmLCBzZWxmLT5sZW4gKyBncm93KTsKfQoK
CgoKCgpzdGF0aWMgdm9pZApjdXJ2ZV9kZWFsbG9jKFNLQ3VydmVPYmplY3QgKiBzZWxmKQp7CiAg
ICBmcmVlKHNlbGYtPnNlZ21lbnRzKTsKICAgIGZyZWUoc2VsZik7CiAgICBwYXRoc19hbGxvY2F0
ZWQtLTsKfQoKc3RhdGljIGludApjdXJ2ZV9jb21wYXJlKFNLQ3VydmVPYmplY3QgKiB2LCBTS0N1
cnZlT2JqZWN0ICogdykKewoKCgogICAgaWYgKHYgPT0gdykKICAgICAgICByZXR1cm4gMDsKCiAg
ICByZXR1cm4gdiA8IHcgPyAtMSA6ICsxOwp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9yZXBy
KFNLQ3VydmVPYmplY3QgKiBzZWxmKQp7CiAgICBjaGFyIGJ1ZlsxMDBdOwogICAgc3ByaW50Zihi
dWYsICI8U0tDdXJ2ZU9iamVjdCBhdCAlbGQgd2l0aCAlZCBub2Rlcz4iLCAobG9uZylzZWxmLAog
ICAgICAgICAgICBzZWxmLT5sZW4pOwogICAgcmV0dXJuIFB5U3RyaW5nX0Zyb21TdHJpbmcoYnVm
KTsKfQojIDI1OCAiLi9jdXJ2ZW9iamVjdC5jIgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9kdXBs
aWNhdGUoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgU0tDdXJ2
ZU9iamVjdCAqIGNvcHk7CiAgICBpbnQgaTsKCiAgICBjb3B5ID0gKFNLQ3VydmVPYmplY3QqKVNL
Q3VydmVfTmV3KHNlbGYtPmxlbik7CiAgICBpZiAoIWNvcHkpCiAgICAgICAgcmV0dXJuICgodm9p
ZCAqKTApOwoKICAgIGNvcHktPmxlbiA9IHNlbGYtPmxlbjsKICAgIGNvcHktPmNsb3NlZCA9IHNl
bGYtPmNsb3NlZDsKCiAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+bGVuOyBpKyspCiAgICAgICAg
Y29weS0+c2VnbWVudHNbaV0gPSBzZWxmLT5zZWdtZW50c1tpXTsKCiAgICByZXR1cm4gKFB5T2Jq
ZWN0Kiljb3B5Owp9CgoKCgoKCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9ub2RlKFNLQ3VydmVP
YmplY3QgKiBzZWxmLCBQeU9iamVjdCAqYXJncykKewogICAgaW50IGlkeDsKCiAgICBpZiAoIVB5
QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmaWR4KSkKICAgICAgICByZXR1cm4gKCh2b2lkICop
MCk7CgogICAgaWYgKGlkeCA8IDApCiAgICAgICAgaWR4ID0gaWR4ICsgc2VsZi0+bGVuOwoKICAg
IGlmIChpZHggPCAwIHx8IGlkeCA+PSBzZWxmLT5sZW4pCiAgICB7CiAgICAgICAgUHlFcnJfU2V0
U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJjdXJ2ZV9u
b2RlOiBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAg
ICB9CgogICAgcmV0dXJuIFNLUG9pbnRfRnJvbVhZKHNlbGYtPnNlZ21lbnRzW2lkeF0ueCwgc2Vs
Zi0+c2VnbWVudHNbaWR4XS55KTsKfQoKCgoKCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfbm9k
ZV9saXN0KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqYXJncykKewogICAgaW50IGks
IGxlbmd0aDsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CiAgICBQeU9iamVjdCAqIGxpc3Qs
ICpwb2ludDsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIpKQogICAgICAgIHJl
dHVybiAoKHZvaWQgKikwKTsKCiAgICBsZW5ndGggPSBzZWxmLT5sZW47CiAgICBpZiAoc2VsZi0+
Y2xvc2VkKQogICAgICAgIGxlbmd0aCAtPSAxOwoKICAgIGxpc3QgPSBQeUxpc3RfTmV3KGxlbmd0
aCk7CiAgICBpZiAoIWxpc3QpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIHNlZ21l
bnQgPSBzZWxmLT5zZWdtZW50czsKICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKywgc2Vn
bWVudCsrKQogICAgewogICAgICAgIHBvaW50ID0gU0tQb2ludF9Gcm9tWFkoc2VnbWVudC0+eCwg
c2VnbWVudC0+eSk7CiAgICAgICAgaWYgKCFwb2ludCkKICAgICAgICB7CiAgICAgICAgICAgIGlm
ICgtLShsaXN0KS0+b2JfcmVmY250ICE9IDApIDsgZWxzZSAoKigoUHlPYmplY3QgKikobGlzdCkp
LT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICopKGxpc3QpKSk7
CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICAgICAgUHlMaXN0
X1NldEl0ZW0obGlzdCwgaSwgcG9pbnQpOwogICAgfQoKICAgIHJldHVybiBsaXN0Owp9CiMgMzUw
ICIuL2N1cnZlb2JqZWN0LmMiCnN0YXRpYyBQeU9iamVjdCAqCmN1cnZlX2NvbnRpbnVpdHkoU0tD
dXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgaW50IGlkeDsKCiAgICBp
ZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmaWR4KSkKICAgICAgICByZXR1cm4gKCh2
b2lkICopMCk7CgogICAgaWYgKGlkeCA8IDApCiAgICAgICAgaWR4ID0gaWR4ICsgc2VsZi0+bGVu
OwoKICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBzZWxmLT5sZW4pCiAgICB7CiAgICAgICAgUHlF
cnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJj
dXJ2ZV9jb250aW51aXR5OiBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICByZXR1cm4gKCh2
b2lkICopMCk7CiAgICB9CgogICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKHNlbGYtPnNlZ21lbnRz
W2lkeF0uY29udCk7Cn0KIyAzNzkgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIFB5T2JqZWN0ICoK
Y3VydmVfc2VnbWVudF90eXBlKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3Mp
CnsKICAgIGludCBpZHg7CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmlk
eCkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlmIChpZHggPCAwKQogICAgICAg
IGlkeCA9IGlkeCArIHNlbGYtPmxlbjsKCiAgICBpZiAoaWR4IDwgMCB8fCBpZHggPj0gc2VsZi0+
bGVuKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAogICAg
ICAgICAgICAgICAgICAgICAgICAiY3VydmVfc2VnbWVudF90eXBlOiBpbmRleCBvdXQgb2YgcmFu
Z2UiKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9CgogICAgcmV0dXJuIFB5SW50
X0Zyb21Mb25nKHNlbGYtPnNlZ21lbnRzW2lkeF0udHlwZSk7Cn0KCgoKCgpzdGF0aWMgUHlPYmpl
Y3QgKgpjdXJ2ZV9zZWdtZW50KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3Mp
CnsKICAgIGludCBpZHg7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAgUHlPYmplY3Qg
KiByZXN1bHQsICpwMSwgKnAyLCAqcDsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywg
ImkiLCAmaWR4KSkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgaWR4ID0gY2hlY2tf
aW5kZXgoc2VsZiwgaWR4LCAicGF0aC5TZWdtZW50Iik7CiAgICBpZiAoaWR4IDwgMCkKICAgICAg
ICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgc2VnbWVudCA9IHNlbGYtPnNlZ21lbnRzICsgaWR4
OwogICAgcCA9IFNLUG9pbnRfRnJvbVhZKHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpOwogICAgaWYg
KHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgIHsKICAgICAgICBwMSA9IFNLUG9pbnRfRnJvbVhZKHNl
Z21lbnQtPngxLCBzZWdtZW50LT55MSk7CiAgICAgICAgcDIgPSBTS1BvaW50X0Zyb21YWShzZWdt
ZW50LT54Miwgc2VnbWVudC0+eTIpOwogICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoImko
T08pT2kiLCBzZWdtZW50LT50eXBlLCBwMSwgcDIsIHAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWdtZW50LT5jb250KTsKICAgICAgICBpZiAoKHAxKSA9PSAoKHZvaWQgKikwKSkg
OyBlbHNlIGlmICgtLShwMSktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2UgKCooKFB5T2JqZWN0ICop
KHAxKSktPm9iX3R5cGUtPnRwX2RlYWxsb2MpKChQeU9iamVjdCAqKSgoUHlPYmplY3QgKikocDEp
KSk7CiAgICAgICAgaWYgKChwMikgPT0gKCh2b2lkICopMCkpIDsgZWxzZSBpZiAoLS0ocDIpLT5v
Yl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShwMikpLT5vYl90eXBlLT50cF9k
ZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICopKHAyKSkpOwogICAgfQogICAgZWxzZQog
ICAgewogICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoImkoKU9pIiwgc2VnbWVudC0+dHlw
ZSwgcCwgc2VnbWVudC0+Y29udCk7CiAgICB9CiAgICBpZiAoKHApID09ICgodm9pZCAqKTApKSA7
IGVsc2UgaWYgKC0tKHApLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShw
KSktPm9iX3R5cGUtPnRwX2RlYWxsb2MpKChQeU9iamVjdCAqKSgoUHlPYmplY3QgKikocCkpKTsK
CiAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfc2V0X2Nv
bnRpbnVpdHkoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgaW50
IGlkeCwgY29udDsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJmlkeCwg
JmNvbnQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBpZiAoaWR4IDwgMCkKICAg
ICAgICBpZHggPSBpZHggKyBzZWxmLT5sZW47CgogICAgaWYgKGlkeCA8IDAgfHwgaWR4ID49IHNl
bGYtPmxlbikKICAgIHsKICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwK
ICAgICAgICAgICAgICAgICAgICAgICAgImN1cnZlX3NldF9jb250aW51aXR5OiBpbmRleCBvdXQg
b2YgcmFuZ2UiKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9CgogICAgaWYgKCEo
KGNvbnQpID49IDAgJiYgKGNvbnQpIDw9IDIpKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmlu
ZyhQeUV4Y19WYWx1ZUVycm9yLCAiY3VydmVfc2V0X2NvbnRpbnVpdHk6ICIKICAgICAgICAgICAg
ICAgICAgICAgICAgImNvbnQgbXVzdCBiZSBvbmUgb2YgQ29udEFuZ2xlLCBDb250U21vb3RoICIK
ICAgICAgICAgICAgICAgICAgICAgICAgIm9yIENvbnRTeW1tZXRyaWNhbCIpOwogICAgICAgIHJl
dHVybiAoKHZvaWQgKikwKTsKICAgIH0KICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0uY29udCA9IGNv
bnQ7CiAgICBpZiAoc2VsZi0+Y2xvc2VkKQogICAgewogICAgICAgIGlmIChpZHggPT0gMCkKICAg
ICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0uY29udCA9IGNvbnQ7CiAgICAg
ICAgZWxzZSBpZiAoaWR4ID09IHNlbGYtPmxlbiAtIDEpCiAgICAgICAgICAgIHNlbGYtPnNlZ21l
bnRzWzBdLmNvbnQgPSBjb250OwogICAgfQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9y
ZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KIyA0OTAgIi4vY3VydmVv
YmplY3QuYyIKaW50ClNLQ3VydmVfQXBwZW5kU2VnbWVudChTS0N1cnZlT2JqZWN0ICogc2VsZiwg
Q3VydmVTZWdtZW50ICogc2VnbWVudCkKewogICAgaWYgKCFjdXJ2ZV9ncm93KHNlbGYsIDEpKQog
ICAgICAgIHJldHVybiAwOwoKICAgIHNlbGYtPnNlZ21lbnRzW3NlbGYtPmxlbl0gPSAqc2VnbWVu
dDsKICAgIHNlbGYtPmxlbiArPSAxOwoKICAgIGN1cnZlX2NoZWNrX3N0YXRlKHNlbGYsIDEsIF9f
RlVOQ1RJT05fXyk7CgogICAgcmV0dXJuIDE7Cn0KCmludApTS0N1cnZlX0FwcGVuZExpbmUoU0tD
dXJ2ZU9iamVjdCAqIHNlbGYsIGRvdWJsZSB4LCBkb3VibGUgeSwgaW50IGNvbnRpbnVpdHkpCnsK
ICAgIEN1cnZlU2VnbWVudCBzZWdtZW50OwoKICAgIHNlZ21lbnQudHlwZSA9IDI7CiAgICBzZWdt
ZW50LmNvbnQgPSBjb250aW51aXR5OwogICAgc2VnbWVudC5zZWxlY3RlZCA9IDA7CiAgICBzZWdt
ZW50LnggPSB4OwogICAgc2VnbWVudC55ID0geTsKCiAgICByZXR1cm4gU0tDdXJ2ZV9BcHBlbmRT
ZWdtZW50KHNlbGYsICZzZWdtZW50KTsKfQoKaW50ClNLQ3VydmVfQXBwZW5kQmV6aWVyKFNLQ3Vy
dmVPYmplY3QgKiBzZWxmLCBkb3VibGUgeDEsIGRvdWJsZSB5MSwKICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIHgyLCBkb3VibGUgeTIsIGRvdWJsZSB4LCBkb3VibGUgeSwKICAgICAgICAgICAg
ICAgICAgICAgaW50IGNvbnRpbnVpdHkpCnsKICAgIEN1cnZlU2VnbWVudCBzZWdtZW50OwoKICAg
IHNlZ21lbnQudHlwZSA9IDE7CiAgICBzZWdtZW50LmNvbnQgPSBjb250aW51aXR5OwogICAgc2Vn
bWVudC5zZWxlY3RlZCA9IDA7CiAgICBzZWdtZW50LngxID0geDE7IHNlZ21lbnQueTEgPSB5MTsK
ICAgIHNlZ21lbnQueDIgPSB4Mjsgc2VnbWVudC55MiA9IHkyOwogICAgc2VnbWVudC54ID0geDsg
c2VnbWVudC55ID0geTsKCiAgICByZXR1cm4gU0tDdXJ2ZV9BcHBlbmRTZWdtZW50KHNlbGYsICZz
ZWdtZW50KTsKfQoKCgoKc3RhdGljIFB5T2JqZWN0ICogc2V0X25vZGVzX2FuZF9zZWdtZW50c19z
dHJpbmcgPSAoKHZvaWQgKikwKTsKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfY3JlYXRlX2Z1bGxf
dW5kbyhTS0N1cnZlT2JqZWN0ICogc2VsZikKewogICAgUHlPYmplY3QgKiB1bmRvX3NlZ21lbnRz
OwogICAgUHlPYmplY3QgKiByZXN1bHQ7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50czsKCiAg
ICBzZWdtZW50cyA9IG1hbGxvYyhzZWxmLT5hbGxvY2F0ZWQgKiBzaXplb2YoQ3VydmVTZWdtZW50
KSk7CiAgICBpZiAoIXNlZ21lbnRzKQogICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwoK
ICAgIG1lbWNweShzZWdtZW50cywgc2VsZi0+c2VnbWVudHMsIHNlbGYtPmFsbG9jYXRlZCAqIHNp
emVvZihDdXJ2ZVNlZ21lbnQpKTsKCiAgICB1bmRvX3NlZ21lbnRzID0gUHlDT2JqZWN0X0Zyb21W
b2lkUHRyKHNlZ21lbnRzLCBmcmVlKTsKICAgIGlmICghdW5kb19zZWdtZW50cykKICAgIHsKICAg
ICAgICBmcmVlKHNlZ21lbnRzKTsKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9Cgog
ICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT09paWkiLCBzZXRfbm9kZXNfYW5kX3NlZ21lbnRz
X3N0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kb19zZWdtZW50cywgc2VsZi0+
bGVuLCBzZWxmLT5hbGxvY2F0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmNs
b3NlZCk7CiAgICBpZiAoLS0odW5kb19zZWdtZW50cyktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2Ug
KCooKFB5T2JqZWN0ICopKHVuZG9fc2VnbWVudHMpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYykoKFB5
T2JqZWN0ICopKChQeU9iamVjdCAqKSh1bmRvX3NlZ21lbnRzKSkpOwoKICAgIHJldHVybiByZXN1
bHQ7Cn0KCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9fc2V0X25vZGVzX2FuZF9zZWdtZW50cyhT
S0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7CiAgICBpbnQgYWxsb2NhdGVk
ID0gLTEsIGxlbmd0aCA9IC0xLCBjbG9zZWQgPSAwOwogICAgUHlPYmplY3QgKiB1bmRvX3NlZ21l
bnRzID0gKCh2b2lkICopMCk7CiAgICBQeU9iamVjdCAqIHJlc3VsdDsKCiAgICBpZiAoIVB5QXJn
X1BhcnNlVHVwbGUoYXJncywgIk8haWlpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlD
T2JqZWN0X1R5cGUsICZ1bmRvX3NlZ21lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICZs
ZW5ndGgsICZhbGxvY2F0ZWQsICZjbG9zZWQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsK
CiAgICByZXN1bHQgPSBjdXJ2ZV9jcmVhdGVfZnVsbF91bmRvKHNlbGYpOwogICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlmICghY3VydmVfcmVhbGxvYyhz
ZWxmLCBhbGxvY2F0ZWQpKQogICAgewogICAgICAgIGlmICgtLShyZXN1bHQpLT5vYl9yZWZjbnQg
IT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShyZXN1bHQpKS0+b2JfdHlwZS0+dHBfZGVhbGxv
YykoKFB5T2JqZWN0ICopKChQeU9iamVjdCAqKShyZXN1bHQpKSk7CiAgICAgICAgcmV0dXJuICgo
dm9pZCAqKTApOwogICAgfQoKICAgIG1lbWNweShzZWxmLT5zZWdtZW50cywgUHlDT2JqZWN0X0Fz
Vm9pZFB0cih1bmRvX3NlZ21lbnRzKSwKICAgICAgICAgICBhbGxvY2F0ZWQgKiBzaXplb2YoQ3Vy
dmVTZWdtZW50KSk7CiAgICBzZWxmLT5hbGxvY2F0ZWQgPSBhbGxvY2F0ZWQ7CiAgICBzZWxmLT5s
ZW4gPSBsZW5ndGg7CiAgICBzZWxmLT5jbG9zZWQgPSBjbG9zZWQ7CgogICAgY3VydmVfY2hlY2tf
c3RhdGUoc2VsZiwgMSwgX19GVU5DVElPTl9fKTsKCiAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoK
c3RhdGljIFB5T2JqZWN0ICoKY3VydmVfaGl0X3BvaW50KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQ
eU9iamVjdCAqIGFyZ3MpCnsKICAgIFNLUmVjdE9iamVjdCAqIHJlY3Q7CiAgICBpbnQgaSwgcmVz
dWx0ID0gMDsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CgogICAgaWYgKCFQeUFyZ19QYXJz
ZVR1cGxlKGFyZ3MsICJPISIsICZTS1JlY3RUeXBlLCAmcmVjdCkpCiAgICAgICAgcmV0dXJuICgo
dm9pZCAqKTApOwoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsKICAgIGZvciAoaSA9IDA7
IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgewogICAgICAgIGlmIChTS1JlY3Rf
Q29udGFpbnNYWShyZWN0LCBzZWdtZW50LT54LCBzZWdtZW50LT55KSkKICAgICAgICAgICAgcmVz
dWx0ID0gMTsKICAgIH0KCiAgICByZXR1cm4gUHlJbnRfRnJvbUxvbmcocmVzdWx0KTsKfQojIDYz
NiAiLi9jdXJ2ZW9iamVjdC5jIgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9jb29yZF9yZWN0KFNL
Q3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIFNLUmVjdE9iamVjdCAq
IHJlY3QgPSAoKHZvaWQgKikwKTsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CiAgICBQeU9i
amVjdCAqIHRyYWZvID0gKCh2b2lkICopMCk7CiAgICBpbnQgaTsKCiAgICBpZiAoIVB5QXJnX1Bh
cnNlVHVwbGUoYXJncywgInxPISIsICZTS1RyYWZvVHlwZSwgJnRyYWZvKSkKICAgICAgICByZXR1
cm4gKCh2b2lkICopMCk7CgogICAgaWYgKHNlbGYtPmxlbiA9PSAwKQogICAgewogICAgICAgICgo
U0tSZWN0X0VtcHR5UmVjdCktPm9iX3JlZmNudCsrKTsKICAgICAgICByZXR1cm4gKFB5T2JqZWN0
KilTS1JlY3RfRW1wdHlSZWN0OwogICAgfQoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsK
ICAgIGlmICghdHJhZm8pCiAgICB7CiAgICAgICAgcmVjdCA9IChTS1JlY3RPYmplY3QqKVNLUmVj
dF9Gcm9tRG91YmxlKHNlZ21lbnQtPngsIHNlZ21lbnQtPnksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpOwogICAg
ICAgIGlmICghcmVjdCkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIHNl
Z21lbnQgKz0gMTsKICAgICAgICBmb3IgKGkgPSAxOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21l
bnQrKykKICAgICAgICB7CiAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0LCBzZWdtZW50LT54
LCBzZWdtZW50LT55KTsKICAgICAgICAgICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgU0tSZWN0X0FkZFhZKHJlY3QsIHNlZ21lbnQtPngxLCBz
ZWdtZW50LT55MSk7CiAgICAgICAgICAgICAgICBTS1JlY3RfQWRkWFkocmVjdCwgc2VnbWVudC0+
eDIsIHNlZ21lbnQtPnkyKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UK
ICAgIHsKICAgICAgICBTS0Nvb3JkIHgsIHk7CgogICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFko
dHJhZm8sIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksICZ4LCAmeSk7CiAgICAgICAgcmVjdCA9IChT
S1JlY3RPYmplY3QqKVNLUmVjdF9Gcm9tRG91YmxlKHgsIHksIHgsIHkpOwogICAgICAgIGlmICgh
cmVjdCkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgICAgICBzZWdtZW50ICs9
IDE7CiAgICAgICAgZm9yIChpID0gMTsgaSA8IHNlbGYtPmxlbjsgaSsrLCBzZWdtZW50KyspCiAg
ICAgICAgewogICAgICAgICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZKHRyYWZvLCBzZWdtZW50LT54
LCBzZWdtZW50LT55LCAmeCwgJnkpOwogICAgICAgICAgICBTS1JlY3RfQWRkWFkocmVjdCwgeCwg
eSk7CiAgICAgICAgICAgIGlmIChzZWdtZW50LT50eXBlID09IDEpCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngxLCBzZWdt
ZW50LT55MSwgJngsICZ5KTsKICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0LCB4LCB5
KTsKICAgICAgICAgICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngy
LCBzZWdtZW50LT55MiwgJngsICZ5KTsKICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0
LCB4LCB5KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAoUHlPYmpl
Y3QqKXJlY3Q7Cn0KCgoKCgoKCgoKCnN0YXRpYyB2b2lkCmFkZF9iZXppZXJfcmVjdChTS1JlY3RP
YmplY3QgKiByZWN0LAogICAgICAgICAgICAgICAgZG91YmxlIHAxeCwgZG91YmxlIHAxeSwgZG91
YmxlIHAyeCwgZG91YmxlIHAyeSwKICAgICAgICAgICAgICAgIGRvdWJsZSBwM3gsIGRvdWJsZSBw
M3ksIGRvdWJsZSBwNHgsIGRvdWJsZSBwNHkpCnsKICAgIGRvdWJsZSBkaXNjciwgZGVub20sIHA7
CgogICAgZGlzY3IgPSAocDF4KnA0eCAtIHAxeCpwM3ggLSBwMngqcDN4IC0gcDJ4KnA0eCArIHAy
eCpwMnggKyBwM3gqcDN4KTsKICAgIGlmIChkaXNjciA+PSAwKQogICAgewogICAgICAgIGRvdWJs
ZSBwMTMgPSAzICogcDF4LCBwMjMgPSAzICogcDJ4LCBwMzMgPSAzICogcDN4OwogICAgICAgIGRv
dWJsZSBjMSA9IHAyMyAtIHAxeCAtIHAzMyArIHA0eDsKICAgICAgICBkb3VibGUgYzIgPSBwMTMg
LSAyICogcDIzICsgcDMzOwogICAgICAgIGRvdWJsZSBjMyA9IHAyMyAtIHAxMzsKICAgICAgICBk
b3VibGUgdDsKCiAgICAgICAgZGVub20gPSAocDF4IC0gMyAqIHAyeCArIDMgKiBwM3ggLSBwNHgp
OwogICAgICAgIGlmIChkZW5vbSkKICAgICAgICB7CiAgICAgICAgICAgIGRpc2NyID0gc3FydChk
aXNjcik7CiAgICAgICAgICAgIHAgPSBwMXggLSAyICogcDJ4ICsgcDN4OwoKICAgICAgICAgICAg
dCA9IChwICsgZGlzY3IpIC8gZGVub207CiAgICAgICAgICAgIGlmICgwIDwgdCAmJiB0IDwgMSkK
ICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRYKHJlY3QsICgoYzEgKiB0ICsgYzIpICogdCArIGMz
KSAqIHQgKyBwMXgpOwogICAgICAgICAgICB0ID0gKHAgLSBkaXNjcikgLyBkZW5vbTsKICAgICAg
ICAgICAgaWYgKDAgPCB0ICYmIHQgPCAxKQogICAgICAgICAgICAgICAgU0tSZWN0X0FkZFgocmVj
dCwgKChjMSAqIHQgKyBjMikgKiB0ICsgYzMpICogdCArIHAxeCk7CiAgICAgICAgfQogICAgICAg
IGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGRlbm9tID0gcDF4IC0gMiAqIHAyeCArIHAzeDsK
ICAgICAgICAgICAgaWYgKGRlbm9tKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0ID0g
MC41ICogKHAxeCAtIHAyeCkgLyBkZW5vbTsKICAgICAgICAgICAgICAgIGlmICgwIDwgdCAmJiB0
IDwgMSkKICAgICAgICAgICAgICAgICAgICBTS1JlY3RfQWRkWChyZWN0LCAoKGMxICogdCArIGMy
KSAqIHQgKyBjMykgKiB0ICsgcDF4KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAg
ICBkaXNjciA9IChwMXkqcDR5IC0gcDF5KnAzeSAtIHAyeSpwM3kgLSBwMnkqcDR5ICsgcDJ5KnAy
eSArIHAzeSpwM3kpOwogICAgaWYgKGRpc2NyID49IDApCiAgICB7CiAgICAgICAgZG91YmxlIHAx
MyA9IDMgKiBwMXksIHAyMyA9IDMgKiBwMnksIHAzMyA9IDMgKiBwM3k7CiAgICAgICAgZG91Ymxl
IGMxID0gcDIzIC0gcDF5IC0gcDMzICsgcDR5OwogICAgICAgIGRvdWJsZSBjMiA9IHAxMyAtIDIg
KiBwMjMgKyBwMzM7CiAgICAgICAgZG91YmxlIGMzID0gcDIzIC0gcDEzOwogICAgICAgIGRvdWJs
ZSB0OwoKICAgICAgICBkZW5vbSA9IChwMXkgLSAzICogcDJ5ICsgMyAqIHAzeSAtIHA0eSk7CiAg
ICAgICAgaWYgKGRlbm9tKQogICAgICAgIHsKICAgICAgICAgICAgZGlzY3IgPSBzcXJ0KGRpc2Ny
KTsKICAgICAgICAgICAgcCA9IHAxeSAtIDIgKiBwMnkgKyBwM3k7CgogICAgICAgICAgICB0ID0g
KHAgKyBkaXNjcikgLyBkZW5vbTsKICAgICAgICAgICAgaWYgKDAgPCB0ICYmIHQgPCAxKQogICAg
ICAgICAgICAgICAgU0tSZWN0X0FkZFkocmVjdCwgKChjMSAqIHQgKyBjMikgKiB0ICsgYzMpICog
dCArIHAxeSk7CiAgICAgICAgICAgIHQgPSAocCAtIGRpc2NyKSAvIGRlbm9tOwogICAgICAgICAg
ICBpZiAoMCA8IHQgJiYgdCA8IDEpCiAgICAgICAgICAgICAgICBTS1JlY3RfQWRkWShyZWN0LCAo
KGMxICogdCArIGMyKSAqIHQgKyBjMykgKiB0ICsgcDF5KTsKICAgICAgICB9CiAgICAgICAgZWxz
ZQogICAgICAgIHsKICAgICAgICAgICAgZGVub20gPSBwMXkgLSAyICogcDJ5ICsgcDN5OwogICAg
ICAgICAgICBpZiAoZGVub20pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHQgPSAwLjUg
KiAocDF5IC0gcDJ5KSAvIGRlbm9tOwogICAgICAgICAgICAgICAgaWYgKDAgPCB0ICYmIHQgPCAx
KQogICAgICAgICAgICAgICAgICAgIFNLUmVjdF9BZGRZKHJlY3QsICgoYzEgKiB0ICsgYzIpICog
dCArIGMzKSAqIHQgKyBwMXkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKfQoKCnN0
YXRpYyBQeU9iamVjdCAqCmN1cnZlX2FjY3VyYXRlX3JlY3QoU0tDdXJ2ZU9iamVjdCAqIHNlbGYs
IFB5T2JqZWN0ICogYXJncykKewogICAgU0tSZWN0T2JqZWN0ICogcmVjdCA9ICgodm9pZCAqKTAp
OwogICAgQ3VydmVTZWdtZW50ICogc2VnbWVudDsKICAgIFB5T2JqZWN0ICogdHJhZm8gPSAoKHZv
aWQgKikwKTsKICAgIGludCBpOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8h
IiwgJlNLVHJhZm9UeXBlLCAmdHJhZm8pKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAg
ICBpZiAoc2VsZi0+bGVuID09IDApCiAgICB7CiAgICAgICAgKChTS1JlY3RfRW1wdHlSZWN0KS0+
b2JfcmVmY250KyspOwogICAgICAgIHJldHVybiAoUHlPYmplY3QqKVNLUmVjdF9FbXB0eVJlY3Q7
OwogICAgfQoKCiAgICBzZWdtZW50ID0gc2VsZi0+c2VnbWVudHM7CiAgICBpZiAoIXRyYWZvKQog
ICAgewogICAgICAgIHJlY3QgPSAoU0tSZWN0T2JqZWN0KilTS1JlY3RfRnJvbURvdWJsZShzZWdt
ZW50LT54LCBzZWdtZW50LT55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWdtZW50LT54LCBzZWdtZW50LT55KTsKICAgICAgICBpZiAoIXJlY3QpCiAg
ICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICAgICAgc2VnbWVudCArPSAxOwogICAg
ICAgIGZvciAoaSA9IDE7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgICAgIHsK
ICAgICAgICAgICAgU0tSZWN0X0FkZFhZKHJlY3QsIHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpOwog
ICAgICAgICAgICBpZiAoc2VnbWVudC0+dHlwZSA9PSAxKQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICBhZGRfYmV6aWVyX3JlY3QocmVjdCwgc2VnbWVudFstMV0ueCwgc2VnbWVudFstMV0u
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LT54MSwgc2VnbWVudC0+
eTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC0+eDIsIHNlZ21lbnQt
PnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQtPngsIHNlZ21lbnQt
PnkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAg
IFNLQ29vcmQgeCwgeTsKCiAgICAgICAgU0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVu
dC0+eCwgc2VnbWVudC0+eSwgJngsICZ5KTsKICAgICAgICByZWN0ID0gKFNLUmVjdE9iamVjdCop
U0tSZWN0X0Zyb21Eb3VibGUoeCwgeSwgeCwgeSk7CiAgICAgICAgaWYgKCFyZWN0KQogICAgICAg
ICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgICAgIHNlZ21lbnQgKz0gMTsKICAgICAgICBm
b3IgKGkgPSAxOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgICAgICB7CiAgICAg
ICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngsIHNlZ21lbnQtPnks
ICZ4LCAmeSk7CiAgICAgICAgICAgIFNLUmVjdF9BZGRYWShyZWN0LCB4LCB5KTsKICAgICAgICAg
ICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
U0tDb29yZCBwMXgsIHAxeSwgcDJ4LCBwMnksIHAzeCwgcDN5OwogICAgICAgICAgICAgICAgU0tU
cmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudFstMV0ueCwgc2VnbWVudFstMV0ueSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnAxeCwgJnAxeSk7CiAgICAgICAgICAg
ICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZKHRyYWZvLCBzZWdtZW50LT54MSwgc2VnbWVudC0+eTEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwMngsICZwMnkpOwogICAgICAg
ICAgICAgICAgU0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudC0+eDIsIHNlZ21lbnQt
PnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcDN4LCAmcDN5KTsKICAg
ICAgICAgICAgICAgIGFkZF9iZXppZXJfcmVjdChyZWN0LCBwMXgsIHAxeSwgcDJ4LCBwMnksIHAz
eCwgcDN5LCB4LCB5KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAo
UHlPYmplY3QqKXJlY3Q7Cn0KCgoKCgoKCmludApTS0N1cnZlX1RyYW5zZm9ybShTS0N1cnZlT2Jq
ZWN0ICogc2VsZiwgUHlPYmplY3QgKiB0cmFmbykKewogICAgaW50IGk7CiAgICBDdXJ2ZVNlZ21l
bnQgKiBzZWdtZW50OwoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsKICAgIGZvciAoaSA9
IDA7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgewogICAgICAgIFNLVHJhZm9f
VHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmc2VnbWVudC0+eCwgJnNlZ21lbnQtPnkpOwogICAgICAgIGlmIChzZWdt
ZW50LT50eXBlID09IDEpCiAgICAgICAgewogICAgICAgICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZ
KHRyYWZvLCBzZWdtZW50LT54MSwgc2VnbWVudC0+eTEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnNlZ21lbnQtPngxLCAmc2VnbWVudC0+eTEpOwogICAgICAgICAgICBTS1RyYWZv
X1RyYW5zZm9ybVhZKHRyYWZvLCBzZWdtZW50LT54Miwgc2VnbWVudC0+eTIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnNlZ21lbnQtPngyLCAmc2VnbWVudC0+eTIpOwogICAgICAg
IH0KICAgIH0KICAgIHJldHVybiAwOwp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9hcHBseV90
cmFmbyhTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7CiAgICBQeU9iamVj
dCAqIHRyYWZvOwogICAgUHlPYmplY3QgKiB1bmRvOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBs
ZShhcmdzLCAiTyEiLCAmU0tUcmFmb1R5cGUsICZ0cmFmbykpCiAgICAgICAgcmV0dXJuICgodm9p
ZCAqKTApOwoKICAgIHVuZG8gPSBjdXJ2ZV9jcmVhdGVfZnVsbF91bmRvKHNlbGYpOwogICAgaWYg
KCF1bmRvKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBTS0N1cnZlX1RyYW5zZm9y
bShzZWxmLCB0cmFmbyk7CgogICAgcmV0dXJuIHVuZG87Cn0KCnN0YXRpYyBQeU9iamVjdCAqCmN1
cnZlX2FwcGx5X3RyYW5zbGF0aW9uKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFy
Z3MpCnsKICAgIGRvdWJsZSB4LCB5OwogICAgaW50IGk7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdt
ZW50OwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZGQiLCAmeCwgJnkpKQogICAg
ewogICAgICAgIFB5T2JqZWN0ICogc2VxdWVuY2U7CiAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAg
ICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8iLCAmc2VxdWVuY2UpKQogICAgICAg
ICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgaWYgKCFza3BvaW50X2V4dHJhY3RfeHko
c2VxdWVuY2UsICZ4LCAmeSkpCiAgICAgICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmco
UHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgaXMgbmVpdGhl
ciBudW1iZXIgbm9yIHNlcXVlbmNlIG9mIHR3byBudW1iZXJzIik7CiAgICAgICAgICAgIHJldHVy
biAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICB9CgoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdt
ZW50czsKICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAg
ewogICAgICAgIHNlZ21lbnQtPnggKz0geDsKICAgICAgICBzZWdtZW50LT55ICs9IHk7CiAgICAg
ICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkKICAgICAgICB7CiAgICAgICAgICAgIHNlZ21lbnQt
PngxICs9IHg7CiAgICAgICAgICAgIHNlZ21lbnQtPnkxICs9IHk7CiAgICAgICAgICAgIHNlZ21l
bnQtPngyICs9IHg7CiAgICAgICAgICAgIHNlZ21lbnQtPnkyICs9IHk7CiAgICAgICAgfQogICAg
fQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZf
UHlfTm9uZVN0cnVjdCk7Cn0KCgoKCgoKCnN0YXRpYyBQeU9iamVjdCAqIHVuZG9fY2xvc2Vfc3Ry
aW5nID0gKCh2b2lkICopMCk7CnN0YXRpYyBQeU9iamVjdCAqCmN1cnZlX191bmRvX2Nsb3NlKFNL
Q3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGludCBjbG9zZWQgPSAw
LCBpdGVtcDsKICAgIGRvdWJsZSBsYXN0X3gsIGxhc3RfeSwgZHRlbXA7CiAgICBpbnQgZmlyc3Rf
Y29udCwgbGFzdF9jb250OwogICAgaW50IGxhc3RpZHggPSBzZWxmLT5sZW4gLSAxOwoKICAgIGlm
ICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpZGQiLCAmY2xvc2VkLCAmZmlyc3RfY29udCwg
Jmxhc3RfY29udCwKICAgICAgICAgICAgICAgICAgICAgICAgICAmbGFzdF94LCAmbGFzdF95KSkK
ICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgaXRlbXAgPSBzZWxmLT5zZWdtZW50c1sw
XS5jb250OyBzZWxmLT5zZWdtZW50c1swXS5jb250ID0gZmlyc3RfY29udDsgZmlyc3RfY29udCA9
IGl0ZW1wOwogICAgZHRlbXAgPSBzZWxmLT5zZWdtZW50c1tsYXN0aWR4XS54OyBzZWxmLT5zZWdt
ZW50c1tsYXN0aWR4XS54ID0gbGFzdF94OyBsYXN0X3ggPSBkdGVtcDsKICAgIGR0ZW1wID0gc2Vs
Zi0+c2VnbWVudHNbbGFzdGlkeF0ueTsgc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueSA9IGxhc3Rf
eTsgbGFzdF95ID0gZHRlbXA7CiAgICBpdGVtcCA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLmNv
bnQ7IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLmNvbnQgPSBsYXN0X2NvbnQ7IGxhc3RfY29udCA9
IGl0ZW1wOwoKICAgIHNlbGYtPmNsb3NlZCA9IGNsb3NlZDsKCiAgICBpZiAoc2VsZi0+c2VnbWVu
dHNbbGFzdGlkeF0udHlwZSA9PSAxKQogICAgewogICAgICAgIHNlbGYtPnNlZ21lbnRzW2xhc3Rp
ZHhdLngyICs9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLnggLSBsYXN0X3g7CiAgICAgICAgc2Vs
Zi0+c2VnbWVudHNbbGFzdGlkeF0ueTIgKz0gc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueSAtIGxh
c3RfeTsKICAgIH0KCiAgICBjdXJ2ZV9jaGVja19zdGF0ZShzZWxmLCAxLCBfX0ZVTkNUSU9OX18p
OwoKICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPaWlpZGQiLCB1bmRvX2Nsb3NlX3N0cmluZywg
IXNlbGYtPmNsb3NlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbnQsIGxhc3Rf
Y29udCwgbGFzdF94LCBsYXN0X3kpOwp9CgoKCmludApTS0N1cnZlX0Nsb3NlUGF0aChTS0N1cnZl
T2JqZWN0ICogc2VsZikKewogICAgZG91YmxlIGxhc3RfeCwgbGFzdF95OwogICAgaW50IGxhc3Rp
ZHggPSBzZWxmLT5sZW4gLSAxOwoKICAgIGlmIChsYXN0aWR4IDw9IDApCiAgICB7CiAgICAgICAg
cmV0dXJuIDA7CiAgICB9CgogICAgbGFzdF94ID0gc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueDsK
ICAgIGxhc3RfeSA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLnk7CiAgICBzZWxmLT5zZWdtZW50
c1tsYXN0aWR4XS54ID0gc2VsZi0+c2VnbWVudHNbMF0ueDsKICAgIHNlbGYtPnNlZ21lbnRzW2xh
c3RpZHhdLnkgPSBzZWxmLT5zZWdtZW50c1swXS55OwogICAgc2VsZi0+c2VnbWVudHNbMF0uY29u
dCA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLmNvbnQgPSAwOwogICAgc2VsZi0+Y2xvc2VkID0g
MTsKCiAgICBpZiAoc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0udHlwZSA9PSAxKQogICAgewogICAg
ICAgIHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLngyICs9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhd
LnggLSBsYXN0X3g7CiAgICAgICAgc2VsZi0+c2VnbWVudHNbbGFzdGlkeF0ueTIgKz0gc2VsZi0+
c2VnbWVudHNbbGFzdGlkeF0ueSAtIGxhc3RfeTsKICAgIH0KCiAgICBjdXJ2ZV9jaGVja19zdGF0
ZShzZWxmLCAxLCBfX0ZVTkNUSU9OX18pOwogICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBQeU9iamVj
dCAqCmN1cnZlX2Nsb3NlX2NvbnRvdXIoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICog
YXJncykKewogICAgZG91YmxlIGxhc3RfeCwgbGFzdF95OwogICAgaW50IGZpcnN0X2NvbnQsIGxh
c3RfY29udDsKICAgIGludCBsYXN0aWR4ID0gc2VsZi0+bGVuIC0gMTsKCiAgICBpZiAobGFzdGlk
eCA8PSAwKQogICAgewogICAgICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7
CiAgICAgICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwogICAgfQoKICAgIGZpcnN0X2NvbnQg
PSBzZWxmLT5zZWdtZW50c1swXS5jb250OwogICAgbGFzdF94ID0gc2VsZi0+c2VnbWVudHNbbGFz
dGlkeF0ueDsKICAgIGxhc3RfeSA9IHNlbGYtPnNlZ21lbnRzW2xhc3RpZHhdLnk7CiAgICBsYXN0
X2NvbnQgPSBzZWxmLT5zZWdtZW50c1tsYXN0aWR4XS5jb250OwoKICAgIFNLQ3VydmVfQ2xvc2VQ
YXRoKHNlbGYpOwoKICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPaWlpZGQiLCB1bmRvX2Nsb3Nl
X3N0cmluZywgMCwgZmlyc3RfY29udCwgbGFzdF9jb250LAogICAgICAgICAgICAgICAgICAgICAg
ICAgbGFzdF94LCBsYXN0X3kpOwp9CgoKCgoKCnN0YXRpYyBpbnQKc2F2ZV9zZWdtZW50KFB5T2Jq
ZWN0ICogbGlzdCwgaW50IGksIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQpCnsKICAgIFB5T2JqZWN0
ICogdHVwbGU7CiAgICBpZiAoc2VnbWVudC0+dHlwZSA9PSAxKQogICAgewogICAgICAgIHR1cGxl
ID0gUHlfQnVpbGRWYWx1ZSgiZGRkZGRkaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlZ21lbnQtPngxLCBzZWdtZW50LT55MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VnbWVudC0+eDIsIHNlZ21lbnQtPnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWdtZW50LT54LCBzZWdtZW50LT55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdt
ZW50LT5jb250KTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICB0dXBsZSA9IFB5X0J1aWxk
VmFsdWUoImRkaSIsIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksIHNlZ21lbnQtPmNvbnQpOwogICAg
fQogICAgaWYgKCF0dXBsZSkKICAgIHsKICAgICAgICBpZiAoLS0obGlzdCktPm9iX3JlZmNudCAh
PSAwKSA7IGVsc2UgKCooKFB5T2JqZWN0ICopKGxpc3QpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYyko
KFB5T2JqZWN0ICopKChQeU9iamVjdCAqKShsaXN0KSkpOwogICAgICAgIHJldHVybiAwOwogICAg
fQogICAgaWYgKFB5TGlzdF9TZXRJdGVtKGxpc3QsIGksIHR1cGxlKSA9PSAtMSkKICAgIHsKICAg
ICAgICBpZiAoLS0odHVwbGUpLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAq
KSh0dXBsZSkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICop
KHR1cGxlKSkpOwogICAgICAgIGlmICgtLShsaXN0KS0+b2JfcmVmY250ICE9IDApIDsgZWxzZSAo
KigoUHlPYmplY3QgKikobGlzdCkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKiko
KFB5T2JqZWN0ICopKGxpc3QpKSk7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4g
MTsKfQojIDEwODMgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfZ2V0
X3NhdmUoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgQ3VydmVT
ZWdtZW50ICogc2VnbWVudDsKICAgIFB5T2JqZWN0ICogbGlzdDsKICAgIGludCBpOwoKICAgIGxp
c3QgPSBQeUxpc3RfTmV3KHNlbGYtPmxlbik7CiAgICBpZiAoIWxpc3QpCiAgICAgICAgcmV0dXJu
ICgodm9pZCAqKTApOwoKICAgIHNlZ21lbnQgPSBzZWxmLT5zZWdtZW50czsKCiAgICBmb3IgKGkg
PSAwOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsKICAgICAgICBpZiAoIXNh
dmVfc2VnbWVudChsaXN0LCBpLCBzZWdtZW50KSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAq
KTApOwogICAgfQogICAgcmV0dXJuIGxpc3Q7Cn0KCgpzdGF0aWMgaW50CndyaXRlX3NlZ21lbnQo
RklMRSAqIGZpbGUsIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQpCnsKICAgIGludCByZXN1bHQgPSAw
OwoKICAgIGlmIChzZWdtZW50LT50eXBlID09IDEpCiAgICB7CiAgICAgICAgcmVzdWx0ID0gZnBy
aW50ZihmaWxlLCAiYmMoJWcsJWcsJWcsJWcsJWcsJWcsJWQpXG4iLAogICAgICAgICAgICAgICAg
ICAgICAgICAgc2VnbWVudC0+eDEsIHNlZ21lbnQtPnkxLCBzZWdtZW50LT54Miwgc2VnbWVudC0+
eTIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LT54LCBzZWdtZW50LT55LCBzZWdt
ZW50LT5jb250KTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICByZXN1bHQgPSBmcHJpbnRm
KGZpbGUsICJicyglZywlZywlZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50
LT54LCBzZWdtZW50LT55LCBzZWdtZW50LT5jb250KTsKICAgIH0KCiAgICBpZiAocmVzdWx0IDwg
MCkKICAgIHsKICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAg
ICAgcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3RhdGljIFB5T2JqZWN0ICoKY3Vy
dmVfd3JpdGVfdG9fZmlsZShTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7
CiAgICBQeU9iamVjdCAqIHB5ZmlsZSA9ICgodm9pZCAqKTApOwogICAgRklMRSAqIGZpbGUgPSAo
KHZvaWQgKikwKTsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQ7CiAgICBpbnQgaTsKCiAgICBp
ZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hIiwgJlB5RmlsZV9UeXBlLCAmcHlmaWxlKSkK
ICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgZmlsZSA9IFB5RmlsZV9Bc0ZpbGUocHlm
aWxlKTsKCiAgICBzZWdtZW50ID0gc2VsZi0+c2VnbWVudHM7CiAgICBmb3IgKGkgPSAwOyBpIDwg
c2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsKICAgICAgICBpZiAoIXdyaXRlX3NlZ21l
bnQoZmlsZSwgc2VnbWVudCkpCiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgIH0K
ICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlf
Tm9uZVN0cnVjdCk7Cn0KCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfYXBwZW5kX3N0cmFpZ2h0
KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGRvdWJsZSB4LCB5
OwogICAgaW50IGNvbnQgPSAwOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZGR8
aSIsICZ4LCAmeSwgJmNvbnQpKQogICAgewogICAgICAgIFB5T2JqZWN0ICogc2VxdWVuY2U7CiAg
ICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywg
Ik98aSIsICZzZXF1ZW5jZSwgJmNvbnQpKQogICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7
CiAgICAgICAgaWYgKCFza3BvaW50X2V4dHJhY3RfeHkoc2VxdWVuY2UsICZ4LCAmeSkpCiAgICAg
ICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAiZmly
c3QgYXJndW1lbnQgaXMgbmVpdGhlciBudW1iZXIgbm9yIHNlcXVlbmNlIG9mIHR3byBudW1iZXJz
Iik7CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICB9CgogICAg
aWYgKCFTS0N1cnZlX0FwcGVuZExpbmUoc2VsZiwgeCwgeSwgY29udCkpCiAgICAgICAgcmV0dXJu
ICgodm9pZCAqKTApOwoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAg
ICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9h
cHBlbmRfY3VydmUoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAg
aW50IGNvbnQgPSAwOwogICAgZG91YmxlIHgsIHksIHgxLCB5MSwgeDIsIHkyOwoKICAgIGlmIChQ
eVR1cGxlX1NpemUoYXJncykgPiA0KQogICAgewogICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBs
ZShhcmdzLCAiZGRkZGRkfGkiLCAmeDEsICZ5MSwgJngyLCAmeTIsICZ4LCAmeSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmNvbnQpKQogICAgICAgICAgICByZXR1cm4gKCh2b2lkICop
MCk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgUHlPYmplY3QgKnAxLCAqcDIsICpwMzsK
ICAgICAgICBpbnQgcmVzdWx0OwoKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywg
Ik9PT3xpIiwgJnAxLCAmcDIsICZwMywgJmNvbnQpKQogICAgICAgICAgICByZXR1cm4gKCh2b2lk
ICopMCk7CgogICAgICAgIHJlc3VsdCA9IHNrcG9pbnRfZXh0cmFjdF94eShwMSwgJngxLCAmeTEp
OwogICAgICAgIHJlc3VsdCA9IHJlc3VsdCAmJiBza3BvaW50X2V4dHJhY3RfeHkocDIsICZ4Miwg
JnkyKTsKICAgICAgICByZXN1bHQgPSByZXN1bHQgJiYgc2twb2ludF9leHRyYWN0X3h5KHAzLCAm
eCwgJnkpOwogICAgICAgIGlmICghcmVzdWx0KQogICAgICAgIHsKICAgICAgICAgICAgUHlFcnJf
U2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInRocmVlIHBvaW50cyBleHBlY3RlZCIpOwogICAg
ICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICghU0tD
dXJ2ZV9BcHBlbmRCZXppZXIoc2VsZiwgeDEsIHkxLCB4MiwgeTIsIHgsIHksIGNvbnQpKQogICAg
ICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICAoKCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVm
Y250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwp9CgoKc3RhdGljIFB5T2JqZWN0
ICoKY3VydmVfYXBwZW5kX3NlZ21lbnQoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICog
YXJncykKewogICAgZG91YmxlIHgsIHksIHgxLCB5MSwgeDIsIHkyOwogICAgaW50IGNvbnQgPSAw
OwogICAgaW50IHR5cGU7CiAgICBQeU9iamVjdCAqIHAsICpwMSwgKnAyLCAqdHVwbGU7CgogICAg
aWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT098aSIsICZ0eXBlLCAmdHVwbGUsICZwLCAm
Y29udCkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlmICghc2twb2ludF9leHRy
YWN0X3h5KHAsICZ4LCAmeSkpCiAgICB7CiAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5
cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgInRoaXJkIGFyZ3VtZW50IG11c3QgYmUg
YSBwb2ludCBzcGVjIik7CiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQoKICAgIGlm
ICh0eXBlID09IDIpCiAgICB7CiAgICAgICAgaWYgKCFTS0N1cnZlX0FwcGVuZExpbmUoc2VsZiwg
eCwgeSwgY29udCkpCiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgIH0KICAgIGVs
c2UgaWYgKHR5cGUgPT0gMSkKICAgIHsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUodHVw
bGUsICJPTyIsICZwMSwgJnAyKSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAg
ICAgIGlmICghc2twb2ludF9leHRyYWN0X3h5KHAxLCAmeDEsICZ5MSkKICAgICAgICAgICAgfHwg
IXNrcG9pbnRfZXh0cmFjdF94eShwMiwgJngyLCAmeTIpKQogICAgICAgIHsKICAgICAgICAgICAg
UHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJmb3IgYmV6aWVyIHNlZ21lbnRzLCBzZWNvbmQgYXJndW1lbnQgIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzZXF1ZW5jZSBvZiB0d28gcG9pbnQgc3BlY3MgIik7
CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CgogICAgICAgIGlmICgh
U0tDdXJ2ZV9BcHBlbmRCZXppZXIoc2VsZiwgeDEsIHkxLCB4MiwgeTIsIHgsIHksIGNvbnQpKQog
ICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9CgogICAgKCgoJl9QeV9Ob25lU3Ry
dWN0KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQoKc3Rh
dGljIFB5T2JqZWN0ICoKY3VydmVfc2V0X3N0cmFpZ2h0KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQ
eU9iamVjdCAqIGFyZ3MpCnsKICAgIGRvdWJsZSB4LCB5OwogICAgaW50IGlkeCwgY29udCA9IDA7
CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpZGR8aSIsICZpZHgsICZ4LCAmeSwg
JmNvbnQpKQogICAgewogICAgICAgIFB5T2JqZWN0ICogc2VxdWVuY2U7CiAgICAgICAgUHlFcnJf
Q2xlYXIoKTsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPfGkiLCAmaWR4
LCAmc2VxdWVuY2UsICZjb250KSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAg
ICAgIGlmICghc2twb2ludF9leHRyYWN0X3h5KHNlcXVlbmNlLCAmeCwgJnkpKQogICAgICAgIHsK
ICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgImZpcnN0IGFy
Z3VtZW50IGlzIG5laXRoZXIgbnVtYmVyIG5vciBzZXF1ZW5jZSBvZiB0d28gbnVtYmVycyIpOwog
ICAgICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgfQogICAgfQoKICAgIGlkeCA9
IGNoZWNrX2luZGV4KHNlbGYsIGlkeCwgIlNldExpbmUiKTsKICAgIGlmIChpZHggPCAwKQogICAg
ICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLnR5cGUgPSAy
OwogICAgc2VsZi0+c2VnbWVudHNbaWR4XS5jb250ID0gY29udDsKICAgIHNlbGYtPnNlZ21lbnRz
W2lkeF0ueCA9IHg7CiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLnkgPSB5OwoKICAgIGlmIChzZWxm
LT5jbG9zZWQpCiAgICB7CiAgICAgICAgaWYgKGlkeCA9PSAwKQogICAgICAgIHsKICAgICAgICAg
ICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0ueCA9IHg7CiAgICAgICAgICAgIHNlbGYt
PnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLnkgPSB5OwogICAgICAgICAgICBzZWxmLT5zZWdtZW50
c1tzZWxmLT5sZW4gLSAxXS5jb250ID0gY29udDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAo
aWR4ID09IHNlbGYtPmxlbiAtIDEpCiAgICAgICAgewogICAgICAgICAgICBzZWxmLT5zZWdtZW50
c1swXS54ID0geDsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0ueSA9IHk7CiAgICAgICAg
ICAgIHNlbGYtPnNlZ21lbnRzWzBdLmNvbnQgPSBjb250OwogICAgICAgIH0KICAgIH0KCiAgICAo
KCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVmY250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVT
dHJ1Y3QpOwp9CgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfc2V0X2N1cnZlKFNLQ3VydmVPYmpl
Y3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGludCBpZHgsIGNvbnQgPSAwOwogICAg
ZG91YmxlIHgsIHksIHgxLCB5MSwgeDIsIHkyOwoKICAgIGlmIChQeVR1cGxlX1NpemUoYXJncykg
PiA1KQogICAgewogICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWRkZGRkZHxp
IiwgJmlkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJngxLCAmeTEsICZ4MiwgJnky
LCAmeCwgJnksICZjb250KSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQog
ICAgZWxzZQogICAgewogICAgICAgIFB5T2JqZWN0ICpwMSwgKnAyLCAqcDM7CiAgICAgICAgaW50
IHJlc3VsdDsKCiAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT09PfGkiLCAm
aWR4LCAmcDEsICZwMiwgJnAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udCkp
CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICAgICAgcmVzdWx0ID0gc2twb2lu
dF9leHRyYWN0X3h5KHAxLCAmeDEsICZ5MSk7CiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICYmIHNr
cG9pbnRfZXh0cmFjdF94eShwMiwgJngyLCAmeTIpOwogICAgICAgIHJlc3VsdCA9IHJlc3VsdCAm
JiBza3BvaW50X2V4dHJhY3RfeHkocDMsICZ4LCAmeSk7CiAgICAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAidGhy
ZWUgcG9pbnRzIGV4cGVjdGVkIik7CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAg
ICAgICB9CiAgICB9CgogICAgaWR4ID0gY2hlY2tfaW5kZXgoc2VsZiwgaWR4LCAiU2V0QmV6aWVy
Iik7CiAgICBpZiAoaWR4IDwgMCkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgoKICAgIHNl
bGYtPnNlZ21lbnRzW2lkeF0udHlwZSA9IDE7CiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLmNvbnQg
PSBjb250OwogICAgc2VsZi0+c2VnbWVudHNbaWR4XS54ID0geDsgc2VsZi0+c2VnbWVudHNbaWR4
XS55ID0geTsKICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0ueDEgPSB4MTsgc2VsZi0+c2VnbWVudHNb
aWR4XS55MSA9IHkxOwogICAgc2VsZi0+c2VnbWVudHNbaWR4XS54MiA9IHgyOyBzZWxmLT5zZWdt
ZW50c1tpZHhdLnkyID0geTI7CgogICAgaWYgKHNlbGYtPmNsb3NlZCkKICAgIHsKICAgICAgICBp
ZiAoaWR4ID09IDApCiAgICAgICAgewogICAgICAgICAgICBzZWxmLT5zZWdtZW50c1tzZWxmLT5s
ZW4gLSAxXS54ID0geDsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0u
eSA9IHk7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLmNvbnQgPSBj
b250OwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChpZHggPT0gc2VsZi0+bGVuIC0gMSkKICAg
ICAgICB7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzWzBdLnggPSB4OwogICAgICAgICAgICBz
ZWxmLT5zZWdtZW50c1swXS55ID0geTsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0uY29u
dCA9IGNvbnQ7CiAgICAgICAgfQogICAgfQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5vYl9y
ZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCgpzdGF0aWMgUHlPYmpl
Y3QgKgpjdXJ2ZV9zZXRfc2VnbWVudChTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBh
cmdzKQp7CiAgICBkb3VibGUgeCwgeSwgeDEsIHkxLCB4MiwgeTI7CiAgICBpbnQgY29udCA9IDA7
CiAgICBpbnQgaWR4LCB0eXBlOwogICAgUHlPYmplY3QgKiBwLCAqcDEsICpwMiwgKnR1cGxlOwoK
ICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU9PfGkiLCAmaWR4LCAmdHlwZSwgJnR1
cGxlLCAmcCwgJmNvbnQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBpZiAoIXNr
cG9pbnRfZXh0cmFjdF94eShwLCAmeCwgJnkpKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmlu
ZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0aGlyZCBhcmd1bWVu
dCBtdXN0IGJlIGEgcG9pbnQgc3BlYyIpOwogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAg
IH0KCgogICAgaWR4ID0gY2hlY2tfaW5kZXgoc2VsZiwgaWR4LCAiU2V0U2VnbWVudCIpOwogICAg
aWYgKGlkeCA8IDApCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIHNlbGYtPnNlZ21l
bnRzW2lkeF0udHlwZSA9IDI7CiAgICBzZWxmLT5zZWdtZW50c1tpZHhdLmNvbnQgPSBjb250Owog
ICAgc2VsZi0+c2VnbWVudHNbaWR4XS54ID0geDsKICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0ueSA9
IHk7CgogICAgaWYgKHR5cGUgPT0gMSkKICAgIHsKICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVw
bGUodHVwbGUsICJPTyIsICZwMSwgJnAyKSkKICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTAp
OwogICAgICAgIGlmICghc2twb2ludF9leHRyYWN0X3h5KHAxLCAmeDEsICZ5MSkKICAgICAgICAg
ICAgfHwgIXNrcG9pbnRfZXh0cmFjdF94eShwMiwgJngyLCAmeTIpKQogICAgICAgIHsKICAgICAg
ICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmb3IgYmV6aWVyIHNlZ21lbnRzLCBzZWNvbmQgYXJndW1lbnQgIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzZXF1ZW5jZSBvZiB0d28gcG9pbnQgc3Bl
Y3MgIik7CiAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CgogICAgICAg
IHNlbGYtPnNlZ21lbnRzW2lkeF0ueDEgPSB4MTsgc2VsZi0+c2VnbWVudHNbaWR4XS55MSA9IHkx
OwogICAgICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0ueDIgPSB4Mjsgc2VsZi0+c2VnbWVudHNbaWR4
XS55MiA9IHkyOwogICAgfQoKICAgIGlmIChzZWxmLT5jbG9zZWQpCiAgICB7CiAgICAgICAgaWYg
KGlkeCA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVu
IC0gMV0ueCA9IHg7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLnkg
PSB5OwogICAgICAgICAgICBzZWxmLT5zZWdtZW50c1tzZWxmLT5sZW4gLSAxXS5jb250ID0gY29u
dDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoaWR4ID09IHNlbGYtPmxlbiAtIDEpCiAgICAg
ICAgewogICAgICAgICAgICBzZWxmLT5zZWdtZW50c1swXS54ID0geDsKICAgICAgICAgICAgc2Vs
Zi0+c2VnbWVudHNbMF0ueSA9IHk7CiAgICAgICAgICAgIHNlbGYtPnNlZ21lbnRzWzBdLmNvbnQg
PSBjb250OwogICAgICAgIH0KICAgIH0KCiAgICAoKCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVm
Y250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwp9CgpzdGF0aWMgaW50CmN1cnZl
X3BhcnNlX3N0cmluZ19hcHBlbmQoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIGNvbnN0IGNoYXIgKiBz
dHJpbmcpCnsKICAgIEN1cnZlU2VnbWVudCBzZWdtZW50OwoKICAgIGlmIChzdHJpbmdbMV0gPT0g
J2MnKQogICAgewogICAgICAgIGRvdWJsZSB4LCB5LCB4MSwgeTEsIHgyLCB5MjsKICAgICAgICBp
bnQgY29udDsKCiAgICAgICAgc2VnbWVudC50eXBlID0gMTsKICAgICAgICBpZiAoc3NjYW5mKHN0
cmluZywgImJjJSpbIChdJWxmLCVsZiwlbGYsJWxmLCVsZiwlbGYsJWQiLAogICAgICAgICAgICAg
ICAgICAgJngxLCAmeTEsICZ4MiwgJnkyLCAmeCwgJnksICZjb250KSAhPSA3KQogICAgICAgIHsK
ICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJjYW5ub3QgcGFy
c2Ugc3RyaW5nIik7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgc2Vn
bWVudC5jb250ID0gY29udDsKICAgICAgICBzZWdtZW50LnggPSB4OyBzZWdtZW50LnkgPSB5Owog
ICAgICAgIHNlZ21lbnQueDEgPSB4MTsgc2VnbWVudC55MSA9IHkxOwogICAgICAgIHNlZ21lbnQu
eDIgPSB4Mjsgc2VnbWVudC55MiA9IHkyOwoKICAgICAgICBpZiAoIVNLQ3VydmVfQXBwZW5kU2Vn
bWVudChzZWxmLCAmc2VnbWVudCkpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgfQogICAgZWxz
ZSBpZiAoc3RyaW5nWzFdID09ICdzJykKICAgIHsKICAgICAgICBkb3VibGUgeCwgeTsKICAgICAg
ICBpbnQgY29udDsKCiAgICAgICAgc2VnbWVudC50eXBlID0gMjsKICAgICAgICBpZiAoc3NjYW5m
KHN0cmluZywgImJzJSpbIChdJWxmLCVsZiwlZCIsICZ4LCAmeSwgJmNvbnQpICE9IDMpCiAgICAg
ICAgewogICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNhbm5v
dCBwYXJzZSBzdHJpbmciKTsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAg
ICBzZWdtZW50LmNvbnQgPSBjb250OwogICAgICAgIHNlZ21lbnQueCA9IHg7IHNlZ21lbnQueSA9
IHk7CgogICAgICAgIGlmICghU0tDdXJ2ZV9BcHBlbmRTZWdtZW50KHNlbGYsICZzZWdtZW50KSkK
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgUHlFcnJf
U2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICJzdHJp
bmcgbXVzdCBiZWdpbiB3aXRoICdiYycgb3IgJ2JzJyIpOwogICAgICAgIHJldHVybiAwOwogICAg
fQoKICAgIHJldHVybiAxOwp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9hcHBlbmRfZnJvbV9z
dHJpbmcoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgY2hhciAq
IHN0cmluZyA9ICgodm9pZCAqKTApOwogICAgaW50IGxlbjsKCiAgICBpZiAoIVB5QXJnX1BhcnNl
VHVwbGUoYXJncywgInMjIiwgJnN0cmluZywgJmxlbikpCiAgICAgICAgcmV0dXJuICgodm9pZCAq
KTApOwoKICAgIGlmIChsZW4gPCA0KQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4
Y19WYWx1ZUVycm9yLCAic3RyaW5nIHRvbyBzaG9ydCIpOwogICAgICAgIHJldHVybiAoKHZvaWQg
KikwKTsKICAgIH0KCiAgICBpZiAoIWN1cnZlX3BhcnNlX3N0cmluZ19hcHBlbmQoc2VsZiwgc3Ry
aW5nKSkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgKCgoJl9QeV9Ob25lU3RydWN0
KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQoKc3RhdGlj
IFB5T2JqZWN0ICoKY3VydmVfYXBwZW5kX2Zyb21fZmlsZShTS0N1cnZlT2JqZWN0ICogc2VsZiwg
UHlPYmplY3QgKiBhcmdzKQp7CiAgICBQeU9iamVjdCAqIHB5ZmlsZSA9ICgodm9pZCAqKTApOwog
ICAgUHlPYmplY3QgKiByZXR2YWwgPSAoKHZvaWQgKikwKTsKICAgIEZJTEUgKiBmaWxlID0gKCh2
b2lkICopMCk7CiAgICBjaGFyIGJ1Zls1MDBdOwogICAgY2hhciAqIHJlc3VsdDsKCiAgICBpZiAo
IVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hIiwgJlB5RmlsZV9UeXBlLCAmcHlmaWxlKSkKICAg
ICAgICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgZmlsZSA9IFB5RmlsZV9Bc0ZpbGUocHlmaWxl
KTsKCiAgICB3aGlsZSgocmVzdWx0ID0gZmdldHMoYnVmLCBzaXplb2YoYnVmKSAtIDEsIGZpbGUp
KSAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgICBpZiAoYnVmWzBdICE9ICdiJyB8fCAoYnVm
WzFdICE9ICdjJyAmJiBidWZbMV0gIT0gJ3MnKSkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
aWYgKCFjdXJ2ZV9wYXJzZV9zdHJpbmdfYXBwZW5kKHNlbGYsIGJ1ZikpCiAgICAgICAgICAgIHJl
dHVybiAoKHZvaWQgKikwKTsKICAgIH0KCiAgICBpZiAocmVzdWx0KQogICAgewogICAgICAgIHJl
dHZhbCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcoYnVmKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAg
ICAgICBpZiAoZmVycm9yKGZpbGUpKQogICAgICAgIHsKICAgICAgICAgICAgUHlFcnJfU2V0RnJv
bUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICAgICByZXR2YWwgPSAoKHZvaWQgKikwKTsK
ICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgcmV0dmFsID0gUHlT
dHJpbmdfRnJvbVN0cmluZygiIik7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiByZXR2YWw7
Cn0KIyAxNTczICIuL2N1cnZlb2JqZWN0LmMiCgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9ndWVz
c19jb250aW51aXR5KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAg
IGludCBpOwogICAgQ3VydmVTZWdtZW50ICogc2VnbWVudCwgKnByZWQ7CgogICAgc2VnbWVudCA9
IHNlbGYtPnNlZ21lbnRzOwogICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmxlbjsgaSsrLCBzZWdt
ZW50KyspCiAgICB7CiAgICAgICAgaWYgKGkgPiAwKQogICAgICAgICAgICBwcmVkID0gc2VnbWVu
dCAtIDE7CiAgICAgICAgZWxzZSBpZiAoc2VsZi0+Y2xvc2VkKQogICAgICAgICAgICBwcmVkID0g
c2VsZi0+c2VnbWVudHMgKyBzZWxmLT5sZW4gLSAxOwogICAgICAgIGVsc2UgcHJlZCA9ICgodm9p
ZCAqKTApOwoKICAgICAgICBpZiAocHJlZCAmJiBwcmVkLT50eXBlID09IDEgJiYgc2VnbWVudC0+
dHlwZSA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGZhYnMocHJlZC0+eDIgKyBzZWdt
ZW50LT54MSAtIDIgKiBzZWdtZW50LT54KSA8IDAuMQogICAgICAgICAgICAgICAgJiYgZmFicyhw
cmVkLT55MiArIHNlZ21lbnQtPnkxIC0gMipzZWdtZW50LT55KSA8IDAuMSkKICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgc2VnbWVudC0+Y29udCA9IDI7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTS0Nvb3JkIHgsIHk7CiAg
ICAgICAgICAgICAgICB4ID0gcHJlZC0+eDI7IHkgPSBwcmVkLT55MjsKICAgICAgICAgICAgICAg
IFNLQ3VydmVfQWRqdXN0Q29udHJvbFBvaW50KCZ4LCAmeSwgc2VnbWVudC0+eDEsIHNlZ21lbnQt
PnkxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC0+
eCwgc2VnbWVudC0+eSwgMSk7CiAgICAgICAgICAgICAgICBpZiAoZmFicyh4IC0gcHJlZC0+eDIp
IDwgMC4xCiAgICAgICAgICAgICAgICAgICAgJiYgZmFicyh5IC0gcHJlZC0+eTIpIDwgMC4xKQog
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHNlZ21lbnQtPmNvbnQgPSAxOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgIHggPSBzZWdtZW50LT54MTsgeSA9IHNlZ21lbnQtPnkxOwogICAg
ICAgICAgICAgICAgICAgIFNLQ3VydmVfQWRqdXN0Q29udHJvbFBvaW50KCZ4LCAmeSwgcHJlZC0+
eDIsIHByZWQtPnkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlZ21lbnQtPngsIHNlZ21lbnQtPnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGZhYnMoeCAtIHNl
Z21lbnQtPngxKSA8IDAuMQogICAgICAgICAgICAgICAgICAgICAgICAmJiBmYWJzKHkgLSBzZWdt
ZW50LT55MSkgPCAwLjEpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICAgICBzZWdtZW50LT5jb250ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpID09IDAgJiYgc2VsZi0+Y2xv
c2VkKQogICAgICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0uY29udCA9
IHNlZ21lbnQtPmNvbnQ7CiAgICAgICAgfQogICAgfQoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkp
LT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCnN0YXRpYyBQ
eU9iamVjdCAqCmN1cnZlX2xvYWRfY2xvc2UoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0
ICogYXJncykKewogICAgaW50IGNvcHlfY29udF9mcm9tX2xhc3QgPSAwOwoKICAgIGlmICghUHlB
cmdfUGFyc2VUdXBsZShhcmdzLCAifGkiLCAmY29weV9jb250X2Zyb21fbGFzdCkpCiAgICAgICAg
cmV0dXJuICgodm9pZCAqKTApOwoKICAgIHNlbGYtPmNsb3NlZCA9IDE7CgogICAgaWYgKGNvcHlf
Y29udF9mcm9tX2xhc3QpCiAgICB7CiAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0uY29udCA9IHNl
bGYtPnNlZ21lbnRzW3NlbGYtPmxlbiAtIDFdLmNvbnQ7CiAgICB9CgogICAgaWYgKHNlbGYtPmxl
biA+IDIgJiYgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0udHlwZSA9PSAyKQogICAgewog
ICAgICAgIGlmIChzZWxmLT5zZWdtZW50c1tzZWxmLT5sZW4gLSAxXS54ID09IHNlbGYtPnNlZ21l
bnRzW3NlbGYtPmxlbiAtIDJdLngKICAgICAgICAgICAgJiYgc2VsZi0+c2VnbWVudHNbc2VsZi0+
bGVuLTFdLnkgPT0gc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuLTJdLnkpCiAgICAgICAgewogICAg
ICAgICAgICBzZWxmLT5sZW4gLT0gMTsKICAgICAgICB9CiAgICB9CiAgICBjdXJ2ZV9jaGVja19z
dGF0ZShzZWxmLCAwLCBfX0ZVTkNUSU9OX18pOwoKICAgICgoKCZfUHlfTm9uZVN0cnVjdCkpLT5v
Yl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7Cn0KCgoKaW50ClNLQ3Vy
dmVfVGVzdFRyYW5zZm9ybWVkKFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIHRyYWZv
LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGVzdF94LCBpbnQgdGVzdF95LCBpbnQgY2xv
c2VkKQp7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAgU0tDb29yZCBueCwgbnksIHgx
LCB5MSwgeDIsIHkyLCBsYXN0eCwgbGFzdHksIGk7CiAgICBpbnQgeFs0XSwgeVs0XTsKICAgIGlu
dCByZXN1bHQ7CiAgICBpbnQgY3Jvc3NfY291bnQ7CgoKCgoKICAgIHNlZ21lbnQgPSBzZWxmLT5z
ZWdtZW50czsKICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngsIHNlZ21l
bnQtPnksICZsYXN0eCwgJmxhc3R5KTsKCiAgICBzZWdtZW50ICs9IDE7CiAgICBjcm9zc19jb3Vu
dCA9IDA7CiAgICBmb3IgKGkgPSAxOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAg
IHsKICAgICAgICBpZiAoc2VnbWVudC0+dHlwZSA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAg
U0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudC0+eDEsIHNlZ21lbnQtPnkxLCAmeDEs
ICZ5MSk7CiAgICAgICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFkodHJhZm8sIHNlZ21lbnQtPngy
LCBzZWdtZW50LT55MiwgJngyLCAmeTIpOwogICAgICAgICAgICBTS1RyYWZvX1RyYW5zZm9ybVhZ
KHRyYWZvLCBzZWdtZW50LT54LCBzZWdtZW50LT55LCAmbngsICZueSk7CiAgICAgICAgICAgIHhb
MF0gPSBsYXN0eCArIDAuNTsgeVswXSA9IGxhc3R5ICsgMC41OwogICAgICAgICAgICB4WzFdID0g
eDEgKyAwLjU7IHlbMV0gPSB5MSArIDAuNTsKICAgICAgICAgICAgeFsyXSA9IHgyICsgMC41OyB5
WzJdID0geTIgKyAwLjU7CiAgICAgICAgICAgIHhbM10gPSBueCArIDAuNTsgeVszXSA9IG55ICsg
MC41OwogICAgICAgICAgICByZXN1bHQgPSBiZXppZXJfaGl0X3NlZ21lbnQoeCwgeSwgdGVzdF94
LCB0ZXN0X3kpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewoKICAgICAgICAgICAg
U0tUcmFmb19UcmFuc2Zvcm1YWSh0cmFmbywgc2VnbWVudC0+eCwgc2VnbWVudC0+eSwgJm54LCAm
bnkpOwogICAgICAgICAgICByZXN1bHQgPSBiZXppZXJfaGl0X2xpbmUobGFzdHggKyAwLjUsIGxh
c3R5ICsgMC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnggKyAwLjUs
IG55ICsgMC41LCB0ZXN0X3gsIHRlc3RfeSk7CiAgICAgICAgfQogICAgICAgIGxhc3R4ID0gbng7
CiAgICAgICAgbGFzdHkgPSBueTsKICAgICAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICB7CiAg
ICAgICAgICAgIGNyb3NzX2NvdW50ID0gLTE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0K
ICAgICAgICBpZiAocmVzdWx0ID4gMCkKICAgICAgICAgICAgY3Jvc3NfY291bnQgKz0gcmVzdWx0
OwogICAgfQogICAgaWYgKCFzZWxmLT5jbG9zZWQgJiYgY2xvc2VkICYmIHNlbGYtPmxlbiA+PSAy
ICYmIGNyb3NzX2NvdW50ID49IDApCiAgICB7CgogICAgICAgIFNLVHJhZm9fVHJhbnNmb3JtWFko
dHJhZm8sIHNlbGYtPnNlZ21lbnRzWzBdLngsIHNlbGYtPnNlZ21lbnRzWzBdLnksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmbngsICZueSk7CiAgICAgICAgcmVzdWx0ID0gYmV6aWVyX2hp
dF9saW5lKGxhc3R4ICsgMC41LCBsYXN0eSArIDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG54ICsgMC41LCBueSArIDAuNSwgdGVzdF94LCB0ZXN0X3kpOwogICAgICAgIGlm
IChyZXN1bHQgPiAwKQogICAgICAgICAgICBjcm9zc19jb3VudCArPSByZXN1bHQ7CiAgICB9CgoK
CgogICAgcmV0dXJuIGNyb3NzX2NvdW50Owp9CgoKCgoKIyAxNzQ1ICIuL2N1cnZlb2JqZWN0LmMi
CnN0YXRpYyBQeU9iamVjdCAqCmNyZWF0b3JfZHJhd19ub3RfbGFzdChTS0N1cnZlT2JqZWN0ICog
Y3VydmUsIFB5T2JqZWN0ICogYXJncykKewogICAgUHlPYmplY3QgKiByZXN1bHQ7CiAgICBDdXJ2
ZVNlZ21lbnQgKiBzZWdtZW50cyA9IGN1cnZlLT5zZWdtZW50czsKICAgIGludCBpOwogICAgUHlP
YmplY3QgKiBkcmF3X2JlemllcjsKICAgIFB5T2JqZWN0ICogZHJhd19saW5lOwoKICAgIGlmICgh
UHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmZHJhd19iZXppZXIsICZkcmF3X2xpbmUpKQog
ICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBmb3IgKGkgPSAxOyBpIDwgKCgoU0tDdXJ2
ZU9iamVjdCopY3VydmUpLT5sZW4pIC0gMTsgaSsrKQogICAgewogICAgICAgIGlmIChzZWdtZW50
c1tpXS50eXBlID09IDEpCiAgICAgICAgewoKCgogICAgICAgICAgICByZXN1bHQgPSBQeU9iamVj
dF9DYWxsRnVuY3Rpb24oZHJhd19iZXppZXIsICIoZGQpKGRkKShkZCkoZGQpIiwgc2VnbWVudHNb
aSAtIDFdLngsc2VnbWVudHNbaSAtIDFdLnksc2VnbWVudHNbaV0ueDEsc2VnbWVudHNbaV0ueTEs
c2VnbWVudHNbaV0ueDIsc2VnbWVudHNbaV0ueTIsc2VnbWVudHNbaV0ueCxzZWdtZW50c1tpXS55
KTtpZiAoIXJlc3VsdCkgcmV0dXJuIDA7IGlmICgtLShyZXN1bHQpLT5vYl9yZWZjbnQgIT0gMCkg
OyBlbHNlICgqKChQeU9iamVjdCAqKShyZXN1bHQpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYykoKFB5
T2JqZWN0ICopKChQeU9iamVjdCAqKShyZXN1bHQpKSk7CiAgICAgICAgfQogICAgICAgIGVsc2Ug
aWYgKHNlZ21lbnRzW2ldLnR5cGUgPT0gMikKICAgICAgICB7CgogICAgICAgICAgICByZXN1bHQg
PSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZHJhd19saW5lLCAiKGRkKShkZCkiLHNlZ21lbnRzW2kg
LSAxXS54LHNlZ21lbnRzW2kgLSAxXS55LHNlZ21lbnRzW2ldLngsc2VnbWVudHNbaV0ueSk7IGlm
ICghcmVzdWx0KSByZXR1cm4gMDsgaWYgKC0tKHJlc3VsdCktPm9iX3JlZmNudCAhPSAwKSA7IGVs
c2UgKCooKFB5T2JqZWN0ICopKHJlc3VsdCkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmpl
Y3QgKikoKFB5T2JqZWN0ICopKHJlc3VsdCkpKTsKICAgICAgICB9CiAgICB9CgogICAgKCgoJl9Q
eV9Ob25lU3RydWN0KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0
KTsKfQoKCgoKCgojIDE3OTIgIi4vY3VydmVvYmplY3QuYyIKc3RhdGljIFB5T2JqZWN0ICoKY3Vy
dmVfc2VsZWN0aW9uX2NvdW50KFNLQ3VydmVPYmplY3QgKiBzZWxmKQp7CiAgICBpbnQgY291bnQg
PSAwOwogICAgaW50IGk7CgogICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmxlbjsgaSsrKQogICAg
ewogICAgICAgIGlmIChzZWxmLT5zZWdtZW50c1tpXS5zZWxlY3RlZCAmJiAoIXNlbGYtPmNsb3Nl
ZCB8fCBpIDwgc2VsZi0+bGVuIC0gMSkpCiAgICAgICAgICAgICsrY291bnQ7CiAgICB9CiAgICBy
ZXR1cm4gUHlJbnRfRnJvbUxvbmcoY291bnQpOwp9CiMgMTgxMyAiLi9jdXJ2ZW9iamVjdC5jIgpz
dGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9ub2RlX3NlbGVjdGVkKFNLQ3VydmVPYmplY3QgKiBzZWxm
LCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIGludCBpZHg7CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1
cGxlKGFyZ3MsICJpIiwgJmlkeCkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIGlk
eCA9IGNoZWNrX2luZGV4KHNlbGYsIGlkeCwgIk5vZGVTZWxlY3RlZCIpOwogICAgaWYgKGlkeCA8
IDApCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAgIHJldHVybiBQeUludF9Gcm9tTG9u
ZyhzZWxmLT5zZWdtZW50c1tpZHhdLnNlbGVjdGVkKTsKfQoKCnN0YXRpYyBQeU9iamVjdCAqCmN1
cnZlX3NlbGVjdF9yZWN0KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsK
ICAgIFNLUmVjdE9iamVjdCAqIHJlY3Q7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAg
aW50IGksIG1vZGUgPSAwOwogICAgaW50IHNlbGVjdGVkID0gMDsKCiAgICBpZiAoIVB5QXJnX1Bh
cnNlVHVwbGUoYXJncywgIk8hfGkiLCAmU0tSZWN0VHlwZSwgJnJlY3QsICZtb2RlKSkKICAgICAg
ICByZXR1cm4gKCh2b2lkICopMCk7CgogICAgc2VnbWVudCA9IHNlbGYtPnNlZ21lbnRzOwogICAg
Zm9yIChpID0gMDsgaSA8IHNlbGYtPmxlbjsgaSsrLCBzZWdtZW50KyspCiAgICB7CiAgICAgICAg
aWYgKFNLUmVjdF9Db250YWluc1hZKHJlY3QsIHNlZ21lbnQtPngsIHNlZ21lbnQtPnkpKQogICAg
ICAgIHsKICAgICAgICAgICAgaWYgKG1vZGUgPT0gMikKICAgICAgICAgICAgICAgIHNlZ21lbnQt
PnNlbGVjdGVkID0gMDsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgc2VnbWVudC0+
c2VsZWN0ZWQgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAg
ICBpZiAobW9kZSA9PSAwKQogICAgICAgICAgICAgICAgc2VnbWVudC0+c2VsZWN0ZWQgPSAwOwog
ICAgICAgIH0KICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkIHx8IHNlZ21lbnQtPnNlbGVjdGVk
OwogICAgfQoKICAgIGN1cnZlX2NoZWNrX3N0YXRlKHNlbGYsIDEsIF9fRlVOQ1RJT05fXyk7Cgog
ICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKHNlbGVjdGVkKTsKfQoKCnN0YXRpYyBQeU9iamVjdCAq
CmN1cnZlX3NlbGVjdF9zZWdtZW50KFNLQ3VydmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFy
Z3MpCnsKICAgIGludCBpZHgsIHZhbHVlID0gMTsKCiAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUo
YXJncywgIml8aSIsICZpZHgsICZ2YWx1ZSkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoK
ICAgIGlmIChpZHggPCAwKQogICAgICAgIGlkeCA9IGlkeCArIHNlbGYtPmxlbjsKCiAgICBpZiAo
aWR4IDwgMCB8fCBpZHggPj0gc2VsZi0+bGVuKQogICAgewogICAgICAgIFB5RXJyX1NldFN0cmlu
ZyhQeUV4Y19JbmRleEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAiY3VydmVfY29udGlu
dWl0eTogaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwog
ICAgfQoKICAgIHNlbGYtPnNlZ21lbnRzW2lkeF0uc2VsZWN0ZWQgPSB2YWx1ZTsKCiAgICBpZiAo
c2VsZi0+Y2xvc2VkKQogICAgewogICAgICAgIGlmIChpZHggPT0gc2VsZi0+bGVuIC0gMSkKICAg
ICAgICAgICAgc2VsZi0+c2VnbWVudHNbMF0uc2VsZWN0ZWQgPSB2YWx1ZTsKICAgICAgICBlbHNl
IGlmIChpZHggPT0gMCkKICAgICAgICAgICAgc2VsZi0+c2VnbWVudHNbc2VsZi0+bGVuIC0gMV0u
c2VsZWN0ZWQgPSB2YWx1ZTsKICAgIH0KCiAgICAoKCgmX1B5X05vbmVTdHJ1Y3QpKS0+b2JfcmVm
Y250KyspOwogICAgcmV0dXJuICgmX1B5X05vbmVTdHJ1Y3QpOwp9CgpzdGF0aWMgUHlPYmplY3Qg
KgpjdXJ2ZV9kZXNlbGVjdChTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7
CiAgICBpbnQgaTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+bGVuOyBpKyspCiAgICB7CiAg
ICAgICAgc2VsZi0+c2VnbWVudHNbaV0uc2VsZWN0ZWQgPSAwOwogICAgfQoKICAgICgoKCZfUHlf
Tm9uZVN0cnVjdCkpLT5vYl9yZWZjbnQrKyk7CiAgICByZXR1cm4gKCZfUHlfTm9uZVN0cnVjdCk7
Cn0KCgoKCgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfZHJhd19kcmFnZ2VkX25vZGVzKFNLQ3Vy
dmVPYmplY3QgKiBzZWxmLCBQeU9iamVjdCAqIGFyZ3MpCnsKICAgIFB5T2JqZWN0ICogZHJhd19i
ZXppZXI7CiAgICBQeU9iamVjdCAqIGRyYXdfbGluZTsKICAgIFB5T2JqZWN0ICogcmVzdWx0Owog
ICAgU0tQb2ludE9iamVjdCAqIG9mZnNldDsKICAgIEN1cnZlU2VnbWVudCAqIHNlZ21lbnQgPSBz
ZWxmLT5zZWdtZW50cyArIDE7CiAgICBpbnQgcGFydGlhbGx5OwogICAgaW50IGk7CgogICAgaWYg
KCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIWlPTyIsICZTS1BvaW50VHlwZSwgJm9mZnNldCwg
JnBhcnRpYWxseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAmZHJhd19iZXppZXIsICZkcmF3
X2xpbmUpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBmb3IgKGkgPSAxOyBpIDwg
c2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsKICAgICAgICBpZiAoc2VnbWVudFstMV0u
c2VsZWN0ZWQgfHwgc2VnbWVudC0+c2VsZWN0ZWQgfHwgIXBhcnRpYWxseSkKICAgICAgICB7CiAg
ICAgICAgICAgIGRvdWJsZSBueCA9IHNlZ21lbnRbLTFdLng7CiAgICAgICAgICAgIGRvdWJsZSBu
eSA9IHNlZ21lbnRbLTFdLnk7CiAgICAgICAgICAgIEN1cnZlU2VnbWVudCBzZWcgPSAqc2VnbWVu
dDsKCiAgICAgICAgICAgIGlmIChzZWdtZW50Wy0xXS5zZWxlY3RlZCkKICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgbnggKz0gb2Zmc2V0LT54OwogICAgICAgICAgICAgICAgbnkgKz0gb2Zm
c2V0LT55OwogICAgICAgICAgICAgICAgc2VnLngxICs9IG9mZnNldC0+eDsKICAgICAgICAgICAg
ICAgIHNlZy55MSArPSBvZmZzZXQtPnk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHNl
Z21lbnQtPnNlbGVjdGVkKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzZWcueCArPSBv
ZmZzZXQtPng7CiAgICAgICAgICAgICAgICBzZWcueSArPSBvZmZzZXQtPnk7CiAgICAgICAgICAg
ICAgICBzZWcueDIgKz0gb2Zmc2V0LT54OwogICAgICAgICAgICAgICAgc2VnLnkyICs9IG9mZnNl
dC0+eTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHNlZ21lbnQtPnR5cGUgPT0gMSkK
ICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5j
dGlvbihkcmF3X2JlemllciwgIihkZCkoZGQpKGRkKShkZCkiLCBueCxueSxzZWcueDEsc2VnLnkx
LHNlZy54MixzZWcueTIsc2VnLngsc2VnLnkpO2lmICghcmVzdWx0KSByZXR1cm4gMDsgaWYgKC0t
KHJlc3VsdCktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2UgKCooKFB5T2JqZWN0ICopKHJlc3VsdCkp
LT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2JqZWN0ICopKHJlc3VsdCkp
KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihkcmF3X2xpbmUsICIoZGQpKGRk
KSIsbngsbnksc2VnLngsc2VnLnkpOyBpZiAoIXJlc3VsdCkgcmV0dXJuIDA7IGlmICgtLShyZXN1
bHQpLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAqKShyZXN1bHQpKS0+b2Jf
dHlwZS0+dHBfZGVhbGxvYykoKFB5T2JqZWN0ICopKChQeU9iamVjdCAqKShyZXN1bHQpKSk7CiAg
ICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgKCgoJl9QeV9Ob25lU3RydWN0KSktPm9i
X3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQoKc3RhdGljIFB5T2Jq
ZWN0ICoKY3VydmVfbW92ZV9zZWxlY3RlZF9ub2RlcyhTS0N1cnZlT2JqZWN0ICogc2VsZiwgUHlP
YmplY3QgKiBhcmdzKQp7CiAgICBTS1BvaW50T2JqZWN0ICogb2Zmc2V0OwogICAgaW50IGk7CiAg
ICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50OwogICAgUHlPYmplY3QgKiB1bmRvX29iamVjdCA9ICgo
dm9pZCAqKTApOwoKICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyEiLCAmU0tQb2lu
dFR5cGUsICZvZmZzZXQpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICB1bmRvX29i
amVjdCA9IGN1cnZlX2NyZWF0ZV9mdWxsX3VuZG8oc2VsZik7CiAgICBpZiAoIXVuZG9fb2JqZWN0
KQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgICBzZWdtZW50ID0gc2VsZi0+c2VnbWVu
dHM7CiAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+bGVuOyBpKyssIHNlZ21lbnQrKykKICAgIHsK
ICAgICAgICBpZiAoc2VnbWVudC0+c2VsZWN0ZWQpCiAgICAgICAgewogICAgICAgICAgICBzZWdt
ZW50LT54ICs9IG9mZnNldC0+eDsKICAgICAgICAgICAgc2VnbWVudC0+eSArPSBvZmZzZXQtPnk7
CiAgICAgICAgICAgIGlmIChzZWdtZW50LT50eXBlID09IDEpCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIHNlZ21lbnQtPngyICs9IG9mZnNldC0+eDsKICAgICAgICAgICAgICAgIHNlZ21l
bnQtPnkyICs9IG9mZnNldC0+eTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaSA8IHNl
bGYtPmxlbiAtIDEgJiYgc2VnbWVudFsxXS50eXBlID09IDEpCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIHNlZ21lbnRbMV0ueDEgKz0gb2Zmc2V0LT54OwogICAgICAgICAgICAgICAgc2Vn
bWVudFsxXS55MSArPSBvZmZzZXQtPnk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cgog
ICAgcmV0dXJuIHVuZG9fb2JqZWN0Owp9CgpzdGF0aWMgUHlPYmplY3QgKgpjdXJ2ZV9kcmF3X3Vu
c2VsZWN0ZWQoU0tDdXJ2ZU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKewogICAgUHlP
YmplY3QgKiBkcmF3X2JlemllcjsKICAgIFB5T2JqZWN0ICogZHJhd19saW5lOwogICAgUHlPYmpl
Y3QgKiByZXN1bHQ7CiAgICBDdXJ2ZVNlZ21lbnQgKiBzZWdtZW50ID0gc2VsZi0+c2VnbWVudHMg
KyAxOwogICAgaW50IGk7CgogICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZk
cmF3X2JlemllciwgJmRyYXdfbGluZSkpCiAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwoKICAg
IGZvciAoaSA9IDE7IGkgPCBzZWxmLT5sZW47IGkrKywgc2VnbWVudCsrKQogICAgewogICAgICAg
IGlmIChzZWdtZW50LT50eXBlID09IDIpCiAgICAgICAgewogICAgICAgICAgICByZXN1bHQgPSBQ
eU9iamVjdF9DYWxsRnVuY3Rpb24oZHJhd19saW5lLCAiKGRkKShkZCkiLHNlZ21lbnRbLTFdLngs
c2VnbWVudFstMV0ueSxzZWdtZW50LT54LHNlZ21lbnQtPnkpOyBpZiAoIXJlc3VsdCkgcmV0dXJu
IDA7IGlmICgtLShyZXN1bHQpLT5vYl9yZWZjbnQgIT0gMCkgOyBlbHNlICgqKChQeU9iamVjdCAq
KShyZXN1bHQpKS0+b2JfdHlwZS0+dHBfZGVhbGxvYykoKFB5T2JqZWN0ICopKChQeU9iamVjdCAq
KShyZXN1bHQpKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCFzZWdtZW50Wy0xXS5zZWxl
Y3RlZCAmJiAhc2VnbWVudC0+c2VsZWN0ZWQpCiAgICAgICAgewoKICAgICAgICAgICAgcmVzdWx0
ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGRyYXdfYmV6aWVyLCAiKGRkKShkZCkoZGQpKGRkKSIs
IHNlZ21lbnRbLTFdLngsc2VnbWVudFstMV0ueSxzZWdtZW50LT54MSxzZWdtZW50LT55MSxzZWdt
ZW50LT54MixzZWdtZW50LT55MixzZWdtZW50LT54LHNlZ21lbnQtPnkpO2lmICghcmVzdWx0KSBy
ZXR1cm4gMDsgaWYgKC0tKHJlc3VsdCktPm9iX3JlZmNudCAhPSAwKSA7IGVsc2UgKCooKFB5T2Jq
ZWN0ICopKHJlc3VsdCkpLT5vYl90eXBlLT50cF9kZWFsbG9jKSgoUHlPYmplY3QgKikoKFB5T2Jq
ZWN0ICopKHJlc3VsdCkpKTsKICAgICAgICB9CiAgICB9CgogICAgKCgoJl9QeV9Ob25lU3RydWN0
KSktPm9iX3JlZmNudCsrKTsKICAgIHJldHVybiAoJl9QeV9Ob25lU3RydWN0KTsKfQojIDIwNDMg
Ii4vY3VydmVvYmplY3QuYyIKCnN0YXRpYyBzdHJ1Y3QgbWVtYmVybGlzdCBjdXJ2ZV9tZW1iZXJs
aXN0W10gPSB7CiAgICB7ImxlbiIsIDEsICgoc2l6ZV90KSAmKChTS0N1cnZlT2JqZWN0ICopMCkt
PmxlbiksIDF9LAogICAgeyJjbG9zZWQiLCA4LCAoKHNpemVfdCkgJigoU0tDdXJ2ZU9iamVjdCAq
KTApLT5jbG9zZWQpLCAxfSwKICAgIHsoKHZvaWQgKikwKX0KfTsKCgoKCnN0YXRpYyBzdHJ1Y3Qg
UHlNZXRob2REZWYgY3VydmVfbWV0aG9kc1tdID0gewogICAgeyJkcmF3X3RyYW5zZm9ybWVkIiwo
UHlDRnVuY3Rpb24pU0tDdXJ2ZV9QeURyYXdUcmFuc2Zvcm1lZCwgMX0sCiAgICB7ImhpdF9wb2lu
dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9oaXRfcG9pbnQsIDF9LAoKICAgIHsiYWNjdXJhdGVfcmVj
dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9hY2N1cmF0ZV9yZWN0LCAxfSwKICAgIHsiY29vcmRfcmVj
dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9jb29yZF9yZWN0LCAxfSwKCgogICAgeyJUcmFuc2xhdGUi
LCAoUHlDRnVuY3Rpb24pY3VydmVfYXBwbHlfdHJhbnNsYXRpb24sIDF9LAogICAgeyJUcmFuc2Zv
cm0iLCAoUHlDRnVuY3Rpb24pY3VydmVfYXBwbHlfdHJhZm8sIDF9LAogICAgeyJEdXBsaWNhdGUi
LCAoUHlDRnVuY3Rpb24pY3VydmVfZHVwbGljYXRlLCAxfSwKICAgIHsiQXBwZW5kTGluZSIsIChQ
eUNGdW5jdGlvbiljdXJ2ZV9hcHBlbmRfc3RyYWlnaHQsIDF9LAogICAgeyJBcHBlbmRCZXppZXIi
LCAoUHlDRnVuY3Rpb24pY3VydmVfYXBwZW5kX2N1cnZlLCAxfSwKICAgIHsiQXBwZW5kU2VnbWVu
dCIsIChQeUNGdW5jdGlvbiljdXJ2ZV9hcHBlbmRfc2VnbWVudCwgMX0sCiAgICB7Ik5vZGVMaXN0
IiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX25vZGVfbGlzdCwgMX0sCiAgICB7Ik5vZGUiLCAoUHlDRnVu
Y3Rpb24pY3VydmVfbm9kZSwgMX0sCiAgICB7IlNlZ21lbnQiLCAoUHlDRnVuY3Rpb24pY3VydmVf
c2VnbWVudCwgMX0sCiAgICB7IlNldENvbnRpbnVpdHkiLCAoUHlDRnVuY3Rpb24pY3VydmVfc2V0
X2NvbnRpbnVpdHksIDF9LAogICAgeyJTZXRMaW5lIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX3NldF9z
dHJhaWdodCwgMX0sCiAgICB7IlNldEJlemllciIsIChQeUNGdW5jdGlvbiljdXJ2ZV9zZXRfY3Vy
dmUsIDF9LAogICAgeyJTZXRTZWdtZW50IiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX3NldF9zZWdtZW50
LCAxfSwKICAgIHsiQ29udGludWl0eSIsIChQeUNGdW5jdGlvbiljdXJ2ZV9jb250aW51aXR5LCAx
fSwKICAgIHsiU2VnbWVudFR5cGUiLCAoUHlDRnVuY3Rpb24pY3VydmVfc2VnbWVudF90eXBlLCAx
fSwKICAgIHsiQ2xvc2VQYXRoIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX2Nsb3NlX2NvbnRvdXIsIDF9
LAoKCiAgICB7ImFyY19sZW5ndGhzIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX2FyY19sZW5ndGhzLCAx
fSwKICAgIHsiX3NldF9ub2Rlc19hbmRfc2VnbWVudHMiLChQeUNGdW5jdGlvbiljdXJ2ZV9fc2V0
X25vZGVzX2FuZF9zZWdtZW50cywxfSwKICAgIHsiX3VuZG9fY2xvc2UiLCAoUHlDRnVuY3Rpb24p
Y3VydmVfX3VuZG9fY2xvc2UsIDF9LAogICAgeyJhcHBlbmRfZnJvbV9maWxlIiwoUHlDRnVuY3Rp
b24pY3VydmVfYXBwZW5kX2Zyb21fZmlsZSwgMX0sCiAgICB7ImdldF9zYXZlIiwgKFB5Q0Z1bmN0
aW9uKWN1cnZlX2dldF9zYXZlLCAxfSwKICAgIHsid3JpdGVfdG9fZmlsZSIsIChQeUNGdW5jdGlv
biljdXJ2ZV93cml0ZV90b19maWxlLCAxfSwKICAgIHsiZ3Vlc3NfY29udGludWl0eSIsKFB5Q0Z1
bmN0aW9uKWN1cnZlX2d1ZXNzX2NvbnRpbnVpdHksIDF9LAogICAgeyJsb2FkX2Nsb3NlIiwgKFB5
Q0Z1bmN0aW9uKWN1cnZlX2xvYWRfY2xvc2UsIDF9LAogICAgeyJhcHBlbmRfZnJvbV9zdHJpbmci
LChQeUNGdW5jdGlvbiljdXJ2ZV9hcHBlbmRfZnJvbV9zdHJpbmcsMX0sCgoKICAgIHsiU2VnbWVu
dFNlbGVjdGVkIiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX25vZGVfc2VsZWN0ZWQsIDF9LAogICAgeyJT
ZWxlY3RTZWdtZW50IiwgKFB5Q0Z1bmN0aW9uKWN1cnZlX3NlbGVjdF9zZWdtZW50LCAxfSwKICAg
IHsiZHJhd19kcmFnZ2VkX25vZGVzIiwoUHlDRnVuY3Rpb24pY3VydmVfZHJhd19kcmFnZ2VkX25v
ZGVzLDF9LAogICAgeyJkcmF3X3Vuc2VsZWN0ZWQiLCAoUHlDRnVuY3Rpb24pY3VydmVfZHJhd191
bnNlbGVjdGVkLCAxfSwKICAgIHsic2VsZWN0aW9uX2NvdW50IiwgKFB5Q0Z1bmN0aW9uKWN1cnZl
X3NlbGVjdGlvbl9jb3VudCwgMX0sCiAgICB7Im5vZGVfc2VsZWN0ZWQiLCAoUHlDRnVuY3Rpb24p
Y3VydmVfbm9kZV9zZWxlY3RlZCwgMX0sCiAgICB7InNlbGVjdF9yZWN0IiwgKFB5Q0Z1bmN0aW9u
KWN1cnZlX3NlbGVjdF9yZWN0LCAxfSwKICAgIHsic2VsZWN0X3NlZ21lbnQiLCAoUHlDRnVuY3Rp
b24pY3VydmVfc2VsZWN0X3NlZ21lbnQsIDF9LAogICAgeyJkZXNlbGVjdCIsIChQeUNGdW5jdGlv
biljdXJ2ZV9kZXNlbGVjdCwgMX0sCiAgICB7Im1vdmVfc2VsZWN0ZWRfbm9kZXMiLChQeUNGdW5j
dGlvbiljdXJ2ZV9tb3ZlX3NlbGVjdGVkX25vZGVzLDF9LAogICAgeyJuZWFyZXN0X3BvaW50Iiwg
KFB5Q0Z1bmN0aW9uKVNLQ3VydmVfTmVhcmVzdFBvaW50UHksIDF9LAogICAgeyJwb2ludF9hdCIs
IChQeUNGdW5jdGlvbilTS0N1cnZlX1BvaW50QXRQeSwgMX0sCgoKICAgIHsiZHJhd19ub3RfbGFz
dCIsIChQeUNGdW5jdGlvbiljcmVhdG9yX2RyYXdfbm90X2xhc3QsIDF9LAoKICAgIHsoKHZvaWQg
KikwKSwgKCh2b2lkICopMCl9Cn07CgoKc3RhdGljIFB5T2JqZWN0ICoKY3VydmVfZ2V0YXR0cihQ
eU9iamVjdCAqIHNlbGYsIGNoYXIgKiBuYW1lKQp7CiAgICBQeU9iamVjdCAqIHJlc3VsdDsKCiAg
ICByZXN1bHQgPSBQeV9GaW5kTWV0aG9kKGN1cnZlX21ldGhvZHMsIHNlbGYsIG5hbWUpOwogICAg
aWYgKHJlc3VsdCAhPSAoKHZvaWQgKikwKSkKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgUHlF
cnJfQ2xlYXIoKTsKCiAgICByZXR1cm4gUHlNZW1iZXJfR2V0KChjaGFyICopc2VsZiwgY3VydmVf
bWVtYmVybGlzdCwgbmFtZSk7Cn0KCgpQeVR5cGVPYmplY3QgU0tDdXJ2ZVR5cGUgPSB7CiAgICAx
LCAmUHlUeXBlX1R5cGUsCiAgICAwLAogICAgIlNLQ3VydmVPYmplY3QiLAogICAgc2l6ZW9mKFNL
Q3VydmVPYmplY3QpLAogICAgMCwKICAgIChkZXN0cnVjdG9yKWN1cnZlX2RlYWxsb2MsCiAgICAo
cHJpbnRmdW5jKSgodm9pZCAqKTApLAogICAgY3VydmVfZ2V0YXR0ciwKICAgIDAsCiAgICAoY21w
ZnVuYyljdXJ2ZV9jb21wYXJlLAogICAgKHJlcHJmdW5jKWN1cnZlX3JlcHIsCiAgICAwLAogICAg
MCwKICAgIDAsCiAgICAwLAogICAgKHRlcm5hcnlmdW5jKTAsCn07CgoKClB5T2JqZWN0ICoKX1NL
Q3VydmVfTnVtQWxsb2NhdGVkKFB5T2JqZWN0ICogc2VsZiwgUHlPYmplY3QgKiBhcmdzKQp7CiAg
ICByZXR1cm4gUHlJbnRfRnJvbUxvbmcocGF0aHNfYWxsb2NhdGVkKTsKfQoKCmludApfU0tDdXJ2
ZV9Jbml0Q3VydmVPYmplY3Qodm9pZCkKewogICAgc2V0X25vZGVzX2FuZF9zZWdtZW50c19zdHJp
bmcgPQogICAgICAgIFB5U3RyaW5nX0ludGVybkZyb21TdHJpbmcoIl9zZXRfbm9kZXNfYW5kX3Nl
Z21lbnRzIik7CiAgICB1bmRvX2Nsb3NlX3N0cmluZyA9IFB5U3RyaW5nX0ludGVybkZyb21TdHJp
bmcoIl91bmRvX2Nsb3NlIik7CiAgICByZXR1cm4gMTsKfQo=
>From wanderer@rsu.ru Sat Dec 23 20:06:00 2000
From: wanderer@rsu.ru
To: gcc-gnats@gcc.gnu.org
Subject: c++/1505: g++ internal error
Date: Sat, 23 Dec 2000 20:06:00 -0000
Message-id: <20001224040313.29142.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01303.html
Content-length: 1501

>Number:         1505
>Category:       c++
>Synopsis:       g++ internal error
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Sat Dec 23 20:06:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Vladimir Merzliakov
>Release:        version 2.97 20001223 (experimental)
>Organization:
>Environment:
Page http://www.codesourcery.com/gcc-compile.shtml
>Description:
/tmp/@17169.7.cc: In member function `void V::val(int) const':
/tmp/@17169.7.cc:4: assignment of data-member `V::val_' in read-only structure
/tmp/@17169.7.cc: In function `int main()':
/tmp/@17169.7.cc:22: Internal compiler error in convert_nontype_argument, at 
cp/pt.c:3088
Please submit a full bug report.
See for instructions.

>How-To-Repeat:

>Fix:
work around the problem (see source): add member-function
struct U : public V {
  int val() { return V::val(); };
};
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="test2.cc"
Content-Disposition: inline; filename="test2.cc"

struct V {
  V() : val_(0) {};
  int val() const { return val_; };
  void val(int newval) const { val_ = newval; };
private:
  int val_;
};

struct U : public V {
  U() : V() {};
};

template< int (U::*g)() const>
struct W {
  int const val() {
    U u;
    return (u.*g)();
  };
};

int main() {
  return W<&U::val>::val();
};
>From wanderer@rsu.ru Sat Dec 23 20:16:00 2000
From: wanderer@rsu.ru
To: gcc-gnats@gcc.gnu.org
Subject: c++/1506: g++ internal error
Date: Sat, 23 Dec 2000 20:16:00 -0000
Message-id: <20001224040821.4262.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01304.html
Content-length: 968

>Number:         1506
>Category:       c++
>Synopsis:       g++ internal error
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-illegal-code
>Submitter-Id:   net
>Arrival-Date:   Sat Dec 23 20:16:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Vladimir Merzliakov
>Release:        version 2.97 20001223 (experimental)
>Organization:
>Environment:
Page http://www.codesourcery.com/gcc-compile.shtml
>Description:
/tmp/@17500.7.cc:5: Internal error: Segmentation fault.
Please submit a full bug report.
See for instructions.

>How-To-Repeat:

>Fix:
work around the problem: 
fix misedit in source code
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="test3.cc"
Content-Disposition: inline; filename="test3.cc"

template<class T>
struct V {};

template<class T
struct W {};

int main() {
  return 0;
};
>From bje@gcc.gnu.org Sat Dec 23 22:56:00 2000
From: bje@gcc.gnu.org
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c++/749
Date: Sat, 23 Dec 2000 22:56:00 -0000
Message-id: <20001224065600.15150.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01305.html
Content-length: 592

The following reply was made to PR c++/749; it has been noted by GNATS.

From: bje@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org, rovf@earthling.net
Cc:  
Subject: Re: c++/749
Date: 24 Dec 2000 06:51:50 -0000

 Synopsis: Compiler switch not recognized
 
 State-Changed-From-To: open->closed
 State-Changed-By: bje
 State-Changed-When: Sat Dec 23 22:51:50 2000
 State-Changed-Why:
     The online documentation reflects the current version.
     The options you're trying to use are not present in GCC 2.95.2.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=749&database=gcc
>From bje@gcc.gnu.org Sat Dec 23 23:06:00 2000
From: bje@gcc.gnu.org
To: bje@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: other/1028
Date: Sat, 23 Dec 2000 23:06:00 -0000
Message-id: <20001224070600.16623.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01307.html
Content-length: 595

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

From: bje@gcc.gnu.org
To: bje@gcc.gnu.org, bobson@bobson.net, gcc-gnats@gcc.gnu.org,
  nobody@gcc.gnu.org, volkerdi@slackware.com
Cc:  
Subject: Re: other/1028
Date: 24 Dec 2000 07:03:21 -0000

 Synopsis: unable to use config.guess after installing gcc 2.95.2
 
 Responsible-Changed-From-To: unassigned->bje
 Responsible-Changed-By: bje
 Responsible-Changed-When: Sat Dec 23 23:03:21 2000
 Responsible-Changed-Why:
     I'll take care of this PR.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1028&database=gcc
>From bje@gcc.gnu.org Sat Dec 23 23:06:00 2000
From: bje@gcc.gnu.org
To: bje@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: target/856
Date: Sat, 23 Dec 2000 23:06:00 -0000
Message-id: <20001224070600.16618.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01306.html
Content-length: 909

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

From: bje@gcc.gnu.org
To: bje@gcc.gnu.org, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org,
  turrisi@pd.infn.it
Cc:  
Subject: Re: target/856
Date: 24 Dec 2000 06:57:56 -0000

 Synopsis: configure fails to detect linux i686 system
 
 Responsible-Changed-From-To: unassigned->bje
 Responsible-Changed-By: bje
 Responsible-Changed-When: Sat Dec 23 22:57:56 2000
 Responsible-Changed-Why:
     config.guess is maintained by me.
 State-Changed-From-To: open->feedback
 State-Changed-By: bje
 State-Changed-When: Sat Dec 23 22:57:56 2000
 State-Changed-Why:
     The current version of config.guess (available from /pub/gnu/config on
     ftp.gnu.org) fixes this.  Please grab a copy of config.* from the FTP
     archives, try it out, and report back!
     
     Thanks.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=856&database=gcc
>From bje@gcc.gnu.org Sat Dec 23 23:36:00 2000
From: bje@gcc.gnu.org
To: bje@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c/674
Date: Sat, 23 Dec 2000 23:36:00 -0000
Message-id: <20001224073600.19999.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01308.html
Content-length: 1046

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

From: bje@gcc.gnu.org
To: anthonyu@yahoo.com, bje@gcc.gnu.org, gcc-gnats@gcc.gnu.org,
  nobody@gcc.gnu.org
Cc:  
Subject: Re: c/674
Date: 24 Dec 2000 07:29:28 -0000

 Synopsis: -omagic and -o magic have different effects
 
 Responsible-Changed-From-To: unassigned->bje
 Responsible-Changed-By: bje
 Responsible-Changed-When: Sat Dec 23 23:29:28 2000
 Responsible-Changed-Why:
     Got it.
 State-Changed-From-To: open->analyzed
 State-Changed-By: bje
 State-Changed-When: Sat Dec 23 23:29:28 2000
 State-Changed-Why:
     GCC passes `-omagic' directly onto the linker.  Amazingy,
     `-omagic' is a special ld command line option, so your -o
     option is kind of lost along the way.
     
     GCC should be fixed so that it passes the `-o' option with a
     space between it and the option value.  This would prevent
     this hiccup.
     
     Feel free to propose a patch (or I'll fix it later).
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=674&database=gcc
>From bje@gcc.gnu.org Sun Dec 24 00:06:00 2000
From: bje@gcc.gnu.org
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c/526
Date: Sun, 24 Dec 2000 00:06:00 -0000
Message-id: <20001224080601.23108.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01309.html
Content-length: 691

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

From: bje@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org, meixner@rbg.informatik.tu-darmstadt.de,
  nobody@gcc.gnu.org
Cc:  
Subject: Re: c/526
Date: 24 Dec 2000 08:01:48 -0000

 Synopsis: incorrect initialization of array
 
 State-Changed-From-To: open->feedback
 State-Changed-By: bje
 State-Changed-When: Sun Dec 24 00:01:48 2000
 State-Changed-Why:
     The semantics of this array initialisation are that the string
     must be NULL-terminated (as it is).  The ANSI standard says that
     any remaining characters beyond the NULL are left unmodified.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=526&database=gcc
>From bje@gcc.gnu.org Sun Dec 24 01:06:00 2000
From: bje@gcc.gnu.org
To: bje@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c/903
Date: Sun, 24 Dec 2000 01:06:00 -0000
Message-id: <20001224090601.29220.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01311.html
Content-length: 940

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

From: bje@gcc.gnu.org
To: aach@genetics.med.harvard.edu, bje@gcc.gnu.org, gcc-gnats@gcc.gnu.org,
  nobody@gcc.gnu.org
Cc:  
Subject: Re: c/903
Date: 24 Dec 2000 08:57:19 -0000

 Synopsis: gcc compiler cannot find log10 function
 
 Responsible-Changed-From-To: unassigned->bje
 Responsible-Changed-By: bje
 Responsible-Changed-When: Sun Dec 24 00:57:19 2000
 Responsible-Changed-Why:
     I'll handle this one.
 State-Changed-From-To: open->closed
 State-Changed-By: bje
 State-Changed-When: Sun Dec 24 00:57:19 2000
 State-Changed-Why:
     This is not a bug in GCC.
     If you use the log10() function, you must link the math library
     with `-lm' (ie. gcc foo.c -o foo -lm).  The only reason G++ works is
     that the C++ compiler front-end includes -lm when running the linker
     for you.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=903&database=gcc
>From sefer@hotmail.com Sun Dec 24 01:06:00 2000
From: sefer@hotmail.com
To: gcc-gnats@gcc.gnu.org
Subject: target/1507: Latest GCC dec 12th doesn't bootstrap on i686.
Date: Sun, 24 Dec 2000 01:06:00 -0000
Message-id: <20001224090117.29040.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01312.html
Content-length: 1722

>Number:         1507
>Category:       target
>Synopsis:       Latest GCC dec 12th doesn't bootstrap on i686.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Dec 24 01:06:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     sefer@hotmail.com
>Release:        gcc 2.97 - dec. 24, 2000
>Organization:
>Environment:
i686, Linux 2.2.18 (RH6.2)
>Description:
Bootstrap of the compiler fails on i686 (redhat 6.2) running kernel 2.2.18, glibc 2.1.3 and binutils 2.10.91

rm -f cxxmain.c
ln -s ./../libiberty/cplus-dem.c cxxmain.c
gcc -c -DMAIN  -DIN_GCC    -g  -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long  -DHAVE_CONFIG_H    -I. -I. -I. -I./. -I./config -I./../include \
  -DVERSION=\"2.97\" cxxmain.c
gcc -o c++filt  -DIN_GCC    -g  -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wtraditional -pedantic -Wno-long-long  -DHAVE_CONFIG_H  \
  cxxmain.o underscore.o obstack.o        ../libiberty/libiberty.a
cd . && makeinfo  -o cpp.info cpp.texi
cd . && makeinfo  -o gcc.info gcc.texi
./install.texi:945: `.' or `,' must follow cross reference, not f.
./md.texi:2607: `.' or `,' must follow cross reference, not T.
./md.texi:2623: `.' or `,' must follow cross reference, not T.
makeinfo: Removing output file `gcc.info' due to errors; use --force to preserve.
make[2]: *** [gcc.info] Error 2
make[2]: Leaving directory `/tmp/egcs/gcc'
make[1]: *** [stage_a] Error 2
make[1]: Leaving directory `/tmp/egcs/gcc'
make: *** [bootstrap] Error 2
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
>From bje@gcc.gnu.org Sun Dec 24 01:06:00 2000
From: bje@gcc.gnu.org
To: bje@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: libstdc++/898
Date: Sun, 24 Dec 2000 01:06:00 -0000
Message-id: <20001224090601.29227.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01310.html
Content-length: 908

The following reply was made to PR libstdc++/898; it has been noted by GNATS.

From: bje@gcc.gnu.org
To: David.Billinghurst@riotinto.com, bje@gcc.gnu.org, gcc-gnats@gcc.gnu.org,
  nobody@gcc.gnu.org
Cc:  
Subject: Re: libstdc++/898
Date: 24 Dec 2000 09:01:04 -0000

 Synopsis: libstdc++-v3 configuration sets @EXEEXT@ incorrectly on cygwin
 
 Responsible-Changed-From-To: unassigned->bje
 Responsible-Changed-By: bje
 Responsible-Changed-When: Sun Dec 24 01:01:04 2000
 Responsible-Changed-Why:
     I'll take this one.
 State-Changed-From-To: open->analyzed
 State-Changed-By: bje
 State-Changed-When: Sun Dec 24 01:01:04 2000
 State-Changed-Why:
     It's `configure's job to decide on the substitution for @EXEEXT@.
     Can you send me the config.log file generated when configuring libstdc++?
     
     Thanks,
     bje@redhat.com
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=898&database=gcc
>From bje@gcc.gnu.org Sun Dec 24 01:36:00 2000
From: bje@gcc.gnu.org
To: bje@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: other/1028
Date: Sun, 24 Dec 2000 01:36:00 -0000
Message-id: <20001224093600.31140.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01313.html
Content-length: 556

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

From: bje@gcc.gnu.org
To: bje@gcc.gnu.org, bobson@bobson.net, gcc-gnats@gcc.gnu.org,
  volkerdi@slackware.com
Cc:  
Subject: Re: other/1028
Date: 24 Dec 2000 09:29:10 -0000

 Synopsis: unable to use config.guess after installing gcc 2.95.2
 
 State-Changed-From-To: open->closed
 State-Changed-By: bje
 State-Changed-When: Sun Dec 24 01:29:09 2000
 State-Changed-Why:
     GCC does not install config.guess.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=1028&database=gcc
>From jsm28@cam.ac.uk Sun Dec 24 06:26:00 2000
From: "Joseph S. Myers" <jsm28@cam.ac.uk>
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c/526
Date: Sun, 24 Dec 2000 06:26:00 -0000
Message-id: <20001224142600.28539.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01314.html
Content-length: 759

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

From: "Joseph S. Myers" <jsm28@cam.ac.uk>
To: <bje@gcc.gnu.org>
Cc: <gcc-gnats@gcc.gnu.org>,  <meixner@rbg.informatik.tu-darmstadt.de>
Subject: Re: c/526
Date: Sun, 24 Dec 2000 14:19:43 +0000 (GMT)

 On 24 Dec 2000 bje@gcc.gnu.org wrote:
 
 >      The semantics of this array initialisation are that the string
 >      must be NULL-terminated (as it is).  The ANSI standard says that
 >      any remaining characters beyond the NULL are left unmodified.
 
 This was fixed in TC2 to the old standard, and C99: the remaining
 characters must be zero.  See DRs #060, #092; PR c/128 (which is the same
 bug); and gcc.c-torture/execute/20000801-4.c.
 
 -- 
 Joseph S. Myers
 jsm28@cam.ac.uk
 
>From nathan@gcc.gnu.org Sun Dec 24 07:36:00 2000
From: nathan@gcc.gnu.org
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c++/689
Date: Sun, 24 Dec 2000 07:36:00 -0000
Message-id: <20001224153600.5725.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01315.html
Content-length: 651

The following reply was made to PR c++/689; it has been noted by GNATS.

From: nathan@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org, jeff@elrancho.com, nobody@gcc.gnu.org
Cc:  
Subject: Re: c++/689
Date: 24 Dec 2000 15:32:26 -0000

 Synopsis: this warning is not helpful: `class xxxx' only defines a private destructor and has no friend
 
 State-Changed-From-To: open->analyzed
 State-Changed-By: nathan
 State-Changed-When: Sun Dec 24 07:32:26 2000
 State-Changed-Why:
     yup, I think this is too restrictive too. I have such
     classes with static creator and destructor functions.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=689&database=gcc
>From nathan@gcc.gnu.org Sun Dec 24 07:46:00 2000
From: nathan@gcc.gnu.org
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c++/766
Date: Sun, 24 Dec 2000 07:46:00 -0000
Message-id: <20001224154600.6851.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01317.html
Content-length: 564

The following reply was made to PR c++/766; it has been noted by GNATS.

From: nathan@gcc.gnu.org
To: arasu@ti.com, gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org
Cc:  
Subject: Re: c++/766
Date: 24 Dec 2000 15:41:52 -0000

 Synopsis: Error : "Field out of range"
 
 State-Changed-From-To: open->feedback
 State-Changed-By: nathan
 State-Changed-When: Sun Dec 24 07:41:52 2000
 State-Changed-Why:
     please provide the pre-processed source code and command line options that elicits this problem
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=766&database=gcc
>From nathan@gcc.gnu.org Sun Dec 24 07:46:00 2000
From: nathan@gcc.gnu.org
To: nobody@gcc.gnu.org
Cc: gcc-prs@gcc.gnu.org
Subject: Re: c++/729
Date: Sun, 24 Dec 2000 07:46:00 -0000
Message-id: <20001224154600.6846.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01316.html
Content-length: 1076

The following reply was made to PR c++/729; it has been noted by GNATS.

From: nathan@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org, rovf@earthling.net
Cc:  
Subject: Re: c++/729
Date: 24 Dec 2000 15:39:48 -0000

 Synopsis: compiler does not recognize variable definition
 
 State-Changed-From-To: open->analyzed
 State-Changed-By: nathan
 State-Changed-When: Sun Dec 24 07:39:47 2000
 State-Changed-Why:
     Gcc may or may not be correct here, I can't tell from the standard. If `p' was initialized by a single arg ctor. i.e.
     NameMap::value_type p (string (name)), then the standard
     is clear that that must be read as a prototype for function
     'p'. I think that's in 6.8 (don't have a std in front of me
     now). However, your example has two parameters that only becomes not-a-prototype at the second parameter 'info'. It's
     unclear (to me) as to whether this sort of thing should be
     dealt with as a variable definition.
     Anyway, needs a better parser I guess.
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=729&database=gcc
>From gilsh@cs.huji.ac.il Sun Dec 24 11:26:00 2000
From: gilsh@cs.huji.ac.il
To: gcc-gnats@gcc.gnu.org
Subject: c++/1508: crashes when seeing unrecognized variable name.
Date: Sun, 24 Dec 2000 11:26:00 -0000
Message-id: <20001224192036.5161.qmail@sourceware.cygnus.com>
X-SW-Source: 2000-q4/msg01318.html
Content-length: 1926

>Number:         1508
>Category:       c++
>Synopsis:       crashes when seeing unrecognized variable name.
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Dec 24 11:26:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Gil Shallom
>Release:        gcc version 2.96 20000731 (Red Hat Linux 7.0)
>Organization:
>Environment:
Linux gx-30.cs.huji.ac.il 2.4.0-test12 #9 Tue Dec 19 01:34:50 IST 2000 i686 unknown
>Description:
There is actually a bug in the program but here
is the bug reported by gcc.

ex2_master.c: In function `int initialize (assignment **, int **, char 
*, int, int *)':
ex2_master.c:156: parse error before `,'
ex2_master.c:159: parse error before `,'
ex2_master.c:162: parse error before `,'
ex2_master.c:165: parse error before `,'
ex2_master.c:168: parse error before `,'
ex2_master.c:212: Internal error #122.
ex2_master.c:212: Internal compiler error in finish_function, at 
../gcc/cp/decl.c:14422
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.

>How-To-Repeat:
g++ -I. -g -c -g ex2_master.c
>Fix:
156c156
<   if (!strcmp(assignment, "fixed"))
---
>   if (!strcmp(assignment_param, "fixed"))
159c159
<   if (!strcmp(assignment, "static"))
---
>   if (!strcmp(assignment_param, "static"))
162c162
<   if (!strcmp(assignment, "load"))
---
>   if (!strcmp(assignment_param, "load"))
165c165
<   if (!strcmp(assignment, "cpu"))
---
>   if (!strcmp(assignment_param, "cpu"))
168c168
<   if (!strcmp(assignment, "comm"))
---
>   if (!strcmp(assignment_param, "comm"))
170c170
<       
---
>  
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="pvm3.h"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="pvm3.h"


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

end of thread, other threads:[~2000-12-20 13:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-12-20 12:20 libgcj/1165: HTTP client code treats headers as body francis
2000-12-20 13:51 John Stracke

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).